pax_global_header00006660000000000000000000000064132143761220014513gustar00rootroot0000000000000052 comment=a10ffd048dfa9a250036bcc899e1f67a888d2ccc Eagle-2.4/000077500000000000000000000000001321437612200123755ustar00rootroot00000000000000Eagle-2.4/.gitignore000066400000000000000000000000161321437612200143620ustar00rootroot00000000000000*.o src/eagle Eagle-2.4/README.md000066400000000000000000000004661321437612200136620ustar00rootroot00000000000000# Eagle This repository is for developers of the Eagle haplotype phasing software, which is open-source (GNU GPLv3). Most users will wish to download release tarballs (containing compiled executables and full genetic map tables) from the main Eagle website: http://data.broadinstitute.org/alkesgroup/Eagle/ Eagle-2.4/example/000077500000000000000000000000001321437612200140305ustar00rootroot00000000000000Eagle-2.4/example/EUR_test.bed000066400000000000000000005630631321437612200162130ustar00rootroot00000000000000l(Ϯ*輈2館.*¢.#̸ꫮ *ο诈诠> ʪ򮫾8*Ϯʺ˺館.㪯⢼#̸꯮+οꯨ꾸 +ʪ򮫾8>* :ʻ꺂+;+ギʯΰ머?::论+/+>/;";+쮺벪/???+?:/;";+쮺벪/???+:/;";*쮺벪/???+?;;/ø/뿾?/ο/;;.쮺øﺪ/뾾??+㾏˺뺾﫿̻+οί껬;:??ꯌ :#󼋎 2싫 .̊8ʺ+: ʪ/(2ʠ*?>Ϻ*ʿΫ򺳻+뫫￯/?.?:+/* /*2<ʪ>*먊.Ȩ"++̫ʫ늣Ê.*꺮*8;*꼪Σ2㬠:+*8.(;*3*:( < **8;*꼪Σ2㬠:+*8.(;*3*:( < **<莿?:ί>>.讪:/>ꯣ;*:+/* /*2<ʪ>*먊.Ȩ"++̫ʫ늣Ê.*꺮*8;*꼪Σ2㬠:+*8.(;*3*:( < **8;*꼪Σ2㬠:+*8.(;*3*:( < **<莿?:ί>>.讪:/㊾ꯣ;*??ʸ莯;(꼪Σ2:+*8.(;*;*:( **?ʸ莯; ꨮ꼪Σ2:+*8.(;*;*;( **?:+諸.* /**2<#ʪ> 몊.Ȩ"++ȫʫ늣.*꺮*?ʸ莯;(꼪Σ2:+*8.(;*;*:( **;:?ο?8ί>>.讪:/㊾ꯣ;*ʸ莯;(꼪Σ2:+*8.(;*;*:( **ʸ莯;(꼪Σ2:+*8.(;*;*:( **?ʸ讯;(꼪Σ2:+*8.(;*;*:( **?8ί>>.讪:/㊾ꯣ;*?;˿̎">ﯻ;/;ˢ>;+:+0ʪ;㪻*?/ 8ꃺ⫊3" 뼺ꮿ:*.???;꯸3>:///ή8ﯺ.??믺;꯺;?:./ή:ﯺ.ʋ**>+㨨"; ;"# .+ +(*(: "/#ˋ/>.3ʺ*((:.ຬ켼"ʋ*>/㨨"*;"# Ψ+ +(:,"+ "#/ξ;??>/>???>̏.:?:+88늲*8莫ຼ̊"?:Ύ/뮳+0;*>>ʪ>"(˫.̳***.?Ͽ>/?>ϯ>????>ϯ>::?늎/ /0:*(¨ :뾋*> (ȣ*+* ,;/믯⣫>뿏>˯+뺣>/?Ͽ>???::?늎/ /0:*(¨ :뾋  (ȣ.+* ,::?눎/ /0:*(¨ :뮋  (ȣ.+* ,?;믯⣫?뿏.˯+ﺫ>??ʿ﫿;Ͽ?;믯ﺣ⣫뿏>˯>;:?視 /⃋2:(‚*:뾋*>*뮈 ̳/;* ,?:>3#꾏ˎ믪ﻣΫ£(»ʯ+ʫ> .0샪"꾋ʈ믢;ʫ8*(*"«*.8˨*ʫ?*+:﫫;>Ȭ˿.ʫ/Ͼ.+ϼϬ2:ᆱ?￾˫?;.>˫;/ᆱ?￾˫?;.>˫;/?//ﯫ;꾯:Ȭ.ʫ/ϻϯ.*ϼ,2:8.+"0"+뻬""+.‹> Ϊ舊껪*몺˪Ȫ8.:ˮ.?8.+"0"+뻬""+.‹> Ϊ舊껪*몺˪Ȫ8.:ˮ.??8/+⏪"0"+뻮""+.‹ ,> Ϊ芊뻪*못˪8.:Ϯ/?믻>Ϻ+*;+,ʫ躪+>./+2;:(<(?+ʸ ﯫ:Ϻ;/ʮ/*<*?+:/*㢮(;ﲫϻ+ﯫ:Ϻ;/ʮ/*<*?+*/*㢮(;ﲫ˻+→:Ϻ;/ʮ/*<*?/*/*㪪(ﲫ˻/→:Ϻ;/ʮ/*<*?/*/*㪪(ﲫ˻/;?;?;??;?௻"˲ ;󫻻ʪ.:*<.*/:8⫺ꢃ0, ά;??????+:8?;????>;+;?>? 00##*:<>.>**ʺ<̯ʺ8+㮮ʠ>*쪎꨾Ψ2:.ﲃ:*>+8;;:?*ʺ/î 뮯;. //Ì "./( ;;⫯˿:;;<."2. ϻ:>ʯ?//¿;뿫*諭ϻ>:>++(.;><ʨꢲϊ .늎*ˈ"꺪论* 8;**++/.¬8(?; <(>#. ;*". ʮ*﾿/>:⢫(>(:*>2> +(Ȋ;*; "8踾+?(꿋+:ﯾ+˪;/+?꾮.늊늾ú⫺ϳ⾮﾿?+3￿< .(,/ *«(8«3®#<謪"2뢾.;*+":"22+#(:?++??뺿ξ뼿;˻/ﻬ?#/?/??ί믻ώ??꾻οξ3ϯ?;ﯮ>?+;3꺼ﯮ>:+* ꃪ+;::胮άϾ> ˫*+. *ﰼ*򮊏/:κª ,(⸳*믾館ꬪ2?? :>ξ.:닾샾3⯫+.;꺻꯲;⸳*믾館ꬪ2?? :>ξ.:닾죾3⯫+.;꺻ꯢ;긿;*Ͼ类ꬪ??>::;?;??⿻ﯾ/뫮:?ʻ /򪿪(+>/;+**®Ϻ.ʼ?/㬳+꾌*⢻*??˸"Ϫ; **.:̊ૣ*:>":˸"*; **.:믾̊ૣ*:>":/쿿*.迲?.:;躿<>>+쿿*.迲?.:;躿<>>+쿿*.迲?.:;躿<>>+꾺˼﾿/?<>+*쿿*.迲?.:;躿<>>+;골.̪**;,;˼꨺:>.(2;Ϩ<><;+??誸+>?પ눫3;:뻿,.#λ믪:/+Ϻ*?><*뺬.*2;꨸:*<*2˻?,?;:(.:2﮾?꨸:"<**::,;????//뻯>˺ ⣀(/:̪ ÎȎꪠ":+ (ʿ**ϯ*** /˨8 ƒ.8 3 <*?(*:+Ȼ +*#0+:* ;: ƒ.8 3 <*?(*:+Ȼ +*#0+:* ;: ?/((⃋>83<*?(*:/( +*2+ꮺ+ ;:;/ ƒ.8 3 <*?(*:+Ȼ +*#0+:* ;: ?????Ϻ/?ïꮿ.ϋ뮮;;*ϿϺ8??? >₃.83+ <*?(*2/Ⱥ +* +0̰+ꪺ*;2+??;>>?.₋<8򣮮ˊ3<8:/(* 갮஺+;";/쮲:+:# ;:?Ύ򮪏.?/;ο:>Ͼ?/?ϯϪ/󯢊?/˿쪏˾ϋ*뻯뻫/㢳Ϻ:;ο:>Ͼ?ϿϪ/ʿ?↑˿˾ϋ몮뻯뻫/㣳ϻ(??ϯϪ/󯢊?/˿쪏˾ϋ*뻯뻫/㢳Ϻ:;<Ϫ8/:λ㎮芨" 躮8ʫ*2./*##(<Ϫ򲲀8/:λ.⨊" 躮8ʫ*2*/*##(;>;<;.￯????/ .:>#,/쿲2*몊*?#/( *;>#:./82:"(#?/( *:2>#:,/(벮2: (/#??:* :+,8*.:ꢿ*.Ⱦ> *>;;8מּ￯?몫;מּ￯>?못;,???:<3뿻>./믻+뼮;*,>#ϫ../믻꼮꿪+;￯?￯?/???: ?ﯯ>˾?/+Ͽ????>?;/??+???;/Ͽ+,??>ʬ#?/;??;/论ﯮ몮?*?/￿Ϻ˿?/ϯ뫮*?? *﫿* .;Ϊ?+*?.?<곫ﯮ?:˿; (* .+̪#+*/#.;?,곫ﯮ?:˯: ** ,;?+,*?.?<곫ﯮ?:˿;? 﫿+?.<;/ ¢(뫂*쬈#Ϋ:.?#?"ή> .# " ¢(ꫂ*쬈#Ϋ.?#?"ή> .# "???? ʪ3((먣8°Ž ʢʯ꿂*:ﰼϫ:"0(* (. ????:N >3> ˯뿾;>ᆰ⾾;?﾿￿﫻:/ﻺ*>????ﺿﯿ::/*?:N >>3>+,:: î>(;>⾺::￾Ͼ>?﫪8/ ??/>8(ʰ*﫾( ʻ*8( *< ?⪮˲ ꮯ :￾Ͼ>?着8/ ?+( .+>:+ #*,낾;#꯾˳.̨è<3*(.磌.:?/꾪.쮯﫻?>><꾳ʯ;>ʾ*;ί躸;˪ϻ/꯫?󬈾/?++뿾?>;0ʪ8˪뫯/;ꨨ3.# ϣ?08.ꫯ/;ꨨ3.# ϣ? Ϯ:*/+,ʊ븻论;+3?*+ϯ;*꼯,ϊŠ:⳾뼺.㿾38/+2Ϣ+ϯ򺎿?+>:/>;>򮺼>:>+;;ʯ:>+;;ʯ:;;ﮫ?/↑//˂ + 8:ȳ+ 򰋀.*,;謁⫺̸2*+2(# :닰/*<賫,Ϋ*>>;謁̿*??,:?>믎κ.*뿲/????/.#> Ψꃫ *ʺ: 껺.3>;*?"곻?⬲"˪";®>⎻/;;:;.믺"*,Ȼ/㿿믿﫿뿻>ﮮ;?ﮬ;(򿿮믾+//뻮>˻.?>⻪/>+??;????/??/;;ÿ ?뾬?꾾○뿺Ͼ;?#㫫+:;+.+⮻ﻨ *++:;+뿫ﻬ,*?뺺"것.#(:(;+캂<>+(⎻ 󠫯+8" ξ"#㫯+:î;+?+⮻+ﻨ ?뺫".:남;+캃>?+*򎻯 󨫯+8 ξ ⊏;.ம˿(":?뫾򺮮/( ꮪ, / ;/;;?/ο/;#"꿮+ꪮ믫;?;?;(>*摒긬*물⋯/(;>*.*:;*//+<(> ⫺ή??.:0뺏3#ﮯ:⫺ή??.:0뺏3#ﮯ:￿>#?￿:"?/.뺏:/.뺏:/*.>>+.*쨀슣**ꈸ"Ϫ,;.8:򫋯.?;+??ˮϺ諺++:;*>꺪̺󿮮ʯ.ˮϺ諺++:;*>꺪̺󿮮ʯ./*.>>+.*쨀**ꈸ"Ϫ,;.8:򫋯.?:+/*.>>+.*쨀**ꈸ"Ϫ,;.8:򫋯.?:+뾯:.뾯>뾯>??????ˮϺ諺++:;*>꺪̺󿮮ʯ./*.>>+.*쨀**ꈸ"Ϫ,;.0:򫋯?:#뾯>뾯>?达.ꂋ諺+#*8(+벢>ȠʸȪʏ2./*.>>+.*쨀**ꈸ"Ϫ,;.0:򫋯?:#??达.ꂋ諺+#*.8(+벢>ȢʸȪʏ2.达.ꂋ諺+#*8(+벢>ȠʸȪʏ2.ˮ˺諺++*;*>꺪̺ʯ.Ⱦ.ꂋ誺+#*.8(+벪>ȢʸȪʏ2.?뾿>Ⱦ.ꂋ誺+#*.8(+벪>ȢʸȪʏ2.뾿>￯?>뢪˪#8 +뿾꾸*뺪*+:﫼*.: 꿯<￯??>?>?#8뿼>븻/?;/*?몾+3>+뮾;/?>?>?>;;??Ͽ:? ˌ ʈ##*8#.*#;꺺 ?;+."?" 38>>+.;￿>?;;??Ͽ:? ˌ ʈ##*8+.*#;꺺+?;+."?" 38>>?>> ʈ+.򸣪˺+2*/#/ʪ;+?;谊;;?+:諿38;> ʈ##*8˺+*2*#+ʪ2+?#谊;+;?"838:>￿?ʺ+ᄈ>.;˻?뺺>?8. :3/ˬꌊ#:Ί /ȨȾ*?8+̪ʂ?￿?￿?￿?￿?￿???ü<ȿ:,+ꫯ⫳>?+:ø>;>??;/*/;;; <:?/*+ίꊢ;,®(˼β諊뫯˯̪못 <诮2,+꿮ϫ>?+;⯂ ?;>???<+請??;>?<+請??;>???;/﻾;;.; ?<:/;.컲﫼3;(>:<.,:/2(.*ʲ(":ꏨ∏, + > 8" Ψ꫾꿫벮૫ /;.컲﫼3;(>:<.,:/;/컲﫼3;(>:<.,:??/;/컲﫼3;(>:<.,:??+?:????﻾;;.; <:??ˋ.몮/ﯺ?./돻>:???/?;.; :.?ʿ﾿.. ;:ήϪ;<*:ꬾ;++*";;Ϻ/+ﲪʨëο+믿ʿ *뾮.诸;(ϫ (?.Ȯ "8*ﻯ((#+<:+*+"0몾+??????8뾾:㊠*믯?.;ʪ꼾躳*ﺺ(?? .? .? .? .+λ8<*Ό. ʮ/(/ÿ㺫 躯Ίì̸#β ϻ+ﮮ;￾?;>ϮﺋΏ?껺>γ믪ʯ>+>/껮/<. /./*󾾋躯Ίì꺊쳮#??>Ϻ+>ﻯ껮.??>Ϻ+>껮/>Ϻ+>껮/ ˻+﮾뿾󾺏㯿>Ϯ+ﲋ?ʻ;>/?>Ϻ+>껮//?/?/?/?/?/?/?/?/?/?/?/?/?.*<좫. /.ʏ/*󾾋ΊÌ<꺊쳮#/?.*<좫. /.ʏ/*󾾋ΊÌ<꺊쳮#ꈻ¯?㪻⿯: ?胺꾎:+>8<⿿˫:?Ͽ?迋ﮏ>>﾿ᄐ?¿˫?￿:?꿸Ͽ??/;???>Ϫꫮ?>ﻣ.𣿯?:/????>/????>+.+?;??;?;?ꯪ("ʃ;##.ʫ>*/»3?ꋻ **;/ᄒ.;/?:ξ뺯*ﮫ??ﮣ*￿?뻪2שׂ뫪3+ /8;誻*(*;*; ?;<;.;+뾣+;>뮿3/2;뺿?>ʺ?/2;뺿?>ʺ?*;,+>*Ͼ+ 诮/+ʿ>⬪뻫.;/2;ꪫ뺯Ϻ?+?갿??;+꯮*;>;??;μ+?ο*??;ﻻ/"*묺<:?ή;;௰¯: :+?/;ϼ;곾?;﫻<8.+*ꪮ* >"Ⲻ*/ʮ/++<(:(????򿿿??뿊뻾:*꺺.꾯?.?꿻:;>?򿺿+>,;?2ίϻ??"겊<Ȫ * 죳ꌫ(:*>88Ό8:+>?/?/??ώί(ϻ<;˺:̿:>??/???ʾ:Ϋ"Ϭ⢪̼;<+뮊젫껪8;;>/*/*:???ϯ*ϻ<;>隷˻;̿*/>?;;< ʪ.꺯*;:/ʿﻸ (< ʪ.꺯*;:/ʿﻸ (?+ ˪.**꫺; ϻ:+:(? :*;/+(?????/ꊨ,?*< 8"*#+/ꎈ*Ϋ΋+#:??˫/€(?**< #*8"*苌#+μ*+΋ﯪ#:˫/₨(?**< 8"*ꋌ#+μ󿳪/*ί΋*#.辿/,8:ꎂ㬨"ˢ;2 80 * *22 ": *+??Ϋ#򢺺*<* 򾂬8 ʋ3μ"/(Ώʠ;*?*2/,::ꎊ㬨"ˢ;280 : *:2 ": **?ꢢΫસ<* *,#8苬:" ʸ; .ʠ;"??;?;>??;?:( ."*." :. +> ˊ/,㊈*:2ʼ򂫺?????꾺:˻쯎?+??:뼮ʫ:/ﺻ>믢 +/#>;?:ʫ:/ﺺʾ>믢 +/#>;?:ʫ:/ﺺʾ>믢 +/#>;>#;>.+ë?㯮?򾌾뿸+Ϯ2**?3/>;﫿/.?#:>.+ë?㯮?򾌾뿸+Ϯ2**㪯㏺>?3/򾾻;﫿/./#8;>+£/򾨮뾸/诨"*:+*ﮨ80>*  î> «"<ﺬ򻨫/2?( #:;>+£?򾨮뾸/诨"*ʫ:;껊⫪ꪨ/+"<ˈ?+*>8 ʳ . 2:: ʺ/쪾 ˨:.:⣊ϫ*: *<:ȫ..::?**/?/?﫿/㫯*?㏮ﯻ>㫯*쿿㏾>??*쿿󏯏>?*󯯏;>+#.::;.+3>.+:;몢*Ȩ:𾫣;>>3:/+.>*:;.+3/>.+辪.:;"*Ȩ#:𾪣;.:>3*+.>*:;.+3/>.+辪.:;"*Ȩ#:𾪣;.:>3*/?.껻󾾯/???>ʌ>+;?Ϋ.>+.?/+/?+"ʈ.>*8;.#3?>+.:#"*Ȁ*>򺪣;.:>3*/..꫻󾾯/?쿻+?>?.?;>?;/ꬲ..꫻󾾯/>.+쾿#Π*>>?3./?.껻󾾯/>.+Π>?3>//..껪򮾮/렻?>+辯:"Π*>;:?3.?/..껪򮾮/렻?>+辯:"Π*>;:?3./..꫻󾾯/?쿿+?>?.//??2;*.ξ̢ .3> 20诨*2(8( ;.??"?+. 3?좯/.믿ϫ?;":.Ϊ̣ ".?ꋋ<*.<8+( ʨ":.Ϊ̣ ".?ꋋ<*.<8+(﫯 ʨ/?>.;?>??>>??:ꫫ?:<>8>>ꫫ?+?ᆴ<>>:/ꫫ?*<8>议8<>?>>>>?>#;>꯻→//꿿>?.?.+˻௿ ?2﮲+ί.*?ί??꿿쿺;:꾾꿻꯺+:""/"+苯.?;˯/ʯ:?.+˻௿: ? 2+.*껺.;ꎋ.>??+?ˮ꿿ί:˾*.ʮ:?.+˻௿: > 2+.:ꪮꮻ/.΋뻫*>:",2*(."++.̢> /ꪮꮻ/.΋뻫*>:",2*(."++.̢> /?/2?*+⯿: ? 2+.뎫*/2?*+⯿: ? 2+.뎫*?ᄏ????+懲.::/請.ꫪά:?˼.??;?븪ᄎ꾮㳫⾾+2.?뺺/:;>.ꢿ?뻾?˯>뻾::?;+//Ͽ/*ﻸϏ?诎민○𨼫".軪."?/?>*?:*" 8:.ꨰ:(("Ϊ껪ˀ; #슪("﾿???*?:*" 8:.ꨰ:(8"Ϊ껪ˀ; "슪("/ﻫ>/?ʯ?.???>㿮?㮼.?/껫>+;;;ﺾ>㾮/ﺿ>,ᄌ::ο/( ..0?",*?*(,"*<<*.*>.:袰;8;; *⿎ #."㺪**";:>>((껪#¾Ž.*+.0+쯪?**/>ϯ;?8+.*Ϣʾ0辪#쯪?*(/. .>ϯ+⨫?/8+.Ϣʾ0辪#쯫? *(?. .>ϯ+⨫?/8?ᄏ?:?迻;?뎯:????#+/#*;>+ 裸(˯> * *:/˺./*蠏(/̯*Ȼ+< ..*>謹>2*?믿 +??믿 +??˾;ˮ;;:+>*뮺?:+*㮫*??˫𯂾﫢뾻*(˺;/뫿,?뮌,?? #ª̺˳.:ﺿ>.*2*3/> ?:Ϊ*:??+3(<*8+꯯.뿯,;;˫"뾻*(˺;/뫿;?㮌પ*#;˳ꎫ:ﺺ>.2*ᆴ :;: 㺮:પ: #;˳ꎫ>ﺺ>.2*ᆴ :;: 㺮:પ*(#;˳:ﺺ>.2*ᆴ:;::પ*#;˳ﮫ:ﺺ>.2*N:;::??/:/:??+⯫# *¬":Ψ.+*"*8먫꾮 ; , ʻ((,;?ί󯾺*λ/ᄎ?>??;.>;;??ᆲ/::?オ3?農">::3..:⾯;+?*8:0(<Ϯʯ*￿???;??3;?;??>..?뻬> ʿ ?#;裣.?ˮˬ..>먬:?:迫/:?*ﯿ.2/뻲+;?;ᄒ??*ξλ﫿.;2/ᆴ,+*?>;?;?;>￿:?;뿯ξ믾:わ;:3:(ʼ8쏿;ʺ+.;(.*??;*;?:?+:;>>/ʪ/;ʫ*:<2?>**>/:?/?+;;/>>˫/˃/*+"?ï>( ,8Ȭ"*.:"*믯?:.?;++/;ί??/??#//;;//?>>﾿??ί;Ͼˏ뿯>??/; >뾣㸰ί 3;긬.?????? .<㬼..:ή <#.ΏȾ8(̣꣊*>.*>?>모*"??,ﲃ",΢*. (>»λ;«;:+/Ȳ ꫿+".; ?ꣻϮ?;ϋϪ;*/3닺. ?.ᄏϯ>뿸껯+3뫺? ??#+:+⪿3;룯/+ί?;???ﯮ뿸ʻ⮸+#뫺󪿯 믯?ʻ> 쿯>8뿿ί뿾3;;뾼>￿껿;˺Ͽ̿>쪏+2쿏;#(.£>ꌻ.:(ﻏˋ8򪺾:쪏+2쿏;#(.£>ꌻ.:((ﻏˋ8򪺾:˺ϻ̿?˺Ͽ̿?//˺Ͽ̿??* .ª,꺪 * 몫º򋻺/ :++(,ʈ숻꨸*𫺲˺?ο??>￾???*+/* ￯.꼳;;;Ͽ;>;Ͽ;ο>???????/*>*??*;Ϯ<뻿;?:?㺯.*ΰ*.ϫ>뻌?ﺺ++*?>Ͼ뺿:?>ϾϺ:?;??>踿:;;??כּ⏏?;;?*3>/.+:>ˮ˪+λ;,*¢踻;. ꪾ.?/?겺 ??ハ?.8㾊2.믾#?뿿;;?ꮬ躺ʸ<. « *̲(2믨򺏣; >(ʊȫ?"+㬪*꯬*ʺ< >* 2뿨򺏣Ϋ?:>(ʪȫ?"+⬾*???;/?//?+>?(.;꫸/??;<믪⫾ΰ"ʺ#˺Ⱦ?2?⾫;?+뮾㾪;,㿼뿾:>+?>;??>??㿾/*(꨿ :3;,"/3Ͽ?㾮//?+/ϯ*.??+ᆵ;??:>//**/ʾβ;;⬿(.",?+?/ᆴ;?>ﺾ*3;뿫;";𮫾*.;*ຎ3몸㪺 ;*#+3++꿿??/?軮;?://;?/<>ຊ/3/ꯈ"?:+//;?>?8ﯪ?:묢ꫣ.®88#ήˊ.2 .32긫 .:(<ʢ +΢̢ (#**+ꈠ?8"λ8 ή *+""ʣ:*?><ﯪ?>?ᅫ﯊;??뾺.κϿ>￿;:ϫﯿΫ3:;?;ϫ/쪾טּ/被?Ͽ??ꏾ>>꿋.?̾ϫ.?./0*꾪θ?;?:2. 2+λ򮪺#þ˳;ξ뮾3 ;ʯᄏ8⯯꯮.﫮>þ,/.?/?;.*+˿.˯ᄏ뮫/,着Ͽ;ᄒ<.믻辻λ/<ʿ?>>?/뿿; #+;3ꫨꪊꎪ(⯈ʸ."*+*:*,"*8/ #./**+?/+/꼺訯̬++򺯿?븯뮿?#˿**슂꺪*,?///뺺̲;;󾯿뾯꯾ˣˮ;ﮏ뻫>?;?믯+󰼾//̯אָ,?쿾???;????????????<￲ﳯ(:/:*8/>?˺8><￲ﻯ.;/::?˺>:ϻ??(:.몮ȳ 뮿;ˬ/ ?Ï;?*달ˏ訿;ʊ 2+뢣򮂫+*0ﮢ" (. *<:,. "ë+ꏸ諳#.®;,ê;8 *?>>뻪 .8?>辏?"긪+8.?>뻾뿯;;;? 2*:;/**2/?˰3<Ί; >ﻠ0ʿ*裫#;+>//:??+>/:뮿>+>/:?????>ί??ί?.?>謹?:..>?>8>>?ﯾ8ﯣ*.类௨ʬ:#>˿ ;::>*"+?? ⨾>뺾ﻫ쯨>*>˻ 說**+??꾿˿ξ?/?˿/󾯪 誻<:.껻몪((*Ϻ+쪺;뺸.3?;+"ﻯ:?;;+"ﻯ:?;?̲(꺫>?򪯺?8"?ﺈˈ.>+*>>..>:̲(꺫>?򪯻?8"?ﺊϋ.>+*>..>:???(;:?*򪯺?0"(? *ˈ.>+;*<;;>> .:???????+?*<;?;**.* ?*/㼋> ,ʋ芪:#ʨ *.ꃺ ,Ȋ*?<:( :*..*?+뺬 ?8닋迋>航̨ʫ,,8믾?*".㾾*8??>?ﻺ>./몯:3;ϻ󨿺ξϋ>/???>>+﫯*;ϻ먿Ϗ???>#>>2"+뮈##󫪺/:.¬㮎>Έ Ϩ>;#ø Ώ.+::슋3 *?,:>:*˸,,ʨ+;;?/뻮ϫ3.ϪϮϪ/+ >:ꪃ/>/뻮ϯ3.ϮϪ/+ʪ몢>:ꪋ>???;.>>>?㻣?;+?>+￾/>ê̺;???>+￾/?̻;?*<; (ꊲ,/?⺃*: ϳ+++++;ﯿ?*軫+;:>/83:?;?;迨￿:;??.:3++* 򫪪˪;( 2*볯뮾(ˎʻ;?/?/?/ί#뮾ʺ8/2(辫/򨿼.?.;>㿿*ȿ"˾?+/຿/ʮ*>ʳ/;..#β(꼺8诳.ᄒ;??:뿿ﯿ?Ͼ:?/̲Ϯ# ꌳ.;,﫫谪"#ꀮ<*諬舢:*>*.2:??????#/>,*3:,(:8 /?˯,8*.#*;;#.>.3*뺎꫻ ;/<*?.3/>.3.꫻ >/<*?.?;<>/<;3? ?ςϫ+,.20+κ" 3 3  뻿+Ϊ<./3*>ʺ>:𮬳? + ++;/"*>: ?  ʎϬ:€響"8+ >/뿿;+>?+ 뼺* 車벯ꫂꮾ+?˯î.+>+;?  ʎʾϬ: 響"8+ >?;>ꂿ*/>￯/˯?#??? ;*3::8ʨ/ 쾢(2/*<*  #.( +;ꂿ>/?￯/ϯ? ;.;::8˨/ (3/<﮻; ꮺ/*;/ϻ>.+Ψˬ;.+./꣣:#Ϫˠ/>/?쫪믬;..??+:#Ϫ.뿾/2/.#﫻:"*2"꾯ꋪ;++8*2/.#﫻:"*2"꾯ꋪ;++8*2/.ꊪ#﫻:"*2 꾫ꋪ;+++Ϯ:8;*;;;?꫻λ: 뻮//:,;/>ᆰ˿>+ϯ>:+辎/.ʿ﫻*"*: 꾯;:Ȫ+/󯬯 ώ:ﻺ8:./?.:ﺾ?//+",;򻪪+**/ⲣꀢ/?.닺:«꺪.??+",;򻪪<+ ﻫ뻪*/⺣ꀢ/?.ꋺ:£꺨.?꾻?/˾;/￳.???㿯￿??/>ʿ:???迿:뿿???/꿿??????":몺μ2 (껯+?".#˯ ʨ:꯿뾨 ˯;?迿:뿿?:+뻺:*î诎?/» .﫫⮏ꮿ;ʪ». 8?:+뻺:*î诎?/» .﫫⮏ꮿ;ʪ«. 8>̺2 ˻#?2?ಪ볯3?:?ྺ볯3?:?:+뻺:*î诎?/» .﫫⮏ꮿ;ʪ». 8?:+뻺:*î诎?/» .﫫⮏ꮿ;ʪ». 8?:+뻺:*î诎?/» .﫫⮏ꮿ;ʪ». 8:+뻺:*î诎?/» .﫫⮏ꮿ;ʪ». 8:+뻺:*î诎?/» .﫫⮏ꮿ;ʪ». 8?/믯???/믯?꿿??/믯?:+뻺:*î诎?/» .﫫⮏ꮿ;ʪ». 8:+뻺:*î诎?/» .﫫⮏ꮿ;ʪ». 8:諨 ꎨ<2 (+?"*."ꮲ˯?Ȁ:*>*;꾻껯?2>;;?/믯??;+뻺:î诎?/⻼ .﫫⮏ꮿ;ʪúꮂ. 꿿?꿿?꿿??ᄎ뻮뿿??;/>ᄎ뻮뿿??;/>?뿿?/>;ʯ迯?⫺ ﳪ;8*.??/?/:ʯ﫿0#쿯?**‹ ﳺ⮋˯ *˪/???????/>ꎿ讫 ,꿻?2>;3??謹ϯ>+>ꎺ;" ?>"::̊+//̸2??謹ϯ>:/+0#쿯?**‹ ﳺ⮯*ꊰ뮿> ꎼ˪/??/겻+>ꎿ讣,¯??2>;/ꮺϿ3?겻+>ꎿ讫,꿻?2>;3벻+>讫,?늯2>;3벻+>讫,꿻?2>;3??/?>뿿??>뾿类?/*0*+8*꿿˯*>诺뫈뻿*뫻;Ϣ#誨>Š.뺪ʮ⢪2*뻃븻.*>."?>??￾>?>??#Ϊ⠈"?誢""̺ª¾ˊ򻿨ꫂ2(/ﰪ;;ˊ賨"꫻?ᄒ/?>/;.++? /뿯Ͽ뾿>￯?Ͽ뿿ί?￯?*>" ꯸../꺻;> 골ࣸ#˯Ȯ >"Ȩ?;"(쯪>?.>;ꪎ.>/讫3;8/"(쮨򢸪ﻮ>3.:"ꪊ., .:/誣3;8+?,>>ꎿ곋/3;:??./˿;?￿>ﺫ;:뮪󫺺뮺ꯪ>?ο￿>.˺Ͼ?쮸?/读ˬ?뮺ʮ>/?Ͽ??˪οϬ?;﫿+/??:.ʺξ>>몏: >﮼> 8"23Ϋè+ +˲ <"달>*Ϡ ;";;:.>8˾?뫿¸>>;:.>8˾?뫿¸>>모2?쯯";ίê#/̫,㫫Ϊ⫲(::;;/*0#쬬 ++.+"+ﺈ뮿?ﯿϯ/"??;??.+;ʳ,ë뻾»￳򯮯:?+( .,*>+ú(> #:β,(? 늼+>/>,(ꃿ 늼+./>,(ꃿ +>8;2./?ʲ ﻾.>?:?;??"?>3/ +?ᆴ?????????;/;/?迻/: ψ/.,  *** *; ꀺ"+긲 8(+( ˫뎻:;#컨+誺.믊2ʏ "/?.㣪+:믪Ώ 8㣯; (+ʮ;*.+???#,?㣪; 컫/ > 8ã; ,򊏊ˮ;2.+?????"*?.㣪+:ί 8ワ ; (+ʮ;(.#???".?.㣪+:ί .8㣯; (+ʮ;*.+?#.?㣪; .8㣯; ,򫏊ˮ;:.+?#*?㣪; .8ヮ ; ,⫎ˮ;8.##*?㣪; .8ヮ ; ,⫎ˮ;8.#?ꪾ+<#*?㣪; .8ワ ; ,⫎ˮ;8.#???.2?.볪+꯯Ϯ// *.ꎼ+곣,+*.0.3ϳ>?Ϻ.Ⱦ;/긺#/*>>.뾊.2⻮?*.0.쳬ϳ>?Ϻ.Ⱦ;/긺+/*>>ﮰ뾊/2⻮?*.0.3ϳ>?Ϻ.Ⱦ;/긺#/*>>.뾊.2⻮?*>8.3ϳ>?Ϻ.Ⱥ;/긺.*>>.뾊*2⿮?? 뫬?;⾯꾼++뾪 ?뿿??;??ί;>;>?? ﮿??>+??+//*/?˻﫾>+.ˋ/3+莊??/>?,ꮮ:.*8/8ï/?+껯+?ï/?+껯+?+껯+?﫻+迻?î;ξ??ï/?+ʻ+?껯+?﫻軻?î;???껯+?﫻軻?î;??ë:?+*;늨;†.*+:.::⻬2+>ʋ+?껯++ ʢʂ;+˺*>(.+":#/,⮊".Ί:㋫(88?˫:;;ﲻ#.?( .:+*.:⿬0ꋯ+?<;+Ȼ? >;﫪;ஸ:ʫ:3(; *˰;;2 <** "ή+ⲫ"ς "<뻿/˫:꯫󪯿 ??+:.ʺΨ>/?+;>??;>*+8./*.;,:? (:3/**<2 ? .>:<ˀ22 3븪 +? ; *.? 쫻.>.+⯾*( 2ʿ.À* 겢;>뫨+/࣮:>?.>/;,(?.*꺮+㻫/:> 쫻.>.+⯾, 2.* 겢;>+/࣮:>Ͽ?>Ͽ?>;(/+꺮?/???ᄒ?????ᄒ????Ͽ?ᄒ????ᄒ?>?/Ͽ/Ͽ?ϫᄒ????ᄒ?>?/Ͽ/Ͽ???㏿? ;﾿?>/?ᄒ?>?/Ͽ/?ᄒ?>?//ᄒ?>?/Ͽ/?￿ﯻ?뢺((뫫(/("곪:.ˈ;ʬ*⨪*:(+﾿?>Ͽ/ᄒ?>?2/Ͽ/?○?? ᄈ;ˣ...﻾㯨ᄒ??캯::> 3 <겺 뮢*:+0*Ϡ¨":?;;? />ﺮˮ//>ﺮˮ/?>?//./;ﯯ>:ᆱ+.긳*??򾳯:>?ÿ.?뻾?>򾳯*.*>3>ÿ?.?꫾뻮?>򾳯*.*>3>ÿ?.?꫾뻮?>;;/???>λ:>Ϫ?˾/?˻3;㳿﫯+;/̯ꮋ/>+*/2ﯪ밿㾢Ͽ+;8(請ʮó;?>++﫮;8:ή;>/?*>/Ϫ2λϻϻ??̻:/(>"*꺯*꫿ª:Ϋ»/2 ꊫ(ﻻ?+뢾//Ȼ+:+꿾ϻﺿϯ?/+꯾*+;[*Ϊ⣻>Ͼ?ʸ;?:믫??ᄏ￯?/>/ᄏϿ?8.뻻ꋻ+/Ͽﲻ:˻˺/?:+;+ˮ>:+;+ˮ>;+?+ˮ>:+;+˯?>:+;+˯>???:軼û+:/+":軼û+:/+";˻++?#ϯ?κ;?ϯ?○2﾿軼?/?>뫾????賮ʫ<*+,8:? "# 볊*3++ʫ/˲⬺"#+./*耪//??????/>?/+ꪪ뿿ﮪ*讫:+ +?+ί/*,.?.꺻몯뮿﫿￿󿮮.";>/;?//*#ꮻ㺯2/שׁ* ˪: Ϋ*0 (+ʊ3?/򬬳,8ꮪʊ*#ꮻ/2/שׁ* ˪:ꈂ Ϋ*0 (+ʊ3?/򬬳,8 ꮪʊ????+?????ﺯ껺뫾>ᆵ>:򰂯/;Ϫ;?ᆵ>:򰂯/;Ϫ;???/뿿?????*?;>/:שׁ˫﫻*<.*ᄒ;ʻ>?:שׁ. *쿾ϼ>3Ȼﺎ>캿;/;" ʪ싸,?++0⸪?ꨲ?򪢪:,*;>+.+**ί^;ʻ>?:שׂ.*芿ȯ묮;믮먫.::שׂ몮꿺," ª슸,+++0>*>ꨲ. ?𪠪:,(;>*".+*" ª슸,+++0>*>ꨲ. ?𪠪:,(;>*".+**ί^;ʻ>?:שׂ.*ʯ;ʻ>븯.:?:.*ʯ;ʻ>븯.:?:. >;/; >;/;?" ʪ쪸,;++0Ⱚ?ꨲ?򪢢:,*;<˪+.+.?*ί^;ʻ>?:שׂ.?? ʫ;>..2?>ά;뮪.뫿:˯.*Ⱥ誯*?#:*.<>(.ˢ,/:ΫJ;(/?>Ϭ;ﯮ.???8+;8㢪⨳( *..;뫢;:3㯰Ϫ ʬ*ʣ+²긮,#".+?﾿?>?﾿?> ȏ;⣮⯊/?껲ʼ⫸* .(ϻ˻8/++>:*ﲫ*ϫ*+긺+*8+(>Ϣ.Ϡ :κ?/::ﲾ:à꿫#+8+ˮ*:˺Ͽ.?ᆱ????*2*<ϻ:?ϳή3+.>˫ʫ?ﰾ:â#+8+⋮**Ͼ.ﰾ:â#+8+⋮**Ͼ.;:*2*<ϻ:?ϲ뿿ʪ3+/*讫>˨낋?.뿿﯋?̮ήΪ:?.뻠.Ϯ*ﺿ*뫮<3 뺮#?+:3> 8飼:3.>/ϿϾ/?#+ί8ˎ2.>뫮+Ϋ.ʿ⏯﮳;;>뺺?￯￿./;￿?￿*/;￿./;ꢫשׂ:3 >/Ͼ?:?￿?;;:뿿/늿(;;?+.:?믿??ο̿?‚ʬ+>"꾿򪪏.; ;ʾ;:ﯫ/늿(;+?꯯+.:?˯?Ϯ>(ʪ뿯>㯮;,/, +/;¿/:ʻ+,???ꢻάﮏ?#?;*?/8뮯⫫¿?Ȣ/Ⱒ."+,㨪";>? *껫/>㮮+, (<+/>;+.>꫺;;+;*?κ??*;ꫪ#:⪻ ㎫.ﮢ/訿? :겮 .þ# *ꯪ#/谪 뎪/ﮠȪ 証? :,* 胾꣯???̿??.>??ﻯ..>:>+*㯻3?:΢>>*㯻3?:β>>뾫"*ʫ;:/?ꂫ*묾(ꮏ迮̻/:#ﯻᄎ?;ﯻᄎ?;ﯻᄎ?;뾯:ꪾꮿ뮯>￯ﯻᄎ?;￯ﯻᄎ?;꾻ᆵ/ꪯ뮾*뿿+?;?>/>/;+ʻ#<θ/懲.ʯ  곌* 꺼뫲* ;+ʳ#<ΰ/.ʯ   + 꺼뫺* ;Ͽ .㿾?+;Ͽ .㿾?+?; :;뎺;?/?;?/>??;Έ ;.8+*.(ʪ2:*+˿/:꣊:*8?ϫ/?/.Ͽˋ𿻫˿>??:诺*(?.::/:;ˏ벼/:.,<몪:+.::/:;ˏ벼/:.,<몪:+?/???8?/??::;*/:;˿뻼/>,몪+(8;* /*::˿Ë/< *뻪﮻ (8;* /*::˿Ë/< *뻪﮻ (8;* /*::˿Ë/< *뻪﮻ (8;* /*::˿Ë/< *뻪﮻ ?88??/?ʯ????뾲Ϯ/늯ﮮ;>8ϣ8*?ʯ???뾲Ϯ/늯ﮮ;>8ϣ8*??꿯/ᄐ﫫?ʯ???뾲Ϯ/늯ﮮ;>8ϫ8*??+>3?++::2?,,?3<ûê?</‹Ͽ?:2/ʋꪯﮪ΋ (.λ/8:Ϊ>>ϻ;ϫ迿↑>????:???;ʪﺫʾ:뮻+ﮎ??㨻: 身>>/* ﻯ 2#+2<*/( . ȳȾ"":> .*.???;?**«ꪫ"/ 눸ªʫ꺣* 0:("8:>./*,*«ꪣ"/ 눸ªʫ#꺣*2 﫪08("8:>./>?ʢﯻ꾪>/( >:*..﮾뾿/?? ,:+*3 * *,*+:ʪ*::" 2;ﻃβ2.;.캢꫻꣺.2묫;*2?̪ʮ:>>.(3..>.⎃ˬ⫿8#??>*ﮮ. 3<ϻ辿뺬쨮>????>.> ;?/<ϻ뾼쮿?몯>쯿ξ?:򮏫.#".?˪ꪋ3>  쮺达>몪ȫꌮ(> 軲2ʪ8?>?;뺫˰說쾺?>(쪻;?Ͼ?0:ʮ; 0*>*;+먨2 +븏輨>⫬,;겾 0:ʪ3 0*>*;+2 +븏*輨>+,;<Ȫ貾 0:ʪ3 0*>*;+2 +븏*輨>+,;<Ȫ貾 0:ʪ3 0*>*;+2+8*輨>+,;<Ȫ貾 ??;ʻ뾋 *.莾;?"?/????꺾˾+*..,;?﮻.>?ʿ/꺾;*..,;?Ϯ.>?ʿ/꺾˾+*..,;?﮻.>?ʿ/芫**:+;ﻫ./+, ..?ϯ>뻮?뺊*>ﯯ;>??+ϯ>뻮?뺊*>ﯯ;>??+˨>:. 㫪:8> 2" ˯ 3>, ꨮ*>? ;ϯ:+/?>:¯>?;ϯ:+/?>:¯>;軫⿸;+ .꨸>*﫼*.;ﯫ:?;;軫⿸;+ .꨸>*﫼*Ϊ.;ﯫ:?;ϯ>뻮?>￯;??.+;ϯ:+/?>:¯>?>?>??>;ϯ:+/?>:¯>;ϯ:+/?>:¯>;ϯ:+/?>:¯>?ϯ>뻮?>￯;??.+?;ϯ:+/?>:¯>;ϯ:+/?>:¯>→3++?;¯??;ϯ+?;:¯;>;Ͽ>;?ʯ>;??./?+*ʏ:+:2++슮2?⾯2 (*88;Ͽ>?/>:;???;Ͽ>?/>;??.+*ʏ:+:2++슮2?⾫2 (*88?+*ʏ:+:2++슮2?⾫2 (*88?;Ͽ>?/뺊>;>??.뾯?+𺺨 ̮訨>".Ϊ®;/;˾?*𲺠 Ȯꨨ> .Ϊ2#;/:??>;ί#?뺮::;.?>뾯?* ̮ꨨ>*.Ϊ®곻;;˯/+?>뾯?* ̮ꨨ>*.Ϊ®곻﫯;;˯/+;?, :;0;?,̾3?//03??,/?;﫻?뺾:ﲾ>;.>ꪸ3ᄏ;￿/>2Ⱥ( 길Ȼ.ꀸ (꯮ﮬ.첯#" " :믯ʿºκ#ﻺ*ꪸ#**:ꮮ讫댨પ+ϳ㨣..+:*«2 < ;﯊?.ﮣ(>:? ˪Ϯ?輻<"몿,<;;?;;? <꫋ ?;﯊?κ.諸(>2Ⱥ* 請,ꀸ 诮ﮬ.̲꣪# " ;뿿+ϯ:;/:򲸢?;*>/+˾ʌᄐ<ﯼ#?:.;ο/>?⿼.￿>㯺..뎌﻾믻몣쪋*?*.ʿ.:,뫎+.ˀ˪*ʿ﫼+*#* "Ȫ.:꺊+*꺯긫  ꮫ뺼ꪫ** ;.:*꺊:껊+*꺯긫2* ꮫ#:< +(*3 33.ϻᄎﻺȊ?ϯ:?/://꿾ᄏ>.?? ﻻ:3꯺Ϋ?/뫲?8껺+:⫈+?ϫ/ά>:.껌㏈>˨??>>;﫪/>:访?븮3ʮꈫ.8+򊯮++/򻎣2."?Ⱦ㪮?/¨* ̋"8*꯮껪ˮ(Ψ3;ð뫊*.#,:<;??˨+"8꯮ꯊ:껨㸮:຿;?>?/򮺮/̯ά;Ȼ︼**.3.;?ίﻼﯮ..>.;ﺿ迾+˻?+˪￾뾾.ϻ?+??/Ͽ>?;28+>>+*2쿪+￿?￿?Ͽ>￿?Ͽ>;?ο??;?ο???ο??>?+뿺;./;?*쿿;*뻠/+>?>>">ο"￾2_"?뮿;+?￿;?*쿿;*뻠/+>?>>">ο2Ͽϯ.?ο?*>:ϯ̣*/* 3>*:;> 8:(#;Ͽϯ."(.⫪?ʪ"2:3? 꺺(: ; 꿿"ꋰ*3뺢?>?/뿾;./;ﺣ?*>:ϯ̣*/* 3>*:;> 8:(΋#; *⾬;*뻠/+3>+>>"8>(3ʿ2￾2#?Ϋ?+쿿;"/+"?>>+>﬿2">⫪?낪2:;? 8> 꿿"̏ꋸ;˫??Ͽϯ./Ͽϯ./?+磌>:ϯΠʿ"*˯* 3"*:;>*<:(û3; +磌>:ϯʿ"*˯* 3"*:;>*<:(û3; 0?2?:﮸2ο?"?.븺0ìο++ʮ?;ο??﻾2"?먻Ϋ;/쿿?"+"2?>>+2>㿪:;? ﾿+""﨣??￾2#?̫?Ͽϯ.Ͽϯ.??Ͽϯ.Ͽϯ.>↑; +2쳻??￿?Ϋ??/?￿?Ϋ謁˿??Ͽϯ.Ͽϯ.2>ꫪÿʮ2; 쿸* 2ꏺ??/???ϯϯ/?/ϯϯ/ϯϯ.?쾿꿻?*򮻲#2ﳸ>;쿣㻿;>↑;,+2:쳻???쾿꿻?*򮻲#2ﳸ>;쿣㻿ο;Ϋ?ᆪΫ>뫾:>̢¯̳:,ϯ븳/+.2+?/ >⫪?젲2*;>,츨 꿯"ꋸ㪯3? >⫪?젲2*;>,츨 꿯"ꋸ㪯3?">⫪?;?/? 꿫 ꋺ/?????ϯϯ.* >̠2 : ,젨/ ⿫"苨#?0>ꫪÿʮ2;,쿸 *(2̏꯺ȣ??;>?ϯᆵ/.???Ϋ?ﮫ#/?..:???+ή3??*ʫ;?˫򫮃 㾾>?,. */ 辻ﳫ꾿<򾿫ʾ:/:>;?ϯϯ/>.뫿﮿Ͼ;?ϯϯ/.ϯϯ/.ϯϯ/.ʿϯ/?辻ﳫ<뿺ʾ:/:??*˯:?뻾뎃,*㾾>?, :˿ϯ+>/*˯:?뻾뎃, 㾾>?, :???;˿ϯ>/믻;ʮ˿<ϯ˿?˾ϼ:>:>.Ͼ;;>?뿿?ϼ;;>>˿>ϯ/?˿>ϯ/˿>ϯ/?./+ϻ;>˿ᆴ視#8﻾?/;뿾>>/*#ˮ?>+2ꪎ8긲芪﮾//>;>;??Ͽϯ︿󺻿ﯿ/ʯꏯ<*>.諳" ?.󪺾貪ꪂ >>>?>?뺿>?ﺯ?ϻ??뺯?/+ﺿﻯ?ﯿ/꾮>?+輸("ﺫή˪ˮ迊Ί껯::ί*(*ﺪϺ닯*ʪˮΊꢪ* /:ʯ3*?ϯϿϮ:/Ͼ3;?ꫮξ΢+Ϫ㯪+:??̺*?Ϊ↓>;θ:??̺*ᄎ?Ϊ?/↓>;θ:?ᄒ/?+.*>*,0ʊ02* Ë.ⳣ ", 0ʊ022* Ã.꣌"+視ꮪ>8. 껨/"󮫸ʋ>:*??ﯿ?+ϸ>??>.?ꫮ뺺絛>ꪻ>ϫ.*꫌ :Ϩ >ʨ> ++?*,>Ϊ.>?ﺯ?议*˸˺Ϩ>ʬ>,+*>>Ϊ>/?*>ʬ++2(Ϊ,￿?ﯿ 뾏2ᆵ뻾뾾絛;ﯿ 뾏2ᆵ뻾뾾絛;?? *. ϰ*˳+/໪*˨>ಬ;/*/ª껪>?/?/?+>뿿>;?ﯾ?>ﻯ˯;;??/?+>뿿>;?ﯾ?>ﻯ˯;ﯾ?>ﻯ˯;/?ϯ˿﫾ꯎ?/﫾?>ﻯ˯;?///8;Ϊ˻:˪#㾿 﫾ʃ Ⱥ;?:/(88ϣ8>ο*(;8(/ϨϨʯ꣺.:*;.2:*» 2Ϫ몰㫎⯿ ﻻ/;;˾:*Ͽ껨?;??( < ˮ..⊳οᆰ2<8"/> :?+>輢:?/>ᄒ?뾺:+;?>88:*ϣ긺>..;8Ȫ믪+򮯫>+?:>/ÿ˾ϯ:*Ͽ껨?;??8(???;￿/?ˮꃈ# /뼋Ύ# : . (8못3 +ꃈ# / 뼏Ύ# ¯: . (8몿; +ꃈ:# /ꌪ 뼏Ύ# .«: . ( 8몿;+ꃈ:# /ꌪ 뼏Ύ# .«: . ( 8몿;+˿ί;;>+#?:?/*Ϋ?.??.?>?>/?;?;?:*:?.?:/;.?????;ﯾ/?>?>ϯ;;??>뺺몮ʻο+.+Ϻ:/뮋*«Ͽ???>??辎(+;*?裿¾Z>Ϡ;+2﮺?辎(+;*?裿¾Z>Ϡ;+2﮺?????/???????κʪ#(+<.8 ʮ>ꪯ.<ʊ( :>.κʪ#(*<.8 ʮ+>ꪯ.<ʊ( :>..8ﻯ ?..8ﻯʮ?..8ﻯ ?..8ﻯ ?.?.8ﻯ ?.ȊΪ+.8 ʮ뿾뮏.<(ú?.κΪ+(.ﯰ8 ʮ>ꪯ.<(ú>.ȊΪ+.8 ʮ뿾뮏.<(ú?..8ﻯ?.?ﮯ묻뺫?˿ ο;Ͽ:;???/ϯ;Ͽ;?/./:#??ϻ?8*,˪.#/3γ>?:β0?ί+뺫ϻ/;Ͽ;?>*辯.>.;뿫+뻫㳺㿨:?믯?과ȿ>?* ;?(*>.:+/;/+:򮾾믫>33>(?* ᄏ?꾫;;?;?;?.⋺⺺(,:>򪿬﫮.ꪯ??ꫀ迾課ʿ++?컏??⪊+‚#㫫ʪϫ((ȫ?#袯; 8.舀> 싺,,?*(: 2**밬;; "*:2++3Ȫ ;"ϫ;ï/㯎,+, (?."+.>*ʿ *+/.??/뼮*ꮮ;,/;㿈 +*?쯺.;/.:??#+뼨**Ϊ誮;:,;¯ #*?:*򾌺*/ ા̲ˣ.ϢȪ #ë 쮈+*+.3>?ϻ;ﮫ.??+???￿Ϯ;κ:?/;>?;??Eagle-2.4/example/EUR_test.bim000066400000000000000000002125301321437612200162160ustar00rootroot0000000000000021 rs11702480 0.415634 38347375 G A 21 rs7280358 0.415683 38349787 A C 21 rs7282108 0.415721 38352192 A C 21 rs58296537 0.415776 38358682 G C 21 rs150853915 0.415796 38361458 T C 21 rs115711809 0.415803 38362498 G A 21 rs2409872 0.415806 38362985 G A 21 rs11910597 0.415955 38384946 G T 21 rs3761360 0.415964 38386216 G A 21 rs2266592 0.416021 38394733 C A 21 rs148101413 0.41606 38400451 A G 21 rs148136816 0.416239 38416034 G A 21 rs762372 0.416247 38417361 A G 21 rs141970591 0.416252 38420970 G A 21 rs12185821 0.416253 38422733 C T 21 rs79801167 0.417267 38442191 A G 21 rs28503645 0.417269 38443674 A G 21 rs4817843 0.417321 38447040 A C 21 rs60447195 0.417321 38448600 T A 21 rs8131246 0.417321 38451926 G A 21 rs13050226 0.417321 38457708 C T 21 rs8130846 0.417327 38480242 A G 21 rs117771271 0.417327 38482304 A G 21 rs2154535 0.417327 38488908 G A 21 rs74420981 0.41735 38495693 G A 21 rs141610402 0.417356 38500731 T C 21 rs9985082 0.417356 38501021 A G 21 rs75144049 0.417357 38501185 C T 21 rs2154537 0.417357 38502012 G C 21 rs190527289 0.417378 38516221 G T 21 rs1053808 0.417378 38525356 C T 21 rs147582059 0.41738 38528855 A C 21 rs2156077 0.417384 38539357 C T 21 rs111570643 0.417384 38541778 G A 21 rs2835645 0.417385 38546382 T C 21 rs2156078 0.417385 38546473 T C 21 rs8126491 0.417385 38551219 T C 21 rs144627088 0.417385 38554329 G A 21 rs7276711 0.417389 38578189 G A 21 rs9976569 0.417409 38580810 C G 21 rs11911729 0.417418 38592416 C A 21 rs62226497 0.417421 38594601 G A 21 rs1128922 0.417427 38596677 A G 21 rs74791694 0.417468 38603836 G C 21 rs73220516 0.417494 38608373 G A 21 rs138006613 0.417536 38615603 C T 21 rs2051399 0.41758 38627522 C T 21 rs1080847 0.417588 38632880 G C 21 rs9974208 0.417602 38644934 T C 21 rs11701507 0.417768 38667835 C T 21 rs9984095 0.418018 38678407 T C 21 rs2840356 0.418066 38685113 G A 21 rs9980746 0.418074 38686115 G A 21 rs7278090 0.418148 38696481 G T 21 rs73203904 0.418156 38697623 C T 21 rs11911733 0.418182 38701247 T A 21 rs2065304 0.418192 38702722 A G 21 rs73903586 0.418754 38710971 C T 21 rs8128060 0.419644 38727637 C G 21 rs11701585 0.41965 38729691 C T 21 rs75575279 0.419663 38732621 T A 21 rs73214091 0.419671 38741739 C G 21 rs76460412 0.419673 38749343 A G 21 rs73216425 0.419683 38768439 G A 21 rs192246294 0.419705 38770446 A T 21 rs117029806 0.419707 38776680 A G 21 rs182536099 0.419718 38788076 T C 21 rs56232482 0.419731 38800069 G C 21 rs2835735 0.419747 38802816 G A 21 rs2835736 0.419747 38802873 C G 21 rs28630928 0.419748 38803827 T A 21 rs73218435 0.419758 38815456 T C 21 rs139446358 0.419838 38854224 A G 21 rs78436698 0.419844 38860312 G A 21 rs138004108 0.419858 38873581 C G 21 rs2835774 0.41986 38875232 A T 21 rs2236687 0.419885 38889729 C T 21 rs17229459 0.419895 38891587 C T 21 rs11701836 0.419916 38892250 A G 21 rs2835788 0.420008 38906071 C G 21 rs2835791 0.420037 38910567 T G 21 rs7282810 0.420054 38917463 T C 21 rs73220452 0.420104 38922719 A T 21 rs7281380 0.420277 38930922 C T 21 rs2248669 0.420373 38940103 C G 21 rs4817871 0.420379 38943410 G C 21 rs58743101 0.420431 38957645 C T 21 rs62224260 0.42046 38959689 A G 21 rs113285258 0.420491 38961827 G A 21 rs79486053 0.42054 38965342 G A 21 rs9981372 0.420552 38966201 C T 21 rs2835826 0.42087 38971126 G C 21 rs7279695 0.420872 38971410 G A 21 rs73906081 0.42094 38976159 A G 21 rs9979022 0.421047 38982827 G A 21 rs8129759 0.421052 38983111 C T 21 rs73220491 0.421126 38988323 T G 21 rs702859 0.42116 38997701 A G 21 rs857975 0.421192 39001613 G T 21 rs1787330 0.421195 39002787 A G 21 rs2835864 0.421306 39023431 T A 21 rs2248732 0.421311 39025049 A C 21 rs56682341 0.421311 39025611 T C 21 rs731329 0.421321 39029086 C T 21 rs2835876 0.421322 39029255 T C 21 rs1709819 0.421425 39036115 C A 21 rs1709817 0.421425 39036349 A T 21 rs8128422 0.421456 39040796 A G 21 rs1709826 0.421475 39049473 A G 21 rs724491 0.421489 39051786 G A 21 rs55680031 0.421507 39056538 G A 21 rs150761798 0.42151 39058801 T C 21 rs860797 0.421523 39066804 C T 21 rs858003 0.421533 39072984 G A 21 rs112944150 0.421598 39084803 C A 21 rs59350504 0.422229 39105534 C T 21 rs67336869 0.422229 39105626 G A 21 rs702865 0.422298 39118742 G A 21 rs2835939 0.422365 39128848 T C 21 rs188059434 0.422375 39129456 A T 21 rs80289738 0.422403 39132130 G A 21 rs2835951 0.422447 39145172 A G 21 rs762145 0.422493 39146318 C T 21 rs9680139 0.42257 39147099 G A 21 rs861416 0.42311 39155095 C T 21 rs2835977 0.423495 39182197 G A 21 rs2835989 0.423617 39192552 A G 21 rs3787839 0.423694 39202292 G A 21 rs3787853 0.423904 39216661 T C 21 rs3787854 0.423916 39220245 C T 21 rs764165 0.424712 39231190 T C 21 rs143926103 0.42472 39233266 C T 21 rs2836028 0.424783 39240050 C T 21 rs117154416 0.424785 39240260 C A 21 rs8126718 0.424806 39242964 G A 21 rs2409943 0.424815 39244171 T C 21 rs2836029 0.426903 39254227 C A 21 rs2836030 0.427667 39255727 A G 21 rs56236575 0.427778 39268944 C T 21 rs928766 0.427781 39269275 A G 21 rs1537104 0.427797 39270929 A G 21 rs2249899 0.427829 39276106 G A 21 rs9976923 0.428474 39313380 T C 21 rs60418075 0.428482 39314486 C T 21 rs11088414 0.428514 39319456 G A 21 rs4817905 0.430106 39329715 A G 21 rs11910719 0.430174 39332588 C T 21 rs1539902 0.430292 39337209 G A 21 rs13052997 0.430295 39337307 C T 21 rs8130416 0.430566 39344228 T G 21 rs2836074 0.430632 39346333 C T 21 rs2836076 0.430697 39350002 A G 21 rs59729477 0.430852 39353242 C G 21 rs2836079 0.431004 39355035 T C 21 rs62222024 0.4315 39357533 T C 21 rs2836085 0.431709 39359907 C T 21 rs7284062 0.43182 39360803 C T 21 rs2836096 0.43182 39363949 T C 21 rs17815267 0.43182 39365472 G A 21 rs1028999 0.431831 39368038 C A 21 rs1029002 0.431835 39368177 T C 21 rs17815279 0.431836 39368387 A G 21 rs74870234 0.431836 39373325 C T 21 rs974975 0.431837 39378169 G T 21 rs139277783 0.432017 39388349 G T 21 rs11702812 0.432022 39394979 C T 21 rs2032091 0.432073 39417372 T C 21 rs117443437 0.432095 39428600 C G 21 rs74509656 0.432106 39438181 T A 21 rs78246489 0.432109 39439742 T C 21 rs113297965 0.432408 39452801 T C 21 rs62223479 0.432442 39454239 C A 21 rs61640919 0.432506 39485041 T C 21 rs76954756 0.432533 39491202 T G 21 rs2211855 0.432537 39494820 G A 21 rs60876887 0.432539 39496307 C T 21 rs62223504 0.43254 39497188 G T 21 rs2211858 0.432544 39501464 C G 21 rs62223513 0.43258 39527833 C T 21 rs2836178 0.432599 39542974 G A 21 rs7277351 0.432619 39556816 A C 21 rs77058278 0.43262 39557079 A C 21 rs13052748 0.43262 39557088 A G 21 rs79904375 0.432624 39562929 T A 21 rs114519939 0.432637 39565906 T A 21 rs11700531 0.432638 39574717 G A 21 rs71316628 0.432638 39576125 T A 21 rs62223523 0.432666 39595228 T C 21 rs7279619 0.432669 39598059 G A 21 rs982807 0.432687 39602696 A C 21 rs9984963 0.432793 39630944 T C 21 rs2836251 0.432876 39633192 T G 21 rs2836255 0.432923 39634196 A G 21 rs2836258 0.432923 39635924 A C 21 rs12329791 0.432949 39646635 C T 21 rs113766510 0.432952 39646932 C T 21 rs3804020 0.432953 39647125 A G 21 rs7279943 0.432957 39647601 G A 21 rs2836277 0.432962 39652400 G A 21 rs2836278 0.432962 39652840 G A 21 rs77033880 0.432963 39653641 C A 21 rs13046434 0.432963 39654038 A G 21 rs2836287 0.432976 39659057 C A 21 rs9984636 0.43304 39687171 T G 21 rs2211866 0.433055 39688107 G A 21 rs4817938 0.433087 39690119 T C 21 rs2836306 0.433205 39697436 C A 21 rs2836307 0.433219 39698055 C T 21 rs73211968 0.43326 39700260 A G 21 rs56121533 0.433261 39700292 C T 21 rs76808559 0.433325 39705041 C T 21 rs2836309 0.433365 39707909 G A 21 rs9976478 0.433416 39710855 T A 21 rs17284924 0.433421 39714817 C A 21 rs2836319 0.433422 39716601 G T 21 rs75725139 0.433423 39717457 T A 21 rs73423993 0.433495 39723120 G A 21 rs6517462 0.433937 39730913 T C 21 rs12152039 0.434724 39736972 G T 21 rs2836345 0.434732 39738813 C A 21 rs730854 0.434814 39749486 A C 21 rs112785916 0.434817 39749692 T A 21 rs117647402 0.434906 39764401 C G 21 rs2836364 0.434919 39767874 C T 21 rs3787889 0.434979 39770856 A T 21 rs2156074 0.435145 39780646 G A 21 rs2186345 0.435149 39781688 C T 21 rs112392766 0.435345 39790518 G A 21 rs1571703 0.435472 39794835 T G 21 rs115717119 0.43552 39802736 A G 21 rs56180262 0.435556 39805503 G A 21 rs9305648 0.436465 39822906 C G 21 rs2836421 0.437986 39835286 C T 21 rs34825969 0.438048 39846142 G A 21 rs11701454 0.438052 39847563 G A 21 rs2836431 0.438059 39849917 C T 21 rs76979970 0.438069 39853485 A G 21 rs77106233 0.438079 39856897 T G 21 rs2212933 0.43808 39856991 C A 21 rs2836437 0.438129 39864584 A G 21 rs73215941 0.438333 39879758 T A 21 rs2155718 0.438419 39891105 G A 21 rs10854385 0.438688 39909266 G A 21 rs2836491 0.43882 39913016 A G 21 rs9980821 0.438892 39921759 C G 21 rs12482226 0.438897 39924114 A T 21 rs12483227 0.438901 39925723 A G 21 rs111569767 0.438907 39927840 T C 21 rs4817950 0.438915 39930483 C T 21 rs117013656 0.43903 39940290 C T 21 rs8130680 0.4393 39948136 A G 21 rs3827208 0.439341 39950587 G C 21 rs79595200 0.439357 39951582 C T 21 rs2836541 0.4395 39954413 T C 21 rs71316649 0.440191 39958087 C G 21 rs77282337 0.440822 39963158 G C 21 rs13051259 0.440839 39964867 C T 21 rs2836556 0.440887 39973770 A G 21 rs57461137 0.440889 39975299 T C 21 rs112776799 0.440889 39976107 G A 21 rs2836568 0.440912 39977435 A G 21 rs73217979 0.44092 39978443 G T 21 rs73432179 0.440921 39980219 A G 21 rs60914381 0.440921 39980456 C G 21 rs73217988 0.440928 39986737 C T 21 rs16996585 0.440936 39990729 T C 21 rs460439 0.441044 39999894 T C 21 rs464484 0.441075 40003117 T C 21 rs460214 0.441093 40006081 T C 21 rs11702424 0.441112 40008675 G A 21 rs464519 0.441315 40024182 A G 21 rs2836597 0.441318 40024424 G A 21 rs1041780 0.441393 40044145 C T 21 rs2836621 0.441435 40054149 C T 21 rs139129346 0.441477 40061429 A G 21 rs73222057 0.441479 40062563 G A 21 rs6517477 0.441607 40072376 T C 21 rs4817959 0.442089 40080202 C T 21 rs80335778 0.44238 40086457 T C 21 rs2836642 0.442423 40092424 G A 21 rs11911341 0.442427 40093506 G A 21 rs73205549 0.444697 40124746 C T 21 rs118061384 0.4447 40125274 A G 21 rs1209912 0.444929 40149642 A G 21 rs56392700 0.445085 40159943 A G 21 rs1209935 0.445094 40163327 C T 21 rs59492909 0.445095 40163715 A T 21 rs714781 0.445171 40178381 C T 21 rs76490364 0.445207 40187028 T C 21 rs2836694 0.445385 40203826 G C 21 rs2836703 0.445415 40210162 T G 21 rs1534824 0.445418 40210483 G A 21 rs1534825 0.445419 40210516 G A 21 rs468529 0.445522 40221741 T C 21 rs17816027 0.445523 40222549 C T 21 rs75765540 0.445585 40227927 G C 21 rs425931 0.445632 40232326 C T 21 rs7279660 0.445734 40236810 A G 21 rs468637 0.445741 40239269 G A 21 rs75571264 0.445789 40247834 G C 21 rs414845 0.445807 40254465 T C 21 rs62217843 0.44582 40260612 T A 21 rs9982210 0.447267 40288511 T C 21 rs7279192 0.447412 40293084 T G 21 rs7279414 0.447418 40293421 A G 21 rs11088457 0.447471 40296275 G A 21 rs1888477 0.447492 40297536 T C 21 rs10854391 0.447542 40301253 C T 21 rs2142106 0.447556 40302129 A C 21 rs2836786 0.448701 40332176 A G 21 rs190174633 0.448709 40335993 C T 21 rs79567064 0.44872 40342350 G T 21 rs191872249 0.448732 40344466 C T 21 rs11088461 0.448876 40354480 G A 21 rs79902787 0.449218 40364553 A G 21 rs17285812 0.449783 40382167 C T 21 rs11701235 0.450137 40384135 C T 21 rs55754456 0.450236 40385208 C T 21 rs7275748 0.450279 40385736 G A 21 rs8134572 0.451299 40396227 T G 21 rs35474192 0.451378 40403534 G A 21 rs1882776 0.451412 40405512 G A 21 rs2242932 0.451435 40408664 T C 21 rs1882774 0.451456 40413733 G A 21 rs148351416 0.451497 40422362 C G 21 rs4279007 0.451548 40424954 A G 21 rs445593 0.451647 40448382 G A 21 rs74641112 0.451664 40449829 G A 21 rs4817986 0.452718 40465512 G T 21 rs67603741 0.45298 40473620 A G 21 rs2037922 0.45473 40486507 G A 21 rs1554930 0.454747 40488359 A T 21 rs2836891 0.454753 40489027 T C 21 rs376521 0.454811 40491526 G A 21 rs4314079 0.454872 40494979 G A 21 rs1013129 0.454879 40498109 G A 21 rs909181 0.45493 40499111 C G 21 rs11700449 0.455436 40522419 A T 21 rs56151678 0.455446 40526973 T G 21 rs8132295 0.455446 40527774 C T 21 rs148624590 0.455446 40529500 C A 21 rs8134843 0.455454 40542522 G C 21 rs2836930 0.455454 40545656 A G 21 rs8129850 0.455456 40549805 A G 21 rs73221192 0.455462 40554561 G A 21 rs76075760 0.455463 40555609 T C 21 rs112150498 0.455463 40555711 C G 21 rs13050584 0.455466 40574090 T C 21 rs148938553 0.455466 40578832 T C 21 rs6517529 0.455467 40584598 T C 21 rs142893816 0.455469 40586908 C T 21 rs2898370 0.45547 40588948 T C 21 rs2836958 0.455495 40623526 T C 21 rs2836962 0.455512 40628982 T C 21 rs75281336 0.455512 40641262 T C 21 rs140126455 0.455512 40662217 A T 21 rs9982111 0.455512 40665296 A G 21 rs2056844 0.455512 40670460 G C 21 rs8131150 0.455512 40677315 G C 21 rs10154217 0.455512 40678195 T C 21 rs9975562 0.455512 40678968 T C 21 rs8128620 0.455515 40680170 G C 21 rs8127986 0.455567 40687211 T A 21 rs150097632 0.455567 40688518 C T 21 rs77027816 0.455574 40701657 C G 21 rs8130854 0.455577 40707041 A G 21 rs185596052 0.455582 40709290 A C 21 rs13045993 0.455672 40727966 A T 21 rs12106311 0.45569 40738620 G A 21 rs71316134 0.45569 40738776 C T 21 rs190523219 0.455764 40750555 T C 21 rs185350809 0.455764 40750563 T C 21 rs117266211 0.455822 40763494 G A 21 rs2837007 0.455841 40772484 T C 21 rs2837027 0.455903 40799797 G A 21 rs8129943 0.455903 40807057 A G 21 rs76141934 0.455908 40812635 T C 21 rs9983404 0.45592 40817127 C G 21 rs2837035 0.455921 40818379 A G 21 rs78655815 0.455932 40828483 G C 21 rs7277633 0.455981 40836441 A G 21 rs141312238 0.456115 40842297 G A 21 rs1735136 0.456139 40844843 T A 21 rs9975004 0.456142 40845626 T C 21 rs7277107 0.45625 40862760 G A 21 rs2837052 0.456257 40869963 G A 21 rs112960656 0.456269 40875714 C T 21 rs9636960 0.45627 40877030 C T 21 rs2246616 0.456287 40886816 T C 21 rs16997766 0.456349 40891157 C T 21 rs2837061 0.456353 40891862 C T 21 rs76031704 0.456354 40892575 C T 21 rs77236117 0.456355 40893441 C A 21 rs2837064 0.456356 40894230 T C 21 rs2837067 0.456357 40894840 T G 21 rs17408203 0.456357 40894896 A G 21 rs118111352 0.456706 40900002 A G 21 rs645495 0.456721 40900795 C T 21 rs117114519 0.456728 40901172 T C 21 rs570510 0.456733 40901431 G A 21 rs74813064 0.456735 40901563 T C 21 rs7279098 0.456746 40903686 C T 21 rs574863 0.456876 40911324 C T 21 rs74552879 0.456896 40913992 T C 21 rs608265 0.456914 40923307 T C 21 rs11700560 0.456919 40927194 A G 21 rs2837078 0.456976 40938031 G A 21 rs561166 0.457004 40941132 T G 21 rs628045 0.457025 40942375 C T 21 rs4818058 0.457026 40942475 C T 21 rs617260 0.457026 40942490 T C 21 rs599377 0.45707 40944211 G C 21 rs77949542 0.457088 40945212 C T 21 rs572926 0.457088 40945268 C T 21 rs193123070 0.457112 40947330 A G 21 rs144058957 0.457176 40957762 C T 21 rs73358157 0.457179 40958546 A G 21 rs578349 0.457193 40961915 T G 21 rs116943326 0.457201 40964005 C T 21 rs760163 0.457233 40970832 C T 21 rs583953 0.457246 40971786 C A 21 rs112325952 0.457255 40972378 C T 21 rs4816636 0.459094 41026510 G T 21 rs734413 0.459746 41032804 A G 21 rs909182 0.459761 41033816 G A 21 rs79728168 0.460091 41042478 C T 21 rs9975884 0.460126 41043190 G T 21 rs79171747 0.460145 41044980 T C 21 rs980184 0.460227 41056338 G A 21 rs16998145 0.460672 41074844 C T 21 rs8128755 0.46069 41077248 A T 21 rs56112847 0.460762 41087850 G A 21 rs12626282 0.460797 41093854 T G 21 rs76733558 0.460926 41095898 G A 21 rs78695875 0.462431 41098725 A G 21 rs4818075 0.462707 41107044 T C 21 rs144501849 0.464298 41125951 T C 21 rs10470189 0.464301 41126946 A G 21 rs71316138 0.464302 41127439 A G 21 rs4818083 0.464303 41127767 G A 21 rs2837173 0.464312 41131437 C T 21 rs2837183 0.464319 41135338 T C 21 rs73217279 0.464405 41142775 A G 21 rs2837213 0.464528 41148563 A G 21 rs2205205 0.46453 41149964 G A 21 rs73217299 0.464576 41154754 C G 21 rs1118103 0.464579 41155495 G C 21 rs73219403 0.464604 41159823 C A 21 rs117111901 0.464623 41161542 G A 21 rs463903 0.464632 41165677 A G 21 rs462163 0.464656 41175808 C T 21 rs462782 0.464723 41193094 T G 21 rs73221209 0.464728 41196507 A G 21 rs461019 0.464728 41197984 G A 21 rs56374307 0.464728 41199722 G A 21 rs55684706 0.464728 41200994 T G 21 rs16998635 0.464728 41203015 T C 21 rs7283816 0.464728 41204081 C G 21 rs55728093 0.464728 41205217 G A 21 rs67897619 0.464729 41206282 C T 21 rs66820219 0.464729 41206344 A C 21 rs66920289 0.464729 41206542 G A 21 rs2837239 0.464729 41207683 G A 21 rs55884303 0.464729 41207783 A C 21 rs55928419 0.464729 41207829 A G 21 rs111512893 0.464729 41208691 C T 21 rs112903189 0.464729 41208697 A T 21 rs1004663 0.464729 41209790 G C 21 rs2837244 0.464729 41210034 G C 21 rs2837246 0.464773 41215018 T C 21 rs419536 0.464846 41225158 C T 21 rs11910004 0.465335 41241547 C T 21 rs71316701 0.465335 41241571 C G 21 rs62235432 0.465354 41248127 G A 21 rs2276520 0.465424 41258505 G A 21 rs2299759 0.466871 41269091 G C 21 rs2075719 0.466878 41270521 C T 21 rs2837284 0.46689 41275401 G A 21 rs62236564 0.466894 41275463 C T 21 rs2837285 0.466919 41275890 G A 21 rs2299769 0.468719 41280181 G A 21 rs4143343 0.469531 41285481 T C 21 rs2299789 0.469615 41291358 T G 21 rs9977425 0.469629 41292364 T A 21 rs9984322 0.46964 41294162 C T 21 rs9977486 0.47081 41321735 C T 21 rs74932549 0.470936 41334070 T G 21 rs1123923 0.470942 41335367 T G 21 rs736288 0.470977 41340005 T C 21 rs1734920 0.471513 41344911 G T 21 rs62236620 0.472124 41348304 T C 21 rs992039 0.472142 41348521 A G 21 rs67451115 0.472196 41353045 A G 21 rs56205306 0.47221 41353879 C T 21 rs760130 0.472247 41356039 C T 21 rs111445113 0.472276 41358845 G A 21 rs4818105 0.472348 41370397 G A 21 rs1033340 0.47235 41370589 G T 21 rs9975535 0.472433 41374583 T C 21 rs78659544 0.472466 41376800 A G 21 rs10775663 0.472506 41379496 A G 21 rs2837369 0.472548 41382468 T C 21 rs3901224 0.473492 41389090 A G 21 rs28605097 0.474264 41405382 C T 21 rs9981861 0.475553 41415044 T C 21 rs28582765 0.475742 41418714 G T 21 rs2837405 0.475834 41429710 T C 21 rs13051351 0.475843 41430001 C T 21 rs2065315 0.475929 41437081 G A 21 rs8130946 0.476588 41453043 T C 21 rs11701562 0.477035 41467123 G T 21 rs78015389 0.477056 41472520 G A 21 rs13049725 0.477093 41476880 A G 21 rs79072855 0.477101 41484983 A T 21 rs1235600 0.477101 41485700 T C 21 rs2837438 0.477153 41498063 G A 21 rs74901161 0.477249 41511118 A G 21 rs75018081 0.47726 41511553 A T 21 rs75988415 0.47732 41513870 C T 21 rs145680049 0.477336 41515589 G A 21 rs9978649 0.477357 41518160 G T 21 rs4402848 0.477359 41519133 G A 21 rs73225226 0.477362 41520075 T C 21 rs10483063 0.477362 41520150 T C 21 rs73225239 0.47738 41523183 A G 21 rs8132673 0.477424 41525276 G T 21 rs7275239 0.478723 41531337 T C 21 rs67142512 0.480496 41546416 C G 21 rs2837480 0.480501 41546955 T C 21 rs117375757 0.480712 41555147 G C 21 rs1882791 0.48072 41555446 G A 21 rs73364118 0.480763 41557287 G A 21 rs66564794 0.480768 41558058 G A 21 rs57055280 0.480812 41565282 C A 21 rs1882796 0.480815 41565675 G C 21 rs113663397 0.480843 41569270 C A 21 rs60693305 0.480851 41571250 A T 21 rs117944090 0.480854 41571605 A G 21 rs7278621 0.480858 41572207 A C 21 rs2178849 0.480881 41575158 A G 21 rs2178850 0.480882 41575227 T C 21 rs11702147 0.480899 41577346 A G 21 rs2837499 0.480902 41577819 C T 21 rs8131481 0.481075 41581722 C T 21 rs73230354 0.481118 41588385 A C 21 rs116979427 0.481124 41589547 T C 21 rs9982501 0.481155 41594632 G A 21 rs2837513 0.481173 41596554 T C 21 rs2837516 0.481179 41597421 C T 21 rs449728 0.481194 41598581 C G 21 rs7281487 0.481351 41613577 G A 21 rs117210180 0.481612 41648897 G A 21 rs117988684 0.481624 41651099 T A 21 rs7282745 0.482415 41671653 T G 21 rs1997542 0.482464 41676359 C A 21 rs2837569 0.482468 41680306 G T 21 rs10211903 0.482585 41684994 C T 21 rs143659674 0.483666 41712347 T C 21 rs117043406 0.483698 41727221 C T 21 rs143243590 0.483771 41740860 T C 21 rs2017995 0.483819 41755231 C A 21 rs78140159 0.484123 41768402 T C 21 rs74911059 0.484174 41774550 C A 21 rs80268298 0.484183 41776452 C T 21 rs66519541 0.484191 41779019 T C 21 rs73217015 0.485308 41804377 C T 21 rs8133661 0.485419 41805199 C T 21 rs10439672 0.48545 41813285 T C 21 rs4818130 0.485459 41814287 T A 21 rs73902634 0.486136 41834322 T C 21 rs8127921 0.486149 41839209 G A 21 rs9983133 0.486155 41841134 T C 21 rs2837647 0.486168 41848101 C T 21 rs62225479 0.486169 41848643 T C 21 rs9977414 0.48623 41855584 T C 21 rs8131537 0.486261 41859770 C A 21 rs2837660 0.486271 41861838 G C 21 rs8128255 0.486292 41869508 G A 21 rs2094876 0.486329 41882205 A G 21 rs9980603 0.48635 41886583 T C 21 rs144729058 0.486361 41889069 A G 21 rs61557310 0.486391 41895763 T C 21 rs2205133 0.486484 41899139 T A 21 rs62225549 0.486505 41903870 G A 21 rs76494176 0.486513 41904952 G T 21 rs8133246 0.486534 41907203 T C 21 rs2837694 0.486635 41910637 A G 21 rs16999959 0.486642 41910944 T C 21 rs55714611 0.48748 41917545 C G 21 rs2837700 0.488132 41922017 C T 21 rs35202506 0.488139 41925725 A G 21 rs2837704 0.488141 41927021 C T 21 rs4818143 0.488142 41927859 C T 21 rs458934 0.488334 41949401 C T 21 rs462992 0.488334 41949690 G A 21 rs13048982 0.488334 41950029 G A 21 rs117868113 0.488352 41955788 C T 21 rs9978289 0.488352 41955789 A G 21 rs465127 0.488361 41959552 A T 21 rs455772 0.488368 41962135 G A 21 rs460181 0.488407 41963228 G T 21 rs2103480 0.488431 41970874 C T 21 rs56291275 0.488441 41974464 T C 21 rs10460679 0.488454 41977675 C T 21 rs146539748 0.488461 41980044 G A 21 rs6517602 0.488478 41985748 T G 21 rs2837753 0.488554 41990749 A G 21 rs73216202 0.488595 41991343 T A 21 rs3827218 0.488805 41993758 A G 21 rs35178623 0.489092 42003866 G C 21 rs35786508 0.489117 42004353 T A 21 rs1015993 0.489165 42005288 C T 21 rs34651383 0.489192 42009791 G A 21 rs8127399 0.489216 42015678 C G 21 rs9984403 0.489224 42017949 A G 21 rs987897 0.489236 42021805 A T 21 rs35057352 0.489426 42025594 C T 21 rs1537112 0.489767 42029143 C T 21 rs8134076 0.489936 42044877 G T 21 rs117799787 0.489939 42045580 G A 21 rs7280280 0.490002 42055029 A T 21 rs62223017 0.49174 42065826 C G 21 rs11909903 0.491781 42073641 C T 21 rs926090 0.491785 42075391 G C 21 rs11910405 0.491791 42077795 A C 21 rs71318535 0.491792 42077909 A G 21 rs2026274 0.491811 42079127 C T 21 rs71316171 0.491953 42084246 G A 21 rs8129663 0.491957 42084630 C T 21 rs66461687 0.49196 42084895 C A 21 rs35035578 0.491994 42089417 C A 21 rs13048841 0.492001 42090776 G A 21 rs79566442 0.49203 42096412 G C 21 rs13051235 0.4922 42103818 A T 21 rs58114519 0.492247 42104122 A T 21 rs8132900 0.492396 42106263 C T 21 rs188073352 0.49251 42112106 A C 21 rs2837804 0.492514 42115318 C T 21 rs117532654 0.492518 42119105 C A 21 rs2837806 0.492523 42123676 C T 21 rs12482503 0.492609 42133903 G A 21 rs56060434 0.49261 42133960 C T 21 rs79676743 0.492613 42135350 A G 21 rs148898802 0.492614 42135891 T C 21 rs7279013 0.492618 42137851 G A 21 rs1999329 0.492691 42140401 C T 21 rs9808699 0.4927 42140619 A G 21 rs77603305 0.492703 42140696 T C 21 rs7277165 0.492866 42154583 G A 21 rs7277205 0.492866 42154651 G A 21 rs6517615 0.492888 42157509 T C 21 rs7277017 0.492903 42161703 G A 21 rs13052165 0.492929 42169368 A G 21 rs113430952 0.495271 42194554 G A 21 rs2837843 0.496379 42203219 T C 21 rs34812495 0.496713 42219820 C G 21 rs8133945 0.498224 42226166 A T 21 rs6517627 0.498367 42230435 C T 21 rs77947474 0.498381 42233558 T C 21 rs741772 0.498389 42234205 T C 21 rs2222986 0.498408 42237629 A G 21 rs79004969 0.498418 42240732 C G 21 rs142315268 0.498425 42242860 G A 21 rs2094878 0.498437 42246551 C T 21 rs7279498 0.498705 42253571 G A 21 rs6517635 0.498874 42257498 A G 21 rs2837867 0.499081 42265286 C A 21 rs61184507 0.500502 42279883 T C 21 rs11700509 0.500624 42282191 T C 21 rs2837873 0.500838 42284292 G C 21 rs2150431 0.50086 42291678 C T 21 rs7280789 0.500867 42292965 G T 21 rs10222077 0.500892 42294868 C T 21 rs7275916 0.500921 42300859 G A 21 rs2837885 0.500993 42311908 G T 21 rs74751940 0.50108 42314565 C T 21 rs59264000 0.50185 42331690 A G 21 rs117183559 0.502076 42337481 A G 21 rs35445942 0.502147 42351105 A C 21 rs9975638 0.50216 42361699 G C 21 rs8133497 0.502195 42369070 C T 21 rs117693750 0.502219 42373262 T A 21 rs62636184 0.503717 42384998 C T 21 rs2837902 0.503735 42388524 G A 21 rs12626949 0.503763 42393205 T C 21 rs2183582 0.503817 42404017 T C 21 rs1921982 0.504636 42439105 T C 21 rs2776340 0.504671 42442550 A G 21 rs61420067 0.504691 42445184 T A 21 rs4818202 0.504691 42445300 A C 21 rs73360506 0.504726 42449519 C T 21 rs9982249 0.504752 42451715 G A 21 rs8134658 0.504766 42453728 G A 21 rs2837928 0.504784 42463764 T C 21 rs80339162 0.504785 42468546 C T 21 rs2837948 0.504785 42470603 A G 21 rs9808669 0.504798 42475390 C T 21 rs73902917 0.504812 42478282 C T 21 rs73902918 0.504814 42478750 G A 21 rs8126990 0.504837 42483632 T G 21 rs58292227 0.504839 42484001 C A 21 rs8129429 0.504954 42489730 A G 21 rs2776341 0.504977 42490274 A C 21 rs116866410 0.506057 42514815 A G 21 rs1001453 0.506067 42515277 G A 21 rs62217915 0.506122 42519037 A C 21 rs112077699 0.506146 42520773 G T 21 rs13047965 0.506195 42524342 G A 21 rs9305726 0.506208 42525272 G A 21 rs9305727 0.50621 42525411 A G 21 rs113945363 0.506211 42525452 A G 21 rs914176 0.506249 42528192 T G 21 rs77270082 0.506297 42531725 C T 21 rs146646159 0.506386 42539814 G C 21 rs4818217 0.507326 42546059 G C 21 rs55854621 0.509783 42563352 G A 21 rs9980345 0.509813 42564184 C T 21 rs71318561 0.510274 42572435 G A 21 rs138837252 0.510427 42576164 C T 21 rs1888518 0.510529 42579521 T C 21 rs7510366 0.51061 42581927 C T 21 rs35939063 0.510639 42584621 A G 21 rs113982325 0.510772 42589425 A G 21 rs34616176 0.510974 42595176 T C 21 rs28629220 0.51101 42597387 T C 21 rs9978837 0.511251 42605846 G C 21 rs79062280 0.511301 42607306 G A 21 rs17000715 0.511376 42610008 C T 21 rs74977559 0.511467 42613255 C G 21 rs67237909 0.511645 42616201 G A 21 rs67525224 0.51183 42627220 G C 21 rs4818226 0.511881 42633065 G A 21 rs3787945 0.511907 42640022 G T 21 rs58534150 0.511934 42640903 C T 21 rs12483323 0.511977 42643845 C T 21 rs144512707 0.512027 42651868 G A 21 rs1072869 0.512784 42657548 A C 21 rs73905316 0.513116 42668059 A T 21 rs147323220 0.513137 42671437 C T 21 rs11700807 0.513162 42675504 T G 21 rs9976217 0.513183 42679042 A G 21 rs112075738 0.513194 42680958 G T 21 rs67755284 0.513274 42690363 G A 21 rs2838009 0.513412 42694284 G T 21 rs2838013 0.513437 42695161 A G 21 rs2838014 0.513451 42697714 C G 21 rs75055531 0.513947 42712996 A G 21 rs73226128 0.513957 42714474 A G 21 rs4818234 0.51397 42716275 G A 21 rs60265870 0.513975 42716967 G A 21 rs2838016 0.513987 42718515 C T 21 rs188887615 0.513996 42719722 C T 21 rs113748702 0.51638 42730082 C T 21 rs982871 0.516393 42731475 C T 21 rs9981317 0.516446 42737181 G A 21 rs398206 0.51649 42742036 A C 21 rs146454620 0.517318 42752835 C A 21 rs143197614 0.517841 42762886 T C 21 rs9976700 0.517918 42766607 T C 21 rs148934070 0.518041 42772655 C T 21 rs10222067 0.518241 42787804 G T 21 rs80343070 0.518351 42792528 G T 21 rs139557023 0.518471 42798318 G C 21 rs455599 0.518559 42804679 A G 21 rs150013352 0.51857 42809418 A C 21 rs7276891 0.518783 42823805 T C 21 rs2070787 0.519087 42842129 T G 21 rs191773371 0.519127 42846868 A G 21 rs150003718 0.519129 42847005 A G 21 rs9636988 0.519155 42850045 T C 21 rs61735789 0.519178 42852435 G A 21 rs9976780 0.519249 42855235 T C 21 rs146865760 0.519285 42856216 C T 21 rs4818240 0.519316 42857302 C T 21 rs139305247 0.519345 42860655 C T 21 rs391099 0.519371 42863779 T C 21 rs55760462 0.519932 42868206 T C 21 rs2187238 0.519992 42872751 T C 21 rs73230088 0.520056 42879604 C A 21 rs75603675 0.520058 42879909 C A 21 rs11088551 0.520061 42880316 A G 21 rs13046567 0.520085 42884586 T C 21 rs28751065 0.520091 42885959 C A 21 rs11701382 0.52013 42890643 G T 21 rs35247320 0.52015 42892744 G A 21 rs76044243 0.520229 42899373 G A 21 rs2838048 0.520334 42908010 A G 21 rs73359734 0.520374 42911619 C A 21 rs2838058 0.521078 42924907 C A 21 rs73359771 0.52148 42932714 G A 21 rs12627738 0.521753 42938794 G A 21 rs181980059 0.521755 42939151 C A 21 rs11088555 0.521761 42939918 T C 21 rs11702046 0.521769 42941137 C T 21 rs28550108 0.521872 42942294 T A 21 rs60194694 0.521906 42942620 G A 21 rs77471525 0.522303 42946470 T A 21 rs28875606 0.522386 42947275 C T 21 rs146420318 0.522687 42950184 G A 21 rs3922457 0.522755 42950842 T C 21 rs28700940 0.522882 42952075 C T 21 rs28580771 0.523202 42955173 G T 21 rs2838068 0.529039 43012237 A G 21 rs7281619 0.529185 43024918 C T 21 rs74688298 0.529256 43026507 C T 21 rs72613633 0.529282 43026920 G A 21 rs73903452 0.52931 43027373 G A 21 rs62219346 0.529391 43029809 G T 21 rs76579998 0.529555 43034223 G A 21 rs79348973 0.52956 43034276 A G 21 rs78385097 0.529577 43034452 C T 21 rs117092792 0.529941 43044789 C T 21 rs2309095 0.530017 43047680 G A 21 rs140081430 0.530028 43048119 G A 21 rs62217773 0.530087 43051391 T G 21 rs36015477 0.530209 43059169 T C 21 rs7275423 0.530311 43060705 T A 21 rs77935309 0.530759 43069386 C A 21 rs113905126 0.532356 43074655 C T 21 rs8132754 0.533362 43080711 G T 21 rs79904875 0.533365 43080950 C T 21 rs2255892 0.533584 43087772 C T 21 rs80311167 0.533786 43093880 C T 21 rs2849704 0.533901 43097354 T C 21 rs2849705 0.533938 43098465 A C 21 rs74721445 0.534078 43101097 C A 21 rs75408487 0.53416 43102027 C T 21 rs8132108 0.534514 43108664 C G 21 rs141491431 0.534519 43109691 C A 21 rs35108587 0.534979 43121290 C T 21 rs34811135 0.534979 43121294 T C 21 rs9982707 0.535691 43129518 C G 21 rs34439510 0.535736 43130030 G A 21 rs34230257 0.535885 43131753 G A 21 rs4919935 0.536319 43136728 T A 21 rs144311111 0.536563 43140837 C T 21 rs13048502 0.538365 43167066 A C 21 rs116954548 0.538459 43179525 T C 21 rs117871010 0.53846 43180218 T C 21 rs3787956 0.538461 43180883 G A 21 rs35744208 0.538474 43182401 C A 21 rs73371629 0.538492 43183371 G A 21 rs4919944 0.538538 43185765 C A 21 rs6586239 0.53856 43187167 G C 21 rs35879470 0.538937 43198648 G A 21 rs13049138 0.539151 43202443 C T 21 rs186053893 0.539168 43202702 C T 21 rs113036430 0.539194 43203116 G C 21 rs12482924 0.539238 43211684 C T 21 rs3737427 0.539374 43223255 G A 21 rs2298687 0.539384 43224683 G A 21 rs150080619 0.539456 43234116 G A 21 rs74592564 0.539461 43234763 T C 21 rs28477638 0.539504 43239972 G A 21 rs28708536 0.539546 43244905 G A 21 rs28738914 0.539549 43245242 A G 21 rs188390156 0.539721 43264913 T C 21 rs79379629 0.539756 43267379 G C 21 rs8130749 0.539802 43270327 T A 21 rs8129271 0.539803 43270524 G C 21 rs79091252 0.539894 43277787 T C 21 rs140798254 0.540044 43288025 G T 21 rs3746898 0.540082 43291053 A G 21 rs7275618 0.540101 43292621 T C 21 rs35109371 0.540103 43292852 C T 21 rs11702265 0.540134 43297227 C T 21 rs35840201 0.540248 43303558 A T 21 rs9984118 0.540477 43309706 C T 21 rs9974785 0.54058 43312993 G A 21 rs170135 0.540631 43314604 G A 21 rs172637 0.540853 43318871 G C 21 rs7283940 0.541726 43325145 G C 21 rs12483229 0.542018 43338933 A T 21 rs9977215 0.542114 43343190 C T 21 rs365163 0.542582 43345207 A G 21 rs116569272 0.542687 43352399 G A 21 rs518035 0.542912 43358595 C T 21 rs9325617 0.542993 43359769 T C 21 rs56796252 0.54395 43375811 A G 21 rs576808 0.543958 43376453 A G 21 rs4920041 0.543977 43378083 T C 21 rs13049363 0.544002 43380231 A T 21 rs146963847 0.544077 43386085 A G 21 rs7276077 0.544687 43394871 C A 21 rs7283480 0.544689 43395064 A T 21 rs9980268 0.544704 43396664 T A 21 rs73221473 0.544816 43401611 T C 21 rs151076584 0.544886 43425908 G T 21 rs141659792 0.544895 43427170 A G 21 rs9981167 0.545031 43434243 C T 21 rs76414588 0.545086 43435343 G T 21 rs220202 0.545245 43438781 C T 21 rs2839439 0.545258 43439562 G A 21 rs220208 0.545261 43439679 T C 21 rs117995466 0.545261 43439681 A C 21 rs73221486 0.546566 43445366 A C 21 rs411725 0.546934 43453953 G C 21 rs220235 0.546949 43454252 T C 21 rs1788356 0.546959 43454440 T C 21 rs186659716 0.547591 43457314 C T 21 rs189352333 0.549862 43462007 G A 21 rs78248586 0.549898 43465959 C T 21 rs1869770 0.549936 43470113 C T 21 rs220252 0.549955 43472438 G A 21 rs220253 0.54998 43475879 T C 21 rs220260 0.550036 43480111 C G 21 rs117201265 0.550104 43484207 T C 21 rs2124341 0.550831 43497858 T C 21 rs220291 0.550865 43498042 T G 21 rs149896652 0.551739 43503563 C T 21 rs220305 0.551883 43511179 G A 21 rs220314 0.552034 43519442 T C 21 rs220318 0.552039 43520106 C T 21 rs187025147 0.552096 43529173 G C 21 rs220130 0.55217 43531808 A C 21 rs61137659 0.552186 43532456 C T 21 rs73223546 0.552361 43536262 T C 21 rs35523457 0.553148 43554337 G A 21 rs11911271 0.553328 43555491 T C 21 rs3819142 0.553518 43557698 A C 21 rs73373683 0.553616 43564848 G A 21 rs4283513 0.553619 43566409 G T 21 rs113909092 0.553621 43566848 C T 21 rs9978854 0.553624 43567731 G A 21 rs148354929 0.553625 43568086 G C 21 rs62215138 0.553625 43568112 C T 21 rs220184 0.553641 43571418 G A 21 rs113385692 0.553691 43595643 A T 21 rs144535424 0.553703 43599517 T A 21 rs117900671 0.553715 43604140 G A 21 rs221952 0.553804 43609733 C T 21 rs113871782 0.55384 43613970 G A 21 rs8126796 0.553851 43615752 G A 21 rs141210811 0.553875 43625640 G A 21 rs1840593 0.553886 43626673 G A 21 rs4148088 0.553906 43628935 C G 21 rs4148089 0.553914 43630172 C T 21 rs146978161 0.553921 43631270 G A 21 rs145656134 0.553932 43633045 C T 21 rs2234715 0.553969 43638855 A G 21 rs4148098 0.553998 43639553 T A 21 rs9976024 0.554098 43641657 G A 21 rs915846 0.555322 43652782 C G 21 rs113560275 0.555392 43661477 G A 21 rs7283699 0.55543 43663318 G A 21 rs2839478 0.555454 43667082 G A 21 rs9979980 0.555635 43671220 C T 21 rs113669242 0.555769 43673375 A G 21 rs4148120 0.555774 43673477 G C 21 rs225391 0.555927 43684668 G A 21 rs6586299 0.5563 43698073 T G 21 rs4148123 0.556323 43698251 G A 21 rs144038443 0.556427 43699616 C T 21 rs2839482 0.556452 43700432 A G 21 rs3788005 0.556505 43702023 C T 21 rs56337741 0.557595 43716554 G A 21 rs4148140 0.557612 43718611 C T 21 rs1023156 0.557622 43720525 G A 21 rs117158840 0.557627 43721660 C T 21 rs11910395 0.557632 43722586 C T 21 rs6586306 0.55764 43723284 A G 21 rs73364691 0.557647 43723636 T C 21 rs138410757 0.557761 43726857 C A 21 rs73225454 0.55929 43731068 C T 21 rs78811301 0.559425 43740523 G A 21 rs56097231 0.559426 43740637 G A 21 rs142488053 0.559592 43756572 A T 21 rs225325 0.559646 43762840 G A 21 rs1867032 0.559654 43763376 G A 21 rs225336 0.55972 43767414 A T 21 rs3814896 0.559783 43771711 A G 21 rs111696381 0.559784 43771843 A C 21 rs172825 0.559794 43773253 G C 21 rs116937309 0.5598 43775213 T C 21 rs225343 0.559808 43775780 C A 21 rs178740 0.559866 43777672 T C 21 rs9978991 0.559899 43781594 T C 21 rs143991203 0.5599 43781709 G A 21 rs117091392 0.55993 43784414 C T 21 rs12626334 0.560438 43791233 C T 21 rs225430 0.560857 43801712 C A 21 rs17114826 0.560872 43804413 A G 21 rs2839501 0.560892 43805637 C T 21 rs2839504 0.561935 43808004 A C 21 rs117552882 0.563312 43814544 C G 21 rs11203200 0.563312 43814575 G A 21 rs11909615 0.563316 43815042 A G 21 rs225319 0.563339 43815773 A G 21 rs117267633 0.563841 43819281 G A 21 rs112745380 0.56385 43822174 C T 21 rs11203201 0.563866 43823726 C G 21 rs9974289 0.56388 43827562 G A 21 rs77546520 0.56391 43840089 T G 21 rs3788013 0.563911 43841328 C A 21 rs11912007 0.563935 43849054 C G 21 rs11910025 0.563935 43849109 A G 21 rs115641947 0.563942 43850905 C T 21 rs11910326 0.564257 43853459 G A 21 rs2276236 0.564311 43862255 C A 21 rs112764046 0.564378 43865293 C T 21 rs3827231 0.564463 43866166 G C 21 rs11700872 0.565031 43882741 C G 21 rs58969530 0.565053 43885402 T G 21 rs9974527 0.565055 43885551 G A 21 rs56000893 0.565078 43887092 C T 21 rs55912114 0.565084 43887469 G A 21 rs78900688 0.565488 43895896 C T 21 rs2839535 0.565851 43905327 T C 21 rs59775135 0.565865 43912021 G A 21 rs9984443 0.56591 43929514 T A 21 rs111991358 0.565932 43934148 T G 21 rs113450922 0.565949 43936246 G C 21 rs12482752 0.5664 43957256 G A 21 rs9976600 0.566443 43970875 C T 21 rs118137491 0.566444 43970988 T C 21 rs142595043 0.566454 43978149 T G 21 rs117428310 0.566462 43980347 A G 21 rs143204768 0.5667 43986436 C T 21 rs62213023 0.566772 43995327 C T 21 rs117965939 0.566775 43995935 A G 21 rs451954 0.566775 43995954 G A 21 rs17767630 0.566777 43999418 G T 21 rs17178345 0.566783 44000861 A G 21 rs2849721 0.566792 44003148 C G 21 rs388831 0.5668 44004149 T C 21 rs112822782 0.566922 44016037 C A 21 rs410698 0.567149 44021566 G C 21 rs7282743 0.567668 44025148 A G 21 rs440431 0.568333 44032712 C G 21 rs66519542 0.568512 44037888 C T 21 rs9976560 0.568523 44038275 C G 21 rs36058049 0.56854 44041193 G A 21 rs73229525 0.568589 44047969 T C 21 rs143994722 0.568659 44052979 G A 21 rs408967 0.568696 44056499 G T 21 rs76732039 0.568709 44059261 T A 21 rs1539969 0.568718 44061352 A C 21 rs404714 0.568718 44061357 C T 21 rs12233328 0.568725 44063008 T G 21 rs36098823 0.569203 44075537 G T 21 rs61639224 0.569222 44076382 G T 21 rs9981767 0.569319 44079875 C A 21 rs71320536 0.569321 44080009 C T 21 rs139069801 0.569386 44084914 C A 21 rs2269136 0.569575 44093942 G A 21 rs71320544 0.569703 44102020 A G 21 rs35729571 0.569898 44110493 C T 21 rs756577 0.569917 44118323 C T 21 rs13049942 0.569932 44120767 G C 21 rs8130322 0.569962 44126130 C T 21 rs71320552 0.57001 44143109 G C 21 rs148256699 0.570037 44146829 C G 21 rs56760862 0.570039 44147511 A G 21 rs962287 0.570097 44155009 T G 21 rs75905062 0.570332 44158447 G A 21 rs13052351 0.570768 44163087 T C 21 rs13047677 0.57092 44168188 A C 21 rs2269163 0.571341 44181240 C G 21 rs66484525 0.571371 44183133 T G 21 rs113090704 0.571376 44184429 T A 21 rs6586346 0.571429 44189983 C A 21 rs75918224 0.571478 44191402 C G 21 rs35179485 0.571772 44198015 G A 21 rs9653817 0.571848 44200676 A G 21 rs7283656 0.571887 44202023 T C 21 rs12053696 0.572043 44207846 A G 21 rs35628508 0.572271 44227260 T C 21 rs7277934 0.572294 44229483 C T 21 rs77802091 0.572322 44238499 T C 21 rs112978626 0.57236 44251944 A G 21 rs73231680 0.572365 44254621 T C 21 rs2156317 0.572367 44257918 C T 21 rs76271836 0.572371 44263321 G A 21 rs35709881 0.572372 44264824 G A 21 rs60406170 0.572487 44269860 A C 21 rs77095994 0.572488 44270931 G A 21 rs884153 0.572489 44271703 A G 21 rs464854 0.572494 44275033 G T 21 rs1236634 0.572521 44278105 A G 21 rs62219107 0.572525 44283830 C T 21 rs7280803 0.572526 44283938 T C 21 rs7280082 0.572526 44284142 G A 21 rs7281227 0.572526 44284179 C T 21 rs13052506 0.572526 44284204 C A 21 rs13048885 0.572529 44284794 T C 21 rs111485799 0.57253 44287486 G C 21 rs13051639 0.57253 44290674 G C 21 rs151246629 0.57253 44290743 C T 21 rs8134864 0.57253 44296362 C T 21 rs12626259 0.57253 44297041 A G 21 rs2839596 0.57253 44300978 A G 21 rs57692532 0.57253 44305283 C T 21 rs140279568 0.57253 44306258 G C 21 rs11910684 0.572531 44310537 T G 21 rs112235529 0.572533 44312171 G A 21 rs6586259 0.572537 44315266 G A 21 rs7277472 0.572537 44315388 T C 21 rs8134328 0.572585 44333836 G C 21 rs11911418 0.572586 44334837 G A 21 rs34726798 0.572586 44335098 C T 21 rs11555158 0.57259 44337914 A G 21 rs80147563 0.572591 44341258 G A 21 rs6586265 0.572592 44345180 T C 21 rs73905787 0.572592 44345836 C G 21 rs57834162 0.572593 44348810 T C 21 rs12483651 0.572594 44350895 G A 21 rs71320577 0.573234 44365432 C T 21 rs6586276 0.573342 44369959 G A 21 rs6586277 0.573348 44370227 T C 21 rs9975683 0.573348 44370235 T C 21 rs6586278 0.573349 44370290 C T 21 rs62217611 0.573358 44370806 T C 21 rs73367664 0.573408 44375641 C T 21 rs140570802 0.573441 44382994 C T 21 rs191379760 0.573441 44382999 C T 21 rs11702023 0.573485 44386247 T C 21 rs145521368 0.573571 44393836 G A 21 rs71316190 0.573591 44398601 T C 21 rs71316191 0.573591 44398624 C T 21 rs4920025 0.573598 44401479 A G 21 rs77434287 0.573599 44401810 C T 21 rs71320589 0.573599 44402047 T C 21 rs35348720 0.5736 44402247 C T 21 rs1672137 0.573602 44403363 C G 21 rs34209438 0.573604 44407068 C T 21 rs2401150 0.573604 44407305 G A 21 rs28506838 0.573604 44408453 G C 21 rs139835089 0.573605 44411755 G A 21 rs149717110 0.573606 44412398 G A 21 rs12481921 0.573606 44414088 C T 21 rs9982622 0.573607 44417564 A G 21 rs56041312 0.573622 44430588 C T 21 rs1788479 0.573633 44434836 C A 21 rs77084451 0.573684 44451876 G A 21 rs234742 0.573693 44454301 T C 21 rs1672127 0.573693 44460184 G A 21 rs35568502 0.573694 44463724 T C 21 rs71320595 0.573697 44464223 C T 21 rs12483705 0.573709 44466913 A T 21 rs146347214 0.573714 44467056 C T 21 rs8127973 0.573953 44474949 C T 21 rs760124 0.573963 44475953 T C 21 rs61123777 0.574021 44483748 T A 21 rs1788466 0.574022 44483773 G A 21 rs234706 0.574031 44485350 G A 21 rs2851391 0.574045 44487404 C T 21 rs71322506 0.574103 44491293 T C 21 rs1788467 0.574238 44496062 G C 21 rs117641509 0.574387 44500820 C T 21 rs138673287 0.574401 44500991 T C 21 rs59602964 0.574613 44503300 G A 21 rs3972 0.575281 44506201 C T 21 rs117627258 0.575633 44512726 G A 21 rs1672139 0.575717 44534948 G C 21 rs1789958 0.575724 44535681 C T 21 rs77909915 0.575734 44536776 G A 21 rs115916816 0.575973 44561267 C T 21 rs9653810 0.575989 44562966 A G 21 rs2839637 0.575999 44563995 C T 21 rs112545620 0.576339 44569929 T C 21 rs9980126 0.576393 44571239 A G 21 rs73374287 0.576678 44579936 T C 21 rs872331 0.57706 44589215 T C 21 rs62217721 0.578437 44595039 G A 21 rs11909053 0.579334 44606790 G A 21 rs2839649 0.579344 44607103 A G 21 rs28691163 0.579381 44608227 G A 21 rs12482670 0.579396 44608660 T G 21 rs150718026 0.579449 44612256 C G 21 rs13046255 0.579457 44617110 C T 21 rs9984575 0.58423 44712163 A G 21 rs76917707 0.584234 44712356 A G 21 rs142317129 0.584235 44712415 C A 21 rs9976679 0.584328 44717003 C T 21 rs73909407 0.584345 44717781 C T 21 rs2051405 0.584428 44720146 T C 21 rs79094191 0.584491 44720890 T C 21 rs8130169 0.584542 44721475 A G 21 rs501228 0.584738 44730807 G A 21 rs74333834 0.586272 44737463 C G 21 rs4819336 0.58709 44747209 G T 21 rs2838268 0.587267 44759436 C G 21 rs2838269 0.58728 44761179 T C 21 rs2838270 0.587284 44761738 G T 21 rs9978496 0.587365 44764709 A G 21 rs476659 0.58741 44766698 C T 21 rs478570 0.587414 44766920 C T 21 rs140701167 0.587463 44770052 C T 21 rs73378255 0.587967 44773295 C T 21 rs8130681 0.588641 44774853 C A 21 rs2838282 0.588959 44776695 T C 21 rs564779 0.589148 44785422 T C 21 rs668058 0.589157 44786539 G A 21 rs653435 0.589165 44787553 T C 21 rs13049305 0.589186 44790028 T C 21 rs150414296 0.589255 44792762 C A 21 rs78957366 0.589344 44800830 C T 21 rs2838293 0.589412 44806314 A G 21 rs57315329 0.589443 44808713 C T 21 rs143422847 0.590324 44818058 C T 21 rs118058929 0.591318 44825423 G A 21 rs857554 0.591324 44825447 G C 21 rs59394421 0.591369 44825998 G A 21 rs74871846 0.591656 44833788 G A 21 rs117381526 0.591767 44838466 T C 21 rs118116454 0.591924 44855291 C G 21 rs35374062 0.592012 44868191 C G 21 rs12626999 0.592013 44868414 T C 21 rs11088981 0.59202 44870150 C T 21 rs17004555 0.592049 44872714 C T 21 rs463194 0.59219 44877993 A C 21 rs162348 0.59252 44913747 C T 21 rs162373 0.592646 44927107 C A 21 rs79242594 0.592648 44932167 C A 21 rs75836229 0.592658 44948684 T G 21 rs7278003 0.592681 44966069 C T 21 rs76276964 0.592682 44967919 C T 21 rs77563572 0.592685 44987057 C A 21 rs13046391 0.592685 44989148 A G 21 rs2838319 0.592687 44991901 G A 21 rs183422213 0.59269 45002270 G A 21 rs73223085 0.592693 45008660 T C 21 rs78010493 0.592696 45010333 A G 21 rs2838328 0.592711 45023234 C G 21 rs2838332 0.592717 45035007 A G 21 rs2329442 0.592717 45041790 C T 21 rs144031409 0.592719 45049173 G A 21 rs1454648 0.592753 45053815 T C 21 rs9984002 0.592753 45061501 C T 21 rs2246610 0.592753 45064600 C T 21 rs2838337 0.592757 45072621 C A 21 rs116094934 0.59313 45128618 A G 21 rs111604761 0.59343 45130460 G T 21 rs10432970 0.594264 45135138 T G 21 rs4819301 0.594502 45137629 G A 21 rs13049890 0.594507 45137692 G A 21 rs62229179 0.59455 45138930 T G 21 rs11089094 0.594621 45147564 T C 21 rs9974754 0.59466 45151874 G A 21 rs2276528 0.594668 45152500 G A 21 rs79898513 0.594707 45156443 G T 21 rs73375207 0.594726 45160862 C G 21 rs140684849 0.594726 45160913 C T 21 rs8134507 0.59478 45172379 G A 21 rs117675264 0.594893 45186754 G A 21 rs74451301 0.594905 45188278 G A 21 rs140987444 0.594945 45189912 G A 21 rs73224949 0.595009 45192052 T G 21 rs59461641 0.595254 45198863 C T 21 rs13050410 0.595258 45201758 G A 21 rs55830074 0.595263 45205668 T C 21 rs2276244 0.595267 45209442 C T 21 rs2276245 0.595268 45209714 C T 21 rs2838365 0.59527 45211731 T C 21 rs62230080 0.595276 45214365 C T 21 rs2838385 0.595298 45223060 C T 21 rs2070539 0.595298 45223930 C T 21 rs9979356 0.595323 45230974 T C 21 rs11909278 0.595333 45234894 G A 21 rs1573334 0.59534 45237494 C T 21 rs1136072 0.595344 45238353 C A 21 rs11701446 0.595364 45241812 C G 21 rs139618545 0.595367 45242323 A G 21 rs8128936 0.595374 45243213 A G 21 rs144723570 0.595382 45244466 C T 21 rs4419312 0.595467 45247635 C T 21 rs2838417 0.595517 45252901 G A 21 rs2838419 0.595537 45254167 T C 21 rs11089101 0.595586 45256598 A G 21 rs4819332 0.595935 45274239 C T 21 rs762404 0.596051 45295157 A G 21 rs116847040 0.596057 45298875 G C 21 rs56242868 0.596061 45301914 G A 21 rs143858978 0.596086 45317541 G A 21 rs3788075 0.596089 45318772 T G 21 rs73371115 0.596089 45319024 T C 21 rs62228708 0.596093 45320988 T G 21 rs60986841 0.596094 45322869 G A 21 rs1006757 0.596151 45341732 C G 21 rs77817180 0.596231 45351146 G A 21 rs9983066 0.596243 45355828 C T 21 rs2838445 0.596381 45362489 G C 21 rs150098700 0.596399 45367549 C A 21 rs2838447 0.596612 45370888 A G 21 rs76291130 0.596826 45392742 G A 21 rs9647232 0.59684 45393449 G A 21 rs2838456 0.596858 45396968 A G 21 rs2070544 0.596865 45398488 T G 21 rs73906701 0.596939 45405546 G C 21 rs62229690 0.596958 45408363 G A 21 rs73373152 0.596976 45410655 G A 21 rs11702855 0.596999 45413262 G A 21 rs148908362 0.59764 45431661 C G 21 rs2838470 0.597664 45437183 G A 21 rs2299812 0.597666 45438890 C T 21 rs2238711 0.597679 45453956 A G 21 rs56273547 0.59768 45454894 T C 21 rs2247400 0.597682 45456458 C T 21 rs9306172 0.597703 45475489 G C 21 rs56340987 0.597703 45477446 C T 21 rs2838481 0.597704 45487181 G C 21 rs2255922 0.597724 45492795 A G 21 rs55794203 0.597724 45500511 C T 21 rs11550376 0.597746 45527291 G A 21 rs2855653 0.597769 45540143 A G 21 rs148012748 0.597779 45543949 T A 21 rs2242953 0.597779 45545334 A G 21 rs9978109 0.597779 45547913 C A 21 rs35538274 0.597787 45565837 C T 21 rs4819383 0.597818 45573361 A G 21 rs4818885 0.597862 45580513 G A 21 rs7283007 0.597893 45584376 T C 21 rs11702363 0.5979 45585556 A G 21 rs11702859 0.5979 45585633 G A 21 rs2838511 0.597928 45589980 G A 21 rs111443462 0.599038 45606570 A T 21 rs73228974 0.599157 45609110 G A 21 rs743476 0.599204 45610369 A G 21 rs4456788 0.599321 45616324 A G 21 rs73907113 0.599342 45619519 A G 21 rs2329709 0.599355 45621560 G A 21 rs56178904 0.599375 45624551 C T 21 rs7282137 0.599376 45624667 T C 21 rs34560460 0.599402 45628546 A T 21 rs77074020 0.599416 45630591 A G 21 rs74330716 0.599429 45632229 G C 21 rs8128765 0.599431 45632427 T A 21 rs181793439 0.599501 45636665 C T 21 rs150177720 0.599523 45637648 C G 21 rs9983276 0.599535 45638288 T C 21 rs3804033 0.599596 45648488 G C 21 rs9974245 0.599602 45649499 G A 21 rs7281454 0.599812 45653759 A G 21 rs141439063 0.599877 45654774 C A 21 rs73366529 0.599965 45659025 G A 21 rs58940818 0.600054 45664784 C A 21 rs3788111 0.600105 45668171 G T 21 rs140400131 0.600142 45670601 C T 21 rs138247506 0.600171 45672692 G T 21 rs56354854 0.6002 45674950 A T 21 rs2276248 0.600246 45679258 T C 21 rs2838540 0.600314 45687581 G A 21 rs145070872 0.60055 45701294 G A 21 rs151083841 0.60097 45707609 G A 21 rs878081 0.601014 45708277 C T 21 rs150352051 0.601454 45715127 C T 21 rs2256817 0.601475 45715386 G A 21 rs9974092 0.601489 45717247 G A 21 rs9976073 0.601519 45721710 T C 21 rs56168965 0.601593 45724853 C G 21 rs140395625 0.601615 45731238 C T 21 rs2838547 0.601615 45731458 G C 21 rs143022969 0.601797 45744812 G A 21 rs3761392 0.601908 45752176 C A 21 rs66916924 0.60227 45756069 T C 21 rs111119177 0.602515 45758633 C G 21 rs13313851 0.602817 45777750 G T 21 rs9974187 0.602821 45778702 G C 21 rs28472722 0.602825 45779774 C G 21 rs4818917 0.602869 45799280 T C 21 rs11911248 0.602872 45803097 T C 21 rs141359423 0.602922 45815899 C G 21 rs189210114 0.602951 45823874 C T 21 rs1618355 0.60296 45826462 A C 21 rs1785441 0.602963 45826952 T A 21 rs8127837 0.602971 45830061 G A 21 rs2238726 0.603843 45853851 C A 21 rs45593631 0.60397 45854740 C T 21 rs72497623 0.604121 45855850 T C 21 rs7278129 0.604195 45856398 C G 21 rs4818921 0.604295 45865167 T C 21 rs145375948 0.604381 45883271 G A 21 rs73233025 0.604517 45894462 T C 21 rs73233027 0.604564 45897827 T G 21 rs2838573 0.604603 45902806 C T 21 rs79239574 0.604623 45905559 G T 21 rs78535846 0.604926 45931184 G A 21 rs73377700 0.605479 45942240 T C 21 rs75697303 0.605572 45951926 C T 21 rs2329834 0.607372 45970812 A G 21 rs478967 0.607373 45971023 G T 21 rs2838589 0.607733 45977640 A G 21 rs117347650 0.607776 45979336 G A 21 rs233254 0.607781 45980477 T C 21 rs233259 0.607791 45982923 T G 21 rs233324 0.607801 45985337 T C 21 rs233275 0.607832 45990446 G A 21 rs462711 0.607925 45998317 T C 21 rs420894 0.60793 45998933 G A 21 rs412062 0.60793 45998935 A G 21 rs430791 0.60793 45998946 C T 21 rs149326833 0.607941 46000367 G T 21 rs455562 0.607955 46002088 T G 21 rs465930 0.60797 46003900 G A 21 rs455413 0.607975 46004507 T C 21 rs1785470 0.608449 46008875 C G 21 rs233298 0.608592 46010984 G C 21 rs233309 0.608641 46012182 G A 21 rs11702525 0.608799 46019183 C A 21 rs12481814 0.608803 46019672 G A 21 rs377573 0.608805 46020070 T C 21 rs76187588 0.608806 46020218 T C 21 rs77769051 0.608826 46022653 T C 21 rs1211129 0.608836 46023401 T C 21 rs415753 0.608849 46023649 T C 21 rs138752361 0.609228 46032838 G A 21 rs445214 0.609273 46035495 G T 21 rs28542851 0.610845 46048657 A G 21 rs2838602 0.610879 46057393 A T 21 rs1785474 0.610883 46058229 T A 21 rs28368348 0.610883 46058244 C A 21 rs28491945 0.610903 46062481 C A 21 rs2070574 0.610931 46068532 G A 21 rs2838614 0.610977 46075307 T C 21 rs2186933 0.610979 46075590 C A 21 rs13049382 0.610983 46076186 C T 21 rs13048478 0.610987 46076751 T G 21 rs7275203 0.611016 46079413 A G 21 rs12482870 0.61102 46081379 A G 21 rs2329840 0.611028 46085733 C T 21 rs12481809 0.611029 46086407 C T 21 rs12483730 0.611029 46086457 G A 21 rs73234805 0.611039 46091856 T A 21 rs8129089 0.61104 46092107 G A 21 rs73234825 0.611045 46094784 G T 21 rs2838625 0.611048 46096731 G A 21 rs56019874 0.611102 46098517 A C 21 rs5013903 0.61114 46104481 C T 21 rs28681623 0.61115 46105373 C T 21 rs4818963 0.611192 46112862 A G 21 rs56829302 0.611216 46116447 C T 21 rs17285466 0.611345 46123526 A T 21 rs998420 0.611346 46123553 C G 21 rs143610061 0.611355 46123680 C T 21 rs2838651 0.6114 46124496 C T 21 rs9978932 0.611402 46124546 A G 21 rs7283606 0.611431 46125952 C T 21 rs11701538 0.611756 46133097 T C 21 rs235378 0.612083 46143974 C T 21 rs13050653 0.612363 46153100 G C 21 rs62222688 0.612424 46160684 T A 21 rs111642518 0.612435 46161808 G A 21 rs11909699 0.612505 46168364 G T 21 rs35656745 0.612536 46169347 G A 21 rs892517 0.612551 46169818 A C 21 rs690260 0.612631 46173391 A G 21 rs35353717 0.613332 46175328 C T 21 rs1107053 0.613425 46175545 T A 21 rs117596340 0.614297 46180158 C G 21 rs2838673 0.6143 46180309 G A 21 rs13048108 0.614319 46183642 G A 21 rs3788138 0.614339 46187408 C T 21 rs73232943 0.614362 46196103 A G 21 rs2838684 0.614377 46204511 A G 21 rs73232950 0.61439 46208128 G C 21 rs79119995 0.614469 46225312 C G 21 rs9977465 0.6145 46232267 T A 21 rs11702064 0.614511 46234963 C T 21 rs57205597 0.614519 46236675 A G 21 rs73232966 0.614534 46239305 T C 21 rs235338 0.614665 46245921 A T 21 rs76496919 0.614747 46255802 G A 21 rs235258 0.614783 46259884 T C 21 rs2838703 0.614819 46262733 G A 21 rs235307 0.614846 46264963 A G 21 rs741951 0.614892 46269526 G A 21 rs235312 0.614897 46269753 G A 21 rs55927826 0.614921 46276686 A G 21 rs183516 0.614941 46278923 C T 21 rs235324 0.614951 46279505 C T 21 rs117115743 0.614978 46288837 A C 21 rs235373 0.614995 46293692 T C 21 rs381406 0.615022 46304355 G T 21 rs35280729 0.615314 46313140 C T 21 rs56257457 0.615485 46317892 A T 21 rs35963032 0.615792 46321226 C T 21 rs3746973 0.616058 46328026 G A 21 rs58314825 0.616119 46329792 T C 21 rs9976299 0.617049 46338651 C T 21 rs6518205 0.617372 46340154 C T 21 rs3761397 0.617739 46342629 G T 21 rs2014191 0.618524 46350534 C G 21 rs9974172 0.618791 46354055 G A 21 rs62214492 0.618795 46356146 C T 21 rs4818990 0.618813 46357359 G T 21 rs13046102 0.618925 46362383 A G 21 rs4818748 0.618933 46364223 C T 21 rs139062668 0.618945 46368198 C G 21 rs149956285 0.618953 46370980 G A 21 rs7276130 0.619032 46392916 G A 21 rs7282533 0.619041 46396057 G C 21 rs1985483 0.619043 46396906 T C 21 rs1556320 0.619073 46406997 C T 21 rs149554289 0.61926 46414549 T C 21 rs75222517 0.619415 46417650 C T 21 rs117648510 0.619491 46419136 A C 21 rs73226686 0.620016 46428521 C T 21 rs73226689 0.620036 46428873 A G 21 rs4819013 0.620297 46433670 C T 21 rs2329947 0.620523 46439001 T C 21 rs2329949 0.620661 46443848 G A 21 rs12381201 0.620769 46449035 C T 21 rs186684322 0.620894 46453979 G A 21 rs6518210 0.620984 46456733 A G 21 rs13052629 0.620985 46456779 T C 21 rs56290629 0.621071 46470325 G A 21 rs4818755 0.621096 46475502 G A 21 rs75359347 0.621734 46484076 G A 21 rs77386304 0.621824 46487635 C G 21 rs2838762 0.621828 46487831 C A 21 rs187170538 0.621917 46493897 T G 21 rs3788155 0.621954 46501493 C G 21 rs729895 0.621993 46515421 C T 21 rs2838785 0.62203 46529291 G C 21 rs390504 0.622034 46530945 A G 21 rs62216599 0.622045 46535138 G C 21 rs2003273 0.622048 46536586 C T 21 rs2838788 0.622064 46542374 T C 21 rs731248 0.622064 46542544 C A 21 rs142629702 0.622141 46557422 C T 21 rs117525576 0.622166 46560489 T C 21 rs116869330 0.622227 46564075 G A 21 rs420085 0.622286 46572572 G A 21 rs76628070 0.622291 46573818 T G 21 rs13048685 0.622291 46573848 T C 21 rs4819031 0.622305 46578164 G T 21 rs421716 0.622359 46590422 C T 21 rs399185 0.622359 46590501 C A 21 rs11700834 0.622397 46608609 C T 21 rs2838806 0.622407 46618601 T G 21 rs112747596 0.622407 46619393 A T 21 rs1556318 0.622407 46619840 G T 21 rs2838811 0.622408 46624341 C T 21 rs57020111 0.622488 46640676 T C 21 rs144154112 0.622853 46658083 G C 21 rs2838835 0.622857 46665834 G A 21 rs2838843 0.622869 46669284 T C 21 rs7283915 0.622891 46671288 T C 21 rs113537754 0.622896 46673810 G A 21 rs35871601 0.622899 46675214 C T 21 rs1006887 0.622928 46685592 G C 21 rs76010831 0.62293 46688795 C G 21 rs79293787 0.622931 46693055 A G 21 rs914215 0.622934 46698256 T C 21 rs141775504 0.622935 46699098 A C 21 rs74961332 0.622939 46702822 A G 21 rs190868720 0.622943 46707475 G A 21 rs118190587 0.623088 46717495 C T 21 rs113412669 0.623115 46720590 A G 21 rs17004765 0.623185 46729491 G A 21 rs76886536 0.623574 46738929 C T 21 rs145189729 0.62418 46743772 C T 21 rs117376569 0.624342 46747372 G C 21 rs60997234 0.624353 46747951 G A 21 rs1109754 0.624427 46753704 C T 21 rs117462680 0.624446 46755620 C T 21 rs957794 0.624477 46758766 G C 21 rs4819064 0.625078 46762213 A C 21 rs73907436 0.625153 46762722 A G 21 rs111329446 0.625521 46776382 G A 21 rs117874286 0.625566 46777638 C T 21 rs4819070 0.625677 46782383 G A 21 rs62214459 0.625699 46786997 A G 21 rs4819075 0.625706 46789984 T A 21 rs4819086 0.625971 46806537 G A 21 rs7276817 0.626436 46814171 G A 21 rs6518240 0.626561 46816144 A G 21 rs4819097 0.626817 46819149 C A 21 rs2330105 0.627046 46820786 A G 21 rs185195057 0.627081 46821036 C A 21 rs2838907 0.628446 46834311 G C 21 rs115080577 0.629339 46850015 G A 21 rs17338076 0.629357 46850351 G A 21 rs8126556 0.629581 46855397 A G 21 rs11701363 0.629585 46859163 C T 21 rs60375909 0.629587 46860905 C T 21 rs114451752 0.62959 46863586 C T 21 rs78438877 0.629591 46864316 C T 21 rs9977280 0.629607 46879338 A G 21 rs9979599 0.62973 46899672 G A 21 rs11089006 0.629785 46906246 G C 21 rs116274237 0.62985 46910352 C G 21 rs62216329 0.629865 46911276 G T 21 rs3753020 0.630744 46924805 C G 21 rs9680189 0.630906 46926659 A G 21 rs116416605 0.630911 46927262 G A 21 rs2838955 0.630984 46934518 T C 21 rs11702537 0.631043 46955883 A G 21 rs3788203 0.631094 46958586 G T 21 rs9976727 0.631134 46959179 A G 21 rs79701880 0.631226 46960598 C T 21 rs9984031 0.631887 46976828 A T 21 rs12481898 0.632001 46988540 T A 21 rs8132738 0.632001 46988804 C T 21 rs116925823 0.632019 46997131 A C 21 rs73910125 0.632024 46999466 T C 21 rs58240688 0.632033 47003853 G A 21 rs62214345 0.632034 47004163 C T 21 rs9637201 0.635987 47027636 G A 21 rs117188250 0.636698 47033608 T C 21 rs11701249 0.636789 47050714 G A 21 rs74681567 0.636808 47054985 T C 21 rs115727620 0.63681 47055991 T C 21 rs57990579 0.636819 47068170 T G 21 rs117850327 0.636822 47073646 G A 21 rs62215031 0.636822 47075406 T C 21 rs7275796 0.636844 47103998 C T 21 rs9306138 0.636845 47106428 T A 21 rs78288391 0.636849 47114310 A G 21 rs4818795 0.63685 47116489 G T 21 rs6518255 0.636853 47121578 G A 21 rs34142541 0.636855 47124281 G A 21 rs17004795 0.636856 47124912 C G 21 rs35943749 0.636857 47126309 G A 21 rs28625750 0.636861 47131175 T C 21 rs2183596 0.636878 47175451 A G 21 rs9647230 0.636879 47177064 T C 21 rs117564991 0.636885 47182627 A T 21 rs71324444 0.636917 47198301 G A 21 rs117275582 0.636924 47209325 C A 21 rs59785950 0.636944 47225742 G A 21 rs116943168 0.636947 47228172 G A 21 rs1810871 0.637041 47243947 C G 21 rs55912352 0.637159 47273127 G A 21 rs2839026 0.637232 47288665 C G 21 rs2839030 0.637242 47292007 C A 21 rs73911030 0.637262 47300216 G C 21 rs8132062 0.637322 47312804 G A 21 rs9980645 0.637352 47318224 C T 21 rs185415278 0.637353 47318510 C T 21 rs2839054 0.63737 47328449 G A 21 rs2075908 0.637379 47334276 T A 21 rs55959976 0.637386 47338611 T A 21 rs9975216 0.63739 47341590 A G 21 rs3788239 0.637424 47351173 A G 21 rs2776402 0.637445 47360761 T C 21 rs442400 0.637544 47368993 A G 21 rs426378 0.637562 47369637 A C 21 rs118113146 0.637626 47371937 T C 21 rs9977119 0.63764 47372437 G T 21 rs55972491 0.637698 47374604 G A 21 rs9978646 0.63772 47376507 G C 21 rs2150457 0.637723 47376898 T C 21 rs71324472 0.637761 47383831 C T 21 rs2150459 0.637764 47384407 T C 21 rs8129765 0.637782 47388151 G A 21 rs143116902 0.637814 47394988 G A 21 rs117775279 0.637827 47397828 G A 21 rs71324475 0.637859 47404423 G A 21 rs2277814 0.637897 47409503 G A 21 rs143704669 0.637984 47413300 A G 21 rs148827769 0.638176 47422741 G A 21 rs36067332 0.638261 47427701 G C 21 rs36002647 0.638306 47430611 A G 21 rs11089036 0.638308 47430973 T C 21 rs11700564 0.63838 47437318 T G 21 rs56304129 0.638388 47437627 G A 21 rs113786116 0.638424 47439037 C T 21 rs8131409 0.638496 47442820 C T 21 rs2243985 0.63852 47450886 G T 21 rs62211789 0.638528 47453804 C G 21 rs13053084 0.638567 47466505 G A 21 rs112396326 0.639035 47472761 C T 21 rs6518266 0.639049 47473588 G A 21 rs182215039 0.639072 47474854 T C 21 rs71324492 0.639121 47477691 G T 21 rs8127643 0.639173 47480747 G A 21 rs28519583 0.639253 47485382 A G 21 rs8126721 0.639283 47487151 T A 21 rs13052100 0.639309 47488626 A G 21 rs12481743 0.63975 47490767 A G 21 rs2839101 0.642313 47498034 C G 21 rs8126974 0.642385 47498238 A G 21 rs73380474 0.642823 47499482 C T 21 rs73380476 0.643059 47500150 T C 21 rs2839104 0.643286 47501636 A G 21 rs79537646 0.643319 47501987 C T 21 rs73159674 0.64339 47503055 C G 21 rs4305353 0.643453 47507689 C A 21 rs9975177 0.643646 47517568 G C 21 rs9975268 0.643689 47524956 T C 21 rs79894477 0.643715 47530604 C G 21 rs117154313 0.643721 47531859 G A 21 rs78822624 0.643724 47532500 C T 21 rs13050660 0.643796 47546244 C T 21 rs17272947 0.643797 47546334 T C 21 rs66514606 0.643854 47550377 G T 21 rs2839121 0.643869 47550931 C G 21 rs61314705 0.644177 47562560 T C 21 rs9974226 0.644345 47569031 G A 21 rs17004505 0.644412 47571209 T C 21 rs147874211 0.644818 47575748 C G 21 rs113525276 0.644839 47577371 G A 21 rs145907964 0.644843 47580610 G A 21 rs3827274 0.644845 47581655 C T 21 rs114783660 0.644846 47582664 C T 21 rs12329865 0.644847 47583506 C T 21 rs62214046 0.64485 47585997 T C 21 rs8134875 0.644852 47587940 G A 21 rs62214052 0.644857 47591744 C T 21 rs75003466 0.644858 47592249 A G 21 rs73144730 0.644895 47599668 G A 21 rs79937763 0.644962 47605510 G A 21 rs183470806 0.644978 47606955 C T 21 rs56173768 0.644984 47608877 C A 21 rs9979525 0.645005 47616818 C T 21 rs11909555 0.645005 47617489 T G 21 rs115295783 0.645005 47618203 G C 21 rs2839146 0.645017 47630550 C T 21 rs78276120 0.645023 47631784 C G 21 rs76489504 0.645032 47636557 G A 21 rs2280956 0.645038 47642323 C G 21 rs139806871 0.645051 47644999 T C 21 rs1060609 0.645076 47662446 G C 21 rs17183130 0.645085 47671917 C T 21 rs17183123 0.645085 47671961 G C 21 rs2839173 0.645095 47676711 G A 21 rs8131960 0.64512 47687808 C G 21 rs2839184 0.645121 47689013 G A 21 rs17182664 0.645146 47697650 A G 21 rs17368547 0.645146 47697867 A C 21 rs117360371 0.64515 47702187 T C 21 rs17176177 0.645151 47702616 G C 21 rs13047784 0.645151 47702843 C T 21 rs7275639 0.645157 47708333 T C 21 rs118135197 0.645157 47708662 T C 21 rs13051845 0.645162 47710684 A G 21 rs13052101 0.645163 47710884 A G 21 rs117442381 0.645312 47715208 C T 21 rs189875351 0.645335 47717143 G T 21 rs914252 0.645337 47719091 A G 21 rs73146707 0.645337 47719481 T C 21 rs62224180 0.645344 47726332 G C 21 rs62224181 0.645344 47726523 A T 21 rs56107738 0.645345 47727402 G A 21 rs118098334 0.645354 47736303 G A 21 rs4819236 0.645356 47739146 C T 21 rs76945616 0.645356 47739165 G A 21 rs77558558 0.645359 47743954 C T 21 rs61735822 0.645365 47754563 A G 21 rs114224027 0.645372 47766154 C T 21 rs79850630 0.645372 47767482 C T 21 rs17297961 0.645385 47776845 G A 21 rs11089062 0.645386 47778712 T C 21 rs75183852 0.645394 47788686 G A 21 rs3788258 0.645395 47789854 G A 21 rs150720703 0.645405 47803787 G A 21 rs9989933 0.645408 47808253 G A 21 rs881924 0.645411 47812009 A T 21 rs148342136 0.645411 47812997 G A 21 rs75764723 0.645412 47813647 C T 21 rs77952827 0.645417 47822781 C T 21 rs2066932 0.645417 47823229 G T 21 rs61735543 0.645426 47831522 G A 21 rs184420466 0.645427 47831758 C T 21 rs145606525 0.645431 47833530 G T 21 rs112037421 0.645431 47834185 C T 21 rs882402 0.645431 47834673 G A 21 rs73379371 0.645434 47840345 A C 21 rs61735815 0.645435 47841933 T C 21 rs74752283 0.645437 47847318 C T 21 rs2073377 0.645456 47860217 C T 21 rs2073379 0.645464 47863025 C T 21 rs2839264 0.645467 47866227 C T 21 rs11909560 0.645471 47869878 T A 21 rs62224255 0.645483 47881023 C T 21 rs4276098 0.645489 47886065 A G 21 rs12106325 0.645494 47889397 G A 21 rs2839277 0.645514 47895601 A G 21 rs2839279 0.645516 47896540 C A 21 rs73148706 0.645518 47897458 G T 21 rs150890844 0.645555 47922702 T C 21 rs146494332 0.64556 47932241 T C 21 rs140821238 0.64556 47932466 T C 21 rs79188938 0.645575 47940444 A G 21 rs2096507 0.645575 47941916 G A 21 rs116897734 0.645603 47957957 G A 21 rs1008549 0.645604 47959698 C T 21 rs150180949 0.645676 47965205 C T 21 rs4818845 0.645692 47966016 C G 21 rs11910506 0.645702 47966504 C T 21 rs73152864 0.645707 47966791 G A 21 rs79100421 0.645789 47969962 T C 21 rs12627695 0.645797 47970214 G A 21 rs143364701 0.645844 47973501 G A 21 rs2839327 0.64587 47982652 A G 21 rs146953731 0.645884 47987412 G A 21 rs2226381 0.645897 47996061 G A 21 rs12482040 0.645899 47996490 A G 21 rs144028811 0.645912 48001388 G A 21 rs2877165 0.645912 48001534 G C 21 rs4818847 0.645912 48004563 T A 21 rs9980109 0.645913 48008577 C T 21 rs60829612 0.645914 48013752 C T 21 rs2839347 0.645921 48016948 G A 21 rs74578526 0.646027 48026630 C T 21 rs12152107 0.646039 48027880 C A 21 rs9979500 0.646051 48029698 C A 21 rs60955061 0.64606 48031557 T C 21 rs9980033 0.646089 48038639 T C 21 rs77151118 0.646091 48039219 C T 21 rs9980532 0.646103 48042270 G A 21 rs145324003 0.64613 48050879 T C 21 rs77626284 0.646142 48054609 T C 21 rs2256208 0.646191 48062091 A G 21 rs7276092 0.646193 48063735 C G 21 rs7279368 0.646196 48065999 A G 21 rs8127804 0.6462 48068946 G A 21 rs117530130 0.646227 48075976 A G 21 rs117282473 0.646256 48084177 G C 21 rs118032579 0.646259 48085140 G A 21 rs79913394 0.646279 48088571 A G 21 rs118189563 0.646515 48099610 T C 22 rs62224621 0.000581 16060639 C T 22 rs2508062 0.001318 16079795 T C 22 rs2713394 0.003835 16140991 C A 22 rs4819397 0.010433 16228619 C T 22 rs73877828 0.015306 16287155 G T 22 rs142725898 0.016599 16302423 C T 22 rs115323858 0.020387 16346811 G A 22 rs77828151 0.021076 16420712 G A 22 rs62222525 0.021094 16433771 T C 22 rs139659485 0.021216 16486205 C G 22 rs3949130 0.021229 16488635 C A 22 rs137964151 0.021349 16534156 G A 22 rs149248677 0.021382 16547075 G A 22 rs4552291 0.021388 16549683 A G 22 rs8190080 0.021495 16590536 A T 22 rs142040194 0.021532 16600056 G A 22 rs10154459 0.021698 16631953 G T 22 rs138896054 0.021822 16687476 T A 22 rs183011531 0.021837 16695882 G T 22 rs4419320 0.022123 16860496 T C 22 rs4350847 0.022123 16860752 A G 22 rs131519 0.022298 16868143 C T 22 rs131526 0.022329 16869617 G A 22 rs131554 0.022421 16874715 C T 22 rs116999918 0.022434 16875489 G T 22 rs78489 0.022446 16876216 G A 22 rs131567 0.022486 16880072 G A 22 rs12162616 0.022499 16882562 C A 22 rs3954522 0.02252 16886618 A G 22 rs1807483 0.02253 16888577 G A 22 rs147473505 0.02255 16892549 C G 22 rs5994034 0.022558 16894090 C T 22 rs3888500 0.022569 16895990 T A 22 rs9605160 0.022572 16896468 C T 22 rs150876251 0.022574 16896773 C T 22 rs147803974 0.022576 16897060 T A 22 rs5746922 0.022594 16899526 C T 22 rs144438039 0.022597 16899951 A T 22 rs142320851 0.022613 16902099 A T 22 rs12106623 0.022623 16903138 G A 22 rs5994092 0.022626 16903536 C T 22 rs5748797 0.022717 16911828 A C 22 rs186984098 0.022931 16920118 A T 22 rs2096680 0.022945 16933929 C T 22 rs145990184 0.022946 16935176 G A 22 rs3954561 0.022947 16935528 A T 22 rs9605244 0.022947 16935609 C A 22 rs4010381 0.022947 16935866 G A 22 rs148021587 0.022951 16939232 C T 22 rs4010371 0.022952 16940305 G A 22 rs146134165 0.023081 17003990 A C 22 rs11089213 0.023093 17009174 C T 22 rs11089214 0.023096 17010387 C T 22 rs11089215 0.023098 17011221 C T 22 rs144727258 0.023101 17012861 C T 22 rs139007749 0.023121 17021691 A C 22 rs9306210 0.023138 17029410 A C 22 rs5993081 0.023141 17030614 C T 22 rs2379981 0.023142 17030792 A G 22 rs5747680 0.023173 17035072 G C 22 rs148159902 0.023441 17058526 A T 22 rs738842 0.023488 17060166 T C 22 rs9605917 0.023601 17064010 A G 22 rs5993540 0.024249 17075467 C T 22 rs138291450 0.024335 17079196 G T 22 rs2070502 0.024395 17084762 A T 22 rs140287588 0.024694 17092247 A G 22 rs9604959 0.024738 17099107 C T 22 rs4008579 0.024767 17106549 G A 22 rs9606047 0.024777 17114304 G A 22 rs9606061 0.024778 17116233 G T 22 rs9605006 0.024788 17130402 C G 22 rs5992472 0.024789 17132490 A G 22 rs9618674 0.02479 17133465 G C 22 rs11703273 0.024794 17140023 G C 22 rs145735629 0.024798 17145314 C T 22 rs151001144 0.024798 17145351 C T 22 rs4819849 0.024808 17152611 A G 22 rs141852043 0.025236 17178924 A T 22 rs79553865 0.025944 17194326 T C 22 rs2845380 0.025975 17203103 G A 22 rs62227176 0.025992 17211331 C A 22 rs181600904 0.026009 17218745 G A 22 rs2845348 0.026013 17220001 T C 22 rs112413654 0.026015 17220864 A T 22 rs139765179 0.026025 17223271 G C 22 rs5748586 0.026037 17225692 T G 22 rs2845350 0.026047 17226065 A G 22 rs113555274 0.026319 17233590 C T 22 rs137861991 0.026422 17244420 T A 22 rs115008433 0.027101 17276470 A G 22 rs62227212 0.027108 17278495 A G 22 rs5748656 0.027144 17288200 T C 22 rs113701576 0.027192 17298641 T G 22 rs79319248 0.027321 17311685 T G 22 rs165645 0.027447 17317346 T C 22 rs165670 0.027465 17318682 T C 22 rs165925 0.027579 17333872 T C 22 rs165740 0.0276 17338687 G C 22 rs165826 0.027604 17339612 C T 22 rs16981786 0.027606 17340077 A G 22 rs112842438 0.027607 17340365 C G 22 rs12171022 0.028194 17350670 G A 22 rs9606494 0.028747 17357880 G T 22 rs62235933 0.02903 17363636 G T 22 rs35217916 0.029439 17372088 C T 22 rs117743589 0.029445 17372255 C T 22 rs4239863 0.029708 17379570 C A 22 rs5994072 0.029756 17380905 C A 22 rs9617933 0.029758 17380976 T G 22 rs5748727 0.02993 17385750 A T 22 rs148020872 0.030006 17388591 G A 22 rs115783727 0.030067 17394799 G A 22 rs13433675 0.030231 17402459 C G 22 rs60588169 0.030238 17403036 G A 22 rs759079 0.030268 17405698 A T 22 rs117630245 0.030515 17412411 T C 22 rs5994097 0.031146 17414103 T C 22 rs5746937 0.031166 17414998 A G 22 rs17806382 0.031177 17415490 G A 22 rs12170139 0.031185 17416454 A G 22 rs118166666 0.031303 17436608 A T 22 rs142018998 0.031313 17439144 C T 22 rs4819542 0.031317 17439826 G A 22 rs1024732 0.031356 17443381 G A 22 rs1541529 0.031365 17446157 G T 22 rs145847126 0.031402 17457849 C G 22 rs11704838 0.031416 17461914 G A 22 rs11703645 0.031421 17464047 G A 22 rs5746955 0.031436 17472032 A T 22 rs117381747 0.031456 17480927 G T 22 rs11704927 0.031464 17483953 C G 22 rs35364127 0.031466 17484578 A C 22 rs73147679 0.031476 17488172 C T 22 rs192498589 0.032963 17516047 A G 22 rs7284327 0.032964 17516282 G A 22 rs62236167 0.032969 17517198 C T 22 rs2845396 0.032985 17521093 T C 22 rs2845389 0.033009 17527495 C G 22 rs881623 0.03301 17529583 C T 22 rs2845386 0.03301 17531288 A G 22 rs1005209 0.033014 17537530 T C 22 rs2845407 0.033014 17537830 G A 22 rs112010533 0.033029 17550694 A G 22 rs5994156 0.033046 17556720 T C 22 rs2270243 0.033101 17566504 T C 22 rs9606607 0.03333 17568467 C T 22 rs5746991 0.033504 17569017 A T 22 rs917867 0.034063 17570785 G A 22 rs12172072 0.037761 17584667 A C 22 rs2241046 0.037837 17586471 T C 22 rs55654777 0.038084 17599035 G A 22 rs5747000 0.038203 17608507 A G 22 rs5748882 0.038228 17611179 C A 22 rs5994176 0.038295 17618164 C G 22 rs77243639 0.038424 17635527 G C 22 rs4819972 0.038431 17635858 A G 22 rs5748920 0.038508 17644725 T C 22 rs8139868 0.038628 17653367 C T 22 rs143804144 0.038671 17656518 A G 22 rs7289697 0.038747 17661922 C G 22 rs9617964 0.038773 17664346 C A 22 rs5994192 0.038776 17664788 G A 22 rs9306252 0.038825 17666280 G T 22 rs3788273 0.038853 17666702 C T 22 rs9617966 0.039062 17669469 T C 22 rs75626246 0.039696 17676932 C T 22 rs78315277 0.039815 17679377 G C 22 rs12166983 0.039852 17685677 A T 22 rs362129 0.039881 17690409 G A 22 rs5747023 0.039886 17691166 C T 22 rs111511446 0.039983 17692978 G A 22 rs5748950 0.040654 17696942 C T 22 rs5748959 0.040866 17699642 T C 22 rs113385391 0.040869 17699865 G A 22 rs8136533 0.040875 17700284 C T 22 rs737969 0.040895 17702046 G A 22 rs5994208 0.040938 17707618 G A 22 rs111586752 0.043706 17720854 T C 22 rs62236468 0.045284 17728038 C T 22 rs74423436 0.046259 17733865 T A 22 rs5747044 0.047007 17736507 C T 22 rs4819988 0.048388 17743581 C T 22 rs73153442 0.04867 17750190 C T 22 rs4819991 0.04868 17750681 C T 22 rs141489572 0.048694 17751310 T C 22 rs62236493 0.048838 17758053 C T Eagle-2.4/example/EUR_test.fam000066400000000000000000000164601321437612200162160ustar00rootroot000000000000001 HG00096 0 0 1 1 2 HG00097 0 0 2 1 3 HG00099 0 0 2 1 4 HG00100 0 0 2 1 5 HG00101 0 0 1 1 6 HG00102 0 0 2 1 7 HG00103 0 0 1 1 8 HG00104 0 0 2 1 9 HG00106 0 0 2 1 10 HG00108 0 0 1 1 11 HG00109 0 0 1 1 12 HG00110 0 0 2 1 13 HG00111 0 0 2 1 14 HG00112 0 0 1 1 15 HG00113 0 0 1 1 16 HG00114 0 0 1 1 17 HG00116 0 0 1 1 18 HG00117 0 0 1 1 19 HG00118 0 0 2 1 20 HG00119 0 0 1 1 21 HG00120 0 0 2 1 22 HG00121 0 0 2 1 23 HG00122 0 0 2 1 24 HG00123 0 0 2 1 25 HG00124 0 0 2 1 26 HG00125 0 0 2 1 27 HG00126 0 0 1 1 28 HG00127 0 0 2 1 29 HG00128 0 0 2 1 30 HG00129 0 0 1 1 31 HG00130 0 0 2 1 32 HG00131 0 0 1 1 33 HG00133 0 0 2 1 34 HG00134 0 0 2 1 35 HG00135 0 0 2 1 36 HG00136 0 0 1 1 37 HG00137 0 0 2 1 38 HG00138 0 0 1 1 39 HG00139 0 0 1 1 40 HG00140 0 0 1 1 41 HG00141 0 0 1 1 42 HG00142 0 0 1 1 43 HG00143 0 0 1 1 44 HG00146 0 0 2 1 45 HG00148 0 0 1 1 46 HG00149 0 0 1 1 47 HG00150 0 0 2 1 48 HG00151 0 0 1 1 49 HG00152 0 0 1 1 50 HG00154 0 0 2 1 51 HG00155 0 0 1 1 52 HG00156 0 0 1 1 53 HG00158 0 0 2 1 54 HG00159 0 0 1 1 55 HG00160 0 0 1 1 56 HG00171 0 0 2 1 57 HG00173 0 0 2 1 58 HG00174 0 0 2 1 59 HG00176 0 0 2 1 60 HG00177 0 0 2 1 61 HG00178 0 0 2 1 62 HG00179 0 0 2 1 63 HG00180 0 0 2 1 64 HG00182 0 0 1 1 65 HG00183 0 0 1 1 66 HG00185 0 0 1 1 67 HG00186 0 0 1 1 68 HG00187 0 0 1 1 69 HG00188 0 0 1 1 70 HG00189 0 0 1 1 71 HG00190 0 0 1 1 72 HG00231 0 0 2 1 73 HG00232 0 0 2 1 74 HG00233 0 0 2 1 75 HG00234 0 0 1 1 76 HG00235 0 0 2 1 77 HG00236 0 0 2 1 78 HG00237 0 0 2 1 79 HG00238 0 0 2 1 80 HG00239 0 0 2 1 81 HG00240 0 0 2 1 82 HG00242 0 0 1 1 83 HG00243 0 0 1 1 84 HG00244 0 0 1 1 85 HG00245 0 0 2 1 86 HG00246 0 0 1 1 87 HG00247 0 0 2 1 88 HG00249 0 0 2 1 89 HG00250 0 0 2 1 90 HG00251 0 0 1 1 91 HG00252 0 0 1 1 92 HG00253 0 0 2 1 93 HG00254 0 0 2 1 94 HG00255 0 0 2 1 95 HG00256 0 0 1 1 96 HG00257 0 0 2 1 97 HG00258 0 0 2 1 98 HG00259 0 0 2 1 99 HG00260 0 0 1 1 100 HG00261 0 0 2 1 101 HG00262 0 0 2 1 102 HG00263 0 0 2 1 103 HG00264 0 0 1 1 104 HG00265 0 0 1 1 105 HG00266 0 0 2 1 106 HG00267 0 0 1 1 107 HG00268 0 0 2 1 108 HG00269 0 0 2 1 109 HG00270 0 0 2 1 110 HG00271 0 0 1 1 111 HG00272 0 0 2 1 112 HG00273 0 0 1 1 113 HG00274 0 0 2 1 114 HG00275 0 0 2 1 115 HG00276 0 0 2 1 116 HG00277 0 0 1 1 117 HG00278 0 0 1 1 118 HG00280 0 0 1 1 119 HG00281 0 0 2 1 120 HG00282 0 0 2 1 121 HG00284 0 0 1 1 122 HG00285 0 0 2 1 123 HG00306 0 0 2 1 124 HG00309 0 0 2 1 125 HG00310 0 0 1 1 126 HG00311 0 0 1 1 127 HG00312 0 0 1 1 128 HG00313 0 0 2 1 129 HG00315 0 0 2 1 130 HG00318 0 0 2 1 131 HG00319 0 0 2 1 132 HG00320 0 0 2 1 133 HG00321 0 0 1 1 134 HG00323 0 0 2 1 135 HG00324 0 0 2 1 136 HG00325 0 0 1 1 137 HG00326 0 0 2 1 138 HG00327 0 0 2 1 139 HG00328 0 0 2 1 140 HG00329 0 0 1 1 141 HG00330 0 0 2 1 142 HG00331 0 0 2 1 143 HG00332 0 0 2 1 144 HG00334 0 0 2 1 145 HG00335 0 0 1 1 146 HG00336 0 0 1 1 147 HG00337 0 0 2 1 148 HG00338 0 0 1 1 149 HG00339 0 0 2 1 150 HG00341 0 0 1 1 151 HG00342 0 0 1 1 152 HG00343 0 0 2 1 153 HG00344 0 0 2 1 154 HG00345 0 0 1 1 155 HG00346 0 0 2 1 156 HG00349 0 0 2 1 157 HG00350 0 0 2 1 158 HG00351 0 0 1 1 159 HG00353 0 0 2 1 160 HG00355 0 0 2 1 161 HG00356 0 0 2 1 162 HG00357 0 0 2 1 163 HG00358 0 0 1 1 164 HG00359 0 0 2 1 165 HG00360 0 0 1 1 166 HG00361 0 0 2 1 167 HG00362 0 0 2 1 168 HG00364 0 0 2 1 169 HG00366 0 0 1 1 170 HG00367 0 0 2 1 171 HG00369 0 0 1 1 172 HG00372 0 0 1 1 173 HG00373 0 0 2 1 174 HG00375 0 0 1 1 175 HG00376 0 0 2 1 176 HG00377 0 0 2 1 177 HG00378 0 0 2 1 178 HG00381 0 0 2 1 179 HG00382 0 0 1 1 180 HG00383 0 0 2 1 181 HG00384 0 0 2 1 182 HG01334 0 0 1 1 183 HG01515 0 0 1 1 184 HG01516 0 0 2 1 185 HG01518 0 0 1 1 186 HG01519 0 0 2 1 187 HG01521 0 0 1 1 188 HG01522 0 0 2 1 189 HG01617 0 0 1 1 190 HG01618 0 0 2 1 191 HG01619 0 0 1 1 192 HG01620 0 0 2 1 193 HG01623 0 0 2 1 194 HG01624 0 0 1 1 195 HG01625 0 0 1 1 196 HG01626 0 0 2 1 197 NA06984 0 0 1 1 198 NA06986 0 0 1 1 199 NA06989 0 0 2 1 200 NA06994 0 0 1 1 201 NA07000 0 0 2 1 202 NA07037 0 0 2 1 203 NA07048 0 0 1 1 204 NA07051 0 0 1 1 205 NA07056 0 0 2 1 206 NA07347 0 0 1 1 207 NA07357 0 0 1 1 208 NA10847 0 0 2 1 209 NA10851 0 0 1 1 210 NA11829 0 0 1 1 211 NA11830 0 0 2 1 212 NA11831 0 0 1 1 213 NA11843 0 0 1 1 214 NA11892 0 0 2 1 215 NA11893 0 0 1 1 216 NA11894 0 0 2 1 217 NA11919 0 0 1 1 218 NA11920 0 0 2 1 219 NA11930 0 0 1 1 220 NA11931 0 0 2 1 221 NA11932 0 0 1 1 222 NA11933 0 0 2 1 223 NA11992 0 0 1 1 224 NA11993 0 0 2 1 225 NA11994 0 0 1 1 226 NA11995 0 0 2 1 227 NA12003 0 0 1 1 228 NA12004 0 0 2 1 229 NA12006 0 0 2 1 230 NA12043 0 0 1 1 231 NA12044 0 0 2 1 232 NA12045 0 0 1 1 233 NA12046 0 0 2 1 234 NA12058 0 0 2 1 235 NA12144 0 0 1 1 236 NA12154 0 0 1 1 237 NA12155 0 0 1 1 238 NA12249 0 0 2 1 239 NA12272 0 0 1 1 240 NA12273 0 0 2 1 241 NA12275 0 0 2 1 242 NA12282 0 0 1 1 243 NA12283 0 0 2 1 244 NA12286 0 0 1 1 245 NA12287 0 0 2 1 246 NA12340 0 0 1 1 247 NA12341 0 0 2 1 248 NA12342 0 0 1 1 249 NA12347 0 0 1 1 250 NA12348 0 0 2 1 251 NA12383 0 0 2 1 252 NA12399 0 0 1 1 253 NA12400 0 0 2 1 254 NA12413 0 0 1 1 255 NA12489 0 0 2 1 256 NA12546 0 0 1 1 257 NA12716 0 0 1 1 258 NA12717 0 0 2 1 259 NA12718 0 0 2 1 260 NA12748 0 0 1 1 261 NA12749 0 0 2 1 262 NA12750 0 0 1 1 263 NA12751 0 0 2 1 264 NA12761 0 0 2 1 265 NA12763 0 0 2 1 266 NA12775 0 0 1 1 267 NA12777 0 0 1 1 268 NA12778 0 0 2 1 269 NA12812 0 0 1 1 270 NA12814 0 0 1 1 271 NA12815 0 0 2 1 272 NA12827 0 0 1 1 273 NA12829 0 0 1 1 274 NA12830 0 0 2 1 275 NA12842 0 0 1 1 276 NA12843 0 0 2 1 277 NA12872 0 0 1 1 278 NA12873 0 0 2 1 279 NA12874 0 0 1 1 280 NA12889 0 0 1 1 281 NA12890 0 0 2 1 282 NA20502 0 0 2 1 283 NA20503 0 0 2 1 284 NA20504 0 0 2 1 285 NA20505 0 0 2 1 286 NA20506 0 0 2 1 287 NA20507 0 0 2 1 288 NA20508 0 0 2 1 289 NA20509 0 0 1 1 290 NA20510 0 0 1 1 291 NA20512 0 0 1 1 292 NA20513 0 0 1 1 293 NA20515 0 0 1 1 294 NA20516 0 0 1 1 295 NA20517 0 0 2 1 296 NA20518 0 0 1 1 297 NA20519 0 0 1 1 298 NA20520 0 0 1 1 299 NA20521 0 0 1 1 300 NA20522 0 0 2 1 301 NA20524 0 0 1 1 302 NA20525 0 0 1 1 303 NA20527 0 0 1 1 304 NA20528 0 0 1 1 305 NA20529 0 0 2 1 306 NA20530 0 0 2 1 307 NA20531 0 0 2 1 308 NA20532 0 0 1 1 309 NA20533 0 0 2 1 310 NA20534 0 0 1 1 311 NA20535 0 0 2 1 312 NA20536 0 0 1 1 313 NA20537 0 0 1 1 314 NA20538 0 0 1 1 315 NA20539 0 0 1 1 316 NA20540 0 0 2 1 317 NA20541 0 0 2 1 318 NA20542 0 0 2 1 319 NA20543 0 0 1 1 320 NA20544 0 0 1 1 321 NA20581 0 0 1 1 322 NA20582 0 0 2 1 323 NA20585 0 0 2 1 324 NA20586 0 0 1 1 325 NA20588 0 0 1 1 326 NA20589 0 0 2 1 327 NA20752 0 0 1 1 328 NA20753 0 0 2 1 329 NA20754 0 0 1 1 330 NA20755 0 0 1 1 331 NA20756 0 0 2 1 332 NA20757 0 0 2 1 333 NA20758 0 0 1 1 334 NA20759 0 0 1 1 335 NA20760 0 0 2 1 336 NA20761 0 0 2 1 337 NA20765 0 0 1 1 338 NA20766 0 0 2 1 339 NA20768 0 0 2 1 340 NA20769 0 0 2 1 341 NA20770 0 0 1 1 342 NA20771 0 0 2 1 343 NA20772 0 0 2 1 344 NA20773 0 0 2 1 345 NA20774 0 0 2 1 346 NA20775 0 0 2 1 347 NA20778 0 0 1 1 348 NA20783 0 0 1 1 349 NA20785 0 0 1 1 350 NA20786 0 0 2 1 351 NA20787 0 0 1 1 352 NA20790 0 0 2 1 353 NA20792 0 0 1 1 354 NA20795 0 0 2 1 355 NA20796 0 0 1 1 356 NA20797 0 0 2 1 357 NA20798 0 0 1 1 358 NA20799 0 0 2 1 359 NA20800 0 0 2 1 360 NA20801 0 0 1 1 361 NA20802 0 0 2 1 362 NA20803 0 0 1 1 363 NA20804 0 0 2 1 364 NA20805 0 0 1 1 365 NA20806 0 0 1 1 366 NA20807 0 0 2 1 367 NA20808 0 0 2 1 368 NA20809 0 0 1 1 369 NA20810 0 0 1 1 370 NA20811 0 0 1 1 371 NA20812 0 0 1 1 372 NA20813 0 0 2 1 373 NA20814 0 0 1 1 374 NA20815 0 0 1 1 375 NA20816 0 0 1 1 376 NA20818 0 0 2 1 377 NA20819 0 0 2 1 378 NA20826 0 0 2 1 379 NA20828 0 0 2 1 Eagle-2.4/example/EUR_test.vcf.gz000066400000000000000000005720411321437612200166520ustar00rootroot00000000000000BC]k !*|6@tA!(|}׾d)X)S>iV9UFõlz"ٳӟ?ӓ<{[o|:}⭛l}𯳟N}=[Ӈ/}wOb<9?|9b?~돧gOwo~yǟه~$ͻGg?ћwNߝ>~?zӣO=F _O_q/OOv/NΑ݂Ogo߯_Уgz_̫f^~k^y݉ߟ~g䏯M5,^XkxHH;Yk$g&HdHH̐&,b88g qr8 `\4Xf@xyo<|0h>4'g @ @ gB0h!LZLZ -EhњLZ&-'@4MD-yI@K$$bl&egr0 hZ\< hŚ hś h% h% hZyV@+@ ;B &' b29CL.3b8y aŭV)@Q4 b6h4 4 4  4 4 4 4 4 41qd^ p@- D20-P' ؉87.hSr9τ bi)gx;rxs*BX O0O1H&8o @3x&Tф{`hNPM s@$@6W".ќ"7 n|o8'9N s`@@;!T.U T$J'P8O T('K@ŁU* \ T{ p$(PM8PQp@U@FB Qu> .@H)%PsjnBmR ^ 5AL3)|5PsA)|^"v_(dy( a-$Er[k˶مHg"w"t[dg*IH&}jOt W;yNO|Er5~)'=Nu=_-2b9Ukϋ\uXׅ[d#<:&,2wqgZޟ .y)\W;n^:i~ ӜC9;W,! 2a 2-\Yu "W[LcLL5EMu'iS3[5EuMg!nti|\p+oS\DȤCL)vq ԩB&3CB&ӂ[kz"*N5҂]ƚiM'iͮrŚ!ִ;94ϴf:IiSdaZps\ n>E=2%;uɼP2]T 2R zǩ/rU.dJڏdzD,亶ϐIR eLX]d~v kn 5v3pkf; \`K,p.q`% u{b['ubܺ]qܺaq;ܺeq u[\Kup).@Գ.oV '/9g 5C&`!ӜA9L62L}? rwswsַ!z}mm(Ku"p~Cn~K~K% TS!BH 3&0Yd LzN25Eu 4A&)C&ܩ@& T!!7dR \ⴐK2p]ݤ7dR \_ח.N;H; ڮіya^6/NE%e?n{wg7~-[Ax {zGvs^Vz1˗[vs?[_Z\\.[\^xs>Z89B=ָ\._X}{Z.['uZ]y$rȼ8\|Lzbu_ߔR-KW6r?{Tj?HS=_}w`tkk*7}-d珌 @k = WJdK&Lο-6K䩑_Pg}Nuctu̵zi7ra%q2Wɱ v%b* B%%'͑їt0CFm:Qv ;ĸmþ<>λRv~z{nIvo{GmIc%}8ȸ{?)#\?Cy\C<~GHhn''3Kv[V|n+y(,飍A%qfgӜ S^cqH^!oH5xo?- ]Wl Ф}o"dvw8ԃ\t<ćZ^rzg$=4jlVcc~!LՆ?w@Mlg߇uѹ[]Ojm?tЯA`&):ЮCrڔzj9_W;iZc׸a9z`)YS9FYW;5!E_W_~H,9L'.$4{y~pNҳ_}=0U9__8[FK֞zPYzbׇcfv~uYϿ[A6&WbqڿKWخv/߄mCnO#s.:la_]Wu]D:z Ut:ܔOct?Nq,>i=;B_iy1O~'zm Hnl[zUvp[in;"n>/PJK[Ui+yǞnIu\]ߴruJ_1quQC'#Ǣ#J|>JyՏWA7#|5W1%Α^I@57#&olwGBݶA[Ҿ{>=ٖc\6`;~y+н2d5Zf>m,NJH-u t}eY&>o& WZHI:h9Zz{x,uXi\]_<35QY^)~HK)GFoϷѻywb4wyK60lW#.[|uݡz~wH~ ] !LT%+/E]V?4+{~U u`~e'lcjr.0[\>R!R-)\Kn.e^..oqul~='DOsoyQϱ ˗`_&m/bqC`ܷ_/jcE^r]isCX?{u="q4ս_)>׋~E[I>ζ,G˹Ր_[/RRnyh^ؚ>.w$hɕƞ~P&[d59Q;8[Cxn A6}#.)v5k-\\^=P}our&!o-|yFb.h\A^^\6stzЋ N޿gLlw}?NA8KN6|%|~'\[,h{KCmHg4n\1}=.fsEuϣOAw3W?:(α!}W'=3Z7=FyC3ung6ԫlc67gkz)5"oǷAX/T-y-ubI ZHjv2v׺?˭;;mⱞ׮yWCF9o|mv%wjJ[G6mmp#9Cl]!KU y۸yUf堭n4;wթe[!#ͳ|U߽Gq;};oHƈzзOγ5qJcAt9ιiE*ό16jk=^n5f i~#U?zz>b SWH<1#~*Nwmތ^Z>GI(OjOwyGB}ʨTלs3vn&=ٟSGnW8[^7WP?9|>1*B?N{fڥ;a_2."#"%UF([K>_UNKu=W]X7MCӿO&<< Z+'[E&G|t3/kexTrüa1s0 =/{Z?!uxe \~gj\ {)9Y` B?A,7L3Nt3~jӮTUU5UPO `I>(~~)[lҡ/W9 u]4$ t1be*,=ʀ:3HyU,SX[ |3"E -Ւ ˜sù<p"`-\@g^|>=iّenj&?A 0UԞ#lL߳|7<:2gRޏlac34uZ&<}1-x+.Q>乸m@^@.^Jb-[@$bԌ!}՜TJJ%}gT%GJ{9WGs9"\4x0_ ko՗Ը%j?׵5acJV+Y\;0=E!paaYtel-3Ypd>Srlz<&kCE_'7>}#rl-UE/}`/0aN/. 3A-dbn>KK ts).Z4K{+L7e?|0Vxz{nR])Z14Vb~5>%LWxF8V)(YSo ,`rĨ>GNܰa]nN\W ,>bLRyqXfs>VnS~G,[t(Xҧmc؃Kq|3S넷grzsp}-!lRr8gxWU1?CƃO `luR%-m9/nN?Cģ+xs"懐\P:๥N-oq^r~0."cǘRvJGy&/W-rmNnG@BU^7@;jȶȴ:/WČ~7ܷB=ܮ(]s _s:|hG f/޳gX}J_a36yoWoڷE 99"~5x{*/Z=f#k~U;DgE"cUvcm"W@(k\36yvv}*< (ƅ ko pAhtcwJ|FA|h^KYjtc)G&B=eh1rg,堃NpBiщNIc\d %Y*!j$#CH-J1*,al҉/>cW.W_X)ҡ5I#3cT&Bo2ˏ8+;;ǃ;cgn)s_w6~&֞=CO<2Z-CZk˚Z*5x[<2ٮgo~|{ ]u-n)Y+F]7t0lA![Si=Jȡ8ؙ&4KKCo_"smP S&CVC3}:p,KF%ݣɜH}Uxv9"M[W*Zl{3Դ[}ۇJKyK~ ec,)bTVvfh.]0B5%7 p}1tyKVޕoL-ߖE- c9Cۺ3.1izwiK~ am_6nz\TΛ"Rk,y)Uejt?{DJPOc$hb͂Qx)-ҙ3Unap#uaK{.O>CC^+].Gѽ󫖙>"B/]_7u;)o Kv5NRu}e\^rh_]_L}eF'۲hz4Фcg(%ƸJF_P_t0k)?|OeNۨxLmٯyw-llov7+#딏ҬMEexIﳧ<"{Ә~wW{e`ɱ]ecEk3+N<1jo؛⒍yE̪ؾgmq;k|qppx.~k_mi11[Ua~@lڲxP}>ǃfk<0 kSO{!wLO*ϗP n'U@\֌%S{oڮ]Dۦ[vZl-ǀ]CN3,=ل\kcqu9Ϊٛ%^BW)Kw%y8%g][Q3mtᏝ!ͭ< Gh|gem(J 9:k> osiKVna8 _݌!UU*t˻Rj!5aB?fGn1! wN㽏jc>{c-ƴr(z#ˎb{^T$ I*_q˽n~_I~x1Z;pyFq ِy6c2إNf;p}q *- Xq=x:{Ї xGk23nsdcM~,j,{ڑEg#WY]e |l3-?ͱ7LcI[G;ʶ[fJׇkLjqUDۢ\"3Hb_~5Ԧ)ОIMsx+>Z4wY'y>Gݠ~#9'zQ'ۋiQۺkTێ3mus,\Wi l3i#E&<<8϶G>'¼eSfimwSEI~8!(>pd1|bM3mӄot׌(8%eͽ^ww֭_wBhÙnئptLX5&Ĺzo \0Ѳ\ݧ&cKVTX˷,6 ,Y,H\W6d2{&8BzqQǒ[)}N6)6ڀ럯g '<X|eO?/w>B 0L?.>` ϱ;}G:jߚq屇e:H<b`0nv>u٢H>uD9@<%%|],8V,Ht+y=mX1Ǿ?b8Axf?ǫ"9֗]qr`x$-w+_q(tͫ5XFܜ}ox>2iw>ǡ|Чkcjr7$SfOc9Wp"()`x%KlnaŴ1y1 Y\xa mxC?Or1 ³M6>0yg4iy~(3!rdX_ed‚ݪˮ羗:9Pk;k*۾[$mI`q(1p%B Qwycpt>MF8^𒥕p>`֛׶7\(cǸuܯؖ2.ي9f#ukLc$o|U>xs>b;b CH1Ba,mgT;D=[_^.s[=!BHm4Shsl{A # H_q}mH?Aw H lN'hc{BgيOdR+K,mړ> ,[Ap>EcPw'i;NФ~R*t T@nJ_5rinڂ`0>`Bu5.֛Kk'';'U>bЊmV>|д] ݙ Y4o3_;m޷D5},wK+}o%x%6ry1`J@}\ާl>tmsڪ|=^gpnC:.N*!|MJGpoF~BG WUK- o[|MH[ک:h`Y)G:=x{N!(L)N99C%O\Oşx\F^c{/]g=l_=o⸓<ؗf+,ִ~+3lE6ELya,X9Zjo|~qdF|o|X`?>`{larU>(Mod?ߓ,70N5y)*ϵoR7TX}"ݰ~sq1)R;!3: ,K m>Wߣ7‘_6Vd,KOǍo.gyʇl΢}a'Ew>x^t؟O{(w} -gM[[G?rO+gWj?_-?<`tyR-'V*W3,Ʈy=ô,eҜr:>lbǍG术,L]ޟO u)\fFZ9kyRyRP˻ȹ!o/~jЇnFFkn_;ҷĆ/ʲ>{uc!4O_ceQB˖al! Ӣ5RRn7ƒ~_U ?xG!mDZe k4MBLcл򮴖j񪕦6rc0l屗K^_Z9֯LG ^_ylW}BtM7/oky㵛}O&KQZJ)ftФԥS;o8J%9z^~["7cce)m`/YGY/SZo ֛R觮ԡv{Y|/o}޵lE]k&mmb.{NCMo)Nkkkd)=fLu^U^i=ֹjvK{;!t}ǒQvg%OyS;:y%ڶONl~_N{X/f/]nv\t]7ng-=ȓ$s*~rՏ*e;mc#m;Icjf m -Ws/Xi~jnC61] KCV*nƜV6cAVLuЇjl{tO7O|q1L?3 )Vo8e㲳BC]˒8<~̶7sFG]e,"3Jњ ےHă^=>ӏtw.-7$%ώq</_z7ƻݯ\X3ڱMu-ֶ}$vҁBX尩kEїt0)Otݐ/X}Ԭνۖe-VxZw7.34Ne7'q/RZF]#6T}ے3kKQ)j}y}*;j0SN+DygaīŹK>0|0S6 6yq1q#{65m['C%bc>Xķ_G gk\t-z9<R. 㘮`^z]PF{<$8fNkTT~e.}K V5ƥNf8qb8Do()Jlyȸk[QŁR|ѣ)sc/͘m^ +xz\i|W'Gbw^1>k䨑4*m]g˭2E\#2n9.ʓe^|{rsاq0I(]޷A)ҼtyUh/1+aK{O2eޘe;ynǥqIԙ,B8RTme,{bxpV峚)+>tA:r"Y߱v87K_.usX\Fk:q<ԟ6MKyx|qqp[̾M]2B4Cشx#Gk-~&9qmʩ4GNYAe5]k~*U1ru5~t?*?>_s'_Uuy]aD񃝋5YJx\V ?jqYLx\ N%3Oh|Пɹ/9X/e{"^ ۪ھuh*dRQL7VVbP>`UP@g\x,و-+7Y WذcaVVVW5>ZO3}rLtV.L//ɰR8cx2~K#Բ>">]b}1^Y<=1_G:"23.D?=;0~8[T>=烮9dEꚡyg3Qc-mq`qx&m;uל/=*ٔG *j_N4Dd+o"+Z06cfGU8ڶdص֖^ȒGb|WJo U&1OP%QM旋(&k|0v]wM% .2*xRq]'$gE=wo/v0~b(}ϗ콥/xl_uQ|^6eO{1gmlW1f:oEGc6@Y%qC4-xa$}=տLGeng٪v,3j`[l3&W|jn!^=|k>2&]BGظ*YGiٝKm)7W/V#z2R u0W~y-6@^ ڬA{-'k8ỆQߎm۲[/$x|5!MvM;?#ecp/1APv.mx]1A`:v 7 iA>P|PcRt{OO#>'9ߣל-v89ꄺ|`]8:Ǐ)PnĞR!+m5dWg؜x=x<|mhʛQVIi|{uǖqYۚ>#8=B"_muI 0i;#FooK9qg=41S_2P֋ Mއ/'v'G9Il 7ٲ˹&ldZl&lFM;!3ԯZDz d#w.988Mm1c>†頹˂U8]/`'NSiV:t ->eKW֓=[-Ĭ=.!!MM;'RNSlCPC BC]ˮ:\g>fZ,z;/Mr$H:l'1B',"}¯p %?PkC}V7\?&mQIIR=Ɵe,C4=ړun1?Jdk: _uG\Y33! ' |e6cxaV{Zf}y*x**e[w"_?=4B>3MW̟,rKqPV]1V:6q>|Ŏw؟R6?4؟S;0ۦ}b9,y1o, ҏgA{,"^c9xNd1>-.  ƶʪlO99#h޲2G>Ͻ{U)x}su$,6/PvVu蛺9S}m #q\7܃Ə(CBdvET]֌3RmkEV|^x{򫜲5`֚^.P]5!{FQW֖Aտ3ƮϵZ,{ɖ1XB\vV'7kIύ1CF?g(jd!R<k`{sҶQe[BP]MlGf$P|A@ʖ2еM׵BSNesoJֽb7rBnSCuN\{k<mI,4Fk]1Ϟ9?}X1zcb\8465Vp[xcn y P9#]X|P]Y'+Fi#)S!:#ZwK9 %d\J.-8Ma BUuЕMlcK鱥!#Ӽα&ƚt0?p'\f s-eݳ|؏=M˙ӢmO)ky u#Sn}ky/'jNeK튻C>hC{yJmC Rh/bYݛs=“ضM\ z(.겥/!Hӑ}sʖm<;lm-f{ki*ٻ ):CPmb(L[˱}9&]_.CB\_uZձ>kF8♣c)B>)´)B[i!eLNB:AD }x:cɶQf/nsn).ll},YSv)O;]_AQ.T<?MW~?~MQ)˸D>wOM,˚Q,c3W e#Sn}ky/'j֒;资ܮ{K}]WK 8utQqKyrrmJCBB<7\OiA ܒ,4{3ZY, ̓\/d\IC2!;b[~QRsiOϥlq|啼kWD O'le:*7؟@? E_6B{<6SNŃ_N~Kɝ%.SXBnWܽ2}]ނS{綿G5};٧2JZ'b<8z0?O!/n1*0yg1)+C@>C&|H>6q[wX_.)_116I__~& yM{}0i\b |o1>T񙎑Ao|qcKq&vwl,Op<"1?i>5 d1xnbCǧ;k[UQ }F3ilPN1=rʷm3e,նK-0:gOVkd_۶m~KXۄ~c3϶|u-L8q-E°ܶv,Lθ;\c!#V̓;-Y:3590>µAW=Am[Lݔk|~7moZxո7շ55N7RWoܟo~`}H_r.Y_sazIYAT/geׅsBX~CY+P{(?Xc[o-áʐPrfTee(k6zhI.aݻOk;XT솄ЇVNYƾ;ǎ|(#(wmlvMٸ^b80i۪nŵwqxdc4Zɝ9Nmg_ѫgəpg~?+R'THK>x8U۾K1O>9:q~jF>#98||U>hrxi#Zmt]0o|t@r Qh!?7$'G1,,1~z?~z5vR[MK^=ؼmY"vlaC>B]A\|NKHBC]ˎ8<{?f[ԛA:X?0ˮHR*AT#$%ՏRRQ7<>$OծFrϲSt?iOmknO3c{FnGN ^=uva+wU2ݓ:\8TUW34u/.]{.~ &g{'NIf S`oJ~q(LB]\~_~@(c`<6[3 3Iw!gJBWaZ!c5v]܌4ԻX:\H5j[ !VJ]~%|`mg6_}9;ݲG;ڮѼtHZ;M˾tmMw$#{˾ qM$YhEL+s:rXlren`|m$+{{|{&/Ý´,AC~S},X7e:xJy|1nוE߲q% >9lݶ"I&z]3e,j|V6y.2llfs| <Z?ΰP.Cז2{`ǃ1 W>C=n #+yIA ¼L{[۱D5uao[^RIDV9}iW$`\LZ c(L7 #ml9_A tBRdx F+ǁ@>8kq$\O:FjS<6e7$m@jX\& y5ŗ@@k6Øx³^ ` uHQ{rv/m$Yr/ nBB[716;۽> xʽ%!4U ͕Vv8O פX nJcKUe_85]"/hՉv8=cndɆ+6eA:;#OZŻ'A'Ūmǖv4;xiiK͖ey{ieXʍx|`g=j+؇i0[0iӛJsRԏR}ôeS758' >`cVJ:;ǧ[h.>!F!_re_ e~7Qз۪:1FGs?Iw^# >n!xO"mÅ|3@iR_-yhP@;l˦ز?{@:UG{zH 9ibZ%ŊlS S+O,a]bl%/]^yagl_f| Kc¦x1cEe8Nӷu>]_ mNW0ecc yJ^泽tȐo?ֲrcR?rea|~.9~cGNE'_;ezz<{X|.5~S+r%"gH2:AoFr,aRV,Ukړɸ[3`o+BWF|GFrW߳peoiU[2n=j<P)K/ˑ9}ymemq-}0zYؓ^ͱyܖCH80ƲgGd^*PױŗdtO }, =[j׵}j_k #77oaR͝%I| C=KWMW1^Jk_Y12qY}{0fR>{#m\KƵ|Wg[bO.Yr[_yGMKZVt~,$mCslI{qH~+)w>hN5XwpHKFK 0,~|;n$- vp~f` ²){8y%N&Ohym.gZ ! ]|cTK_KcLOcR6rA$\YusZ%JWL:,7J_)Ak`𗛴96|xlh},Wϓ;Fmax5鎑o.yG5OkؠT>&`/x[``טq9ч|(TO$ɘ1t2zye4h?#+$Gq^3iiF:}~8|V?\ͥCSK=1$zXl^d`C7~K]lCogΒoga2.N1%n#@{0ktLh#ETxjv?&*O&X:Y>O1؏32ZVkL_V]8$^H؋;0|kw&u[Y]Z#8^k%q~j@F6I?VcHד-L[݌HL !4U<"S6vKsV|`鐣5e91i gP}&zY}M O?Mz,Ykz5dქA.NűOK TM%.-Y]Z?ڸ)>B"C{|kd{J9BRoُzq;s\i Ⱦi<]CGIp-7h ;zqhŠd'!LO/! p#DA'm/%9 gYA̓q N_JlHeBHCd8L2 6 cŶ?>!&/!nui,dH~B]NG_!ALdeƴ ]!00XfìZ`>3>0UMId4.O zBC=]ˎ\O>&" %=EVU7eɖbllAQhmq~߿;-^w&O|97ds2wGg,"r9ޔ"3~N##1Qb!f瘜Q(yWbHYƃ?1eOGdDYrp}1LCiiú/:~yq  =W>B7|ЎЄ_}>ve6z$}!?TK>`xx]>(|un>PFyD^-V؜0uSׄ)% aigbT3@8/۳pS+|mٖ|?[,ԏϓH)Ќmߥx>R{gIMa󈬵@y#2=2~|5SUP}mkb3[n` FClcߧ GȚtU`xR9f_hm5}I6v9! ش~aI5RXJvmn !yŦ-|{ry,}|n{ ɋB}c]~އFzXNDKw8ʝƒackoԝag)7',mrocK=K (2 ?;wMC; ᶅg4mϔg\8~Ӱƭ/-;~홷v]3M| rȿfӜHHG;F.Wb3 pJ{o'ϑx=jϼ퇵[FR.q 9g\홷vcJ4A?c!CF/{f+cz[|bݨ]7];OdCQf#vˏhwzrzҺd:{%\|?U[°QN'(9^[ctf&14q$tI Y2vzָ5홷Rw~]1KTc*JWsTfLƪ5:e|2wJRW~ƌV-P%\+RooFwavTvKZ[.ؾ&OB?%qo2Z3x l-m󧵵yq=yEoIq-@ְPY]|(wcwv,k-h8vK8SBH}H$i<tBkWh~iQ9{;aу B1}=PuU:zC6~.(IM(k\ ֔~lUߗ 9 l>9M-G+5; K\˞@Pòov:lVTˁbىٷmƟw},5!4)^~)-̍5lRfdA}W\jND4<]öaXe>§mÙ/Lᜇ3+腛xOw?cǟm-~}ƊiȖvx?x,:Wꟍ_XN<^q8`\wjp/]1zȇ-t|لq]blZs|Op\*q*fP~=ێyfvVQ13fy\rs)t^RFw?>0%.04V,-)_4Ms;ss^YƱ~~¥~)LA:Ϭ>MV3؜ʡO~j W7x jdŘRw_gyAICx cd͊X:c%_O0%.r9T.F"SǤ^y_q(`X#51}>NT,y']{o/{-#4]}iӄ.BOSfϪb095 5ȷ$C5.||E㶲g=2kͳfzX_`ڧF.wVL1) av$~GBxl#! a?BlҐ[B%5bxxA dZ=WL~0osv~1jxŌ3??l;-v1d%e0>cz(}?:vlY[^_3B;Єiٱ/ iqߨӏ\JHd)ia}#KrW vË^g}>iLfwvG7*s,c犵:SR6-cX[{YZmk>)Jvjv@:_%^gh=QMnVikB۶n [({B߱@1 5U`so@Pc=f⁝[@^s 9Gn (vZ /:45S8) Wu'd~TkwUDlp0/:7hU-ZJ k48O>ַ άVu)ِv^r5ωZFaYc[@>X~E۷k>uz֚^)]آWk:ЌtЧ)%eohoE}{&oj,j s>()+P?\x$y?%2qM:yǓY ;VH~Yo0.02/_1]zw V<{e[ 9|W@aᷜg}´mMc۾L|Ck>B{B3d8Vgi |6e+gQˤжẵc_GspA:b8Q>$|z(|/YcrP͇˰D-+hcXD׮iLtx4vm_Zb ƅcUˣe7 *:lBC]ˎ8<{?fGq0%3,2"2IQQh]ȌCSGw+V|\!ٶ  9 s>v.%;җɦpDs;ިNذqm?ȶw_1R[0iQI`6ȱm Wk)v}07C\'y};Շaԇϔo| 1qP]Kv+n ϲw>HcR< r>1A_O~tu逇<yeéCT}:PzkyBL^,3W)k[OK6=o,LL K~ۥ4/}Cg;l(IķzYK~> SEQ}9w2Զ&Nha@lH]޹Xl]'y=gy؝0BFqdN:>BtG'!9“DHҾ!ҙf^|n>,#xU}0]b?CuA-KcK^H%vo(]ҁiO:ƌ]?J}, T:`%ty0Myq'&~^s [C~^>#p.@emS,ةAEjSِ|i>\;*/ "'9c:'^>Aqݣ0Ώ`X|\S8^8r|Vt8Cy<%1~Z?Γa.A*BETK.FiIOSrOo:`}tӯђ~! wN(gUdV!_t1!q&ء'63Jy N߼`-y`C?Ex|”:zLkܣz%wXw(.oUn aq/8Mj~hs0Z~s >ug8u_N1>#Xz]y#s=,0X>m4?TXڇm#nۣy4acXvTi(ۧ6un`ПtyaOjGҶR){d/Tߣ7 XZr, G6?ӵ]gSW-dԿ%eyu]) W5c[푘 +%בUgY1hl?-׭ttf~J2g4|o?H.|qlY 4+#a[;O=I uʪ6^IAS6sN>N^!#;mosx- b~SScKI;%͓3>1jbz15t?Wj>v=ov3o_J>{ǭ~Jb^…c{T?ܰ=L|9O[8w;}6&^^tI}|68ᑏiO؛x o @d>ˀ 94nSsKΜ 9&s{Ʋ|C˙}I$V`bO:m3?ܷds"@qڊi y/8]`]ٟ=ܴpiWף ˯JT>mkLo+hηx조E|-xdf^n>/pObbGR~0ٸ5G>Џ%t£eG)LKEg5A&`}amC_9A+"x챇gMbCȋ{BCyBt§_&te~|Z;D֞^Z/n-%mƛn<#x'ɿk>(僡eè_i^DY˃7qloYb|Ub>dm̾<˱`(F8xie^%Qu=v.!:@&3M|0uha( mFGi!篠 cܿ^72Bun焠_bR`k*C!LMwjhMwNgrqZSwɯ .W<2th qKs DoBl@fLψ{xm5컌[[ch;kWXGPJeO8M1ƥ| a מvRIT҄`]~C:^FbQ[>L+ՌQ*_J{tkLEcmvAep=3Bk5P"{+:j6\1w?Bݶѫ TZ%W_|sV aqcNk߷,9J5JRjg(%*&a^/>+ŴΥ&%[7JpQ:GuJ>jÅgB2y㒜)ohTbү[SöeOyby+/W 6ɔ~cT>z|4sT  $8F6O~^Yȿ8m|\654/*ntO*=@@R?u'?2(}5)C=mmh>Á|YqȲE^[Oy {=i.8ˏNmXkmyH@Tri@#&-{BAB‹oiX,Tx{!PPx|#Z,L,dU\Y aɝ<[jۖl!=C^85\ܝ|$fj0:5cz4]}uo! Mj?N:oFpcB.10xᵈ#}P=td| "ٵQk ~H'k{\vxdq3`_iF_7wJmuwas}7-=9IJz]rm <=؟t_W(F)^Zy8oq2X|b0~xe*y쯰aߑ- #(p8Au(.b:B=ukzB#Jkyew+Q2?Z(iF|}u+zbۊG{/?\3B\ˎQ[+cdemF΄jwp4{g=z6#cxvw<+kvno׭8ٿc}c| %/1wl |(sճv8JvVrY!8mo"oO0zd)nYHB.m -h EM K),(:3s}͇]L:r>tچO ϱxjsAMG&gLImUbP[=WRN؂mr_uvBw Y{d+,:hzGD̊5 {XZ\G# Oͫ'懽k]!y`yRSDģ`ŭ߷08Ke~GY&Μ3zb_^߱C=kp4]h9 T3稅cf;V6}O-o'vŜ/XfKE],2 }/3L~1xS<-_~ancMy6%v#۶ꯅ !GSoi>o0@^^gmŽӱ29a}١'J~9y~H_,>@ڪG.o~dDzA{<95j2حzQ9mu_CH&? 㡽wCMS=m|Wc)?p |n-0^N8uN?ⱊXMc6O|G\l !7JYbwk,Q6`|-$?mxfϏ ɊOo_?GaZ֐=cgjȺc|~` cy0Ocr]( WE_^kؔ&BCD]ɒ=@ }_2k-/ GMbe>,d2ޅf?gI=>oTovw^ԷPc_ol8OolΟ~>({;^Ϲ>QZ{U=^Q~ =U?iVk.|`|9ɈJ:r֩|\Z[xZKuplu@-O5>YGu|y\YN8c[~IdXVl#S_$xyA֞ hW{&߃2t0s:[bA:,>~By{`Cs!EۤBcGf<?|_rNK̙ Ƒɗh ">>80c>E-WO[֤ߪFV\Z${kik}ǖ(Զ$?&ɄX*fL $y4qW1Jp B6:x'$6JR浤KU=tI(| 尘w|i4kik}ǖcByĸvpAzIZg7,#{U~0B;{r0z>k0BM~t2u&KMG瘐Zw54zZ &A_ano4Iڤ۞=&89 iG,'GƥUA:58OpӨ']ZaG<{}2z_JW-}vguq=3m.BV܌B_ezptm.Ѭ,B~5j5~OrLTYwMAzbÕ#q^:5#`?KҚ9m>.=ꢋNBV6-6SHoGu}Ǘ=%ۗb2?|/ Iv(_d\ o9Q_8, 'X#? o|ɻ~eOEezb@!E2XQ*+in|K/:r/OcNvIuBc]Tyy]|q R]4jelR.%[N^>D%97I&gR4cj ɣďj׌Q w>[.|[4-: B{yy[B@!| BXzl0{/jDҞR?=6w.J>L*{Lposx#x/G1򇕷m>?Y7I]8tVx:l\ԧOPnHm )>c97c!'H;3/{e|!qc.#R }iGʸ^Q>aK (@1 rd7oNgw54z$k[Rߠ|W1[kC hzx#s UZ >;]Q\^r|^>X7&er_3'tF>>z^oÍ\J pӟz!%" A %xS*sX>mŎN.~)/?4ʠw,#;js\!3߶&6$~R=6wcˈk[Ɩ㶿ev(M>f;nog˗VѸlɱR?l[:FL-jdnFG=N?KVST撱J}ڊ'\|FC ~J?=q B\_S}[^}@_/ÏډNć{W۹D'.q?5Iև;!L YL֞ ):GњV4uV:*B[w7_E|zP9א|C}%>N¦d׼]y2VdT4.Kn/Nm\vIYesc?n ! !.vɷ*X2h "Oɘ5jö@58v.щK_jM6=sbNxh_KkzOV)ͨ,wv.A.hYc/j#UwǍ_ҥ*U>Ţ%}09^r쉥tpfe+Oެ1BU}Ģݻaq#m3w2O`e|aܲ8pPw4ݿcYYj8LG)G2.w|Nsǟhoo?mg +7!YZsa˽gr=IflN7+:~h2q-w/j ^fdkkw5ɞlX?|T_:W8jq}{C >p|(Dd|9Üd QwPG'y&!ݰk0('mǑ>1+W8u.)5bZjWd([t|IԿfL">iY`5\b.yJ*%oyޫz|ϵP].iBCM]˒8<{?f[[Ǎ9ucd#Vve@]U E, "%Wsj~YGV,xeye>L?oV<ɯ3']K5=\5jéoЎpi }XCB 詎6m%n Bd[86 \I^;Ozfςo%9ԗeI5%VOr k6fbq;(8{}@)Ze?^+½͘q#s0{{|MWm\)?_6*?>/s˶O%>&D?SlƎ&_d :cAls,wnG(NVLhDz8y*qbǔU_ısXpcԃzx}dYh#;6?yk 'ƈcff&ǁ皯5J՛m0<ݣ_et\A;sw^0að^ F !49lL-#,D/>4dz.y9Ƶ`Dnp.4]] ŷ`ќb0vq;VKɯ`$g$WϺ`"cb.y}. Ї.m7`{U/fUVgJ}^&دWWqV?/B7[*328~4_r0J$׏啙cg<#/7œٜg+eͦe/r,/MC[NZJѿփ|Y?Yk=CI.䌑SvBhh[HmqHbx#cۧxrݸ?(w1wwd3WƓgRƐlvt?p8qK,%0lg98o!,n9ڧW7[Eb^'kIbWR7>?p^`Lu"X;ΧYq8r~b;8~|e_+tzlWq? ?l;HLJ|r ]c\hmиW8ј:N2F"sι -.yVyMOΗgb"8G~2bǵ,! ge"Z#>?ez~9ⓑk rE$)+G'5[gA<'/T[=8B?W8q0} _ B wԂP !Ԃۿ1kA8q+}{c?|$*փtyz}z0z0~zݿփ1k=8qxyGǃK.h.Q]* ޴ ,_{yJy!tC)+'Ngj}=:?>+´o2_?I%C>Wm$-C#%3`M9?$)=<m,}16^lX&s!CnIBcJ^u12=6|fqm>[Z\b`y˱\i60X}frq0aq)k#G?f#tKkWH? %*#yKѹ_,k N:gEM 1~' yRvhB:Lg}bOe>9a0z|'Kwblqo1!3M_ k #,d[&O͞;E/sz1yqNBo}8ۮ g9.~9t{N-%O8Rn}}FI\(a0z1?Zx_A7,2Ç=Z)WّN@$诊vIץ&oLr+X-_ЫV. ]@^-hC/DJAũ0wE㌟g_6(x qy[B^BΆ2R>em7 Zx 6"ҝe6S(a`h~K?L';:62؛G2k&YGe6[A|=e_}zs+ݲahI'~?G˰m Sm=R+m:넯-S$X썽挟7Xz3tOӓnKXKɣ(;lR9D~}\AP>'!J;Aj7OgUFmc)VnA|c9w;vGVX"Ȧwv4{cGEx=@Y9[z +f&Ocɶ9meQl1sNA]~gl福WMӨ7SC^P`n)H[˂V8leiTH E %{_9`6GͧU*6ő=;w~r`߾bJӁK%cˣb~9x-9ranf/y˭-_%!,lucqC-yQ(682Q G~c>PWnCcVS>,% 8p^a2qbq>-cۨŇ,[9\aq'! )"y=`9vlQjS/{.]3ɧ4&cԣbUgƲ;WkEiN7üZ2z+W2KiG?շEUy/akAv]ʔSY“9G_,`1Ry͝:jx8{ƺaXzxyO&#C[en!-#b];kl}8^x˵ a eaeʞ4;m]UxZћ2rdzCHs,HBCJ]ے ||LV]a_S"{)LX  fm>\߇׍8:B}c[,=1N̎㧯2B"ag6*tԘy|iَשΩ_>um99 }} ow];~?^9H,eʶR< |*s佚K% 5z}Uv؄4T<` 1@ljK *jRl&!FY5A+{'?,la0d+,+œh2%s5vN nыGT^x8Fz3+]ebb_'ǽ0Z[WTP遯s3A})ᡣv:eq,bLp鵱:i~Y>T~iK9mԏ*E\;kȏ= `lXec%CMaD>~Q۵2QGҨ z/1,}b|xftd3mcNV1yMcOq)tC_P[/0V:2%C;纴M[:,՟alsMNyyY1a>:)4E1r#ƹM[9uZf sݢa_8wVʎmy幒vX׾~*er^q=}: =Ҋ1blI}ςb}TC4& -pHb eoΊkø_oLZfy| |8ܒlo:kY׾GIx?KnnݫycWy+]X.2 ܃[[$ذ|{}l2sI:- >M|Kԟj\=I1V1G,gYl2+^}pјՃ~!Lauyw] dc+쎶gk_#}acלaYz{.UhE9 c]vֲA|j,{v}L\ mΧs ^ڨ:\6)>jlWnbs.7=8TgrԸ)u޼uE>A#[aw={d^J?o޾%+zV3oaj`< zփzص/j=ȳ~{5ΰ[i.֊OWdwNG}< Gf{EA3p8 x);!Un;F7k9'ߥCI BxG~&?撂a[A 8u0+Esfe{;s.%Vg7>Z3x^8UNϜ|v0O LֆiH~G]虾NzmwǥL> BhzQ?YFG>9XwT7:Fv?gM>!qc7{61&TW{ b1_H ͨ!BM9W+:皯N嗮S|*Y !,v3ΕS+.Xna\څ֊-#>+)q#?OpQ}ٔ#^5&b=rЏn)?2[,Ǘgs¾Dnos {)e O񷔟[hx7d圜\~BZjAq&o^ւOŭZ0 aMFzk>y}[A>?j= }wMaVzP끇mTܪ]>@'wcֹ6·\o})!C٢~m3/,s[8~d |t8pe!E0}Q_>!_G=?ȼKc^lCo3JŭS,qm@ܽՃC]vO"i ΣRk x,V9 p@[l)6Hf/!BJ/dudkuB|"ē93.-ȶ&O<OR[alqSĶ[AZ /)3SvXZZ6.;J.`p>fplpǜ&j. '1DV3;&T?ŷSaY}l}b]epGŦL/U<@XPZ6S^&Yqt<=bO6, #,'͋ #fOO7'<؎6H# m]'@36L+f,z0w>7ˆy'9i*%:Qcxb/7>{:_a C^ӺFX`u}=eђFʝKVyVwgu\\%6.Gr(]_w*0Nׇni-FrVrK+5weVjq;F{&s7R}dX#Yeϓ^=#v|'ybbt͛*`Tq W9 #DQ-Zj9ǫ?,]`Jn6M}(4,Ӷ0V*Mo0;llc 1-G+NP:"th@ZW[<p2y}Y|%݄Ϟ1n~/*)`]1Vơ>ϓ67-4@krex(%Go%JbcSm>[ Ͳ̽OޘCqcOe^}-Dͯk[ꆑ# }*nn 'en0r-^kA()Ƕ~>F^ v .Ga?aTqx8)ǶZ0v{}%`ht1Z+BYr- x8)ǶZ0v{}-%al˙84E> r- x8UbBC{]r8<{?flj=uccd#V-S$*@ʢیm*bUToU?ƎRE*v*{ca2Ox^<ߓyNE(NQ~1!)pSz4NE8Aa;Tmu*Y &"܏P⻫0UWE7iXV?s8q%G,}dv#?JteXzamq c?ںa\bL\'F,ss|޷e :ǵx>2=e3/C.:д`Xb/cߎ\"v+XWbeҿ+շH ߥ"gO #15xFyjy]*z_s}@|<_>P8tPl:Aݥm_P҆*+yt⒃>!\>T,ZvRkI56*Y]1Y80@|9a|<&8<9ùcrfggl[8l":7~.M_|)H9hS׾PRUUmQD`>,=TEsupqFhcqb!⫕`,WuL;btP䟂[y-coc}![r6aɁJof̏GyEǼ/4}ij>o:SSw-H"5&0l$>FY2 J_ 5%X϶5M%Y^<~X-*ymQ8x7*yʫkn1aÓ` ֯}Ə]c6ɈVЄ,'ۍ,V蘅MI/ 5R;fFl'Vxr_ 6֌|lҎ8c|dg~yyrr׃no8Gyӈy,U~JKOOD=b\'*Ѿ3Kl(Σ^qvJiA}4$Gt܎\sy{2ʴDˋU`=~/l -Q9>oX{EUb1r Ϻ_m+xx<عhqcs0ZGX݋aqkTN`l"ak[oFyAScINd'#beދ}G(KS/ηo>AlwhQ/ z?M9`!tԢA`s|{8Zijow&/K>y 5IC5MlAx@$N纟-y G knx{/U!eyp}mR ؄7 0y$WI #n:{X 4~BE9׊^,9%NZ3`/J|f80.[W-Og^‚F#~OA"]_WqȿH@y=QkFvEgInx-ƿ+w綯fW<OAWȳ߼.uJMes6Q>Bjm 0Yc7E7igPD5ˎjY"}jyc.}VO,Ɯl}K}sKavڿJb퓲m/Vg0{)X9)njߠj9>f?r0 R{2jW^/G&2~%F?xHjM81gZk)p5]_ ,9]i_gSH<5{ƉcӇ" iT%N4PsKǹ5˵_clgDZɅhjۖ1Jd/"9鍩֛Hʷi>FjpB>VnzEbm爾Vk_J%cEuE1B?=Qc/o؏G>*Z{?6ڮ5k1R0\69wozvcJk/ۣ5|WlQ'~d~Зcu{wS׶=NYEmEOmQ\"lxv 5t׉]voF}c TVc[vkf>xWqv?3F*#ǽ=P'ZM'/_T<{5>jyWC9~ 71붿c34@evxg=.<ϫsq5+NfԮcG1_25"@r*Ӫ  byI>_~ktNBRO ~xj -|?ANk<ҏԕ)>ʱlc5yR"C3ݴO5vN_;4ӿ?@h״ouOGgI=2Yu<ɟbT'Z{,~-İWO^XL,EM;{fϜeSOCBǵƷ|Ѕs>h!aO~'X_h%U(r@/˳d_8:K%\[ֱ&XyuwI аiewl#oÊAK1'V$}L 3Z&'by$/2i6LCVNS8 iktlHSI]I0O2X^#3&<24ooob>y~<8/` 5t[GKmN[;a=Ȗ9,cѶl?A{Bh1kBh.`P&G>(>oknv۟"ԑ#g!s}>5y;6 m*UhLYF{[AjG6-pG`|8RtXcTn=0j Fw5wޖZsdX+ϔM]FOJv:F-[!5@|=KBhз?4;Xkxߖ)}=ZxA6bUn`<`kh=+_@o&5sv|+;1[xۓ ھ 2nkNjAnq+ktoƌ{>е|0gs7 F˾8G0f( -h 1Q59z՟\{a9<1I^^}Yi Jtaيi\k16|b?4bG9uNBM>P/FB[i)gz%be% pv@Gy`.;>׎d` <\Xƃ?^ىnR[f Q$UW; #C)= 5cRsB(9 WPvJk'Hϭ!}2{aM5!j0m9y<}!zvc>×W/VɉA;Kǵse~$-o,usq{N5`s ɩ7VIzkﯕtJѱxVD'$ZXe-WbGJ//>TfOW/~s1iH}AC.ϧy!7XߡZ3~'YITƵξȹR3#!x=ttufe7\|TZ3 O[;RodA3bUP^y_߭6Ɛw,~/[]?L!tc[k+Az"PS?mXa7(0!\ as>|}eɉ}exvKjrW˸H48\|m!KFG>c{CL>dUt.`ߗ~ݹ"{cr)֙׀GwȺ-g;K~aum&uDal^Hhkg6ְa/gر`[L Ʊƛ#u5[xe@c-KZ_McBhov%;m2aZ[mH>.^yz~LY~.e=tqߜ|;h g4R~v.Us.戚ќfd/K,ؙ0[G飌ˏSI~ړs@tij!&?kgGBb ٟٓŅ#t,vqkG>t^c7~<sFOi=3I E%,<ѪPJ?'Ui~d,ij9·VY_f26B#92֊/ke!۲ a><3<:C~ϛ!F|'uON^j/m!ql`| Zcg=۞!0xfLשfn)]ނ5eeO +/H a qo%Pk} dP>k쌭tZ%tuؚ)<3}ѲGiHwCb}v|Pa~îi|Gï3u|5]~-0ԜB?5mrڮ9J'bw(GB/2m! rr_|Sd~[ǖ|07Ɖc}rd}w(=#nܶg #!쳼GP>ssׅ9v?k+w=2Bӄ|w~*K3i=NKY|@zF#쬳h'3>|2Ae6`zbc%س gџzyA;cChxrcϩa|AxG}x.(u =6ciiPg~rx%'U߶{6^I'}Sj_kz}oG>hz&9V|<~}a[c+m )`loרּch./5J'k҉6 FbFM8t=VkO>% !u傑.oHhs9 S|t1Ξ-Nuh`-_Lf-mY~`b6gHNJVWƋS|86ƃ-S:7/7]~*L[a@#?X3V|bl|k|0űin)|Űq b:羯6CVڥ:E<.Jp^QN K|9ңe.|ڕBC]Ɏ8=|̴F?0VHʖ, deXɈЎ 9~:-$עuLbIu"'D$'mWOwj[ $_) cį.N7Mھϯ_$@Ģ?y|7yjR|Esg0ϟ abqQ3Q*?{4ۓ\yșoyj(r֦WCN-hGFm.aXԚ*|.kXK[pԺ?G^~~OZ#-RVD)[qk@ۉH?7էG); 6ʃ,+?-m'd# H'& ߖ6d-'17 KR?|+(K3 }]A3c[?t1ȡ{$x^u~ 惱K6+~/sM,\ijvfw~%5S~p~m@sQzYH[>fcCˎjyߔ4t]I$`?GHVd8Jt#+^}~惮fv n]~ϑ?͚{sޢa6m~>PMcՇKܞg? |x[OͯASKB)FVyོr6Ōf_%>t VK/&Gy|>0)f]<~$k#\jyŘ4&8Jg:kN5k#+^~Vι,2QFMKЮõXC8aZp##1=#4L%#|+GFf;GN6]uXκa$gԌ]䃵1pV{Wium)ja=߲vPSm~[O1ܮ?aǾk.Ag[zH|` ԰^dgJ]Z_kwfC` m;Xa=l]/F||pgPB`z$-&9 B-X!#Ǡ!5)ԹyIxUȯ-vk-)uy?Ng}OcluwiGf8xw5uw"y<2B36S1k )]a=^>SAxFֆ##ta½Gh~>Q1gZ֎>9֌}do78s_3ҏ"}Go% t̑yNu\:zxFJ2hG2XZǧmR#H\CqfG5#Mr=-8cy5[1|я*c!{5O╮+m~0bgot`pq]nsϑ{5-)u-g`*G_٫Kd9\#OMsi0k{eZJ~ %k-;c ٭?uh%!D8 w-[im+O9αy<a 05Pw8]Q[z::A*{/CCT>}mop^^5v$E-5콰E?/Ҏ޹}9 a ]{붉c=Bc=KWE3[+j]@2#}zW׍}'a0٘wك^N5|}?pGsOϴ0w,1{^ 2Ĵ&V \;)0$/jߩ.u1&fh쨽l`t,mþŒa~9RP\_:k/A>p'~Hڜ-3ӡ"=`ph߫K/1ɗҵsG>m3yd qjd5vjkB`c-$#C݄<~&Kf^5uǨ!$ l~|og>`zbev8mmd9>/]N!shWUt}kSS/Xc+?G;:ΡUڶ}o,3!M?Ah7'ܼ 7􃊯eE..3]am `SLn?OblȰ| %ðv/ &vtm%6Vӗu9ǚL͟?LG'j4>8ϒ{#E]ۯyjcۊ@c5FK3|Zkg,^l=K{y|ⱘcFgk}v]) 38p+7a]Y];e WW{uz)8C7oZ~z1ZSkOM5 \^?t0?הin_cd984J cˀw>W9aͥ㽇97ӏg|xʡ./|MM8Cb.KNoȍL #nly0acQN 7Ϛ6<4|.y ܏žy0hƊ(~ݧ7r]m706կX #k }]l|2]a!b2rpH.'?z r!Υ%'W`ttj~ K>QCr#YjtyCuu*'CR\aTfoxmadW ko-ڳ?8e['^VK`jNMp*CۯYfVXxu|O^OxOygRz"?beq{ڒ}/4Ok:7i,f=?CfΣ:&%G~'2kA=M;DbʪBQ钾kQ}`1-G ˗!9M|ni._~!cdUM'ٗ^Zy]Iޗ2떾d!o h{/7eybn\No\ԭOiUŸ ۞M c%/řBG>@.uc#0=עm}Gȡ9yT',1j=0ç#DBkxd}ѩ%W}-칗3+!L aN? X %r"'%Xgf-pGIOQA}>9x -1rW,Iiɭgxwm2KZ @2>e |~I W@D| X[ .{0ఇ`tl豁%'FW'_6z,gy>q[3E$b͆Z=TJ>Bܝ ԆpF퐏m#ac8m>Rw-}u)T*ZF`2Xu-DXW%8[۸%W;N~#!Biɹ<@4_%;إ {3aYYN~nKu{3(?I>Ce9~Y/!@m^lq(mH$%G6zǶC.>jul[rGCd?PF'Uڂj|9)n[-$ GM,xa|]X@h]QBim]|-xcr0u(iWɈi;{0a;X:X[tc\@u,߈L<+1g28`㨧8;r([l$=y -S"#v]Ety %_W2Xfz|_0i}1CX7t ^:ҞL"M7-,Ϛ/i:mq\MEc߻Y_4NsM[fѽG:2^pE#3#K&le,U'lJ_fݫ8^ؐsc=WE\ASȯ,#6RX>|Lʶ3& cy0tԭll]봺#mԍ8^ĩ $-U|:{^l y[H\59ZO+!><ͷボ)Mx_˔hǨv#sܷc%]Tk͓p|1Ғn"S_!ȝNj4΍v;F c.{!Xc /}r.1ZR84¢)3-h}د8Or##,Ә)ulYďk ef$ҋ͢ ꛍu$Ǥ z/26} aM>x=/1Y05||`e#g=0nkv@Y^~˱EcG~Yړ[֏ųs[f#78{\ 5CsK gʖkB{RHj= yZ]Zq 0ymK7wyyO`yv;<8[b]J2M̼Ԯ/_R~R | Qji+Ȩr;y{X{PcӚLZU {|{(j\X~ ƴ;F_cEڝ ALǔ3!j3!?xuw^_<͢;|=j쨟Y~y-{ts,:Xg\G}-4LSDCme=lwP/y-ݷ>|\=mlZ}RڌCsKK9¹D~4_zkj[><0{--ma9^,gY"6U꫖?{zLf{X˫G { !|[ ,#xy6V.,J[YmŲRwVo}Q+ /nٳJ&xQ 7].CbO7:J'?O)9 ^`0\8F6Geh z|a+=#^:QeR+ [ < sN`<}@^1c1/uǺCi'_ ԅaYn=hCʮMA>69x yamy81ۢX|m1tٞq>)-)>Kh]e-GRIE:`b@iYOw3=67~t`Q~2VH &5vFW’ŋ^L:SruzJNoz-}Nb#!DJX^W,rrmO8+ZZvo{kǓ:oEmh'5'㸤 ~G{v`ĉY^nߏ0=a4wK;BеspjmkajX[ z㯾B(gZ1+i\KgDW\L;:h}8 a!߷ִI&SGfbHPoͮY%u lfru,g&֦Lo^~Gd>_aq|CxiH5!'mm{1z;{}#Qc(xSas.<7i>_>731r{1|Uoofw-e~k  '5OsK+Z:j(#mص{tk:[Ȥ<+pi9nV1-ǭMy$5w/!tyh~&6Z ~eS(j{!^~6+'c7XJ3sz>ɕ(jqF ٟ|OG>Xn>S^{Ih,JH[6vm G؟E*Ĺ&qXBC]r |v>&pc*5:_U$YAwCRmSSYF?TTuoﺑ]_ʮ?|:}u5}S}co>|_D{G9w,[|f?J*/!<3nٺxJ`F:{r-???~?y[yNm*nlm8RՌi\!tn?5±Bx?|1Kyt?V-i W:-+nLBZ%@3,g{(537_7I]Q{9<}"U^md,6&믤_ĭ pcVmpwn6([FdX'lx㻲Wo6!?6m}s봩2wzEg[_仒POrz]3ʖ؝Ti_>3F*_5>UP,^O>|)c44 |ˈeR ]Jd\u_= fGy4ny.+˜rP0V-]!C ˜^bl$23)ˍvlL7dS򚒙aWKH(7rr ϸp6;}\NZ_nm἟%˟ʗiŠwl8^ʜTKKi蚺ݟCx"L͚Gyo~1cg_!pꦿw9n[8UpUc.fj`S zjrMسğƣg,^/\a]ALL9Xw4a׏8d"./1lnX|[ ү7 Ge\$ 2|[ :ovVW3zʶs|?dlnS5%„÷Jbb[Bϯƞ! n)cxmz[ƋDa ku+3P~FgmMl`]H4Dh>Ch.*C?i}OP#.oȱ*{8T~rxƤ8e9>Pܱ:TF8IW/#~,Pq)CsU*78Q;8VNЌ,ͣ>n`kȤdqcX d'n}+aLS˩ ti9lOC81vOz3'|E\9ؗE;𸨹rW09# 0Uɞ! \6xSXv`?B_! LmnlY!eBP"1定|1+l[&WB[e0MSSO ^gzGEdžtX4#`y#`_q`:?0 }4Ugr~SA]S>RbWL8!8@ unILUe{qL1Ol2&v"M&/DMˣ1n['*G&M11Da,n9@\㶷:!ʛL;;;(&A?(uuQ;|ő^: Ч~Sɬ8s_*FD1Hgfx&O'CGt|^٠'",Pw==/㜹kZ*S\Aj/ *Y0U c"?Y^9\+wht##^m|?*p9|͏  Տ[=@ɕ("Y ;8za"UgSFawEd+@HEu*?w(ʰ*#%9LEI;0Ėn'Nz`^wׄ0]^^|ݴM5u5x+{D=zϻY7,_.ok}s-~fj3_s4ʼ}eqa34F^<,ޞs\oEgpl1)xX|gK5p_#%~bƆC)Vرu |>֮iTy: ,(g@}2wRuޓwTI+0ة}161au<@aEg';É7kEQL#89Wo!3Gi\ܸIׄP??6_v~ͩ[侯ey=X`>cdyDap~_>>}0|jl]Ƣ^kuaV&Q ~VZEb/Ek>h{N끾Ĉ`y_TzL^'J88ۏ31~˶+/.,ǎ#bcyAAbu [yKe;uayv5{lΊ1+UW|P_a4]7^^Z1?}K Sb;d:{ɍdM9#Z;FxO^%m^&HH ^GT.^ֳA%-՟B{~44 y{|\嵼%cy77}t0*2Gcsg~NP=w<Fi3}{{!N[<ύq0"NS[_mu9lbcZn \VZXy]` F؇A(J=H Tϫ҆cmD/^%bȵR\ȩd}(r;D)h YiMjRq惶w3`e뼽AIwpmB=fM~Ϥ)ϑyS˖̻n^f.9bŽ#\asG^=Vt_,VY!tM7GR.u4MPk>g3ƶR;(+ :@){e0,8c`YbbΰWg,R9 ~Ɠwk0/M7"} (TPVc|_X)]^{=TOg# 3VGYkH>mvYyۨcz,ꄹ0/b=JƔfmsc"#[2P<}CMdW`r0?D-:E:E+Ǩa7B[Oc4zqctr'8;9?%w//$}1C\>1/wDpLD16.+/29nk|W2c"DA; lgD$E-[FBC]˒8<~sFG*WYDfd]`mQ$H|ITGI7%ͽɴi:v)-S[m2,ПRMoȆf[nOߺ0No>um~O_?-߱=oG_[e -rh_Fޯ=q_N<,c[zmDϚ8ǚx{mlYfS>)|-A)^1Wn\'e=9+`pJ"ϲ->֯&:ׯ!tMia<(&x`ePr^a\r&pqn.>{#YfC?}l}ٚ|Z]xzd>d>SM))804wxo>P* h|P%n39鲁04fh{>6^|`ɳ 쌷[Ɛ٘˲>` e=^2tB7yX0ί@IɪeSȂ䀜;@D>*{bpݧ}ն@$O>&^pW1ߧ_'U*pn#=ʛۄaNХNG%exSO (ic9z5XA9< *3#ֱ= b|ģ:,0F:l|6qG<ıxj?B n-<9jD,jUt+<F/9׌ھk,co &uC*aZL{ Od\=y #Ceb)-[:ׯq>ƕ0a>2MedrjE6te UTݯkzbm7%}|:-DxXYmQbz#׵)Ar~Nm֗e{}c 9wN&^UƬᘒs̗1%T,R>+b5i0*CǖDu {X.avqAIu+>@ac016 (90*xέX<1f8te!b~p#ENj2(TS >6C0اP!]=d*_yīCe;cKk}v>o(6nϏ! yt45 Cmxi_:jlѴ)s*H!T Oe5];\Z&O9"b]Ë-ëbK3 _GoQxvSKXkBx.mN xNG>?Gt9A#zg>W>r(7)ͧOyus{zʱEPO5}zv[@YgY=8f+7X5Tڽd^^k K]SO͑v(|`kڞxjS>`mR>h1 :,/ϕfɮ1X^cF8HEcxb>/.'YD>8_z\y`d(=L^V)ua|I?3tMߟϜ68}m5㲾>/hmcݳW0%s9J1WG=Ϋ~>3ˑLoϕ?!n(9[O󀞿Erx͓ui7??z\W>:cS7O m;1^ӮNJw]0#{:޽ h{ֿΏ.wTߧ'R{ˡ*zN{2yLm:O)OM/}@?pLrcIl䉵8<-~qY'k>|qvH}BoZ s6Nx=~F // c/o1#{ӗ':~El?ȀxtՎ]bye3X!mr؎2œO:LJq qW&b#|qݟ1(LQ/](-/SMJqjlp߅|Ўn'^w(㉟/>a>(@C"p墜Lݏ|_/Y/THG(3?RC;,=˜ 0o~mb2&e<~lAsGyhfO p]`mXz~}3"s,Sb3"*9Fw:N1.xdžH,8I9ao 8{X}0֘s/Տ#؏k>n8Ryh;*D&,^1~8d;lh?᾽w>|WmZҜ /|6/LFM2}僩ˉ95s/r t vMY#w,Q_ kW/Ҏ@x2-xಽܫ τ0^Y F@:¾vGB8~H{MS;i3%F%We lkoό"lVkt1Ug55h(_i_j'jg]''m] e,ZWm@|.|MӜ_bdyJ%WHN Aa'W]߸߭ a 7l 8 a>Af6GQ }T,(K{_Uxy$~ay\Õh xUS{-g=k[4?|u/m?n>dyYS`~d~Aig/7(Q'<O5lRA5ѹCoؼynlѝՏ`W3(JZ9ަ[g:9Q/A5!xNsP3P8VjՋ@鿽x޳V^Tc=(7|9C_.!hXn㦲'{3EE}!^^,n@Sʞ_˂Qnoim-UWψoedDrǗ5#5#Ly.y~F=Seȣ=%Զ-|Y1u-Y>j'q'{~T˄bĠ6k-B;Y/ hKvWEm9a\BC]˲8]{>fBEiE]S-uw+)R)|ć\8ߏXz,=˷)o{{(thAZJV(0ڋEEt4tcS7~NK!ӏAXVE) (tBន枸y8}BŤEGϞ/ߒ^5<4Sքq8'8L0q9bFxv,dtD|`Ix3p9_>Iy@ʽea ,0ǹ,:9tEfT{էԬʸz53GImpU]|:o zꖋ5>k=!Gqѱs>ǾWN=8+V ]hjwy,-&O/kB|e,s臱XBIm6Z&с̭izIv|LT,6P9=yz^536n2&{?OMZ@p#-Xv>;=QiL1P-nkʱ8OP%ֲ7-gG[kGdloSʚ8]הyS7JL'Zx_V.w^Ն-uumŤWm-Wkw! #Ly=u\323&:# L^E-qC?MST[ >&Snk5{Ze]Ӊ'~f&OY-8Bɒ(tGsxX_irk?m'T|pXw?.]M1o(uh)up=A;Z|ZAM_r~\{qO"yHAzy_$ P^#ㅟH>IE;kBXs1RF@g9Gկm4wiUz224]| a5J'&>IGߖt@T:.ÅR/-6m:2vDO硭hfRKN<&N(Cz[${.r=Ԧ>%U.Ɨ5!~!t-]Ԅ`!L6~SP9-N)Hk bK9CuP^[J-Կ;j1Ɓ5Q[,%YtHS,#\KK}+M19:'W|B7Vh˯u'ܠՙk۞Dk[36 Y? SH?YAR6qIҫ_C{}ou6|pi Ś|.M3^'jqDZ6)h`Ђ^۽ԫ:ϽY.$z|i-Ys;]G=RsCeQ9XKDo!E˞S˳'}&C5!x}sŰ4y~'d$55FQ~v%eкP;Qnk|ZE ɫ')S~x˲5Z10!ׄ0u”>-a_ed5LZ^h޺ƾ$ ˨E k:D/krQxqMx-:4KaP-4Z}bIұ[Beg%!uuyFm w\.ع$YZ%\w.P`ͯϋ^ݑ@kPwJuZ%v˛>(Yk<#W㷅[DWbh_m$ַaׯtS1A>&՝C< IyNI":^Kb}Ǟ=2x>&gjbJ@vM<\d sw=uҨ#< ~ "#:iiK3/5q2#APөS܏xpKPx$}G5yGmz{G}RkO#0y>0 cRHͿvrtU1xӏTQuouTr$Esi!n|vD@Z7}]ʓ\Sf7z]yXmmkҵe;ZUmzjJ4lS1p($ܷVbrEG8GV揶._5>ox464(^\#HSQi;e({n`ø\K0y,z5)ckgnV Y|Of+_lkחסF-6jeap%>]o/O$Ծ٨DBkqeqh#WM^aӦap>N a}5o]zc;iqψϮ?t)' שw[~_/we()!Ŕ~}\ڧ=RbNcYrHc ܯ .3⭴i_>봮}9^ZW6 \?Nϲ&% ˯.&|{v c^1oݖ噲i{=r&Oaw0Bֱnc)Wq.z}WqaK߶{t<+ ;?$ls{x8qcϛ nYS8}|O*K~a@%gmyt%Zg*-H<;p}NEB@FՔ3D͜V x-4i, W FiDn" |S8m 4:m6ӛ5P1[hs_d G#q-l2 .j aqrbc:HyoNAmZD9o\Nz@tEpqccк~]?2][1n ^"N`1KS#tr"钟GWR7e67}Ux=6MoޞTT3 }]~M-NK,a,9ΉFNS8+ջf־PwbzagN*Pg>h*Ww|P}˯kBxOZ.u}W Dq_^:HmT׽CmJu8|bk98ŋ%ew`;Y(tOk1/GH8wR}mLk뒯76{X~N}b.'_xGMr[e.v?A[u{M隶*w&Y֮wݏ\MGLJe{ٱ+~όU}3B^,#|C~S>?6}ZL1#t G -voQG,:B5<5,9gdյʞwN%}Pucͨw֌d^eM=٪ܶ?ۭ>u㿞"w-#\ *S'MJqK|㷣Sm[]^se,SR=)" U[ׄл3uK㲀>`)퐗T,GK}R+lt-1!%_m\U_~RMVYmkȞ;58}k0\3BӶ0\;o7Im0N7Z:x3;ڸo`ɏ"Yxv"걂r )&xt#!%I#ORhaan6ޮKѮwmF ]?xe0]ã>)M<:D#/  dY~\~ rن|5'g^-z8@jXq΢v?5 -ގw,$w&'aHq '6,vpbE kVڹ/q-t}w_1|u| E%/mKmֻj='q ]K|)˾_ ZV.%l ƌ} ^| 3BNTΉv;R.'<V5˜*\\s۪ݲfg#fԮl1惪nC?$? ^Edrf{}& DwŤ n>}4H on=3+{6 !M * ,}R}3|#X! vimSf ϩ,Tb'2#YG.d+c>*xuwmwY^XG('꺥m{p;b 7јB9U3]C e8G^8xQq->Mٺ=AoڵU߱0(:癷#i}#-ٻ|{0Z+euɨLjYcR[[>dHK6]ʓHr"_:k䲶˞+-Iucdb<1ޖxcڛYڝq=Fr_qyA_#*LYr 9A"`V=lH]bGJlyhzXq|\VXf5`? Ш5iGlxՏu|:!}|`݊({L _?6O|Gd8î֖2:s;k=v;T&2#$%$bjjX8Ni>8oЖp,'n$|sbˤ+ɾ\\6\M Da`WBBh;Ww͎l$R_mL2'׭ΓќVmd'8,fDդ:FayGsRbLb|]>W+a'vH'!3τ3ɏcBhjtm3wr,25=:Z'"dX0ndtlfTWhgޮV08/Z Ē^*\l05̾\\a%O(,cBhc}h%#ONτd <'!)Iy gB\%|W~ݢLNۑ/MW)( yuu;W\|Vӱi{(u]# JYBG,DY}Z jKΑ+ɰm΀rݻTǧOmWK%B[BUWPbB8xkлD(X.9rۖas^Ƅ0N}޹v0>C8V›GeG,-# ʨࢿhIJb!c/N}#G,ݲOE#gb'pNwLy"s_7ȘX0uư[#b هGxj}/-Rt]3!4yPrMG>Jɽ%d,i\+,U$#.%J7W\x:R% ٯu67Gvp%NI>?&?Dw%\~w۝ A& ve.'4| &Ow g%yv.s~hrh@dn=IFNX zm%ZK=lb_ds(BC]˒8<~1_2k*Lɗvt0A @R?.j>ƌ%]s4l2?!L_>~u `-8h|DV#ݬ<[0:? c%quzf-jWI_v9a\={|-غ]V>LKeUh*ioц5X([r Oh Q?il/^#c'}a<~ ُlAܵG>Xfw]iYa[;ul_qKƬmD Of\K;j:Pʓ_9<>_93!la2S%k'U_9T!HTIY=BBٕ Z!h2ms;9Jex6I,6oZFbOGU-Kr9_@KY+x͍<! b-LCw.jn_!0 -w6ɖxjm#!l. aB13Wi,[2b* Z~| SԐ m<u]KsT_- wmhr~%}-iO4 2mǔ{yޘŪ$V9zС+!.˃u cS\X0k+RǗTVQS-,9?bB֓6g52jƲ:^ [llyxvXhL5b IV5 zqN1; 5΂w]! az}p%a=Y#wYUQUѕ/K ݥRf׮1lX?3Ǭ;؂KOY)!,0m3k#hby^^6)̿e5)~JK~u_ߧ@/~K 㽎2nVrF*ϲzlyL@1Փc[\Vrs' au0.S]/6I+&!Re~{6tLK~5i@_Σ\NZ1IlB␅/zٗEmhXI_d! 5/q?]2G.n~x_e}(Ү{BX\pa1ʘӘimq_ƆcC>珞pXd=@&٠ߧ8/ƾ1bE*O{i$>hKyciʇ:)<˥|,L "${,{hd?]h>@CPө]2Fr`samc5M3~ Ƭu9 q !L<ߎ4A*~JƗ3Ec|G9|vF{Kiˈ_.gm_4^"S&HumzƯ^no}lylA>aqycv/WYt]gϲ-* {w}ZCߢ Ot=Ƶ /,X|{i s=)kPsdn~iεx}Jݵ$w:VXEDsƶ%S/{c'BWW <)TGr.c2z2rPq$ey:4Cɾybo xSF#5YcR̶ a&&ZC20d3yX=lz{Nyu~yXr_w GLY>_WSYytkn#!q uڂCqrŻoXg|tp4]ŋO<[" [~wISkv!.H2CqtO+|OqFz1h_|n8\|Q:MRŸ;\)2r sVz8"5|NK>}m.wrT」] k]/}F+r>Hmq*E)\Ouyu>_V |,yql>y|rM>K0w S4CةlCDE .:xʶY+˖8,Ng;ǭcHuhc6/suh-gzxBHn a:练;#IYu}uWưƶW^>Q ve \~}ՓV~Hm%- 18hgHu+^䇯] |=*!n9*-yl5]c;g#ַ"C|`W;h7.5iA\FwHzZvj[EÑ\ %'KƁ'_=^t'?me+*yuZq$WVxyuf Jl I-zYLav=t:Η ҊL+aP|Myu xf\)A$M\`QkX9X}4NƖE4_]<c_Xز˔ $4%cdܧp2&Ǐsr,N쵺7!t ٯm\H!N"2c&Ғk1eJ:#y(Lyt}t|rN_'@}Ԥy |lDjDzr6JtUJ;K2gS\iXY-Hq/y,9T".Gl&YNHd49XxhK4u[R16Y2 K/NGU一u\W4LLW5ݵ9eq?;|[BF7́N2Z598N%2w-sT;1Kq`e[rd2̭RLKd}gm:?Ѵm䏥:ȅŹX+vr1gsmn|>5[c\][!kϽ}-Rn?1NN7y/2:+jӏnZg7WnלDm_un6Izjg3ծFךOqz3|LQ~;%g\O=[}1l1 ZuUas-}`mSBe -x(RmE~/\j9IHBM0f8f=f[&:km/|vj[ҳĽl,Ռ}1ڪJ F;Fon a%-Kߛ ̫Gu/*S_sy]Kc|1s6X>t+ePڂi {bN|cx.-g'Ð)u| " 5e\2{kŷ\gku%/.;eڇiY08c-l_XvS+lVWo*n*.b\ywwMq}cCC_Ifpb'OwǷ>ȫEJ>>D|ؖ~w<a~j %~o\d? P? 5 y4AB#Ə$ ڦ-Fk%uǯlHwGUfnָGo<$9׏ۯϖzebfe?L(wkᑮVzgYv`Qwg #+)|K_ ajsBf+2NjޡF=zDg.g]e)r]J年ƾkSgԻ0:zS~wG׿\3)9#.m\"m l3chKݽ6|8_*]#N{S:a[f^Ff!"^DX!?uSÏ:Ӿ5!]; oTgS~Oy@Y xyqE.8|R~/cANU껍OwG#/tAclylk=l>uJ)3 alq0#^Arr㗩(1;"bY-6ԏxO=>FnKx1\A_1U$I"3Yw-QlnX]]0K;=|B{ˇ"zTU`m@SFgckx:Uޫ=׭vfDzt= { _Eyס_u9"0r9igq#{\,"FqSC}blKS7-SN܃[ɴGݣT:ೱz7"2XI`?ٟ.݂{W"\Ԝ)!̩k|۩^ X*Ƹx|魾+GH{rkpwyf\qOχV5J.U7+Pq|0Mt0j-֖GG6c6CCAOY 6͏&ʾ9g8k~icW{ߎr3B6#~+C{I,ݔ/h-gs*0~8=*’J<8Ir,ޖ 9 v|" :92Xɪ`:>;]r"; C|~Z1,Dz'\(@9J۾Ms?Jk:hnEӶQխI]VM['U>Wze k1M 6|/ZܱzjEu$[ 8O|DTxˍBurFhT1[{Xnӯu*Ydrqx;Wsl]40Nx)["MqجoF"7c9>TxDeّɫl_;vX!>T㣺^ U16.֩luevGQ>۩DlƎHpNb{0O84M81w߰d*9H;>cև\R<Ķ׶,Rڠ<,며e<5u=V4sm(8|m?V_c#nL/6*]BCp]ˮ\;+ep >"cı,]K95S84W}ٴBHm8]7ܝ~iO?O(>OGFӫ'^_([RK("sK+׮襆-K^hy;ćn`n.A~IF(8xbJ~ ?8ț'h}*0(A8` <6&*zLxI^g>xA0&mSt|A~n'.|P?b8~8^M;lS <>U8[pc;h}WլI1/ Uk#;O (d8)|c;[MF}KʏBw-)z9vgi8,'i[y|(Z^A߄1\׋ %gX ߵ|D+wxA96B 4E9顥!X>X>[߿R >=<~v~B+߲XLOnX=vڀP%!f7޹ז][ݫG<>Ol\Ѱm~k>k>>ʚi*msKMXG/F9\?_{>x1<+=|Yr(L X0ɶ?$nkg[Hwy\lh>ϸ~|H?u|Rq_K1o@v0evl[ۍ?/ǔnn9_M^l[.|~5@O6g Aڮ9_>po#GV3y8޵13JO~iCOy(^> R7\bgoG<_3=td).\^rƊ0'QʻjX޳{[O-#mL׌tCu] B)7}ޑ߉þykv5# pya~f5E5Y9Z{51@t<155+C S>5}7 k3q@sAF*uPs0'*쇬b.1c~%Wo޳[{&Km?~XzKw<{(' mAhd +¬Icf<:=X#<1V:0}x2UpaΊ3iw<XnDaQ1v:{f_`&LۛRU} ͯz@^:_c۝,4ҁW0f{m:Q}W[=}׫S3bSߓk`Cs/^5A?'fX++pQH$_J~}A\,(PL閥ZEyԔce>"/>i^==XJmxamGp/G:|ྚ ?Pab(_۲/:zqN4Vw󎼽j"#:ǏYdztPJv;.?5AFZ?²|vD}|@ƘUl?y]n;=ƲYeOlWB+&cum1.fbwN ua_׋./3&z\ZKCU|ؚRʟ}3+j$m"ReRTfC&\W-84> %%4dV5gyrOSBHxQq6^r g^٭ѹjM+?=z|+/Tk7COsl|V؀d6.Ec4KR*)GAˣ=>r^=~Ξ6kɳ ûX^؎knY~rFQj,pȣFsȌ}FF.Go>=:ݛbȖm1Ϟ\3Is}~}%wd_NG0bv`H%++ΟOE'NJhzE6jo&k:6lO*1KaמSn00?lOc"]3CLB4 mGRuڗ惟Hu_S`rؾҘc]#| oأxe 1/~=sFXFKT%rP}bӾGA%(rT=>NUy{{8aql)w9#-Sޘ^#|W6O۱Io/lСյk גr)g}O7KuR\9ӫ/'^fv\cd--nʾ \E(^c2kԫzMV@.{- GwjuSNӵGKׅƾon'ya%gI__ڿo@|Vs1cGqqOK~ Bx B/xxK0!BC ]˒&];-oem*u$xd˶$dR{Ie|Z'ή9SB@ir<ˏ_ ؋U;bv!5WA[4ζ4r=QħX^OPSZb5TнфRkXlk>%]||P:WE~A41|Uct~ZGlǵiz}vcU"X;\! lɈJ+N7I)}ckS{89yDMNjhIS*IxFbo;H^J_IiklFvɎ!0# 4nX ]TB-e+{v,0{[ƅXЊ=A 4\9M9p003e}X)i9mҖ^ ^MbB#CN-%E>9ZMv߃gCjbEQRQrEiy0zFQfi}OVu~+| O69L 9ul3~sbМo% {ŏd98_٪B^]AKHM}4^ܷ1A9\++v&+ϔ%~V:^+:T|z5 {q5P~$~^_ilx#ƞ-'ʼnY3Ή4?@=FchBon{Q}%"]O14S%fVDpf "u㷨j55kK:k:GBFyq}E_qZ2:ăZxPGx+VOɷʙ]6f}`C+އ; ?Ɛ9>Dw8vk>|IZ+:G,'奄=BkzE/uM3~I""s?KM aԯI5)ڇ::==Phu_b3HW٪=C2PJO(sUgۘ9?h@ TEƕƒFZX?l.}׍Hwm3նM=1TrxisXS&>h s&K+s?N23N~99R]7вC)X^~?v 33ŧ+(ncܘzCc'K鐏a/=?>`Ѹ8btml)=שׂ[_o1{A#*Ш. ,Ҕf|~vqʶom!RQyrK8[m3V~'L; Ve"Әh_ܓnNj3|=ApS>8d<@Fxs4[ʌӶ(M2)uQʛZsd/?MG!bGc~FJdcI )?Γ(%b6ᗲ/֏JL ^H=e|LXki=nuECj{~?(yd\Զћ+A[<@Fك͛{9t_:iC[p?ہȇ1x0?,gY}r7泐|߰oQ&d떞s8_XZ< ar.a mE 8[Mظ>'1J.}Y 4q .[o7h\ !?g8Z3]?ǔ5pWiGxpcYs:a*B6u&| ,K*ժr-K'mJuzڶG$|vުOzBC]Ɏ8<|̴]A:?0II^=@--2)?wS mMRפ}߿ߨ|ʎ%rwziE]Sxή aCBfn]BX#H#_ >]526Q {ɴO鯆HGnW7PFp\FduiOl(zN8L!!9OP^wHLGۚu&>ƿZ-t{c;!#е 0,Ќ&sOٮv E V?^ 0RZ~Q?VƜ7ﯭs 1={u?a^<_KV-#}!-"`嬛"pxIݡ'85][ l>/OE6:4oW oÈ}4>n= W{c gc٬/{FտS;k86`C> ',12}S'bm/`Ho ={?=zT1ð1{g5HRR.ܺz\iMWpqgݰYeL]^}ţt |s t0a97]i^DAg"8^N3>[CӌXc5<-*f:.˭o>4bGއ??D4n1ִWuQlnP,pnqfzfz%+L[}m1ݵk>Šڦ{;y{7W/+ {ٺ7.?!uK{!QOdzQ/2wYQ> vlǮMB@7eExU^;f(M-x:J_xAV|c掞Tt&ʾQ}f@јeJgp1江O/"R|aS?o!d>9!MR}ĨyĈ6R160vgʔ؝ؾ_Sðj$maxzJy}eV/YzGAE|͆UYRCE8,yH~G w '1NM,ޱ=/p!\m/d~aJ[ >G)}[ChjA«t&wIs MEe{6b^˯y>׫K])6`|۹])b L 12!{5 h='zЮ& +u㓁wĴ=ote(uc .wK>>^U,||xc>WeoF;$ iX SJQXO>O[\zàKaX:i|9~GG<-{~t"˯T^-cxЩ%_&-#L)#M6| y/浉Љ(^Z>5ԟ7-z;hq~?9'#D|2s[eS`ZȨA(l\e SPص_H/5uglηVO;oDMėkB(e#>n)h=^۝ضpzs4Xl*BQd?jLP%/߲Jר}n#oY,!s^"^M?]c,q[!fdFAP[9eMO Aľ왊ۅn87N"}v|0Kw~Py~*33$E@D-)Vo 6[>wlk[#zh셑Z0H#Lȉ!{=}Go_Q|"Zkw~LqŒ>O%%! }s|q0/2tAe5Njji~Y]K@~ ]x26^`%8IсFN^Z< 5u:C!d4|Q'Wn=%3ytZ߸\2 `Uixܙ]b[jeȕ|r!9k;b|xr1|V\l[,X'hE.G/xzFXdPb&F[]χt+], iԹ޳BlQFؙ3+XS4R7CO{Sa?Z'ވX}YǶL/ׄЏǧaImJ}]vD? "? !`sBX{wKӌfFO.BC]َH|e~C%3*+dʲ1 A2/h>?nK"oYT1ke۲/na-lLgۥZmjD>"}^H^5u"2\\>vn6vǯ ;m3I{1nsTL_<~hp=˨X[kbsi#:UZ,,|*ݗm1>Y\(1'g~gr\Aᗿq!!&(ᑃgNJF<6&r EhQ {Eo^XK@ s[zJ.' 拾*Da({zXd)uXU{[o /.x6RJY8X²Y / !} aC>X.l,ic^X¾'c}k?Xۘ}m xq `.9֘~0x`Jo7j&JV;>9vNp,{;fbb)J^/1?\U1ELH^[4.u!@e-ۻxN~rCSFhs^-dx뷯w;.Џ?eMy9D5TAM?^Woz,.b/oƨ],բիiScwO'%g(\7e&\q{!-'ksR"(0vdf!8 MD@\|vo4p)6#~ح6MucM\to4cXRcx] C̣8Eª6=h[#LqtuC#_Շ'/L(a\x2g>!”ڱwkJ:㷒({ܨ blLlNn>,Y?[(ԭvz{8X۴f)u1#tkoE;f\{+Y+05m7c65'zʬW3zyý2(\Xk[E׮keݪr_cYtjGd,Ul|G'#Q?:dWu|Cמ678L]Wyϵ+oZl53R{f{0_^1&'W)2%xˢ[s/D佇G 5NtK.j[]vgBi4gi; ~ӲE{_ݖD{p̬2B|Eק/ qo4Բ׈,-'o{.njPRRF'ԿAZӗ\`M,RQ8g803]STxcWsX[xrag.8 1r|kHe;[md7K8C{*J8gDƜyf kޫlsdMkŸ.!6د}W/U>Tf;O]vGQ;+ҁ 0g:HCӞr;oPDNJ8^V/56G-qZ{7a+7t$d5?k7Rg6rҺ d^~]ԯIxF%Қͬ x+=C"q Qwr[*u2r; W˅5gC.5ᾶw Gx%g:a}0ct{,n(}U*ÿ1Y+loZA}ڛԭIH}%''\ۺx{xtb:xS=dWq mDZ}X;,mm@0#@>98jA6ľѶE-q~x\uùK>hqy5]['s=toUmodӑ] ]-is+|r1upyӖ7J(0Fg)|MYEM+혼JKs[Lʅ"?>C9R5pBZ A1drWis5oL`iTBHǃe]4/CU's'ׄ0 c~sga-31X"ٙ\%)v;r Ρv8"1¸(."?8#1b'sI}Jks&o{ߥDE5m׎faﴳ OxIJ6mw tFۉIMI;e&?WOI|iWj'~|٤a'JWUòFߖor<eg)Qc{ QNFg<9i7cx^Z LGX䉭,kEH\57;v?.[ٖ%~"}l1g"BukyICjwRÄvP&'}[ u_@`{sE{ ]j_aC鎱R~ʃC1mOy2ci.)Kp tȖ${7KgVNf:V>cZNunx/Z,4) ziC0k0wCMeՖ:ap(ʐ ,"cmKs5Mk__iN'mS0bA H>qׯJ0Rc,Pֳܿ>`v2@"Ow;Zge `Ww>XA0VQOvhiʭWҐ#0WjG{aϺ F,v=_V~\؊x+cvO3d ahvι3 a~m֌[3^m*(<"!Yіg1J" #s–cDp׶lƹyOj^2֊)hB7 =|mފLg):b]TS/b|[!0 t<3X~][}A%S?;ac>G{O#ܳk=Ycca9zGV&5A2_4KʩML3kRw^N>v5#VZ+sO6N**n͈lڲ>Q`BϔgqDNڳ>]t}5ݣ1~Tvg9s:ʗV.cT]@}96^rKCXfǶ"3YzFq귌";/KBHMw~u?8C0-2VdF<;$c6,eXNտ^VX!͐ ᕕp1׿5Ob,,u\E$Qvy^Lܮ*"?c3-ѪbZ[^[a5!Lm>&q|*wsl{IVo:HP8%0J*!ܤBCI]ˎ ]w>&`w{̗$j-CR] m=8$Eɲݿ܇~{ozyI>iNOed$1-|:+ _ R1iC8 >~~?EˮcȲºe:Rdc>gq䴧XdlDOlG"[)-| 0fa%J>4#Z-eQ[(Nse z9Hwn)Kc0o)#,컥,ISJ<.I;>.)c۶Vbfieö-eIOnRF!pin!̫%?l!  hN~OF``jb}H%lic7}Xi>JU혜s3KL%`mKF6Vlh[y ˺5 8YjZ{U{U{fyG2yh᳴ݟ#,3 LKXK@!*g {DlX=ǔǫe9Wҷ7m wzG&/gz A3R-+g z4bKqtx@hf6#taFi@`h,ŝ6b1b[^[a|.*o[>k,SYFwOJnǔ1%{mE2Vmx+Z2?V%ltֶa5\diYoYC%mϚ8QKOOuljiM߶+5:t,:xp ,CSiz-`gv}YMuNu\1kQgv[޲,qZʤFGȊM$Ē4nMAfN.1 {д#BLzD8F="p^{D a ci8>D^>:Gyw]|80/zsRPY')Z[-0KJ4jɇ?iW;h=#y)mWS%y{ eK[kV6']x3A) bt絯a{0a=u5FBk0@K Pk~jcO|/JYϑxV-lWW'1&ⲯ(z T=C( 4u?1 +=C m|dL.yx[21ԗ{@hksٗFS0="c*z.-c){s7_ڣomg=3ZQXz4FZ꧲{}}^4w߹^ 5`ä {^recA$ѧBv˯辰]è)'ݦ=\ߐG8S|=0d`VӞA ~JY_^﹧%7k;$gM1Xq倫u[q}|kG8ͷڍ!HX4櫠Wsno+AR=l_2ʧ9>Z}>|X<ŧVڻn0])>-L>.\|*K3+OmS|h`4\2'NS٘ Ȟ,dnmqm?y>{S/ëi8'7vOG/o\~uBpэe> zOSA3Go˒3A@ZfkOX?/J&? x/⺔v&/cy3c, {w:эmyc3lwɯ3|[^ kZm[fgc5n/`紡x:ݰv'Z̏XolrW%&V9M~rul-う9J _Wy<}{<(w<-]_Y~·,V, `z@se)89,R~shLeΎ:ӓʼn,׼?}Z|*K39+f&f|]SVRUH6&|<2ۧ⼬%"#ʖvVz5`KڻX*=kL[x9!=hE#yc#X3a =EHA =E@)h`4aut=g?L! KW٫ F<>K6BKRZH.p}4qa a{gL) [z љNҁT\g=C@o&{oEkq&SF`a{@xI@[ۧ3k8y<{BCD]Ɏ8=|4IFԗ?0N"dW5Q ,=r+~v}}k^9x~Wƣsh2>r/1}$'ɗn^_.ef6|K@02sŴ5fTߨr>۝Sy5\M (RzH^1s̒{ =ojy~ta٦y_;D(ċ{_~GFykt3qD=$zDX²K~'žR"?edd(s*gSFʃO :\![=gǃ(+6xÊ?s<ׯ-e?,J %<`S[O;<8xrל%8Wca[N qTxJz5i$5YǾ!?GiH!' HF'g7_[x OAٛ, Ln. 59R%CE1Ft5T!:<`ǶKl]V9M/{:RBi`!3Ͽ4d[˄۱"l% ,Oh1+A:L]w@X6?f4i[ʊ %} f{XtP'-ˑ)g-&9o I1g?_{|ToVj0 %'z|'s:?.<Y%-UZ~s@%f|Դia֥L&9]%1P @u%&/[yWxtg}J3gOY&fшKb[0OKF~nZzFtQGm%On~}rP΢۪#-?j|H]y¶McOygZAݏh}{o9/7g@В7>Wrå8Ʒ#H:>em) VF3{?%ݞKi]{k/#̒x:B<64?滞MB&?Ґy 0Ͱ#-/@^JeG #h4&IQKU.giOK,幖~nZ}i}Y!;ȀGUְmsF7]g V͠Yꭈ=:Zꕢj+Sy\mGJWؖ\Z Ϝ˶̮#~Gz߽:#n DA#0~~gq1#idŊڧcR9xp$Zif_ډk7y(4.oE`+|'(9wxe7EyIJyc+hKȿƄ}$0]隤6']zG͡|gB"vb;|'+L?NSÌygRE^ =^{}62y;=a<~srƚsYAAq4ͳ<>۬ޟ糓4ck9KJ~w' Mw/$R3; WxLu[y܂saJ mx }|~ aYa ~\: m!} w{u[6v@(-: 䵯Ni%ԽB~; pږW0y ~H?,}9:At!4cչ[_g;+ٸ\CeP],_ʗO*IN:`H=DC_?fc6#.= v(vЏ-f{'{)suJzΑUWyy:AƁw;'1+?ߜ6Zy}Zp]kXYW ~wap!y?9[iY @X s|^üX~Kр ,~ch{!$J-1&+ӿO-l>wBgRi#,,O?F!߂4Y=[[gșX!mkץ[jJ\[b ZRKMG%>/m_?Ѵ l+5>-"^T Ȧhb}x%uB%{m`$?~)bPOcMy奔/O7cK|Jh\R&W$ UjAG(v5웚N]b[kkr{;cЁ~o_ux06Af71 >2ԟv]S;_ t?~*/S#onϾB2|'4WǖѱM J/-.5H<09e]^t'E0?x4BC]˒8<~6:1_k*LɇdpD@" i_rons)Ϲkq]I淬G.q;mc#ۣBbg|Ԗm!r/Ս zyJ~66I:32ƒo/R2e2Z_WS!I,W?a/7__?8 gq䴒l\0A<_%B|K~OC%!tϏtA%i 53&7r-7[4B9Y֋*_ǔ @FlA>?]i/1C G5?'sOp >)fdv~09?t.?i`ki>eG(Vh}'S;X}c-/_,~yt!U'NE|-Xh]*_&1wRqRY4~b a|:=Socϊhw=kz^fYN]skbhяYjPqw^)[uZ?Ӣ_Ԓ䴗;\.v?>[;$]0Yh*܇a'=?k [0z%!ra3ʹk\ծ\1nm0ɴ٤mel*3.g,pOײ%^6}#fԿظ\1k2f.|0Qv( uo[SWrOTVi0u#%a1Bog:pҷk4n)۩W>æ3sAf3O6h\nGb_I8>bőm{z{8{n8e's;ZYOap3i<~u2|Hg[ZD>e]N˜ǵ4\SqZE~TI橌 >mX7o Gh,ǯ#i T9N}]U8k?T8.n|nIPF Ҫ02-CY:jGGj;RO%~>8TjO=!LnK>+%*/27Jq|/?3 J,ů=ۖӊ6hWҠsRfo~,x&>1F0 ~tKewyr6޴?3Bygiz}ee~) !gj{q gougy}sq\LC}gL"<ö3%VzʑV{sd_%FS0NN]/bWs*VI[-HRY6֮>׮P4Ymw_$oMkCsȶ[;X=b vYYΖG j[2]˟,L꿘brNQ,17=#_Τs˶Zpٺb"[ki?kWˋoK+Jd(}|_%99Dzq^:$˒:#/d-eK[j#'g7}8>ĀA|; ,c:O oq-mW ^ȿUYF'Vk%`)M-s괰YZ5~Պѣs\ȺuS^TZ3dw/?#++?a)0n +q2?sJno{âvl)]v=#tt",]D,6f"鼕}VA,+MY( -Gix2#ܲ%) ?t^ֱ1}djK#|d][_5[N\dbۜ!d42k/SRQgRbN0|f|R0<.7e o80#o(er`,-.;9YZ{%u{ږ9 ɩ3|,ݲuuv?2n҆ܞn Eʣ_Sdds5DV-W;;O25rv2B]2;MɊj=FZ>}`ir <}(\Ŏ|P;r!^dY1ݓ_2j܄%,Kn20-F,pLdab"K&FRB^wKKj~KoX:{:1RGB__!̡{oT 2kHm[6@zZ֮|K>:Xlëd=V/[+)S]4CG}Q*orAqOZ=!aQ(c\!>Q[d=]|0-O]SbB1Py={sZ4+F0wSR[̦e3rNINiےMC1GZ0GZyDqgV2[Yڊnw!VJ`has[j[ںJ6\_ȟzXqǫޚJ;y^[B]7?0gB81=nvjdFV6>G;GK*_nWy i" S>Y{_nبOZPm?a}K0SaZ|G9-oɏ#^r?BzLy(TŭKWmee>k+rYOKr~nk"-lq=J{Mycr=ǟG/y__´\"6L3@mM,ֳ,)X"$5ra)N3yMlA,_gry)IZh~ɵGV۬ѽ|m6_G !CepJɎ޻1:%9BCt]۲6|~̎SyV$=Et7@I3+s$^F )Z:T?ҡQe%nV{IeI><{KuLwXn'ǻI8h]Ne=7W5Yk;_)VQthۡRV߇SYRqĖzc+1['糊S욶kzpYU[nzV `Mb\+"fb|29|@y dtl|9<^*0~Îc_xb8* IɡK gVߨ/ڸy2a}cW \9x͖?'ƻ>a=_d9܋?fq?l%#Uf_˪>lmcҟٙÕc亲Qny|cGV>?({}rm_僡`~7|:aQ>xΏEw>]Wb>J0m?v8??al>;ox8myR\{ /e6!+޿Euy8kC8+[ؾR:[;_ bn Dly1ً\/M1/~:N`~i˦0<"CPq,ė8OuQ1q׉C % UtjRٸ}"J)vm%ٸs巳5#4tz_4Xw](!:Pi׫Z:Nxzt*xNFƌO[nɒ^:N}']`ȶ\ׄЎ]syQ?&%~[-xnx P=az8q;;q!y>9΅\Z+O*Hg1c#>* ['^Ο>qW=0ya'Of7ŗGᕯ|X_pb?b+Ľw(>ScEoO$JԗZvOG7mI-am>(_T.`돹Mz>O#t4w6= Cl G>EuSV}0-m˹쎧-yK ֗a<ߜG@㍿%ZRh?f>agzoqg~qA/yܴϹ}^A5Xu9}Ph! >7EQ~|e2VؠP“ ۀɠ[D~E,NJ,9LO|V>&+jJm6|ʛclHݿJ\o;~y'0\ؗ%ǖOL_fwJնgӯRSSCi`Rȅ+*xh:(A8xr9v" 8\^;LF,=mY((nV*7L6·*0CĒxLᾥ||xWYG|Ǡ˽kBjS[O9_T*eTR?Dn!7<&w]չËKFٓn{۪YnV˻W|Unj\< Wd>Ngʷw,\~1]~ujE{I$ۮO ah!miBxd-O-6ޭnkd|~ׄpLЌЋNn=&5F=hJݻʱߥl%#t]=_Sۮ=;f4ze<yxؽg13B5C[ amyx5Ч| l^(gamWBh?UNu_d j{BnA>K>VDe,<+kzt)[nesoT_Ĺ%Fo%;k^r*tFٛ$>\6T{F8NcL$Mֈhc1p_PƿBĎ$zBnӄ SvyUDˀ2!0xBc>– !ܾCBwJ6׭4!_O (6Q{Ji:T4~.7z{oGܫ}NZ?=f~vLNn o#H\6,>H ;[g&;\qڗrlc!^涴ožuGYӵű-?,s" )nѬw!c0bRk2F8nÓEmA)wRsYnO'AsWL'4+EƒEB!1B CuV3%NQsQ//Z液@G͖=WgXW?;k\b6жa{)ab6UYQS"\ =tbdͧs(&ݿN) SԚ)'rRωnQm7_SoVG_z/cGNO ϏwUE;wm$6sV. ~:%z 17n7ql)+]c1v,w#@*;FV=6 N#o;Fj#^.ɚ#싞Oq,Y#uʶ|LjhvMu;F0s>롟vO0<@8$BC]ے#|? 4}{tþ:%GXH3ӐYUдtΑʺ$@s{Pz[mڻٸ֞-~gh1O1c?tN:>Ǝ8gd٭S>Uڻxތf3!šϙZVN Dɹ"`){Zώl_YG!~vLag6<6OZs>-xb4_,}5]6lR_:v2橽H$˱c}ʞK2|\OR籴T7KYZ>z4;9c ',2sq>,c_CHkG_CH25, uヮwnA-mzG\_Y-d.ڍ>a16|K^l?`.[?@k<ŕaOqec|"?;v!1)3HGL7SK|%ܙN!:~;=\'n|0T ϝ={.֊nL^kwA>aɵc)ߴ8`j>Lnss*eUzBv:2ݫsl]kϖ㷎SM~kq7F %q+cnMځ_I{zT.̣;A6jl\na;>48)7yR ЦؕanMX^zH7#:Dђ#lFRu yZ,01CK|8!+aCy{~hc*!3m{.F)fx2f8Yl%1'qyks۹RqXMޟ5U#:eu]K_w<pkqm!&Kc[G;O:ȗk0փ7z>B@oZMrxއ9|1{.qxj-́Kk9~gfWLҎrPB؆BB4B@_acp6'/8B8#3N&0PbIE-!Ha~!zoB`xN0;Iqx9kZTX&B ! Ⱦ{/B`H`{1PP $K>7B4s"}QjG7\$6|By?vx.qY c9>0b@$_j)ru'O W)f%,piς1֝ ^I"Ǩns\ץx(kAo)C&Zzdke^ZH%{|kqz2mkV uƸŖٷe+i֚jĈ#tM(!-.4YV:L?6OBX#uxG{/b lecB!Fp1nJ[**1-%+U^yȻC `W 骭Ohӕզ_]]K]3yۂK1)tqL駔5+|fw!;Jt+% &3_g> a)Nqmײx{h}iRfΚn6w9Kj5EݍЍ&]t\S8I[|Xm5˯)䕢'^\-k 76 ͞Ke[cǒ|úw{ĸ].H_ /3&;yܲH`L΢M0ZҬ[+Kx5zn6س5GZ9jqwFxy/K\ ͍QMԱ[nEFi v.6aؔk[ֺڭNEy:B-O{U^1{-ջX1Gsp}F!9ȅӐ"->P[򔞞~|>}cw4ӊ՗ ,>ٺh~OȵXqbUahqSecJktfbKBעO f5v-Z)Yע;-Yuei(C)vH_m>}i.m0 } *g7~KNeJسFlf+~ '}F_-ر-DVػ$I}'07Il;6H+j?y!;nlyny2&8X~k[B? BsnL_n'* K0 4x>M2NJ2  N,,IEF/fW:Eҹ<%j2/#@>lWָ,/56?$`L a1^fbĨFFw-Ưսk+4NZleˣbR_[0YX F?|qϱ?iq&vj&:hziYe~)^$[d i6Ch<L.7>~n6 5ߵV,oo8i-K}mfmbL; \.snr{@qrK55s>phoaOMl[R֋(M5:™w L-䍙F0èbSK>ؒͩ,݁bme>?][:%qVTS$JlZ|~djX䃏Snt}tTíz^HQ sO?jbb?u\.Hu|̓d:kYT')ҝy>' gZ~_弰`t|kesl)~v_Ϝ~8n8UtKLęTZd}aANIqpƼ%vzAy3ʒZX ʶg]4&|M/~>S t z%2{Z'KpD=lwk[a&sz;~[V.sFHC_3BũZ#6ޙ}}QCc"y6X>wyuwt^+6~0rb{n?U;N+!&?>k3G>)k>hvbu>-ٍgYjRx$lUzO辅Y1J\;}Aku#v‘kx~9]:!Ck ,'nʟl,G.G@6kK^S:n1Gxha0N05kuC1H'}l_vJ 5n`<ŹB Z}kw8۝(C?N8k)[0Pgihz6X;5r X:  vajoDG>9maPpII( Ϗ7Nr|M$68f> 00w8nc nj"-~4.䜉Om, ehFr@<_-z>NZQZxg/.-x><&Zlkp|oXs(LgB z&kBh-Nx #qt΄PL}8NC8w6-*ζy֖~ /ϞCUƓۋ}GRv\R/f7>7s7iY9wQ&%,|~9aGfI3FA7\r-1¿1 $oh۲29.n?c|]oq>eI1f-1B1m3Fl,Ʋpl|048/:z5e+Èc9d\0by ,?Dz 'cq+ZaEo|cA-#Hg9oizaXipt_'k29Lqbmuo Zle[.$-hq!1 ~ӎ,@`9? )냸!u+Ol',/+Xli6[~ O<r` ~FgxF6_rO7؎'q)隿Y}50f>62u[3 {fl3t;,ϗ- :bNLV~b*\{ _'|՗c`>B }VHs{=$/,mRS g''Hgv}WC8f yrRVe]蘆SROH gOoprl0_޺t¯7f`kln/X,8Չ%RizZ-OjdXgBۡ}n/)d&c&~4wa3Wa3.c?wᡧ7ygv`'65?M~ AHm?9NFð#}jK--$Qt<!ű:MQdk.o'gWo|0^+[>hi yѩ՞^ ٘V-V*g5y%V4Y-94;ٹ`\~G|e#œZY ݼvywQKSW?Yw89|Ў)F[i{K31||(@|PʓZ%@^^8u|Mj.]4f0 h#w+9< [wc+Z"g݊'~󌑯fl^@ZUSKOjyuosB5K]?adqJК^ZrEp~-VY ؠaGM-}n^~q/^kT=A?2Ԇ!~KY#mϘn8gJZ[v\)SC_[ߒ/ǚ?X<y/|k+n5O6C-׹S2o;gk97q7SwSo4_}~VH3އyEz[Ұbe+ƶ=80dś!;>.Yx\CqHkL2&KcE~M>x(c^v?AB9}&ߧEB Բ0{ֹY.]kM[t>˵Vv Obӡ `kfN>,91uK\XR I4'ɡMy}K\! #3$C~P/8KH=i`!o͜/,Jꃙxdf>1ǤիgCir)O8$(ʫ^gHk,ʎ?ikBBC>?ۖ C4>i>Oܩs}~y;Fvn8Q\^/X#=7hIlW~;[q-S7 n Ix+{x#vWo-#m])w?;;)p̮+2x`-ƾKLKSMSc٠|uyʣs3NKW+X|rC?ھo&u,%34ඈ< ,r,DV 񆉡o ׄvucabyVG>8JaăEk>Cat8p˩'1SjbЩ_&V-+'0zzz;cnieDzpZP/fn>xoj6t 6i1O#|s|`}212zJxY/V>mW0]koOuc'|:4\Y6d0_#H/>ALZ M;74–?ȋXL%}/)HV a{7rRf|/Qmݴ|n/Yi -|'-XʟMKyf {F'} |>ж0u3;4I^vL<+9/o[ }kldFa9ؘmE)Κ,qp9܎ x_|=$,̽:X}Ae$Ywl'Ʊ~a.2_1O1wBq喫hK g/Xg$ +. HӼ_J$yߕVnRwyV\K<ƺ<*<.H mOd;:b>vGX<&+L},)W,G9VUzUy_w M\6-Fm32cI ZG,EuOnh[z9!tkV'՜^o!VXe}Gs?'kGLւCyW s"GŨ3)o(k e\wOa좍pd!]w;w/o<\`949yZz8XՖjVa+'~0yZ c$3! CxkE[=r=y|s#u4}7wvC G_c5!>6 Ů,5#gY Isz^;VMv[$ VBc J.ׄІ~R@=R#ն#~ҏ 5{ˠVlj37Q{K=<ݞq3YڦiGڐpIf-hsV?z3ǰӷ?|OၰEkn:_Q_Sk@B]ߧOlHc.z/p'K_~LaqߧO>zlv ]hA?1->F'*ˠ]>^_bd19hq-f6_m>c+>r@zv| #K?g50cJ.Y>iRtג1Rc>x_bJG>@~9&>,<-mꧏcʱ;B-Vxfo}Z|Ϲ/7>D;&ٖ+KnܷwqXޥ|e|-qqYk,w,ʾT.F~4*~]Jcv C{?]k5Ȳm˂UWaZ?5$ /d-mV;/&ՇrSh˫a蛺W>4.ʯ˳ˣ&7\Хq^"ԅ1 ъ3/o$%[wTpwşCՈt<9iF @W菃ah9Q'gd莀0AP27o&--h7xuM ƘsZxkYΟRvϥ=2Fq|+kvH-4۟4|C}/.1Ք|.*7Mn/m"qλgvrn;|-n[bW+5؞A8[z<+ύIﻼ=ܪn}9,gp=}.-,ݭGo%r\]4Q]>c'^!o}J~eaT̷y,{vkb3}LC cj^zke4fGBC>]˒8]{>f.eG/z1_2cSH8)݊A2O)SH_ݥ\\Eyt||~ߡaӢwݥbnnp] w?.]}\ EJw`RQ[~DcFS˟p'W$MJ¨zu%AX[]!ġ\hp4\)9|}/҇_i8>_|sB%!<&ʎg˾C)m.jEdhP邍;{8N |']|7Ab{ݟTN\\~*mȶ!bq9+3<ϳ)qI9ky6=T+gR'eZ&3g [^Y#(_JO]?ɗr8bă abMz\"Z=%$.ċ'ֆ 7mLkbGr-tok[1}RZ=x].˟:FRqXK]$ d\XL)Y~mI&rLCudStJ_Dz#ےr߅i`ZRfu->Yr3wf47/#B?"O! }F~IRF[}HrJҸ xY]bE֋Mhr,ӊ.D29/٥-9sGշ(7l42 !tO=ۧd {)mŏGc>"]m: qtaddcgw4Ôf.5Z^TƲ0ˌY-IXf.:VN!h>C'LA }3(W_ˊkycku;T;^HmF+%x{o8Nn|_2ᜲP Msr^9,P'm;yjK %H6FjO=ZFtp\ە7hҙʒhk~޹@wگ'x-!M.lֳUБg/-vZ8K#5xo[fp7ܞCp!WkR:Szr!ׯl:bH) n.U)Z?u1MJ7Q"%.K~@I۾zǨ6o~[m-l>׸_ܶRAe]F3q(?i۷]Oyi}ctEĀNA.g@@uĀV[z@&nw",[>l hx"Hc@Yٯ(?:[Dz@kx o xM) ?|g@x>3 uq` ~mˎ4ZZ0> ԯӢ tZ<*+է[ګWSkTxwe#i^CpiseNd#RNK/}C?fmDnKWg^G}nKDq~wRk4|\yLsZү w'Ayc}TIrcx$Hߵ_/99E}Dɗ_MwWBꣴ-om%{yt4 517go>_O3HJ}-甄EΏϐ~%Rosg<@8~-_:5$c gjZ W<:4[1hۨ=-8 m8z<@}!aɩo+-xj7Ֆ7iuжW }[tdHiގeg.5$U=`V\Y42[(!qMZZ[ 9gŽ{]w#Z]V̥9Fn)C7me\s2KXҢ=A >)!ayvd/(ߥxbǧcnQj.뙴|_KR!YRH֐1dpbMvX}Rf N$]$nD,!&ci?/ "}T<[r>9 LO8BHC ٦rٺ-jPpc9OȮP:O>ŹWklܯ9Lj7v(wZZWvߔ8QO>ۣUC;y.9ggY/R66R#1?t/yIsh~#ο`_]kWăano:39@*RT+u]IOT.b)a lAjcRZsvj7Vlig kڶBp.^tԏUg9e;m?eBr !ui5D c-fVlef']mf@Z6ZY-m}ßI~}"cs0Gm9Xn n%8S ]:1lJHr֒q w v\R[,C$b T@]r]>)K]%Oi ε!z[(5=%hr5R)k>kՏ멵L}#ڑ8\_\ARR=z#v<Ii-co>DMx^z~8 4g>Q0O7&Gr܂ROjBp+q+l0@nnAm2,\tmsK CZ~Bp|111-` ~\ }n#kG˫S#Jʃu#B~{-b+Hv)Զ&SG>|/\rOrmﷆ£$6r(i^?Dbg88mSBC%]Ɏ8<{>fbIF޵1x_2\vEFD&x& K%2S#~PJbwc1ֹ[?XG۱5طpm*))^6Nt.~J[ۿtazvB"]SS{vj} NKSs;9ڇSj7oq>3]R>?/1fy>O3Wy~Uš۫Ĭҁ]BhMms֭ʼ5{ڢQ)=~MU#l>:VLVɟaӣW(Vyf۪+Vޗ1Bq }Y/W_=?}bV'vv rsQ?᭯&u8j{_W:xU:pt}>g]l뽦o^ו'fF87a!|L= ?JRj{El߳0g{]RJcJ?gOt-9{'oӏypb5Tbbߕbd4~/@h--{dS5)3{skIWJ}>%V;֍86|Q֐XF,=Ao70[# f{o,=b[)P ?8ylQlV1`؊/~|S"cî!gVrţWot0q~29!4}3(_.$RJD/=oD^Š\vϖ}.c-l}YʇXZˎEaĦUxb:lN( fWzTB yM #j?gׇJ"&a۴~o/*u13\+=Y5ٶ%~Eeo%ۇ%%񕰶G^ؾ蠉h9C?[rm홾IqIR'㳤+Eֲ9aS]xÂ}%s#w!I}EpE7ta{iVq-535Lʯfeua_v!^ -WSWp-y;:׬˺bobԞ~Bch*tmvq?!"NWT==z_owp]&G2Ax/gU>9A(U㷗v]>AX"_>f컏Ŭ;`# c"7ĆwuH.ǜ|A!Ų ٟ^7`ǪXesM9>u?X.: cL{ Dx<yk%Ka.'ˊ˾Iz:hy%~hBx_=|r0jVab;(j]/~+5~ʌ}oDŜnyߗX_L/~ZwUw5UuW&OAP,/KrC3KT3TZScpL>U~G"+qw9Nf4-ȶs &ST'mA}cۍ;I' `WWDӹ\L&} 'Kb>N(Ƭ"p|HTO*lˋ*HK"y e$a;aZ 2s xqm#L8'xs<->p]t!nSb0TqCJbPYb.EA2}-Lhz#KbīWk{ RL$kJlo t:Fs[d[Ͼ7ط^!CNhv-Rږڙj%syL1gٍr$qA6X23NtW9d~rM &aH?;qL8砅YVn 5{䖬y7dзa]Q} O*$N],o?<\\OLns|m eKR2kLrYrM8rʮ(/ Fx 2Yd|(;al(1 FK Lx"rXlDܿ`~_0%% F_p}P~acL#^f~y>9om3]p\A|9S@3c*xعP_gV`Pq[|]n9'q $z5)M %_8ɟeɤQ@h̓wϊW# okVX޸*ˢcTҕse vjAZ+6|@|`c7yRh߄J b`w['\_(Xrc۷UJlI폫_ !ԵS>]>0űo:ڦГڕkT )=>J6_v!|/K{T ,ב1G{n˒)No(8<<@so p>a:XvAǧ1;aƒ9s{P4rPvϩھ$Zb&&(6&M:~8 uifMۯM믍 ڍLZaݧΕX<޲dFm L9,O+u+aFbו[Xזы\nm pAgx3_WƢm} LNtM G=ܟALK;ueB`֍ _:~)3:IJ樎et% sB8uONB$>*=Op4yVW/a,N!⸺嗲a-_;@| kʮ۶mNSrC۞ =XȧOྊ7ѧltx~W'a/Fҭ}ӑ#8,b`!"3tlF!"o<>!:#gd-VE<7!Ѓ- x,\͓}/Gb!)nc7B;w8L9!B&d %UGՏ{VH Ѷ>Vnұ&=ۆQ~}%eֹy6Vº.Cל~me,۔u[`V>!nsp ]Dh^,)Cnԟ6úz+HDHs5қ:2o eG-'{Oy83`86qMq_ 忾o+yii.メڦZ8c?q},9zk}F-_a#j{Fu1iZ\ԷGψn_+;ezY&r|uεu ͱǞן{{e`Ѽ}Gմ靏^ݣmi{l3ś#p:"gyy|&#rzDN4+$q/[Naj6p[|A.F>C~eA-}^ܴc_p;^(EjNMlRw\,h9svYw_-y69^sM4`yTF-oq=n==e2oGKc?~q+}-Y'UcƝK=%|^f:p_a×7uЯpY@~^' \<|h}t9?d, | ]G=pfzmېfw0~L^73ٟo~(\c!Da8鰌m)?0҉NU)5QLt׸$>u+ yo`èofs:EQV qh]d 2 f‰<"]ĩS16 nr(<>KۆǍu[,D\~x,(ls.rnGֶ-!Lʹ\Sw7-w0aYGWG̽|v>^|lٺwcuO,vdFk?RYѮ+Nm?k-#z`ϗt2#CJ_& c(uUu3O5#:yM zn>@ADx[Mq>e .xi;N59LT'&'r8(FY>c9&; X,hsz=/ղ2Ӷ)qb=!v8i7tۆEd"Bs9m,(!ꛑ+9'GBX˜Ѳvc;IqjytR7O:xo=o?߿T=!Ҧ<zP S"6]du:n⤇zPŧչ~Ht 637Rc:P|iK/b_+._ O)K"~gc촙lS5=}\. 5?wWjӻdPyu1W }X"X0|X{5bZcר 1UϵX"d쭂WQ`)ݢ8fnl9qwlulx0q$pwlWQ[X|Px:|\ |Zr٘mұؘvQǒ.q-_Pʆ}[rBͥs?+ϚҴۖy\~?zʶʲg`EܿqGwagOۗfz#ak%^]*r݅dS~+F ױlG=NB~Rm[7)޴7zIc_C2">Şq8|ğsOҍq87ne64Fށ<'Wb>g`jcG9%9 <3^(l#4ξ-=޳@}{wbJq2ӋQadSDXθ~qOp}J{"r1{pIq73uEb+TL,ԯ};[Aޞjݖ}=dO62e0RGbj^Y[#"{֩m.?<]߭Car̙2.B#G6d%`6"*׳.{Xr:g/Hk'ad0l'۞">?SM o km+ː4?ToDzo:<5_ɐ8E1o$dgo#CNm,}E?YkC6al苯=A U&@0 r3}^N^9/ 31YX=yPYļKY]EѸe\ZyGYcGfIYWyrkbyVE22GVS?{Q29"{cIuo?5`Y?T^ޏE9#LV#$]n=7><!6b!0 VH}A?tbX1lg>c! c9ǘOm{k;M&L{Bڊqq\^>#pJr/j]WXS ۙ'W6`g=~V?ư HeIc =N2Q7Ïh;8-%a\~A('klpQޗQܦԟ҂9P8gK;il*d _}h2\C;>qsc[bg0{,Qqi[avu~',$2rGE!r-rQ|='][g#wHx C #v<כ'5~O(jEvO on\"QQM:rgNT7aM[n1m~K+pt-c̗98EWC\붜7։Ψn`澿=<7-6Ɗmv(C?d>V[G9bӋ70Y]q8mB8DfS18αcu7xߎd\ $]QNX lԁD3"-$.žˈ0meۋG-i6V߳yphTDþ0Uxjx/3*r_,*bp tᰪq>:h"|Y]e]UyT9 :~z>-0eqvXePNUf7όWVWSn#W~dʀqcr ^}Af_lg߯y3q8^>WGu;,BC]ɲ۰<+~tk*/I*$bgfP~3 xh~C)J|]OǿY-I+e;9wRkR?^4&QFYd7.nܶX>dT݀>ct<}m:9mCMY 1eHIchc:uH /#iPL 2eCDx6>ddx01ZL'WнN5g8HR4|-Ӡ{ܧsd2Xq.ufvEr# ed2 ,ƻ4MxƔk|s(C=0Y?|ϒl%jS|pa|Y ':-@'UmOh-IܧbtpcT Dq+o":@YGO<2om{heoߵzXBf^+!yr?vx$Kf+j3b`v3Uc"fB1 {mdf@U3-9e]c}[m}|gu}ر7"zuZR=XQZ~ػBN9}AP>X`axkhjS71zv>AdR[4o!ǚ^h5jIq!-^Wa !Ч#!89~KfH=}DKkbT3Ͳ]ˉpg-"~\H>bcm=LQSڢ1-^ tM#YaMo>,uMz5+L_o z?`ϋ|G4FDFw|#fo5=5<[Yll=^{>Ƒye}~.\Ney |A-~f\%@53ƚ/1"2|`Z77ګ5lϟHE߾8烾 7Ks:ze]/ãK<+C%!goȑvI=z\ttX<6ўA0}l3ղt]qxXƋ&q\-c1UʣaVk`ȃ8||僮9?R>oԆVK'vѯđ}#G?-?ⷦl?8{ٿ\~Tb9HgP|0tt9u,@}1R(X.<-(Z@Z~B֯^5IǛ4IL/.fo?ƶKZ;OL1DiM'w͕ƶ?@4sH5X,1=/}O}x Yddh`'DFfHd{y#տl6}c2=_&|Cnm G:Y,Nw,w)_kx9LN XANԝ[Xղ ʣ$e؞ĺ'5y-mbϬŽxs\}"ދ']#_koaIILV5)fcW><s3a3Fk;#؈Q#;#0w/~gZ֔wa^n!O8e3lE03skwFzmMyFN|z,|`[b_ì_v?CG9ٛ=lM_WqqaŻ7/Ozp1/O~Ƥ'6 3,24{dlT /fc_`hSӋ3YXD:xcyV_ƶl Viqăeo[1+ǻ,y g9 f_wo> SMEʥ\ L;kH&fߟZ޿lcyw>X+t0ϧAKJrHV^Dxdi~0^#1Ci>4ִcnP?SjŢ;5*rNZ|wuG<{"Y8Z?ٶ.[ew/[#ǢQ:?Ҟ{y|*߫283FcsӨӛ+2}"2] (:W?-]q-xmD⍁}v-O+Mmkn!Hu1=ޖgt=1휊Xdg߇ i't Yn1E^W%"}ワBy+Xk)i)|ˁο $ ,b{`>?͟qO jW##Ďe["vG4qh>IƦͧ{ !Q!x U3g-{tl>">گN;'5>KetJ}{}PNʗ'w[<'Y?p߱{e%v#9_|ztZ e5]i}m7o)ז]ϲ3 _QjI62lJp>u:4Mw?w>y"#^3;{uyW)b}'7!L1=r̩~@[ȳ3e Y{]{x\u.~{Kli_2j+a #h,/>rHHHLȱt!;%#t ˧Hå~Ļ=>Oq4ɱ,KGva=~l^`nMc+8Vغ0e-ҮkH^cGbQ<%֨&BC> ]˒*]{>f.H c/#Fv]%ȓ p5MlE-cIsw,Gqw(*?`4vQ4޸ ~tM+5\{~ g~Eo׸AMd4'S2ߏoM yM"?`Sq/~ZSLQC1>l8ejWL<ʋB0ǨZn˶_Z[UijEֺivE}ȘqGGUz҈㕟 |0+'b1|_OeM'CǓNHgipN1~F/ m6^./Wh}$<ءe,(r|׮L=7ec+hLKTB(q9@\> ~_? |@bS)-.5?p``G?m%ߣ4(ZiO_lxmi[#N B g3dFg"¡go)eiE[/-˷ӓ&B3ÔmmYk[tssNk՚9uK[W?a SGs!2~^{R#d-# {]F0a0 ^AD2Άϻv6;jkeiߞΰ`7!43t;FUWQWK*/`GxjOFy[k 1%@J7JW+gAZ; hƒMP ։Pߏ)EQ)_t?uꂍf |1o?݅>e]&)B<QƩ "[t&tw!H/GɝK˝b.).9"cq-?]eO4IFB4N`g;%gN1PjofR>ZQ[| :AetTf(B>tS .yt%W:逶)(sWOy?kxсHy9ס~\'?x]ɝht:|nɄm:V8ǥ8>~3av+ Q(ۣ]/߷ 1ζUms>f̝FF>=FV49˷Hn, =2n̉q=z5.$|K>fZy̫ؒFxZ۷!Z!;=`pcdv|PҶcu>8t>h/g983]APrw_%~]:v{LRjc{$>47ٓ|0q 9띵3FÙVF~F.m?{RxOFX(a|RZO;k޿we閑-[Xg鼇ܫ 喑F*_|Hլ\|Σ tڃg܁VT:ćt릺⃊>_i>98z}h- cqm{~LGm9\:c)$n=8f s#tX++4c^) !DK?ӎ _2R]q;Pv>|3{8c#v<{Gqh&{;.Pi 8TjcH#܇(yY4mDR[͵d0ǵamk8fqvg*;hP\أa\S~чXNj9c-l_"2/K.Ȯv k}%B{-Skœ1}b_znE :lRҾ_MN̔{%8ZM\Nگ4.#Ta8D~GJ8{q2!s6|1J^U*Ury(Aʿ(eu(}ε^|?f ]^ %@9JDC*ur~$eZjw<@'>Z'9p>Ԑ\T<*Azp9a'3 %q*'Cǣ}&ԘxO%Uc:G!DJ,)EtE0$8 8q^V?s&9quRZVHZ}Z:a4ieng|_Zc_"CTWB>h!S j}'YKS5Zu[Y7y}l}k? 2'e3oMAGse~#ο&dcV^6uO/:&>~Hy޸Z.hBG<(D2s瘴ЙHO%/E>%ZؽOR,3`)\ ;Z#f_Μ]8#%II &p))r)qz)H(!%Hik=!hhVP&'ڟOr,KGtYJN /n%8)G>A_p!0y0Wi|RV:ӞS^z'#em`RaV?Z[J#enlP#̶g_k3}e'# ]R+hV?Wp.VI+" eGy%&W?iwVZɷK\N`7Oitm;!g's:BN''!!qkZ'q]cAJrߺ;j"9kKIG"%R9.<.TZIoN+lRjԬ'!qϮpކ,_EZS=l텷Ѷ٥*F'4sVR<ݲ}HԷ\.Goqub`BC]Ɏ:<{>f]Fa_2.lIR0DL.*_Rzׂ0XxV_MGڦHbzǤ:]^I;l7c\mĮLVcʏ)nDŽ'} ٵ{<îyx;7g4ίyU|)EK}\H~h9 S2OxiG]ǃwGP"gif۫g\zՂ0XxVqaq0zV:aGԃcIGrI)dm(ƫbwJUWx%ƪ[qZ|ƽib{L0E>`Njaדbqz\.zM#GLkuMwk#مa/yٓ4cm4?"|Ql˟s1Ks*Äɀtovsy,wqN{Ÿ91烱i`l0vp\2Y{yܯVOXlUqTre$qh|f>c*SWjh[?զkzP{Δku,4Q9r__cO__eQi˷kL.aja fdLk odB:z{b]c)ҾJy G6݂Ei\Ʋ`W[}^;[֬hk>y<,ibsvK~}~h[/ȸ1)'>}[6߮:3O[8Ч4{l0}#356ͲS.Ly`cT;x^| LZc"1PG4Jl^ >s?ltb4({xQk}2yyUK^~ǩf*Sm9羔I벽Vpgj_ .C_0haFl/l׶O(١k)|*7-8O1Aq?_qJpMK 1t}0SvPM GfKcٙ*Z[8 |O09{?unCyRvk_ O/Ϫ<`?VdcZ|m$g%R;x99@+)& ǹ}B` O)|ZrmӉr3=8{Y%j2lf XO^oik}rx5cӻ*K,ɝ+!?KsG*fW>#drනǷW |wZlmw8{x ) >؟_Zч@ȟ1{7Fq|o}^ŶZ:~=do~kele+n{(ݫΌcNa,{]IH<faYk$R}Jm=ݏPx{ѸqҶof\?L7ޯ)'wàzcS#ةzDy wŕﱯ`Cǽ^s Z$g<[$eCVK+ƏZ}*086S&#GՆ[/j;=X}O-S)˰fزL/ڲekqt݂qB?o ˲ooy9]^>ɣmk[qy|0,:]ÏGY㿵8sצ漮45ܒ>G^Kfo>t_GaC*/JJSHP8웈+ pĭ0W#*X*B:RЬ,}m>ujԩ'qY>ZCy=ddɄaTcMo8(\SL%!9! 5xN=1y-$4%(>L̇6Ɓkުk.۱G|Wn:64![ b8=#izގ*OL'mKW,7X%mfb4W,X>1F?/,r~sc)zX<>b]8/8X.Ts?ٕyП:JeѸX͛DG$ƃ=޸=KFh>N׿߇?g~g;|yWKØ˱5$c%m9V%OÈv5V)znccPש {S;^>8:1.q[2n)_'˱SLyLjOO19f~ckl|t}]ӟ1*yi=BR=2!{ʸ0Fjtiv9FE$ӁR3!h9T3! ='!qƗ\٤ 0}ɨ m',B\XU3`|'Q>Hmcg|,ȇWY{eg빿l%&񯥝5x>c<zי|lc`|:@1i oӵޣd[Sݧ_;[#qc=}%{&}_8L{.{X"c'Sz3y|LVآ4oZ7[pP6(%zSIe C \Wplnj=?| !XG45>8ŠWGK_-$lZ0Yx}׹ip:Qn)Nǵ¯#k׸~Z~? ?QWթ4l3JUNSMmvromūwK[UZ Sr;cV]_;y?+1GisOM{|l}6|V/()QBC]˲ ];!ejMKk-3žDx)CY->q-|=g,v??R<<814>>s3[`cCf\{(J1=6X;u~#MWtnw4.Ճ)7d#~3ȄcK_2q  woZc  JbUo&M<)!i aRi:kWB=r5a?'!hdfcz ( h\&=Y>ٞ Ɣbñ>Uaŷ Ā%MBc!=!aH}B0tɅ?_㚆S IxcI;kXeBB6=4kMgS4/{"VOZ`o}_D)Fۣ?bl)%_fpYWm %B +4Y?`Ӓ.[^]!R[0f'o-1Yo0H,|bOⲧ4M)TS,3o;Ʊ\~% 85E7y-mpyaVRsO?/ mKBi>&~SW;ʷxbmkqGGj"u6,y4%14&ﱁ`Vâ6W'5~ņ/aS6=Gt ,C0甽m g˵[[ml(vuV~GҷZV<yy>9ثuuO||Чiy,c^ۮ%mFi qmZBx-nixeޞeW*Uokk0pvIcn.+5b蕡Um*jT]yy]4d˯=eZHH=eI){}=e|:M=<òt,Fq)7^-mi-j1gSG>aO?Ե^}AF[>w}֞aإSn)k2j5bЎiǔ-\xo)}r s!a1#|Nkgkk#i~*?si0i-)5 L䱶xv$ņ/ٸnE(1 $XJq8N-#U_-#hm쳩nOS S'~n>j]WKoC+u'^ixނzGx|ѓ3n!}vm"9e SOaͿ5뱳-g wt01uC(|Aws2A`x.kug,O_۽ڷ&M&u$@d֧VW[I[B߃A& aktykQ\sN4_O*wsH@` ݊K]Nu+^ݚZ>/;Z{1ڸu -6f#x2~;x8c)76B.{آf[/j"YۉǞ/X,iW`-Pl@8˵|4(&iu Lk>S+ htJL_{q˳`T.{E#qy FlY09` }O>b8q:qHy͋wl[xx3tqoGŢótnѲ}'gdkq?g4|RЋZ*ԧU5vV?;hazaH,[[m+˹Bקl)9,(n;-;zi3#AOAu\k!W?{ Mc_Ϥ |L eB`I)~OOo#Ǹ'W^A{tqx N[yX>-, X+Zt /kZ 1 'A(^ !A)u3rcq][-=ym9M/h|0<~L9IxfPYBξ3/RO|og}N_}m^Ys'KnFGbcaÃ/m4hfٖ|ԪM1-p?fɱuC4K}A-rHM)HW֥~4 *B_*²LSJ˩IWG`ę=a+9#g|t{D³by/?/:{݁{dg̃6[=Ǧ?ՃaXNaIo?9_qP*Д 5Ne:8AΗxZ?ߛj:ɪ.M߾8p t=l= rdP6qVWX/N.<ضjb{Vơ.aZ `@W{{k|soxkG5Pv婍c絵H[6}2A&y))5e\' :ǰXʡ9/&;_Cc{{?A6+yGQ,%5M~DZz̑2Ϲaq{ #SuwÈ彼ٵ̧TԵ}?rkp>Q_.f=g~-_YcaWX;&^[GAƭ eay-ܯkP04_ n#%p0@SLP({ ŕ$,/ydx)RˏSt\"Sڋv9Y* ِـ>iIt6ױ#;J@I8g7lmlc<,]/!]JҴ#3ϔQ?[nW{_ 0"ivZ)JHG3Casv>7]kh{vR]5G_8|X;a5W\ޑ1a5_UPmՀ'v֞[/ {c+G()ĵ2忷>/=4x5G{?{tP޷ ͹ 4ͩ"}Z^Xoĸ>”uo=F^)"h2G>3@Fx@j2CoQZ:x&q G9ј>W u]:D~S=+ۣg>_탽1W i6+r8}(}"V}Ty>-FYW뷚{f,mך.DxREE.Fs;e3£?JTW)*qG666tAxL!yl({AXr񴙗C+`T0T+FɎ'%ҋY&G @J-~'ժU+'*&1^ u.WcNylc&ePnaM3i72TddDH虮Nbj%&5rw h@e`\+?5]=5zm}%(NOޗmr<~xbgν"wBȟɳz^eF5}jCeX0#)#ZNR47+#Jq O7o'kV8Q289kf*Ez0+Uzd4tǶMiϟTF*ю@vh,~6)XO4jS?oN|wGK|TZqhB ]3_fĜg1~Jc\{3ѬBh~kxL4pdV-^gx\O=Est\NJ?#~Ű HzQgXðbWW[Ʈϔt>gmӈ,!KmP|hW=8غ7WEV9v=ψ,7kzmFOב#3tR{xlݸwSggG0NK\Qp 3Hr˪|cs#p1*41cGaR6y"n©Vӿ\bo3wh_g);O3VqI￐5#~-)lưrzt#9^/eUzQK{K,6erW~:ݽL#Ec6ǘĦc'~t:ضo 2{Fzĸ ѕMkASQ| ƾ3~1s(]ܜ_]]Kc^H7oiZ*oS#?5;'`}}jp'DqiV;.ڷz0ts{8Z^9xM?C,yO&\l[mEw3x@y9UA:I#rxkUChS_CPEB9ekt< Ώr4倎?+1CO|u>Pϝ'Zf )*>e_wa Jl[s-;uAy'|Jf50Zf/_mszctoAXB),_A? n ±}CL@"'Qb6 5,oëY7J8XT+þ w+s#nIM"_\5OVl~QJb,0\6<6qư?.'}1{(}9 f/{L(f[[*n|'xfsN/ºuǭ OO,~ɐ=MǛ#UN)y33c*nu,`Zy}xE*G$CtzTf)xmx0uh| ['S<bvʋbX߭L,s"]{=XiirGƭ3F N/NJ.'1Ez9ɥ~{?./ǯߎetӑv?ʦNG4Nu}dӅšbdO`k t0\vҰ3eQɘW=&,؝1);EtEcIa-UBp(!OBW9kBP+"{{gX_Vq^N?8pu=л xŢ{ʶE*ꓻ,wP҆,6.idLq y%_Ň_G}S!ty'^p\rXƛ -BC]َ+ |v>&iޏ-ZalX$%ͿcI~lױtSG8JǤM6涭[ɓߥ~5y/8M~4[߿slj+fST]ںJ5|-O=+·Z:?{dJPK>he/=f_?Y>kVy}ܕKj?hGr..+W_$ԑOqQ[ 'kb)?7_NmNɸVM#8*֓~j 0r"6H/Ys6/^ay޷.k>蚱`Z ǔP@A,#Z\>Gt߫`*r&41!4Rwp˨FObgVmHT{*v*w*^]v׌MsZ"sێmCjWh^Jp#?Xٴ2Oo~v)׽#*{c8qlm{$R7nP6 $B.qcmZ6YmF #.;7ј_7n'DP. IJ؎m]ӮqZ+e}F|uEb&|V %+^lYqc`cgnqBםNOYe욣"q 1vT66fDGnT`؃u>냍5#6. Q݊%! M7MDŽ0Cf<yʹSrfeaegϥ ^@ZNPKE$p0–& 69o,n{5>e\DOކt"Agq#uJz\lO(4T,ҥcBhnIǟ,Avcl3A OL.|u#:yA1 oT',>kDb";=i~ˢxb*^٢٘q僱91uA16ƉV#RIED|fFchf$&3 ޱ$-+H]^b7-K9lƕOK8sŲW<=bp+1}|MKs^ ,Է^tax v??})SW[;W>̭z~ &<ʊ68}nxeUV]6צ_1j]v`s/`Jms aj~ h:t{ƈRb QܳxYYĦ5,Jۖ;kI~ʚ?=(|\"$#$s=lQ:]7>=fԖ:/nJ;I4BRiDkE냯;CktjoEe(Y[{=mSYKlPcMsQQttLS/anԜL?bj}HbY'L\k9WZ;:5̙g7+ՊQ9!pN$]b,{аgf)Ii$MJa:G[uS^ko/9wvӕɫߩgh>?@]Rv&?Fgh٧S|ץM4ǝca+TF}zd9Nʚq<ߩ|:Ϯx^ڔ}U]ޱ~O(9GnOty-7+JY #ub6ۉfnhN/DHm.8| br}BOBJò]Ѷo10ڎ Y[:9鷖rE՞(&2j=A\zTB+lV)b?USPp@xΟ󰏎Y ^~U'JW҄bYMY¸KKsO|~CNӽ^}+ϰOQTfnkF+ӆ1M4%V|:MZҽglϴ3>v;񽊇ܶm?K3FdHf {e׏+H~>^Dzoe7 4o_Z;M'.%!qN<Կ۷#1n1^uɤ{m'1! 9tqn[,6xWX鏫<&GK'Ii\_X36ޞ-&4e /qY&a$/:`,0~Ґ3[ {SF'0H#XSXrG0q4^nN|y8>>Xƌ]|z;}x?2!y~^Ce^69! 2Lsw\ |L{5]ޱ~OY-r|̋fσqd^Y.ktQ;wK9eu(ed~-#)=gitL[e;E#ggae4T\h4T@(mB=}"g(hFHZx$_J|n%r`#"S ф;&K9nEFǩno}ޚDd8Gm}[[pWbO ރM ~(ǪqLjXз]{:жs X hج4yinI΀fǔ"nk&>> %<1S܎V9jTnef mr[ qw xck;FX&oJvqO<5Y9!a#^˱s]8Z_~Yu܌BO.D%%2z-#=6B#R"t+{pxjȨ"c|c4o e󵰌iVf\<ֶ<{}kmzR?<wmfϢsɾKY*I,uٸV$>Ԏi{8*qsŢwmƩr뫬[.IV _m}ֿ:oՖc^;2iql88)4K|E'YΈ"R%D;(Q4%(s -x0[q ܏Њ&ղ]_@ag넶ƘhOo{Oml/wm aL w!hHR97dz40IwۖzPfTUwi{I&v;Xr9ledzrsJ sDJRw96JXH/ؚ)!w!LY#?$GI>ŲHLXգ7MeK@AFI<|a|]|-A#0Z-Ǵuo\Sxkml,1sKu=W?½uӏ^nwKu}0{,A[d}`c*+w8ZhVl֋ =k]V~6a8G/X\ck]M}c0\/n3;^K1x`̟z`|4Zq:Ўc/^h 7rKptkjo E~>.`61YAQ9rLhBlGY|+-y}yΥ܎Y".b>h.aNnXfT_0_u<x2R6ݱ;Et?'oBC ]ْ8}vL_$p_'&Kf? H# Rt+n֒<@tﶖ=9.W.}w)^b??翗lFku,ߵZmFv-|D58+r"癳[{le5dt8v0;Hr'#n!8%R V3c`n哈ʋRfBS냿 asBl+mnV1E+La c]J(- άۑ6 v1o "ڙNY׎cNakh졝\%HC?f[|"SVҗE+OJWc/xeFXgigi Se4ߗV pY)s"n'־dJ`[&N,##nTr-,M}., z<~˩kmv|K,1a1,?,>J[/mOָZW>|q^89Yd{. S/,~!I?-J'!'!x9`6B "i@4B(涧 !ip.B/ ?0_uiyU'i[erktSo͵M.=N%"ZF–dbي1 ƺX}f0̌Tw9. tK.A\h)>[[,.+z%zM?KV H:Ƃ5glŊ(_<a&we~ŖBK %86|-+8 pn[&P(#\7R}Ym@cL.ܮer n ok1$GYߗ&>V-PX}%,`c۝y;d?O31v]FXtd@Eb-Ҁcl*0}HM~ٜԢ/u1̯K^VIid5&qm9YC;KzRY3 RÖ}Hg Kkmc4l_!XK˅(]!Hp%('\^l$Xlmh ki/݌ !0" ~۩DA7(Al)-qdB9w~G /m,50vh:u '\K3}.Fae9 5uِ ٭`N&FtVԣq톱5X{ !7#}\,WS_>7ۄ|+ ]NV94ʟb]i?|q2~M-dU>-:TN\>CՓ%ɔGZk媅z9ߥe\=tKe!ɑЇi]0>X+W#umP_eh{'.eb}N-E/O)5h/jQ ~$~τ-6PSƧ5& >0Bp|det4*jZ|ri1B=7F0O}qJC7c8CZ@qB3dk#tm{FTsϨ ![*)NTFo*أ !Eδ.M苇BL8{x-OpTd^ٖ g(GvX1#ՔCO$ǍT,/'4Xʘe趓iX|}XIH=uّu (zwBHiL98w=fM*[3w-j!=&ߚr3"D6ά<aJJ ~(]ـ p~$yE7LhAr{n'?&4yk?Jq6[`Gucn?f[l5\ΛJq1؅S=Ebݴlpv{ǗsbrR Yu|a4,flXgߵW{OW5ۻ,{dީ1++VSe|h]7] ͏2ꋇ_[Lс*οa$JYP?gq%Ř=wҔAO/nU0z # tX6;[0ӫFyxNim)QF5NO,rS4ʃ=FX=]BO\0`R"QSsRe2c3LgSry'+4<tF[i6BOP}B~q4=tY5wSxc/A6v*-7ܟT! !ޠx  wSig cy5;=x>9/=Pj6Z~/9E~0? ?:d(>ee & TL౒/v0-[0c,OIb#_ SC>|0|@şp7@|n^)?\L,=8F9_Uyup&֨8S Rk]BC]ɒ"9k͢7Ig޾tے5Xy܂WۯF5<,Oq Sׇӿ)9!X+EJF>ZByy21}02Ye-)y߹J,zm{$g|C٤9zguP|m,ۛ͗(m~r[k>^2SK+d}Ǭ[BcH9! M]WK"Ղe+4Frm%ii-ovm|B5|qּ C,|b=! MCDz Oy!U/V^?Ʊ! mwyhhb;?nBWBA<`2pH|7ԍL Ԟ W^c뜞=!)^)L}(?Cþme×cJ0?ҳ86|(HG7]ĮG2\|[2m7-}->_S6)+ۇ 8׳g.?|I's&~eq" )rKң,Aw*~i4-}jλ|{L_x_ד#52x1Vlaۅ0vT|8z1Gl>Աh[IEMnW |eJrycޏJ1rz%_Ě(` U鸚"=hBY2b8̆ +Y\0cScL\e6H>B1t}Bi25 y+rޭxMuz7=#ẇЎqG,;jJWZ Q^i.CY߫%Ks Nm-U1֪Ȣ\VJE'Um9N-6k^!/c*ʊYWye%qWl~G>Bs1t׳X(ҿ6Y52`KsZAs`)h\Ưd}bx jsS--a[Zy1R]҉ z$a_^ѥ/W-]Y:Wh?}x=!LS>!О?Υy3U6R%Y]-X=鷌jF˳keeHӥh59$oO`A?U?nO4%V\#琟G-YVL/RbzdP~ Ǘ5M{CFq^o[yfwh{&ףmoke1]"B_iϳd1t ^{PE* -Ѣ`NY-[xY-姁dzs^~;s+=|oU:n|H7%6;fh[!lՖF:PCU{v MvL G-P`;?muMdPќE:ع b6v`?$;d-0Ervkr_7;'n2Hjc#ONzP[NPƣlf^0gkBCx* i㾷]Oš(c ZFݽ=2B״Ma}w-/kjxkjU(|֣/+n*Ӷ1U7L>I^.t;RY+l54t}>+lڮo_et9\|_U[X]IYVz՘4w~_ϊԋQ+^&cz4XkEB+כ.@/,9&Nz㽤k>^yfŋWȞ"`!Lb9AX+8Po׭8mל{M>ZO[nk:5550H#! k3O#!kWnk:$~j%2^f7mc=Aݜ[ӡ톱K}E8U鬏 2!X_ߞXG| X;@zc6_ {4L]E>`>N)5&ccYӽNN)kˋR[RfG맔qlm)eNc_LjC&#Ó?K>N N)KvI?,pS|Į]B-_Rin gF$K96Ѐ| a;F 7Kd\[Jg,<[T+&1t30t{44Mċ?v,ӲX B^\  LF' < I./`bc-彛1*wj(;fI>?Q?kgM{ֲBn I_{ײ+{9Z)юr.tZs6hCٴ>Zԭg˶FT)ljj)Q׶'Ϸԧq{VZ{] H׎Sk%M-oq ͵vn^ GSS>~;],%~ 4~%BD#:vmX9𡄭/\61H~log~c3s>Ѿ.E,Xlq#Ŏ7>?GRBC]ے(}|6HHljy׍X˗* !YVwU% H"Xo+{l׶EoҶl&kn5jϖ㇖>5rhX=}惘xwSt ~Y% w>6x%-6xkyh~|_SA܉l~ce.6$8[}Ӑ9x? cgV+%Tjd>2,N xFLhπ&FkU>e Ź[vڈJ{kƦݞObt]_" ݣWi-㱧-}ϲQyfw0%rY9spX׶sdޜsgF)O\4Rr&3!ذֶŹgBXBJL|L8/2o4 laZ]rvdߵ-X ?GwOǮx78l35LFԳP[^s"ڴ Jt;QwHITvܣ58aݛsU 4tn}]7f(o\\by)T.{սURi9i-.%^svx KL $ߠ59*6Q}>gt'xSY lu=.ےc Jۧ챮- -Griڬ.u|Fs6j:ޭg`qpMѶW[~{]G?/Sb/ scY<>8ʵE񆫇 ZxX4cJ!xtkv6鱾֦L<sq6Ʀ9a\7-?5B:}U57bK~'ȗ4vIF}kBн@5}D_('95XpCXtrP#/Yu,\CgW-7PP +iź 4Ppu4|劅S, =! ]?1 1E;:JD=@~d8| k[}d0FoNHykqK ɾrsEyHtP'dhb[. #M%>k //$FV$uy\elF^ vgΦr{S YV$4}sBhepU{Lމ7om;K.GBB7tC":D | FAmY+܊I?n*Y1o_v yvK M%ktd,!o=-yMXW)oixn7ގs 7 漄sN>Hrs\(m%aAɆ9B;7?V}@~EU(QK`G&[r{?1}^l[N[nkeYsm>3Bo_֧گ־"_╦Y5͇8ZX]og/ˋN[oYmϻx" }+)zDP`kG5n-ܲb-gBk; ##M5i6m ? {jt럦'Z>k"tf4]0 ]Y,Oߤ>8O|ʧb}|߿V99>ɿ#*Ƭ9(~Ŏںg9ǖ{>sgsvgX=hko㢐vdR{[i, U r"#ηvNw˺GsTz! < jgh8CAD8PkS,6yPF Kҟ̊ۧ_%Jk5:xF~+Z9H}r}#Pjmx!g|{[\ )!Z 4sQ%niy;]1 1·WػH#/y*1VǕuL!y91CAقc>| om9V=4ukX ;K+lkb&IK/Wάz-g89B>#x Fšo}__q^he@9ٖu\+8msy)s@L|kV7=b"qc 3y}.fi8EEB'sB~q_OsƖ+L(]>`#hW>yIs_!2\}j;ۥ?J߱Bc]>} z3l+9&nr?\5ۍ9X\;xʘpmY3Dn{?d>tn ȝ djPYwem}rjlCaDS# J'4ړx l6C%=汒zpʅR &VXB G}EH}Jz4=gљj;[ד("<kۆpfXXY5igjoᣔHSHC P9ewTQ]Cj\^o*htFF|^vw0g?#]hٖ?Ly{rspjq|as>g?3$S.^JCmic7*-$֬-[)Gin >o]OvmE5z澖_S+ڣ=3y{p.[8J$D'|-F'"f)h",pcV=4^% gZd(9  :7u墱<MAۇb5gx^3e̟2є/eCץR[.lA$W8^&)ukHaڗ$@ k:yHEt-7)$NPU O89㯡uf6=A7tp#tߋ B[A}xkeUZ{mɽrh9'频*s k{k}&q=iC3ϧI.>R-q 4mmזYXg=^Ӄg)d{8LݦM!#nBb%u+8 FECj;}!H9ć^+uk`Ds7Ɖ\00渪Y`cCգY0Jn~p5+F ?dyQmŎ[ଭnk͢=:g{qaR%wC7wk;P(Agm^ͥ52s#,/.$Fs%PyVz\m3 rkr7xi`^8Y4^%_W8@|kG^[YemcB/0@Ȟm=&k嶵sž0O?#/2|tZ%<7@T(#~{2@健<yOՃ KP(4zel:-C\Y^_OM( )Qs4r[R:ׅ%$(i8[c~|} >&c| KZnu9BC<]ɲ83w86ןgz[ ` }r8[=8le߼xQs:gD{F}32B?vC8]ʝ!ERg[Jv7鼳L52l߳l!tBR ̚!\Y٢gX?)3sr<Ԛ! a̰6ru|foSk\д.OA`cY^jz^33fܟ##fַ9#4 CӞEB_|5``Psj>`X3XmBiA:yذbS[k%zhBDBZz-?WK}h<dIEi]>?Y+1:)!jK1MmEʲ]j@f'KS. o>17z6¶xzI':c8aöY}4x?5uSyxjfsi858b.8lkEg.1י>,Fp$[nyH?oT5zr|/G6qk |иSF8/MCN3 n!lQr4հ$`3+,ۿKYCgbG)77'U64Mƅabg@ɔLgUxff>ng8\!8?uɞ{5 cU:#n+v{dOwF/{m~H ϟHӽeGDi+ٕɅƲp'3'&aoonb"$oz-ܲG%=1=c>!`&҇S_C|,7ۗyfzZd qQOIx`p0mn?sÓɠS{_HTNފ/SA:>8fuX[+/I+=i 6ab.{ uW\rI嘝0ݘteܗb 5MyŨs޵E(g2N*?I~"䮡mjSVzXVx Ce+Y^(Dܾj%7{~ L4=5RFe=dQ=:׺>C 2Ym%OMkqi9=ݞd$ٓrsm|OV2QCM?ku-stN#E#/]]:IJ2-q`cZzSL6}dζz5+֏Ůlc6ɉZ ͛uOOܗ,M{!=#?v߮k+b[gf&=znR7j2#QmY;v=k\ANRxX[߬zH%V8'.IdT]ל,(U"Uֹ 0J͎6d|]re_$C6ޗO24v1SN4뼰 G%&$,>=!sB裄=!Hx9|ҘB}L#A ڄ}uB>Y?!huqA㝏S)Ƽu"]RʜY$fnoL}ڣLGܲ,Z|3B.;=dI0k;v/keܬkms $ݤ1] rqџ\b]zl:VڪwAк9}bUw-yW-٪0}ʧ5ŵq"G_7oMb9z{m 'HH:R_[J,|pJu{3cW{ u^;L6IW+cjkqCcuSٶpF!h}{̷R{=Iv/K09{̷b?p$~!` *7)2fϜv%}01}$=8a uiK~+ZCay!W'W >k[˝A2딵5t.#iro*3;1s_\'? /^%?Wz[ohcd}.R<m~%glmlq&n}1ꧾ a!4ui{]GRuS)ZxG}5yM-08ӱ9M~ʚ)YF礥oH]5#'|<\ȉ?Óq\ԿAŒMgb=Kd\֏~f r saXT.$ORRٱ40_mnް6XLFJ|(ᶦ=.G`aKُ|5.YfKu=T#,@kkdnkz]wx;`wm.H=ymi+/v|9YԞ/6 vjsFor{(dDn.GNzaCtXW9:RgyAmmcx7aڣvc)fX~l3ΥTG~\$ Ɖ:ʼneA~۠qQW$_)mpH?"|:_x咱lkg-.?tڹfi* .}>[=`5G=Y=`PKƚSٳRvt)թ!x7^uAʠL{Ja_==;dḵTH=E0ye#7&=1S>l7odll&X{gZ Ӵ_%߰Qji18FWg P;5x7]=M3sc\{.xxs}cgf,qadR\-q2vD5h:Zs $Z&2Y,v# ƶ8ml#0NߵN3q۔5q):ubpmƎF/5&mg;s5= MW0zeK+Wl$9Ɣ9hE {{BC]Ɏ:<{>fԮC:yȈ$EJh)23r$؝ܹ{s=_Ms{]wsuwf gwB{Vh u2{z{E#/M~WH1xZ^Oe};B[bbpN$Vœ$8/)/ccme|G2iq3K>ط0W8cݢ7qC~";tB秾q]{^!<3La$!kz:0PDJ"(P?n0{0e^1b2D d[w3<96Xe}7:m+ǔߌ4ߏB\eV{sauBelS1^ ng/9{#wFΌ0}NCu% %6T NI'z2ĺnxrqrd$eK؆?5幼tqK-VaJ81Ăc-̘bd _IV?La-E9Ah!4=B3ugBpoRj> Tfc7g _H6 oǑfo45GYpabţ]9/w|I5 uɆ:.oE[>hmRq>Ռ }tvVu4[xMYŠu?-6>ٹ9QfZ1|Ͷ9Hzɷ,kh#= ~0Vv򐍙d \pco .Dzmra@spLp|q]o<ǏJJ !/b>7Kɰȿt0 Ssщt5r=G6ҁ̳= } a J)rO:@io8ANF^6`lm%9+aنB 5ELVŇ$,q\rYy:`= e:Dxs[$w2ч}C:ؘWS3@j}xc,`8u$,|icgiClkd3.,ks,ġS<>ߢON/Bw&9Ok},}FuL܉qq_t97V[Nh'95!g94IX[B5O}ur?\#W ۗ7'nky=~c5]eka雌D{PW#QqrĜ%(0?u]?M~JW\h(;G(ZB{B?̗~vL/*)lGlh5yA^_~pqb :2_U>k0ϭI5;29,OʘnܯHGV?H elϝ|y{Lyh/GяgZ;%GndT-j,c=q`9ow㱴y|f)rYܘB2#i/YSZ1oጜsj^T} +׆9YX\\=b)R~,EzQs .BC ]۲8||6quc|Gqm[*GqlRUVV%BS_m{rw~S7~{uhs{oޜG|l|KHut\s⾚=hlFcXܑ [1w^+W~K܋#~8xg˱K?cqa*糆A:>%ﵦ5#ϭ˸7=ԜО+PK. 4 Vײiik}IDfsYKpٲY>u;>V!MYZ76BNCSߜ#H8!(bKa\RD:fس*|PÒ3vVi1+~.ŒZ5|\KoY-wim+9ap) %#eMA{n;rl>*J|ǫ t п#QL s$AۦkoO{-W{xYi? ۗ^;nkٻuNjkɖ]_7liӚ~iMAh:A¬VbLuP}96i!sB覾!)U>Ǘ` VAP0ht΂s+ U>Ǘ` VAP8!0N> Qy7LK쭂?΁w.SӭnK74~œ-wm{E5(B.S6mv󞗾4ƹro%@[gMەg|>VrF\y'jؕⶄu7hx* `ж^2Z[rOVaVaTA@۫ 6sAh]3w}7 g5m>6b}O|zT?%==YXs㌟ӆHO*m?CvJx=op߆mH(sI O?>ۤ@Ϩ>ʹڭ犆L=y~_,oP1bn qgMF?7=, ,ߣAK{V=/lSmZT=_B>vb3I0*eE k%ɡOY Eti-8FVOe1>vv|nNi6`ŜJy!w|*mEqC? c_SbvrsB*kC3=?ln_+-C-`ϕSȏ@\+,v:zp4Nӷ͔,]n_r-lA]EoM,kU,yUgz75}oY8b˩,[궶]GSˮ~YԹdץayOw}ziG w3r3-l\6iCZb9d.إ1oNEIa~`Qlf '7?ЎQPV>V}_N-9t_r]1n&xt\m%T/j%C+,vp%smx1+i}:.7'Trp\Z7n8Gj}#nĪhvM?zwhwZN,>[9Oz@vJ~YO*)n?=n鋝Ybo=aO}|&`qcdS,k?pb4brjVSP!7!B LS׋~8JW jkϖ7M$sʱr+ji_y[+Xp29aM,†=&dq[1l޲"[&uAyl&B,2/!׵jl{)oщ19"J.E+r4s0.s_NⴸhWc9OMr4b'%Ƹsn~A=AS?Y87scj[|/'ז"pgyэXn 1ޡn뢕>'5ĵ _:\+ǖX VqG-֧Bkj~2&A-_ee WxVhOa瑼snYxf;gOyZ$лz]h>7hc:v~Ly5'ޱ7Oh//gl4Lxt)'BCP ]ˎ8<;1!"_3#bWqSfgx#~,F|IsK[ߜ{w+M?fCckA8o:/,ܐzaqckLAZLX#r59)MwxeL2o#VykBxZ¯]ꊅ#`w?-sǎNmn6YϺ&r3s{Mja #Rpu:Es~X_ϖp,OlӠz0sstzKbvzPZ?~z6~o_zp׮z05Y6h_zumb~X҃' k,\ƳzXrQ+K}ӷ3+^ګlg9Z2ߴ~lq<Smڟk:<2Lw3-gYʹyPףyWY\ 1c/r`Ӹt4 ĵoC&- \mXZi b6 #O1bOY?Ƒ(/9{],JŰF,`ci Y*K7MA4?djMj]_ vv|J D|={'_&D-Y8YUxpE D&8!0 Bj8.GSaϤ5}%D+]1Giv9q&Z"}jƧd?*82?C[bP9ۇ ,M\M=qzwsK }U$6rG' u>:H]I>|Ox^!^s`S ;wrx5I9ZJ#|E͚/aUƥow247|Gvk|Gx<6/{?6|ݐ~jg{ E|`e{Grvhy. cȱq|19>yNXq>nkƶ3v7cUNVNl瀬Xw>Kǘggh'v)[Wآ+]hsa_88<6!Bi Km0xxk ;wv`}LcZu̮?zsui1~=<>jX6ڪł崅幖Z yOW/33][4?xl?e=7fL"xFOqc\Ѓ #8 -=R.Ah/GM#(%Xӗ56Om+ qúrtE󨶷<ܞU榻ƶ~_cɤJ]tg}I'[Hҷ<~8QJ|xSn m[H5.6f6.tܲUۮ.?JcYq4*OOG_<>߃Ozp$pagAT]7{Ʒ쨱[ /ⱲwqQ4lmqhV=yG+{pq^1QuZ_p-zw%r_sO})og3ϱ5 &$'45ˣgF>o~A s:A?eF{xm_x1Ea|((~FNmƥ-YOk֌2{gǶ8{CVࡍS+nM >  |C4t}o<ž<*6Gkl O^Q$ĭh^Ԛ3|Xa~m,yWAo% _ګhj~07Cw}tWa(.n߳ڷ>u˭V#y9ۘo%]~BCEagle-2.4/example/example.log000066400000000000000000000075531321437612200162000ustar00rootroot00000000000000 +-----------------------------+ | | | Eagle v2.4 | | December 13, 2017 | | Po-Ru Loh | | | +-----------------------------+ Copyright (C) 2015-2017 Harvard University. Distributed under the GNU GPLv3+ open source license. Command line options: ../eagle \ --bfile=EUR_test \ --geneticMapFile=USE_BIM \ --chrom=21 \ --outPrefix=phased \ --numThreads=4 Setting number of threads to 4 === Reading genotype data === Reading fam file: EUR_test.fam Total indivs in PLINK data: Nbed = 379 Total indivs stored in memory: NpreQC = 379 Reading bim file: EUR_test.bim Total snps in PLINK data: Mbed = 2000 Restricting to 1813 SNPs on chrom 21 in region [bpStart,bpEnd] = [0,1e+09] Total SNPs stored in memory: MpreQC = 1813 Allocating 1813 x 379 bytes to temporarily store genotypes Reading genotypes and performing QC filtering on snps and indivs... Reading bed file: EUR_test.bed Expecting 190000 (+3) bytes for 379 indivs, 2000 snps Total post-QC indivs: N = 379 Total post-QC SNPs: M = 1813 MAF spectrum: 0- 5%: 495 5-10%: 290 10-20%: 332 20-30%: 248 30-40%: 234 40-50%: 214 Physical distance range: 9752235 base pairs Genetic distance range: 23.0881 cM Average # SNPs per cM: 79 Auto-selecting --maxBlockLen: 0.25 cM Number of <=(64-SNP, 0.25cM) segments: 68 Average # SNPs per segment: 26 Estimating LD scores using 379 indivs Fraction of heterozygous genotypes: 0.246308 Typical span of default 100-het history length: 5.17 cM Setting --histFactor=1.00 BEGINNING STEP 1 Time for step 1: 0.282519 Time for step 1 MN^2: 0.0201082 Making hard calls (time: 0.0164621) BEGINNING STEP 2 BATCH 1 OF 1 Building hash tables .................................................................. (time: 0.0826769) Phasing samples 1-379 Time for phasing batch: 0.335781 Making hard calls (time: 0.0172811) Time for step 2: 0.435747 Time for step 2 MN^2: 0.0391194 BEGINNING STEP 3 (PBWT ITERS) Auto-selecting number of PBWT iterations: setting --pbwtIters to 2 BEGINNING PBWT ITER 1 BATCH 1 OF 10 Phasing samples 1-37 Time for phasing batch: 1.13401 BATCH 2 OF 10 Phasing samples 38-75 Time for phasing batch: 1.04853 BATCH 3 OF 10 Phasing samples 76-113 Time for phasing batch: 1.18956 BATCH 4 OF 10 Phasing samples 114-151 Time for phasing batch: 1.1353 BATCH 5 OF 10 Phasing samples 152-189 Time for phasing batch: 1.01419 BATCH 6 OF 10 Phasing samples 190-227 Time for phasing batch: 1.05172 BATCH 7 OF 10 Phasing samples 228-265 Time for phasing batch: 0.99322 BATCH 8 OF 10 Phasing samples 266-303 Time for phasing batch: 0.99847 BATCH 9 OF 10 Phasing samples 304-341 Time for phasing batch: 0.998471 BATCH 10 OF 10 Phasing samples 342-379 Time for phasing batch: 1.05052 Time for PBWT iter 1: 10.6142 BEGINNING PBWT ITER 2 BATCH 1 OF 10 Phasing samples 1-37 Time for phasing batch: 1.76314 BATCH 2 OF 10 Phasing samples 38-75 Time for phasing batch: 1.79145 BATCH 3 OF 10 Phasing samples 76-113 Time for phasing batch: 1.8253 BATCH 4 OF 10 Phasing samples 114-151 Time for phasing batch: 1.54563 BATCH 5 OF 10 Phasing samples 152-189 Time for phasing batch: 1.54299 BATCH 6 OF 10 Phasing samples 190-227 Time for phasing batch: 1.59936 BATCH 7 OF 10 Phasing samples 228-265 Time for phasing batch: 1.55847 BATCH 8 OF 10 Phasing samples 266-303 Time for phasing batch: 1.51538 BATCH 9 OF 10 Phasing samples 304-341 Time for phasing batch: 1.58919 BATCH 10 OF 10 Phasing samples 342-379 Time for phasing batch: 1.64308 Time for PBWT iter 2: 16.3741 Writing .haps.gz and .sample output Time for writing output: 0.281509 Total elapsed time for analysis = 28.1508 sec Eagle-2.4/example/example_ref.log000066400000000000000000000054711321437612200170310ustar00rootroot00000000000000 +-----------------------------+ | | | Eagle v2.4 | | December 13, 2017 | | Po-Ru Loh | | | +-----------------------------+ Copyright (C) 2015-2017 Harvard University. Distributed under the GNU GPLv3+ open source license. Command line options: ../eagle \ --vcfRef=ref.bcf \ --vcfTarget=target.vcf.gz \ --geneticMapFile=../tables/genetic_map_hg19_withX.txt.gz \ --outPrefix=target.phased Setting number of threads to 1 Warning: The index file is older than the data file: ref.bcf.csi Reference samples: Nref = 169 Target samples: Ntarget = 8 [W::vcf_parse] INFO 'AC' is not defined in the header, assuming Type=String [W::vcf_parse] INFO 'AN' is not defined in the header, assuming Type=String [W::vcf_parse] INFO 'DP' is not defined in the header, assuming Type=String [W::vcf_parse] INFO 'AFR_AF' is not defined in the header, assuming Type=String [W::vcf_parse] INFO 'EX_TARGET' is not defined in the header, assuming Type=String SNPs to analyze: M = 430 SNPs in both target and reference SNPs ignored: 0 SNPs in target but not reference 215 SNPs in reference but not target 0 multi-allelic SNPs in target Missing rate in target genotypes: 0.00116279 Filling in genetic map coordinates using reference file: ../tables/genetic_map_hg19_withX.txt.gz Physical distance range: 3595565 base pairs Genetic distance range: 10.292 cM Average # SNPs per cM: 42 Number of <=(64-SNP, 1cM) segments: 9 Average # SNPs per segment: 47 Time for reading input: 6.18623 sec Fraction of heterozygous genotypes: 0.178114 Typical span of default 100-het history length: 13.44 cM Setting --histFactor=1.00 Auto-selecting number of phasing iterations: setting --pbwtIters to 1 BEGINNING PHASING PHASING ITER 1 OF 1 Phasing target samples ................................................................................ Time for phasing iter 1: 0.144591 Writing vcf.gz output to target.phased.vcf.gz [W::vcf_parse] INFO 'AC' is not defined in the header, assuming Type=String [W::vcf_parse] INFO 'AN' is not defined in the header, assuming Type=String [W::vcf_parse] INFO 'DP' is not defined in the header, assuming Type=String [W::vcf_parse] INFO 'AFR_AF' is not defined in the header, assuming Type=String [W::vcf_parse] INFO 'EX_TARGET' is not defined in the header, assuming Type=String Time for writing output: 0.0239 Total elapsed time for analysis = 6.35535 sec Mean phase confidence of each target individual: ID PHASE_CONFIDENCE HG00403 0.953163 HG00404 0.949485 HG00406 0.927005 HG00407 0.950292 HG00419 0.938822 HG00421 0.93367 HG00422 0.952224 HG00428 0.944651 Eagle-2.4/example/example_vcf.log000066400000000000000000000065471321437612200170400ustar00rootroot00000000000000 +-----------------------------+ | | | Eagle v2.4 | | December 13, 2017 | | Po-Ru Loh | | | +-----------------------------+ Copyright (C) 2015-2017 Harvard University. Distributed under the GNU GPLv3+ open source license. Command line options: ../eagle \ --vcf=EUR_test.vcf.gz \ --geneticMapFile=../tables/genetic_map_hg19_withX.txt.gz \ --chrom=21 \ --outPrefix=phased \ --numThreads=4 Setting number of threads to 4 === Reading genotype data === Reading genotypes for N = 379 samples Read M = 1813 variants Filling in genetic map coordinates using reference file: ../tables/genetic_map_hg19_withX.txt.gz Physical distance range: 9752235 base pairs Genetic distance range: 23.0881 cM Average # SNPs per cM: 79 Auto-selecting --maxBlockLen: 0.25 cM Number of <=(64-SNP, 0.25cM) segments: 68 Average # SNPs per segment: 26 Estimating LD scores using 379 indivs Fraction of heterozygous genotypes: 0.246308 Typical span of default 100-het history length: 5.17 cM Setting --histFactor=1.00 BEGINNING STEP 1 Time for step 1: 0.267283 Time for step 1 MN^2: 0.0164427 Making hard calls (time: 0.0152462) BEGINNING STEP 2 BATCH 1 OF 1 Building hash tables .................................................................. (time: 0.0786691) Phasing samples 1-379 Time for phasing batch: 0.331454 Making hard calls (time: 0.0164559) Time for step 2: 0.426586 Time for step 2 MN^2: 0.0375612 BEGINNING STEP 3 (PBWT ITERS) Auto-selecting number of PBWT iterations: setting --pbwtIters to 2 BEGINNING PBWT ITER 1 BATCH 1 OF 10 Phasing samples 1-37 Time for phasing batch: 1.0778 BATCH 2 OF 10 Phasing samples 38-75 Time for phasing batch: 1.0477 BATCH 3 OF 10 Phasing samples 76-113 Time for phasing batch: 1.11441 BATCH 4 OF 10 Phasing samples 114-151 Time for phasing batch: 1.06495 BATCH 5 OF 10 Phasing samples 152-189 Time for phasing batch: 1.07034 BATCH 6 OF 10 Phasing samples 190-227 Time for phasing batch: 1.13122 BATCH 7 OF 10 Phasing samples 228-265 Time for phasing batch: 1.07535 BATCH 8 OF 10 Phasing samples 266-303 Time for phasing batch: 1.16462 BATCH 9 OF 10 Phasing samples 304-341 Time for phasing batch: 1.15337 BATCH 10 OF 10 Phasing samples 342-379 Time for phasing batch: 1.17788 Time for PBWT iter 1: 11.0777 BEGINNING PBWT ITER 2 BATCH 1 OF 10 Phasing samples 1-37 Time for phasing batch: 1.87655 BATCH 2 OF 10 Phasing samples 38-75 Time for phasing batch: 1.6772 BATCH 3 OF 10 Phasing samples 76-113 Time for phasing batch: 1.67862 BATCH 4 OF 10 Phasing samples 114-151 Time for phasing batch: 1.57155 BATCH 5 OF 10 Phasing samples 152-189 Time for phasing batch: 1.57551 BATCH 6 OF 10 Phasing samples 190-227 Time for phasing batch: 1.64418 BATCH 7 OF 10 Phasing samples 228-265 Time for phasing batch: 1.60561 BATCH 8 OF 10 Phasing samples 266-303 Time for phasing batch: 1.63349 BATCH 9 OF 10 Phasing samples 304-341 Time for phasing batch: 1.78741 BATCH 10 OF 10 Phasing samples 342-379 Time for phasing batch: 1.80977 Time for PBWT iter 2: 16.86 Writing vcf.gz output to phased.vcf.gz Time for writing output: 0.204556 Total elapsed time for analysis = 34.7048 sec Eagle-2.4/example/phased.haps.gz000066400000000000000000005736121321437612200166060ustar00rootroot00000000000000[<>%~ Jf1eU2 %˷:n%$%yLM7vj~Wi/:ϝϦ̴:h%NF&FK6YC&9k_jy?z]ëU~a$Яf]e3j;zܳ1p,E$s(hpUտq~DZ d9Dlյ#r#T3769ROKi XUSHt"rVN-췗e|T<[̫1֪D5ǜ;vr;,&q11Y~dP5Q[vBـ:-rJ^#siQz (MuǞC$^>E<4>.s16$ޥ8Jf5.87D<ŵ՜3 :ZA;^T[j+>c+ ea20fxɬ@DU<QYs 1oANUqLfDYnjRQV[^q`#n`Dd]Rk#Q$lH\ yLO}I߯?;}}[|v5^=.y?MuǞC$^@~jm9?#hvlQJD^u@ʛ,[eQ=;Zg?R6{ڬuV (xqM~4iϴ'z^TpSj6lD1*tj/,VFs.﹒u`鈹w[F3[]Zp'4O)kq˼WϷ3ߠKG~+jM 6 Sڡ6c3!cܷV{L1}ѻZ} (8+R:}Zb-JR-P;Zwf_rԚQCٛ"4VG5lMu( 8 Mf9,X#cÙcf1a,f+.m8uE1ukzE[񑙁B-vW2Pj@p-GPOIao}j:9av)<[yٻSDLDY ԁlx%XkCX':]&h҇*>Ŏ~0RS1Z4,Qvj ߹ |10 )}||iP0e3fsI`LdaWT~2yK 5"AXOIao눆b)/ռS KT[xY?NN3'GqOWDCX':]&h҇*>Ŏ~0RS1Z4,Qvj ߹ LM|hsUjƙXaŨkwdbql G+Ud}PkҸ>_Tj{UپkI c_f:hAY1BSByUl6eͭ,d־Ǐ{>D\kwl3 Yކ] OMsn&>!+঄3u,*ꌟ:0YOrE`%Z}R@/-'jH):u Tjs2ٙuZG-s{tc"Q=[qgt.ob )NeOuL>%Y/U<|!  `~1j%b͵>iY<忟/17򩁩iSe2RkDt1 ź1R^y0@L\~*:;gf]k⬟>b )NeOuL>%Y/U<|!  `~1j%b͵>iY<Esx4 h*i=wdbql G+Udmhu\>_Tj{UپkI c_f:hAY1BSByUl6eͭ,d־Ǐ{>D\kl@Mf[MsCZo.0v/M(%2U#W@I{f?-Vbtf>ͻǧ܊Σx?Go{?>0:w~Q{?)y_%/î {Qʷ\I|7WxIEGi/3ifQ<[Ful#,/rX3GϮP+VyuB¿{m"ݚuv/2iD>]FYsN5b4j%bEOT]٩%(;W~^n R7@>#ڿ([|Oz#pzF,-mٷZ9zJ|ָ'LU՚l:4#8~B<.]I(}nt`[MZnf-FY^ϰ7AkզCǂ7y[G@]2"[*BC{uOMyÙ:<#"gj-tkyLC5o}JLS`)4;XeEffCeY Ǔyflj  s)Wm]lap4?ƊKH};퇊sGwh_}=/kzOz֢/sRفzZz vmjqr<m7flYq⫰ǙlE:QSu~:<߰"xvpX"flH*b=`6$13J!1Xs|5fuBc?5_is`v?_n?9pO5j>>rﳁ!˳vnwCk{Qޗw +3 mg3{J^jb}GPn?1:K},sPY-WaX {m"ݚuv/2iD>*2sc,U+?co*c٩%(;W~|D4,6wy'fYS33hf$Za]X'=hSk~o-痟K:7͞9:~o rck({˹\g>[:ܪQW鱶?X \><{WԞU.lxְ~ȊK_gv ڑz} ג^+{`&x>yVuIUnX;qͫ7{.3#k}+_ (x(Okljb[-L?Zmx5p'4@7t%Ɔ1-]o^[pxMECm:W=C([*Q1xhT 8{t.Ɵ#p*:T{m"ݚuv/2ie,91fRS1*2_ZyϷL7C7PsOy~xUl|9#Qs|DUTU2ր•* jҸטw/mPqug0Vz99-EZi֩ *r,B٦|ΑGycì h.P:6Wm dYbl.,m`n|1o5yJ>ϟǻ>z[Rj$;ƹ MszB|vlWOnj;]_7Jp+k=#,vlZC_M5= [8z#dX;=xhk63rhyo c.cW/o/=?H񕁲RI:GgK\C.~inacm1_(Z-p2 Uk]28~vU6w:Ze [Zr-=p,(e//KWU\[!]_ב'ZebsռƓ3ϋ1`Th':4z aןߟޖ-#-ۇZYrOR|>iv/#W]&xMtx]+6\IZOooN]{xי UA>?ǻMO/W5=_hqZE@Yd)5ufwWO3[=qPP>*L={BOT|bX{:g?(O6q0,;83;OhhiJ?GU{mgYGZrܣ*;FмEݶRW=98KZ]xs#=k?;5 ]7 j>]{.pJc.Gw}]+rSr10So 7Z쥛g^Eezz_[YLBL^ Re~hdUo)׽%d#zz-!v^ L]O?4vp෤j߰:+OW(=IyEhZf$c1~TշIks}Zu]z띬giDEzx+@3Ph`@Q*ױ|j_B|V>cT.Y>#;brqFtc*&})k| وuF8Yh9Uًk4v.0˯՘G&HU>ۣZ X8 ea4I4ZgQCQ媺 ;d_QFLDhWq3ٷ硪ψjF(y90f7eo 8(6ڮy!8`<2Qr-TRNƎ˱/ҜN]`eB2Y{iLV٤la$cKjeBuU"[JH5֏*^tGSmF1U!j)ǢGaɯ3_-XnAnW~͐RUré584=TU6;*a$y4VO𭣦zҷɨ,g[ɵJׅH:vđe{kĖf_T#^pxa=}|xLNχc6zK;Q~GΔ_եW}\ fjѵ?=PuC&Z[m++JƵa>wu/>v=Λ] odTwkt' v(d/'Fz#7|IXȾoS.kPg8FG5qmcTa *b_!Š?<}*] { ?5Y1YU;#zx$ 8ڋX8~Şsr3[dxǟWܮl( yvxX߰u-Mm$p[ڪ|[1Rǒ GF;vڤm›F"ImUvGk#x]{y`Hlivܥ6屝BǘxH^i<ʦ鹿5>ӣ֒ȉjWM];K!uYvBG¶mr՜mzyd$ }{=SJ;5_n޺j-%+4SfdaiOZ[=9P6'uGԻW,˸^ ]<j\ MW-}@1u^'gMr_=o_y/vfOxw}P3Oi8 S-Q9&F ^G`ܸ~9܎K34qs}>Go~g-1 ꓉֮$egX%ZF{&xXCO->eրsdC)r=S2)yk s]b"se"-5IvZ3V_cY=aǯu.]`lͷIpe fk{yȳjfկb=gio:O#f #F&^Gzŗ놊z *w8Zz/ |(.qخŒ18f`ruw)m%ʅadTt%33?]`hLKh3{:ښxWnz̨)Pоf|\)5r٢~+P/K;}1-.=JiWYjפˇ3WQ_.qUqIQJֲor[Sn/;?\m;y&B[6λQnhr{7Xiߵ3 yVXSirZ` ?d*u<Ǎ?fr`JieAvwA]q#nl_ˎXUh.7m|I݆V!I(e_ gԞ(1$&4f0}ez~mU7:볊 a 8WKf<45ob^Þ%Ic^#o:"X)UYlW$e:*35kqg#AƏW"skV'bHti̷+ב:{^G%qq&>]؊w X^KyHCldF n;gmG.(](S6/+C^zhۜSzgHb\^`3D&b5f= Y0NF7I4O1=7͘gǒ=vkěEqe7,y7yv)mP>uv+n<[q2#mbpa㦶lY y;h({bFVz==;*[ByZcGm /ޗm=UWW4cYPb{#4 ]I}Ǵδ5b\p 5f.H#yaF6X+ުjqRJplGz-(V9fc16r_`f78*wꕕ9[GUvqӌFl8q:ʼ-cJ3̇)Ӹ<.˯zeRlPz/8u2/=Z*F[7';+Qs1:w#Vs˘wĎWMH3>kh yu/W&?ԚA"rukL5#Uqҩr{E'ksZ@?]1,^ZNt^䊘1]Ѓ{ ҽk嵆:EUә,U2<daSe)W,o7d5zaz2k"P)TyUe^q:[]l>m`hk@? r.^ƠĩbT4J%;{Pzkɪ6clbl3B/µj,ŞժNm 丕"P)TyUe^qwn97/ C>1<-݋W>5<ڪZyG+wz^}]>>ԷKۮ9 s(6޽xm_X68 . >[/.y|h`/2QK{1.P}QWË\+>BEqlmw魼Ukz7[u=3%1fhWBOUG8tlOZ\b^EQ@uJ)fhyϰ 1ST5&拲&Z;6;R`ua@zֵ=UQb$_DTj&M:ZΫP\5"1`TQ LR#T,<(KbJ8b%CYX麠ّĊLb&[ɨ-]")[4ri.|jlN]i6_ 7HxCFv[m {^T3n~U֖W=ՃΩ$mXbl|N.6KSw*VO(Y.Ita/ 9/?B_Vi[=ǚd}ڀ' [Z>wS64 4ű- s%|glĸl9nc[5#qڸj\`]ϥ>\ ?x)4OyhO:Rn2Mgaف9~eu]]_?/٦*+U8xobk{|TFSx}3*u¬\f139봊Am2kn9j(:- 1jX)l#ExifAk4eKEӖǟsce:X,ق({>\U8֡}M]GK<UCa:>|Q;Fk mZY ts7KPwy+/A.! z_vqqbw3XYn N 㛅N-?ܹʱ@-,"V-XĖY;9{hbpt"f⎊EgF`ts*$tD,"Ź^о*DW:Rz+3Urs8 gh}3Uڱd(]0-}uxW3q@?L)60Tkr|1x-C_mrGOyZ4%C~ O4_{|34q^$4|_tcc{B{B'(3h|Щ 'X;+=N)=Ua.F+MDZf֬YlC5lԆUNf)c ?֊sf}\ѼWU~]?_%|i+>6Ƴ[VY%#V-n]y?Qoɍы,VkxB<5yO*n-[5^W[Dժy+<,Kc/c_Ʒ'Kv$Z(s-*akU#sȓ-Vzyy1ҨS[U B1αR$Gʀ^/c{RF!ǗN5* X5#\u|u-‹UoēyRi#"hg)vfIs^s$c_3z2DECvk5 ZUW՜SF{lGxƊ< eZǬRyh@k#֬e)[>U.φq@f?<25+9cij bnӤŖA>U6QG4Sӟcjᣩ2^J#x[z^Ogz#ؖjb|َfݪ on0 ?3YZӭI5S|!#2%+{V2V&G[Gj72cm2#tZ{h}ŝ6sӏj9b J&,B+YE Bs8()-V*1aY>/q.?^>$hkt%j.pp}1<V<ԳoQ%e$qtVlQEǯ uG:~w6jږۭ8ѓE`u]^MisyNm† ["-jZ>o9xCl7t h&G͊J(<[YI zMJq%o,4b,QVV"1y [+=樊A+p&{1Eh-S=GA!%}A\0.#}!/?8ִm3 /479JVUSEJ.{YkR{;WDz/Ub'{eV{({ëZ>>O]y&<>Ygkx\L⼎?N͐g'e3},-u}[z0^Q:Zv*ù|h#ܑ\g:>yG龈Guݒ8_}~(x;?uxXD6ڕ?m@_}sƚrT1y+2[9˙Uh De{\U#Σ~뷮|~-kle>n/{9IvVs=uK$nwKoQ}HU:Ɲ9q4,^hoiXZ}~H/EփJKq.CIoTz}_^w ߊ3eƒkh _ 4=N$"lTv{z^TexEAC˔AKh&#VP+FV1k='})>jPi(x,P)֩CYrF3`e :0҈(F㠘 -k+3W M(c%Mr9Vb1Pb@7qN@37?;끲֌Xٸd:"/8V>Y-U6aLy,8٫1eP\GXaqVu,4\W b`i̧mӴZ C <:[>m"R %bi~>m@ m,"H)S.g߷ȆE95K4PsCẂ(C0Ok[q݈*O ;2ߋ$QxzQ#1kmDIGa+f/$x,Hw=]f(?tho$5{|*cζ,YGj[w3Jt6<6ЦqOk`r(1tT~]MhiZfԢ Xk-Tǭ͓)WTf`zl#P:b"_W10e. _}kŋ?%yPozEե݀7c$_9(lcvFqyP7mk~qL^ߌ*僒jX.0JȾ\}Io8( FkNX-{c}+z[i5J[룊13H|IqF#d^+^DiLf-|\38bo {DchvFyZ#q)[r%&^Ϲ^qSJ.x(J?As/Mg6jynee{f..լqZ9+t/}8Xzø|<6s7.6Mj;n|S6UDhF- v6֌tQj70..!eEh-JHd2ߢKՏ6裏=ɫ W]tJ+-cM/wIF>Hyh /kGW{E>k$^ p3'51+Ql V̎v|_ˮwj(aNbFT3IFߺ R<Ǿmͷ EC'g_{IbYruSEn-uؚӺ׮;r W~{Evk~ WjD2Rb;yRnָɨc!r:6^tXzmF 8oeB~l"d<=C["iz>ھ#|Y<™1WGgt..0"j [R]`l. ǾAj?]%u+M2<}xkʉx-m.%|>kvW.<b#|Q=fqt[_˧ Ԡlt1ҟ.fAq}3,nl~XTB'83UC%el M9g.4~x(#ݏ/[%~vYFǰ,hI>PWK KP)~NT#r81ҊkX}JQ~Lc0rGs,SyZU3؆ \ [$ŀF_H͜(7Lyᖐe(eR36qquq c90D puV2 S>jc=E0J_8昍?fڌ T]j0u3Ig_UtU N`5c瘵,CqK!#cL:ȳ]@>rOc֭u]`%4^.iaoД#(د_Y/`ejm!.nS.O3V_,ZO#v}8zxxSgn>epѥ_ťKIuE+$^9=n(Kodǿ0ޥ4_ʣ.D.cuQkSy8 J݁Z=jT(2&23PiC9C^UVo^|["qLڔǘ:2쥒Pfy!o}YqjO}`UκylQv{|zmZ߶aX3v_S3 }]0GQy7MܤmϿjzϛ<'FoZ\+>Ne[sm:F%|6Ɨfxus jRs9b#mK $)}[uٺ:{Xj4. aޱ<#V^MGuUjUTsyesoe;יdd<#UtF1o-5v5: Ck0VW~9k4#=[SXK ڬ14gGl'L=?H^g ~^ t]۵ώu4t("0WM^Ӫ[[BB}M];)_ s/,ވ<ײuF|o'cvGvϹuXdkڣlۿy Gp^٣i?FwkHtř[>E]ο_)͊m~x/=,xGZ=z}mSn$X4 L}jyJ;dfTw-{n߷g#!~.zOW[;B?F>k֗dY*EWыL=F;u$=Yf%㠢H8bC]49OhrI?6Q|(R N/kF[WP9uC/YO2Qf:eTY8FȮH8bC]{BiiZ>70CQ7*϶lzxzX=!S1Ow i 6}yR;4^ǣKomɂ[xej>T1I_&@r7tˇW}+BxAWڽUEx} !%L磌"2=6Y;cJY+Q53JsԲ)DTݱ(X壃,+قLS^r;יQP:.*_-1 gxV"G&/Ek}3Nm{OHjǺG"gG5<ڒϷHT~Mc혤ߋ\ tAGG^ab}=z<^5QVc ~j1V=t1Ss4·߶WF5o~?<Oo?=f~4sjf}_m^O:ji>_&ksxk#z/50ϩk_"fn}kǷ{6wƿ׿ME>s;/}p>8ʲI\osxkr\~8x<.RM[?_Z^)': 3~ʳo+^uF-h7Ki&3QME Y/BOY2=FpE<\48[-%/Yc̘ʢރeW1Y'W*yXX~g^ 6C<\ %Xu_kF}F ~=wqc{}?=,e{ѱF=ڶ5נ1~#(̟wsru<,5S?=㋕sﲰҀ(ykYb* fׅx]DϨdd䍵Z]#/BKEO9:.h"ʈ_qK!V {帊vu泵Jsָۼbٌ1J3,f25a7 z!yLCjǯ}F ~=wIz'Zoȥ 黥O]Ms#e/Y֊칟[M3|; ^v-˚Zz[|:j\G޶넚$WǶ au5|Sc"8;{Qt|](k,kd)fj!^ 4KrBh=Zb-%"R|VyyiuNx2<;Q WLaNqu.={1ìlo#n1@;.5.0>>|w{=b^7=w!rvLDx">o}vvWxg`}=Hkt NzfOXVt]D˴ =9qKFKԬ1ƃ28[mEqt{F ٳ8_,#y뛗Aix\>87]Jr7Iox`בR}>O꩏y:kVoO4-v^Q5$oM;Oo= ]-mKIcJʻonQ;{yQ3 ح M'sߋ?겾3e$c-뫪뵙H^,U^ ۬lkUfOX{B{w]_S#>p=!YYb%į-cqQE\1ݞQyxqg(W:<˽H+={ yql|~.0y yYyܭNviVa C}ωTZW=&^բ\m^3½EH2ۊ^yV B̋'U3ZuYPW?HQӞZs?q(QEV:^F {΋.s @2^+]8˻Ҍ/WHa%XTkl++=WւQ:=Z6cx2*.kuk=ScuD(8kik" 0VJ/ɋWgnkC8?:EGS8k~M"m.<>rDfY͹G:{TݓRtg[ x#':jFLi؂-] .Pk:طszeg~yrlç6pR.  6{opQW۞mK˲R/Hfw܈mlvj;VrK(ߚ~XS.P=SG_ h.|ݙffگwvvih-j:]m[lRБQ6:.7|O/@6Kk8"y|CN>1jNg0|_K zHR1Aç | m•k*{HF^{㥲})tF}ofڷQnlT_{+ůl$wbMP.Pug4K5%0$%X޷ lR*^6yu73H[)~],gCE4{E׼ZbY*[o+(kKKym}%qs[K+ɫ[8_u+r-q;JG֤#ʊW2rG(7y8an6ϸ8Gqou-{N xt:!ͭWvg|]yG{1W0Nc_*o^Sx+ο׀.N̳GZseݏo G$q^u] {V赥;Bb9}.z/K _F{4`.qI!bBhY9:{hʡ(*jJ?@]iyИl`Xۜ?*86:|oвZD1BQF5(h6&>JQm4zQfE%1-ۻF ү{.k!kk.)tt(b^Q)l*8(23 ׹.~Hr-0.i(W:MGٳ꺳˕cböWcm>m2!q+~\i732:R߹JjkJݜ lϛEyU>=gsS8|ܟ[xU6_g_o}w_VnJ}}]_$ќpIZb\%WB227/~YFt&Qzeg4[Z.y]!3&lz\]k[y*lĘEHF#і5u*U WI*GַJJի֋Vbk_lS?t_fNX-gzX^Fb8h9v#?g:_R}m&D]"GZR^a_ީRkEc.47 ~u;}Xlasxg?zL<.vfHm.l`+u@3kO iniNR]^/.Âߤ Rk[B,i[1,_'ȳLKx)TH_IǺV>5,3jֹQ&j$=?GHlOl*e6Yr.Wjau]F$3`yUFQD^GBX~4@IWxRn史ڮx2P׎ju|Uw)3OLcg#e*n ѷS8<]n 54Ͱ.nK6u@P$dW8qzg+ DI `Ib""S:}i[tPW Dnj9bGg⭢٠JZ]^e-g ̈2v%K aZ,T|_*J1R7_@4iWlIP&9 бRPDe6 !t\PAUL"+6(gJwɪdLNU?6#|bJX*w|FL1ӴXyf)i,dnXLe6 -fJ~ƩK!(詷8쮱բ4{}8}eV9O;-icI K7l'4yhyջ(.>g n34Zb'޻1/Ne^G;z<)ZO_osњlRuF[VWLC<R3'N޳~~jy]kJލoOri00?E&xZO;'ټky'*@_r\x+IhsWwSv a۔Ug$cec+eg|I歝@v>320v&bǼ<{{+7Vew+eI}E$OU86'TyܳkFv];scLG6|2ceO0'MH=K83UV#_Q{{cc03HL)Dy=䳽Ve縒Maq2^[&-}F:bJ#ڶ4~*[Ixsqh9z<~4Ƭoex7G[r[|Jm׶r5mhCoQyOګ#d[/ͳZ] XTUjV|?~V1.K4>C| GmG  }[{x'}ֹیQExre&O~vvyhs? <&n#[ɺ_";^ײms/WC7 ߢga?GՊŤwz=/?+3L\s Ǿ<*۔ $jylԗiHy`OE"fuJ_Qq"qaX9s\LodɬC_C0ƺ oDe;]I_=8f`l1=5w<ҟ=p>{:Yx]>.Џݐ7|I_KO6qfq^n CN3-'>}H|g|Ɲа|xlz>] z]>|10u]πίS~~Ja~1Sͳ|xRHsO2?}Si6mq_Sƈ6%By=ƨ5>[īw(_e"jVkbFG=V*ZUM![gaƔ0CiV3?m[ LjM٣K}RJ+DN.7^ײǹ i];s!;~G]6^]hwܶ筘֢Y|ı(I]nsZݱ=Be%w1~D"ˎkkf"Q\[G\M4ڪߝ)4-alGF 5o-l}9QlGW9lhm;_gB<ԟwg{ȽKc|]>_R.O掚] 쵓w#{:~-gzy8j3 [^ Tr|- ]7u_]Jy|h"妶 jwT0^ vixM@j ia`n++4]b˫tppkDjkzz15h[R#bI7UIpYaX_$.jz8]خGF9yl(|$Q=ן naLJ}r[e NdiR&Z6lݒ:OP%Xt^{U1Qg3oc1cHَizk^UoO;Ԯ2Q8 FFoe!c2[ }Y=,j{:+ >ϧ&tyj p483zxALJ]ف`č0&!NKV[geI8/\._(.068,PNzsZ^BL!Tgwg5lIJ${X٠"K۳̺U#5lۤĕկ4?U쏮7/wY#O\n,O('5ιH緊ѯ{Ee_=ЈkB#lgԯg`_ӕ2; Lmq60t=GڏwO|cOƒmpWt_篍rۿ{j uͩ gֶ< }UU׮oKrǙJ/Kl`vrqʲLf&@RխTD@"l2.F/YNaC֯^%^͟Veն8[xuM_}-Kt a!*u=2o \e~=&h~Gcnyt>2-6*5ۚiFS{C#%b{˝cҝزZ&+пsᏇsL AzFSk,߻9M~tԿ_jn~g+YVU|}ԁ6,Ks7&WAohy`&F|TD=e냲3jc5 Z`PNsa=_ٺ)zJY[)I$. V1_m{p:tJ͢2@?hzJ[d~-1 0>J?-n_( w]yu6(EZbt/wSh3 *0v]?BŎ^ХpIKIzpyE^V/HR,Lў؀#/9y6@Ayky{0nE:|;b3E/{k3`!~m]yu6(EZbt/wSǃBM?ͷEi^%nɰz}ub\k^ߡNՄe+U(FõD}l\eBqRSop;BRGvx3z@2꓋sZ\JG*#O<) XĝN@؇>ϥXE`ЍSBq{ǸFI|1,ix^hY VcRX*]yc̪x & J8B-"^ZRb.cC2B͂cQ/bnq"5.:>ϟjP̀WY8 Tg@u~|ٽ-i䉅F5z"$:+e$U` ݭ 4ۯ椕OS$f2Fj֚x7lFY<+gt}T((F۾ԼdvUhF/x=#yĞ#3Leb'y1CѶN'o Gm~_,O s3 claD ]? s3P7β?V(ꇶ<>s26#t_UyZWylXźnF/=RA}(X.};,ccmF'mDj*Vں|ow1E;@c@ilEuO@Kt}!Zgk=y̘Α |mq t܄ U|rz?%wz^q/7%`Мj~U#fa\RFGBK1ZForH[P~KU+RɖoYF~P-.74TQz}T$*.q[qYKAX #كyccE> DCi[o tK;.?)rұ̢m~c) jހl4t<]B0-?XTmʓ=ͨ`aƈ+)8W ,OE"[b"lPQe4ʜ /'& !Ktt05 m?]8Y=gnzlN%Wi>kJ%{CߏxRT8JFPkL`[>~m1V&5ʭWm lӫ?O8+F[9xd{qp*_`RjVzڥ. cK^+cf82l֊G[GA.cs~ ' L/ͷjM:jFǠ+^qfQM'=XZ_:|9#{~j_`;;>,`s&| FM~TXa, *7 _P`KZ(kvs75Z縵 -5 ZfϏRtvy?~{I/8yU~1ϝfoYII>2sq#K}^?[+$0>+4ϊbWq:L.lq,9P"Q[Z&ΐjۂ!vRf=d&/y+a3?#>Z+#Je(9NW m;EvLaҟcvN;ڕߣ y]hڡsO.wD;4lo9*=o0UmO [r9U$E㻪ʂequn?*_Puv{@zŠ=V|Zo%s ~sr^@6Ӹ4w>"1x%'i|WH6hn4VR[xƲgG T["w8{ fqb=gJW'J/}; S13)]`I=b}=\ZB3c׭u`XPw>o7XomRemNoC2SXLn_UT;[~ u=JK飬 y5v =o iUQg龷ZiJQt/_#K3yvXoKki\G}qʵڻsg~a{r\wq.wZD"-0?jƺp(]-S{8f BS{ڪ/6"\l>eck{,W?-YH(dxR2%ě_ŗ__/[;ϳjxd:$3n֋#U`n~;ضc%yIɈa;>"ݜOmDS޷,Nǔ3H*>Cƶ\&53kVys^jΏC l-o3cBжIq8QvVѩ$zݫ@7SəO?fCPi}gC*OJ>S4lJО9;'qpTٛee3&ڏkbSQ:Ҟ_y*gMȎXzI@l& jZ7KQYrϷL4U` X\#U#kڶv^mYhVb \ WZ#S;_boDZsu$>_JQxm9܈]3r%;BUc\A=ltӐsX86?b $9"6#umXKB(#O[E ʱ䦚llf`S4uK1#f١WS99-qܥc-KHn!Wey)3K<>A&=BQN 8R0v`F:\U,rW09 5{<xW1xqIءWzպ'@q\v(uCBQaXn4m RA[CAZ[ı]]hTvPDIj|*hF {bЩ1c>t):)&OMuD[|`YV8)Y8g1h]d1\[⫘s#kd쥙qܲ3{BB~f2_v;k-;CP1rʎK2ZTOҤG{soi^* RqadQjj0a{Gue_o5r4#`s}HdƏ){Sc@FqW[z/8 s:fш`\W5s5lEâ/]X W !Wǐ+kRTlpR:)0Sm+(#811ode/_7Wۯer`<8XنHQ8S+$}m~z88Y[Njʝ 'SYm֖#<]t1=;"PTGj/ZY"n|LJ1>*G]U 'SYm֖sNl(ͪ 0 ۚhqh"4C;>.YdlY9sR^-emaӧT;h5 EVĩ<^} 8k{$:0="Ev3\s[jYǎ<+!5{"SՑV2͔O/ΈE.~o(89m kn5WHXY-;]8? tJHZt6`!bG?cG+۵2?OI{Lnjl -34/ŒoǬQ^O m?,aW?>8 ?}="ѫ}飂cg@*~@:^vn۷K};/zǾa}Y+CP;1zv4rOf_g;s {Sen5 9e1jĽYPQ\VȼøI <ܫ2A~(JЍ}#͗K.c\׶QR^ `‘Tvol sy-tU~gŸGK(l}cṣ.z_NiƖԮ=ofmm7yhhjǗs0Z}Ke5Xr7B(c20ay|s_n X3r>s7'KwkX ׁ UroiW={kƫX3r:p]020a L(%o]T&#m闷cO;<%T'sFJ-KFVO31JtXDtyni6,ml[5<޲W~ݶJ >CW C3 뷋~ ev;l뗷cOvc~8 @3u`\¼~đljg#k:ɉeͳfyg~7?cMBפ5^?GƵ/yWͅ0*kA)qn] q?~£_,k>*1!yUXsDkl,1WS8fK5@=S?k4]acF㊑ͳy9FDz v|*)%ߎYj;!CAn>$G YFq׊*؈ٮTgGc*00[J)=6sucߴU鵭]eU2`˹z8|%~8m3Op5 Y.e[oOy93=b;ݫ>ﹽ:#e;^'f ?~xߪ.O jU"ዏZ/z͗P_T 0K, xf Y71H‹VNL]\f?lY =Uf&pj;9eؽHUs"GZ`-ZNt,dxiO7$\Z55I!ڮ|Y~1y**ud30˪b 90KaF`T ^!+MY0/om۳R?Oy*0O)l7œ@#dQ{dz,,k3]X[[KA Rg lX?$ YaG9_lo-IxA_Z@8n6;S<231zD?bk@Xh,ۘzT3bO0YZ1~. ðah:K jq2)lQdjoۇ응Q,W+emYF]KEqͳ4s%/WaYn>92 'ҽJ$!Dݏ,J~y'Xm%ocK-ѯ~BtPVԙz@ۄ[Oh'G>* {' I{t-R!)$= 'v%錵*j?Qr+_ePJ ۀrk^)Ad)$%=MbTӻ6cѢLYZkYHf%y5l媲ZVj+UKWh_Ʃh+zh}W.hշHMnsc+@>;_uX?3_ub6e~zEhv큱~=P$a]M~9Z}B K߫]_f/O!ܾat~-c6%W@_SPjzF1N09+1s{q}TC2/ʚsXi?-,ss0#.oF[F#%~^͍$8#h%Mҷ_5_*Pg+^eU-Te}` ]*&(J*a-EǞD,<T6[[gka٭=:m*Qsnw9NoPTB#-J1,MJsgT5}RSrfYe#F )݊X1)k]U`j7˥Zԋ/8'j1=֛!-Ϡ#jbe_Qkh3'#?DHL17Wwb-z!#<-^H AmlbǔkŊ1dۊ7bxQ9C9zV(/q?Ztck p_/%!S{,V=jN[AHSZj< cUydQ> :*cDsZC1|-RYؘƑ/*[kϙV?. 0Zڹ+UT)Y~Ja y1H^K#SEX[m*Qsnwsߒ$مO=hK9VBk&3*>));55ͳ+z^s 4vn죯֢^ŋpO%H/ tOOsJo>-Ϡ#j6/ ac^1{ՈYzA՝Xs}({W(֩Y=zآ*)kŊ1df3mEv1 RS<!㵳Wߥvη௴|{~qOQnhqw/+5 az9mq Y>Zmmڃq}}z2 uuO=8(-r.Ex1KôXiDŽalۄ*pU ~~8+z*T۝fylb|#]k\0sSIU&*ʏW!EA]?MQnd4ƟFix=JDPK-cuP'0`ռ}8j1[VHIE"-)4+ˋyX {Z f⨒1Uj ,ߠ:ff=,<.؝^,2":LKabv1Ub)|K;)NED2X :4-v9ޙ35V[3G5f <3rwhR;6J RQ|ΒkzbU:+yD 1K9Ո47")Rܘl+gp.d1VQ92bnhM*QcA夽LoE[g?~>Ӷ),&Dcxl_k GecYVWꏒehGU*ەe_ZLjsRr{ђyn#vYP_ݑvu֢bc[}:3r&܋@57tAWZ.Yy٠esYߦbVNTsT*Q-OgT fLp \^K4 /y,/KSpja~B\s[!;x#g{kUp@4R*Y0')mA~;ZY~nӢ_e`k/p- 3u\U*( 펴SY-EƶK4УqqP2kq,??7e^@7_|% #g|cqr&l\@Qa**xLoԲN/t 0qcyKҤuqgqU"F*x=#Z3O ,V)!7,ziqn /ϑ&gF1foڹ{7Bc+Bzw~w85M$i ~q/ݎ}EߩsNz!Q7C.ž-(jn-s`ǣanQѶ-.RUb ޚuQN );0MmTZk7zR[6,9mefQ=T<ؽ1^J4Ok}|#Mb%%ˍkm·\[𼽀 4°N?>6eU2|mU,,2~д`<*׾ΚRy툶%KYYvqWAb!#5Ȟ,_aRQ`BɜeGO Ї*%޸i8I_!eؑ(h/26AKIX̲2Nj)tӴmnw"BYϬRRH Tw`_#}ГW$QR\ɾjl>iukYVI-vB_~u~h<sv<5nThbgsFXIl|voxkTDCLV:}%iGK;>8_H]bﭢyb%/иX>O(m'E= XYt10u]8''?,{ Wڅ6 ^au͟oO}y{4E߆Qonwqo놹yy_7Hٵv7g5cniR=/Z䏖]+^{}ѫdn%cQs ,\)9Y7ꋗ>WIka}K5ϓfyQi70wc4CU B5M-w7`kOX,=_|ZA!K_W*dKD[ 8t"Ď|0s;S=!w dii{zUso^٥hKbmȲ 4w؇{2MJRiߗ/ӎ})^'\SriҖk5VZg&4;3SL4(h*CwVkYfͣj-@?QQ)9RݭWlv,66f)oCsh[/(tjQ>^ ίh=*XHZj+M[xhZ3*(-4uq+lkqEh^iIU:C,Z4XMJ+y_VJnO k,MqE<f8Z䯏M:-*LO9k_wEKʺ6X}Tt6+ٹ =G-7hdkeX?:6ݤ?5pvׯ5Z_NjY[{*oSw^7=۶_~QnO߄v?ÕWϕ:l8-ÒuB>95RS5L=_e^[\Zk 'y\CykyЖ~""$w|F{h:2+b՟[)(|rr2O-.?#ϊ}݊@wi{+zk̑JRRTlhi Ӟ/xOܙ6'O{o #Q/7HNe8Brr--Y*ֆuJO8W-s#Ԟc,f׊.aiv-׮ƞbT)]A++'tvZ)i(Ithgu:߳|]QV"S>aZA\qu@^IKQIҚX;g/!mو#Os-VcXf֙)c}_ۯ|-ՌH1Лy s;[ۉ؁ѤK~Ckz%FVyϜ1|Fh-Ie%1Rl{3LOkY̵xfVlb^燭F? KYhESeQ ̡NWgzSիJ! Q֮6ؼf`|UVoPW&Z:z1NyǙꖎWT( ha\8I)ÑQ q0C#ULho8Rh 'f.Y1QgY4RkOe/7a/ئk:^?㾙(ޣñ]fLi߲~Mv}j207< *0+m=~ Ѯ*Pﷲ cU7iâc|N}JiS^2mžj-c+7{gz3eey 4XyKn,);B9{Oj[p(h*za2\Q|NoymAvxoH^n3r)iv><~ei7S;v^ĬW/0~ 6Elz?(7 4a }~f1eyݺ@U~3ZS & yR b^"֨%h˱d=BP=v8Ԙ?C+$gҨlg|`eTW0+SbnШbEZqN˱K:ޒ10se!V6zv;j-9mJiig|4Z{j/ aZe$}e?#՘l0 Ҙ1ZClwO2~$ VvH03GL96/9oa(Q;OYEi8_*;G8p h IV# ѣ<\'?K>Ud3åv-ϗ 6ѣs?6'ǚfnzIhe\Ӆz|3m=/RղEֳ(ؗQ njq.O#O &uOe9mu)65זql)ßXڪn{,\QfwͰ|S޶sq'en"?2P߶--{tskՕ92k_wǤ6ߛk?Vf[;5+uf{wC9FZ>Mߣ1j7{[@CB -8D07v3nfɯ&ׄJzp9s)J75Q/x1ʕNߣvϽ&P~l 6KY{dl)[y#\3$͸iL?DoW"C?wq:s>L/O6K/Odӆ'~Ӡ,R9uD xYoN>?`%^N2 ~Ƅ= >T(=`͖22ib*=7ys9+tZ1|h#YC#og>`k^RRf$zNM?~MGEq|Ao^(o`׸Vst#͛RztR/U.,JtΓ]1ؒtsxyP{#=K()g ]<{/Є^ep>s>etÉdBkI/f#jPH _},9MyA>(g5ꙛ9/S'9/e5ke*{\u*GIGuo9nļlmp-ϐ{n껯- ,S{B(o:(bڵyNbf5xu^K%R"B^a9R*y_@Oy5?f+gp⑏20s? !,;5g@-bV[fuI= |c+ahenX@ W`9 _.o*e3Wk(Ԇ[XnrqWEjLW{ʀ2*< s2^5PUXUTWUr^e`\(oUl9WP2OTW ]<2^q*PUXUT *PgxypC1ז/,M M;?ǥ'tl:Pw1[-3}BvfrՁ@~%Ձv ]GUn/zՁ:r:]u >Ձ!x ,?!9 ?Mg1VGŸ&BE]|z7|;yܶ:S8B;,D+WM`a@ ڿ )QJGk2z#al=jI:*CFt(Z<1&1xT3BEt:";+b0f _;xPߪWA 0Vh4OULY0"s3:HXQyT'^3~T^cǔ;~g2c]{Wcdq)gWlų ]<27 5Ch{s]{`[U aY\^@y\{d/7ЭEĹ`Q)GWAM{X2,8kY*A]T0hSrq/X&УXÌ!YR5ցn`IgEKWstʱXf{B[b4ֈGsx6@ !WfGPBUSז9JU(ͪ#,cKY*lbMS޲%bk^jN[5Xn~׳5Jx0۷^3<;ҳ\dF8Rk)420Y_2mKA#jM?ue;e~{д}Bm }׮e`nZ)E .jf:W5lcYK*>,9m$?쫬|-(eΫ +2ϐ{֬n%+ Q4Lon;f|D^Ѩwu1'>^#9WEG;UJ*_._Z!xjQ[Ue>0Wy}Jh< \p֒|dysߦŸ:pzy0,Z/ 'o-PUl_)Ml-h/#<׬ZS"GW/ O`|e^sɞ>Gׂ{<6{<_}ӽcj5'{ ݵ5U¬ ݬ~r̀_m}aCT;juK#6ý W قvUU*`7C37Ule[lsT?Z=GOn9ԧ*[_(*w^oMe}g>nu:V%oVC˫1h6Q]J^ѾD~Zy迪CB9~?%fe |N˨i%(FU ߞ4/iK_;(ΨmC`G蹶h/p|xw;_ϪZ)ϕsr_5`vcUеf.g/PʍZ4Ԡ^Ԃk/PؾwKߌ|F%*PBn+@gTU*uѢ|vmnxT~6=ck|\?c3|iA $2S4-*LP>ΣkLˈ5W>bl Xฅ`,k x#f3#FY٠mR(kюT؂TB<C)7!7_+/];]ׇ)ЍEŢSY+ }J@XR ?T$[_*SvZXis!i|-bK[G owKۭU`):2F}TUVgRy_KϹ,7SFH)SͬLmEKHO *b]=bZ}β/7_ _LiT; FFm\{?7ޠJkS٢t՞W:uvSnlV Nm[%[-xx\o\F[y_lHh| 0E3w,ׇm:uWI2K,zNo?Vl]ӻߥԼ=,-"pjKnT5\[5Nͩ@5%]!`VˢrtUrR:k[X9+)kZrSCczLs6&UZs^x7SɎ 4aA~>aY޷1W8h{T@"f̀%v&A6-s\BTK3 Wˢ1+20oeejՓ`)xk`ٜ>#oKQ5\[/ m ܯ=\zn&wV+v|g}s:{ؗ^om>=29+rvPZayMP8.={>,W<3z礖2D *0̋O~1][" %5Aa97=yϙm!6T%f9VYYBٞY 3y0>)3rVR^%T]l&ڥ:Fyܥ,dXжwׄe臹;6WrJYnaoo8,C߯e`Cn5C nel囜=~mgm22ꌥ+*w4 ~2vj=jXgRvx.G jy.C? uOk#YܺzruMHk*C5!i[ q&MnJukBM^Y-)~Ae6gȇ+%{\֌Vك3j!w63)vRy=~3TӼn)WE!髸wʻP>dh_k3Q<2@:2f98Xߔ oSckbGe:&yu]/ KX. )#^Ed^[ؿml;ϯ[R̭6nW> rsla/B%},-wL'<_`*ŤN?:Kn[xlӽfNҞ}LM0>3pU sU t~OunTWU C 5.$wtYdPN%eXc[mBǞyδgN6 TM?faZiҖ]kh^"gB- kB6Cmf霗"9L9oKb<(\m=6agn srvU[6,}cg>cǨYL|OK>>^XgfA[#Mem~a]ao>+Je뜀Ee*]W٭\ %^ crl_*=L{vKc35#^`O ϔ4kt.TǏ!ö*ۄ@7>@OІ h7*ͶUMف[vT>'c٥b坭\|Ol]**5z20Ķv:]Ӫę2VҕWh s2ˀYݏYX̟["=g@ce`ZZ~2>47Y^Vbu~]9=vZ)X(m.pva൚v>J?ޢu ,sǝB^7Ҧ/ķNlx[KSF꼎|Kjz̶:jDX7E:DmK/mxwO;g}Ʊ%i%Vy1VT~v/Nw9N߆u^b#׃jL&ϗcܖ{#/? '(qFKb?.06M+Ghk}2ꏩG#=.ngX_?B<4<$~g/ȵ6oU^%Ӿv akVq qem] i[Eǭ|S"r3vSj<b\Rq?~y_:0 "?6ǖy[RQ†wH?оj`G11}u1[bn}:k:V߭;9Ȭ*yK= ɿ9+؏Մᝀg5~ؙoDX*-~wR\R{b:DzN*aծ2@57I^ U2i|V?`o t 4>nD+?5!h^jTGK+IrBb1*^@.%k{A+ /ZӚjqN[C{/[~ͱEa2J֑ti`d--͛1rG$?Lm>6蚮~. dZb^UߎȾ1(eţ.Mn;K?cvmѢtg9:VJ49\ˤJ:U`/ 7WoKrz|!{be䥔Qi4l GS~Y1YvcO2g'ʱy漗a o_/?9E˔;gL=ϐwa߶jx4G vUOlͯ-AnnYvək7J-W'¸t]Xylj!W*EvHa :0~#Xùը~|w,wBخ6L_U?}o| ~*#~wOӧS~zRUrTo~zQQOOHX2?ͺO <;2(ڊvM<{R(;}ڑΠc~9?;e3SѨXRr>^Jaq8/F2'؛)+"h&]4ߟfwlcj4*d[Em ]I _f>VF?;#ZTmݿ8sUm ]*P.&b{<:%{ne`q vSb6xS=Fz&l)Ӌ1Τn!pPx͡K b*_HN)e_}h ϡF=!'KmV|m6H'JftU?-n([}[u2!ӺY`m47VMz&?M/9S?4miQr4Sv?=E;=[Ÿf-pvM 94pn0(KNc?Fe\ϧ6hSE:zl#v78+q mPqƾ# ;U(|W~^oԶkXe{S޳]hz5{r\fDuDѽi ]LyS̞%)56FVyDZPdQ60T.!yWy#X{ f,ʇ60FN;{5TX[M3} BkV`fx.t}B&~eN§p8=>ŢYweZv50/C{=~J{F2VBϻ`apϴY'w|^o^en^Zko7F&ݺv%==MO#g)*n?hOpz6N 5qN5aySn5(782=OƖ֫M/Ǡ GԖd3N'K5Jg);q,f1ƕS[~b;mL]MEa"JTVrĬoMVqzPfm2%sxF:j4cHf6 4bGk]#V1g/ՐU`re^4 ZZ^dcUtXVW7Wo]T'EƳ$!zcaϧvlre;6^iUxO$9(04v0,O*E՜~RdV8f4LW}ݫ@/S2ᣛv^j۫}S?_~D]uWxc_%47|9<60Mo |yJ]#gǥ .y.͸¢,nBA/x|V/Ғ (kΞ.lŇEH0gB9T3gr-]\!c-q.Q?0jucT1±l@f8U[a?wf9R c̋?nЬ:6 ͵~Rll}lRqƹcgG{vH>-ұ.(i\g3z?`zqh²i7L^pߎxYϿMَ-#P;B}U?34(H׾,>@c9]ZnwUjS}e{]]b=V)ߗGn1RCLC߮U`ߞܞ*gd9kͻqF*p7_Qs"I8d)k~չ窡Har0~k/pO i_k/pN^{i{6 ?>3_ ;llbo-g$guk~֭MTt2%5lk_o_y:~LGzދɑ[(}78nOMmBy?!]W1{f;cKxnߛ>>Cm S1o[MO_8\9;ծvf;ġ4 m<*t~^Uc,s8l˺"<.E*7$!xjdGis9J{s h[2#lv($uYcX:2Esdlc( mG U1KDCToQ?3 M4}h3 (gQtPmɹ9KE{>90}RoOޫe~ϝSɦ}*cަSll9wG-m_.2/Me`!d?8>Fkku>tUR7zjW;=~8.Z~hk[^s-=eZ:s[{ǡYYohv sBB'7y""K53;iK(_C83 hg._~~BsE<& A#?-Ne=?nkkbfx FIngNYL!Xk4 97xܯAF돳Y(aړba< Աcki{P uӎ5)8g5!x,iQ݇Êݼ,keo?Uoi pxV*`71JQU@edpUݫajy*}X^F!ob.zDϔe? Lڱ}]n'l&Jrbij I.҅ڠm#z ..zk-xQ%qdV3UڃzeǁIWMTcpF-718B領fF716TD(ϳʯvV͡Q( _?U`Yn_3=M)O:b-1G5`QSX6Bٶ"7_iSh;g@Bj~svl:[Xz1|-krRZsi#bek씷2>xQE$xOk~=޸6<{[Ux-иb"%Ju㘯PI-sVH$h~XOβXIjf{ZwM|hm5t1)}OlB6꼎3jz%qkfU%+.Ke/sgϳʯv1c"lm1ɱm~Ze`SB5rPd^iٖXJ͍륝-R|<,WYkTeQknO{`c'b+ 5QiŨK4 CYY3}Ihf=< ]3c_RrwxgNSxPZΆ>Zeu)B TC=frNzTnoS5mښ]&Tĸ5C^ Br6g.VE|̑t-/M>X89A%Y!aehckgKxF 88L"+n\G[|?z[11ظUށbLǶ4J[iha)&v⾪bѳ-2;#x}ׯ!=9cu+=VkHEm,hL((aYA:* //r)7ׁiFXf`cfYC̆L1fH*@cs(CJ&ǰYEcak=[|g2o/2zmYK57~Wc Ȳ| 1^6JsA/ޚdu h>0t<sg]ژebW2c~QT/l-ksh9F9sOA91kk=U8k,vkZ ֋J$%9< z"&s$w ~,ҘG]l$h,d[Eׅ'ƂBw]0_xԓ'`qerܽv}\{W؂:bf:+_#0L]sA }=,ZT,Y*SyΛɸ|%{GN2 D4w\P:_1ZRt֕ζ2V&wѸ*0e`o -_ C]ףZyGq )/Ogr rtq8_,^g ͿyoU`jSWUX UqT8 l*O \?@\LhiMDŽdlUhux\o<ɿe5mכRקϻ$Ԉ5Pj=j>IPX|M m7ov4s^c_Z圽Չbay❁f\>[XП;<ߡy#V杏8~CLea~lk~,?PpYUJj߂ldu.u9rFea!vnE7ˏvt4:oUZ̓B/Jm`c9gܪ@7q;L0q1(*>*H0-߮\{58bzbh?fNgV%(I۲Б쑳&ϙq;ӓGқ,U}hw #TGoXK#*-l#km bpqۊ! vn>}_~CfEQ7|Zϥqk9Y>}zrc<Fl-m|t5\?A,XavC{,,4*ݭ L֗U`qc0:;C@[篏kяxFPh><6GI}ٷɸ <&T[f{Zbm5^vY[wHa,PV*M R|jV&"'ZQU:m;/51syʡNR*)ZK;ІȻYgV+%5DlR,0A9ڋ8f\{gt>Sϻ`K20.__%O%HL@QdsMI 8ןQ;EIK[X:WxuWJ@340svM/i ί'oIhOǏMs;/*d.(ߌgEpKɶkV*4LzwN` ܮ3WA;_vgKː@k7"imlK{%Ne)Z In[ BI+S0(<20@61X ^ Es0R1 = M;]gh?zFWr."_zh8V>bѶ.eMV40$Q^`Ǹ. Xxx?dڳ#HJ흽0=p?څ3-@K][8 ^"%?g gy[f1y xux*{78'k Ԁ{7 \[z~xxIS}lyO^ˋ=>*j<xx(rce Ió)%5-Y>[^hHYq@-tb6n")u K;w8&I׾\I-=ce?̶PxȹzLc)zkB>e~fs|2Y4_@ kB{:o@~]j)@\weIͰ,޿]aorNVX`[:ߒ'%ϱy򲔘 xd|F.1䲸fd2t5N po=G}N"cld7Dֵ]5z$2WkA)80NܖL[)_+TQbG0%|yfŢ|+˴4Η׏8L6[C7"P2Wc\XuXDW\m;VD>>[(E<};=~myxYhU{ĭ M;ur0N кв p}liLPZ0|%Λ!F'Wjš 6AB 3Cm|D-kM2/_Z,ke͢yaKc nXHՅӇXYNv<xk/YVF }h3MpB(oXKYR ݐqgGs5bMkCȗCZ=7dNՏž5r{$^Y۟˘{GOx90`ژF[2+Y:p=SˍgL}8<> )VD_P~oDe]fܫeWV2bPL~7+[#iF%Qɂi,d81Qk{Z.ʐ9 'Qw}Ky9Vsx3quv9pBKZgn웯;h-3Y~>k=Vn9Qݽʔk5j()K%/ǜS+kMAҵ~'b7~ת˖#m;]|GR9MK 7m\PabQ0'"3혖%i_"q\|9R^}znOOnGh{>WAԳGvaF5 LِEs/Ф> 20McO< )Uv[)ky彀3KZͩmz^`-,x9vl}.Vڏݶܓp.eg1j?'7]3ݽ ,5.`T.C;86hJ8j[mM kGP9o r;/nt4sԎ_ҴA7~[]\oxJZn#JjgvY0k?%k_+E1 ZڳOyo.2qM4;+|CΠ')]1o=3mvmԪr|sD_^?Ǝʑ|khyqs.g^ƱUKH}cO]Ekimz؏xY~v3]mk.9εv߯jwǎgnj|/mb~LlyŭEa?@TPY!T:zM銏B'8isc~y)8rtзm#yǹġl]V0p[(|6zFcTJ Oy4K~Ltc;v_>I/ǡöV\e>7~y(ަhW6yb1ͩ%KxD+Ը?aKXkX1h4f`L֭Vݯ sۯ7ͥ|}PZxQ#V_[|= 덭rܿJb9*0t|:tuwQ͊ ?]ɿL_+=Ȕ(X)x2GV\oPk[Y˭1@حyP2%T҇qk]!Q0+~kD _ʹVaHW#:z,Cc[[/l~rqՁIG}|u+U־dzJc}v4 Dذ:9;{8J+)t;ʤ]D.XXBAiw>(:m麻Ax>[f=*_<4˴iLhޝbzQRy-gJ?pR gﻁcM]~JRɝ hKĦ4QRx^n;ՖMV1JFts*+=ҧwzK׳.>D9KaأXwUxe.g }<5$ɜcRϋiL}}ғ7W NxqKgEtWe (xk|d09( Q3d+k-b\c|"C#9"Qy7آ1JLYLJin`t]w0^ڔ2'՝w~}.:[KUcđKOȻ 0 {kuިӒc鱤nwQL5HYb=_k}zb2[{8lVFarLK?GX8??d ׋!rx@BOG o&Q'LqeS{|n#xXy@]A`t`4G#.IkmvWRjk~xU´R.ULtX֚*baɴ~SBLNgr[V`Ἱ:k/G-h}IKYHGܴ-,C}f5~[khf(u`Z3=V78.!)s@n:V=ki{u~Ӓ0Yi v &UP9jUeU "] I4;+ެ-C&;Vv_c&iPۥ̗ -Fm\j܏,[{•Q3-d,md/ifgc%)* ښk E9 J[fAO^@eNoǚib̓sf1lȐ_K",Jw&z|OZawb@h"`zUs*"v1P|}\/vcT(>BmbFh_\lE뱝-25cS}nKɋr6ίV27^@ Gl/Se!w)jaeȹb?2z^iS1LD|u.C%I;܋[ ]l(DUPPSRfQHY)MFi9VS%ǜY30Ź">;…Q8>FzʙcxHeU`ۥP>|EG(l_c=룲Sqz(iL½Q/=FFVc<#iY Ӥ>kTɔe|tۧk63d9o =_V/O]3|<_ɱ|ϔgu5/]+mFθ_JK?O*07%.(_* z2/Ж_@㗑lPgm>C/ҭ!U20Kx@_*XKc%g3|k+;.Srkً3 QuG+0֧X&ʩlf)ZorXZ_&n}c,bSKz"bӾ>Qރr_U`)mR){ d̲e}=^,"=<[HM c|gsf<\__&OIW˧},RN){x(ܓeْQŘ*ju|X}d~pl.vXg߲Zaec x)ShOTHt5*% *G*WF-VCGzvJU>2<Q~2Q_1uǸiɟw Mvi?{ ,l\{]L+:js½vH}֗,ͼBW5q{*-c8Y{)zҳfH6!hєqaT$WGg:Es+<.sm0(<|r!7|hb0x)^dkUR5*44gϊ2m,uꁘϨGWgj8sʾo[{%-QgJ2v-ےf];˖+ +":yżۮ5,Y-=+2C +Z5o&>ޅ8Y8q`bvMJh]; 5eV\vN֛uu-'%KEn\2m<,$Ɠ rVX],w#ܪh[xV^u1ڶM}Ru80p5LyX07⮢c86,;应a.?;:TU^Frm6~x67jOyW(0:,:}XO֎k~fW)[Si*̥嘡ŕJE{Ŏ; xrG8 +JB̜ku{x|pk%KB,; ̋U^Ũ|um9n-h=kWn_֟>RkjKôW<>]PTcMh<?Z_Z\yZ!U}CūOCZa19|Mf+K:OHYOvfd$+Ko%]=,ؑM#,Aյ(䉫ֶIi-+ j}Ώ}/|kuUxecmimg-Q(Ҏ}J25㒮_#%;v%IֱafϏ LeW Ekz 1U(yGǁ3v[,9*w=e< M2rC̫,{1:t%Μ_otZVq1/l-TgkNte|t76\?A̶;k72 㦌lvw.}eҗІU9v[4ܘ&nm-1 trZmlsoAZ|nnI9('TEVv `Es|߲ss:/jj8ۘD8eeطKbye)Y6PBGKQ>|z E9(<*07]/ӵ ,iJ; (sk)i{拈ɨX: s#W|(!GQOfI9Vchy AY3p=?[chcX_`+'-zYs#L$T4JQfq)J{K NXtpECcX"fSxmuZ5I/^W{nAu<{(Xb܏D^В{o_~zlI<3**U@W2-&cDӫ@~nҵi)ͮZx${S,"NX.,5:Dl~cC|(bSr[m.ҶE{=%h)4A;n/>U`VGVU]Y ( 4K,*-}/`_HETr\Wċqf+Qc^DYf%usʳYŗY49 $hi9yKAUf:7YA`zە^XKsrnJ&c viS>)yޅ; 4_܀q+@\dsҒٌ[*KG82OxcuJ"HGzQP)z$* bVx^BHqژc#3ELy)?BXe#tŇE+GR-I|[J[-3}/niqqբ 0πG< ^ (#07c_,(=rDOZUrGs+?@leyW]u3_7SSWTkr**_Q"g\#:GLɄUʆT,EE cO`60:;i,UF,VfCCYy8t6vW/lQ֖6}n jKxݦ>~g蔪2CY1˼-㲫^m=\vizMhSj>c>9v2p{uDIWZJ+o`U#` es3LE^D[}5^QQSS+񵚵ԵJFFUmV],pFݽy: TK7*v꿾R.W+LΡцG.K~Jփ׍\++ Gbg.ZKlXqGzC#kcY,5vkɕ-qf =_[GsAB4006]IV䍲1|s-ko%F~q5ǁq+5QDʛ̱o4<}s504 xvSo'%ͫɣy-)Ҫ)5]5zLL lg>֘TL.^g}s|>;(uX`NLؙ^]>]Žzݦ>8m*=J:E}*il#Et}Tʩ+"g(Y_ifZ>2n^wX+!2"^ Z˩穲P>ψ&tI)#1<(ԅ /q"xxRj5#ߕ/ F|@D VNG=. irx>?5㙼~xEg mso-zgZeՋ{R?-u;]f11)4͸e;H뷅1^^{vHؿr۲{ &l۹Q޺LX/o2Ad{|5dn|Lz<\~_/lD𘳏&k~F"څɛ?luJL'+{x14<3Cr.iK[Iᯭ7pY0iLoggVXc[)/\n\g}WZIr}8M=F)ʇy$CcWG!b .+o53H{(44|vlO ( 􋭲ծ)A/'9LejU VQzfDFEǰ(}I[0&Y$bFˡqݰtK}|}`H"[2+k9{$]R ǿ:ŎSBbR֦depf53T6|Cb)0Eײp. c9ŚB@*گsUJ21 J+BBO d ʷ{:Q[;=hܷ،Zˋ?=MB!]9W<֞`M/ɬR/Ҩk1t.i+9%$xDTsKzn5j fglbWTK<>R[R%ۓآ򂒕ϷpJw]ZiidȹzT[h]s-\I=Ox(eЎsՎƴuYzɷ:nʅr!Ke[.#\m88:JƧ Rqpxq!VgWI`Ҳ3[6v=2LXeb{8eaq{'z6 J*Ve{WK\\UiW*ꉾ_#wsڹ*q 4 o.6Aڇm]3w^O9KmmcccqRӽ=6oEd ẑ}Q^tͦ} SMKM |PU ?5!SϏ9SD< 6I,5?b:'=K=x+4ckSvL}3O|l),X)г>m_@;]b9?,mLuW_ԆQeʮ8F<+qЋ(Gm6yvk#("=C#|CokZ::1eB?mk*wdԦ\h!/[Ve3ScץY';캔_ϲޫחdEQvqciWV~,(/Yg-(+z"G%}X,'+>JkOS=3wcsެ(#cgPE.;h>bOS{ދo]Gߖ26br,N^Zu-t<6] Vԑ然v۾u"i6CHo_g_J,_y5umw-_e"pywRRY V`wtG{ Z9Z"z-n"b= )T}Nu1Ek; Kgc3])Cr дS~xhq>^ezi<W;_qzW=9x=aˀ:vϟ5 * v-琟gD=v|1SL%V=%5;w|>9z͏3/B+Z {m{}QY УrBQ[.:Z$wgU!X[\ƕtTqZrȵ̩hK3w!m}[˃h)_MTZcݒ>(4iX>@yLr֏(klɟXol"L-HREk A>BSv^G;8 g/ ,׮{ ceU O_RoaHgo&*^`|HfU:߭q5Zr8eUGSX56r%r":{U2݁ZLdg=3;;b,Z^]-r0?f^zKƨbbW5,7{aWPfU [gc~fϖWK]H} ==JiBKh|Eb{ˎiK~TWGsF8|5e -n)<鈖^9vm"m{ڧt~ѥf`{,Gx6>N3FRܿ@-^ڞ{Jm (َc/i\򽾀_2r3$P`2ZIR*Y*pޢ%=Iݤ'Q_ ⲪCЌ5łCZYE^gKlkh;>߲e{ SKd`n 57^~^RZ^rBn/PFē޳ؐa205qn (˟ck=\bE'J{̨ L]ێM;_@O Dvj3vu@.+׌Z\k,u^/K됍XYʾuw{8+d.1e+1um*"Qǽzl$~.^2HOt 4ЯrH=[ʩQiVING;VJ|]#>Mu?RYKާiVD ;Qy^M8Seex]C]e? n*0"Z6`5q vKqg#]&[Բ-ow~;oQDGA^d ?6QS+JZcesz y ilkX_+e-ɥRV^VTdr5/QocKsޡ k8RD-\v+ͪׯ4Sy7hnv7Vo1T~uv F $MK]mS'VMctv[ނ|щgg(ͱ]n~іYmJ-TxUiٮ'\FͭK 3/1֙4-ooBrѹ_.:uS37oU"_q\ĄUmtkuVٶq֑]/w6Wʏ^׷1 {\GؙS<*%}ܪ@H}W_1fpX#WR6oW֒b!ȯE>-?mZu;,gqG{:(G֞&8T!erѾdYb X?T\Jˤ>h( _y1\Uj9o3i})=6ά~v=DzwU?~vl~4sw$~|U kӱxtzauki~4<~kTw'?Y$:J'KzYwlJ8i]~\UZ]x])6P_>kyWeΐd+}{>̣Ȕn`^>>C<0lzZyq% o[=nxh\m, j0~dj6'iNߢO|8igڡ/s?%Cyvˤ=KU#M,6z-9rJmQ#_20XS#%=jӔܷM|Vjly^U&WJO0:x1VgwMF,룜/C}Ն5~܏8Cҕrst1%z%w6ݯYTt~|n>{³(u]qF\tfkRꀪe|'GSW3#bqDbmή6}q׷u< yH5*Z6p?¸2_%]KQs*46S7Lѡ+rjyx#U;)ۏ4_5V,7k^̾KV™} 'oT[^Zkvo WUkW>+oJ7R־fVorMo/r2z khVEŗWxw/*\]V}ߖѱ) (ųNJᒢyut(Te.imFaie9lĤWѦ@pb<{HI͞,šNUj.y"[V"|:#+򊻊sCxҔ/ٯ6W,G/;m8?wZR}vlZ>E@h@3cp1/w hJpѿV?*]ʹN%+DSHxRjjEɋ(3~ڋcmhڂKLX)ֱq/Øqne`I˵ /#9br0'dj*]Iy{h2؀r+`¥Vo9Fk/1QkVIDjR~ҠF+rn+⋱ưBss̏%9\OMɖ7EZMAHn;Lqd:ɥZi 5[a~ܜf~s& ]Z,Ϗ1 yX@DtO&;]1zH".+}w# xx\4p9yy7::V3[(BV%Ci%ǀךhz<5p W0Zej0 )'@G5,Dk]K ^D)QY?}2[qY7&}#';< Ma*q2`D_hݙn.%([q@LK㿫ώ%0㱬/09LRn{Y_{46 \GuΣRj͒Q;[Їb?;vp^Jbiw^Pk:ҿl x5 @ʎ(Z?)4o?72tS2m9ފӣ.-կ&}sT7ͩ|l`IsjJn쵾^ ]"yk`o734+}Qjx7s:Iki7&dޭϹgТꕥR0]a4p= 24csb\sr(~'%f< bZ.{.$G%g`ȳ*6I)=H/BlVDQg|nb4,J籕5k<ų?.ڎ4]Xni2Os*OɽEct}U,s?brtO207˜Ұ\ {oV|]?9o-ϫ'{GBí ,|. WFU+ ^/}wv} ρ+I>,~]מ&?[0{V61τxgR*QW ku+}.c}ٓh+eΟ;ᖎYӱEH3J˹} {ô8 ھwxv*q?!6 MM(#`k.VǙmxx K݂n RjV4b]['-KVi&BI'{"*5L)k4YEuRD8IaH;kh?, [.l)b㯗˾R:eZ} x*=~ Yqoe`l}3)ቚ_4yz?8>[۟=.I,Ə=y'F~jzo)ƻ  3ǻ D$yqQh巈ͽ#E[zNmV4-i0_g<8%R_Jg"xG6Q=#QP¦G4Zgbd$5V"--@zs`H\Y,{8~u,wҶ0ݪܷ}KR#{hQ[k)Uۊj`uQz봵nR?AS>0qD˒f%clٵW졿FiS~(f֞=Kk<,?ãyvghWI\. o>yl}ͮTE]mUy1 wT[:y7rq2j$c0k)si9f2l_1˺$f>lt /LR} ZGF^`G8z$1i&Ÿណqn֋~\ucYseW~vnqH`(m-[]y%׫%gڢC7n?mfY{))noԻW&{yHt+?7ovn?#ֽ s7PcK;-{}? Ƕkv&{/=oOMӚ1E*h.ss8%}!EY2rV*VP%C, Gc|qq *0oU ||kj*1.Q۳A= Xُq\-qOWMvGg h<&𕲁-'^M,aP:eԸ1.ln*h\/kSps,qm^ɉ5uflMLbtwZkJue^Gu7ܷHb0*PN@/*r͕)D~۟ezQi"YEW~mKʢ(gXm!cܧl\XPJ&|5=#Wyv(Cj GUt uh\;z{} ]~t>#x6ᨌy5.8?44$~1KFy[x{FQ榻\T9MM)]|#c7LH^[*;/3n[r}a^J#~I(uMӌEnl^ꏀqϭ38Hk)0_A=zYNjIǺ6zG Z?~_t3L}h -<k&J6/E6_:0^˳ bQrMmicsceqG뵞h%c4f:W{L 라ZX_(aޒY u%QQ(ZR9l(_GuAoY$xZ13@ {+c#h;sms*p18|_ X)E2k=6`"5]JC<X*rrU[)F*6_*o2eF_-,NqF)IÃyis,!`m;D~{Ξd6ƜbcA9B-Om2ФuCʁzFldQ(ʲ4U em{uqb2+{ZMM'ZYخۑHmb˼}4{4t-mj3og:^^Q֟] h(ɏw. 4iVy*߯ eWD7wj7f_3=f(힏`HL֫YⰝ.IazĢW][Ȋ3V͈VSK/ӓ!c/ Ʒ׳jE)[]^yr#(?D42Ϋ,^g]K~i>k,ҐB~0b݈5=^Rl^T[[ 1`HšlQ:GRTq gdӥ[*@07`_389HW%q۳A Sif`ktvRa6UYWi;v~F]f&%6 *E[`1ħc.1>q=E5/2l)ezKp t4t_eX8qx&ڣzZ+JKSɫ-}UcB4#'Ox8{yGn?~X|+,@7N|8iqw= Cud]\U;9Ön5+f ]\ >wFQ5vO2)yFMDDz^l H 2^el-y>yUb~|O;~joUj+\Hk5qބ$LE]75c\j7M0BguGksܾc(w14}I]db[K}*JGso2,Tq۵˥-ϪAhN 8˭2?V'ϮR:85ˢ`CKSGXVY)nِg35L\\.e.Wwk3@Y(asC`c,zM9w&}=[v/}:YŪw-* O'+ ; qtmj3".Nҫx4Khmuho8&m^wޣж~ I-o"n[ Z Uˤs#CIƎz6ʢBQ jM#(Nԛ-Z9nȳRޙ2j6XM|Is_s[!bjKBCJsڮ?wػ'hq.~Xaoe`ϒW65w6e GEnضfoz.[Gys|xli*Fk6'ZmنDuQh@,SK>?QK5X>{G_r+3Z2EKz9xv(㺞|-uF/y^3jZrCNKIlްb@7/P?}YZ1C2][vyM+JR|~u9VNxk[lGuв:t5Q/&!YH'lSu-aŝ-,ʘ}~ʳ[^8P-<gh}ZW(2?gXcI1[Rsٙv|п| 9y,x)Qs#x2/txCX~6<ەvZ$QJ+9:[x[$X=JJD)%jPj^S#h) 6J>qGtrv>_w`=g|GR`w޿~)x8Get~<ڔlyn-ƭ MZf2:*DjV_p ZJgSbcYȟy G,X`lY[p=d^)&-Ck~2t+trf$nRaPZ⎟K֒#V l(gҜtDˠ.ztd8#?Ks;Z\9,ՠ6d060L|f~&}XDs=.k[pMpULGk-+(;E| S/EPW.0c')8\ԶS7g,)4^4ohҔ F5jq?{W-)kCUwocy'I{2bylu! >2j6e8B\k=/5:8gԄs(%KN?ϧGȃ89v_ L]je5Ц?ʀ42x9T~[~eǕ1ա9;-Z(/ŌkkQ)$\yD2^I{0OoҠojF{=yIO,J0b>V.$Pn}c#Y:f꩔^+?/k/pEk#GʄsΔzH|oWƔk?ɝ+2`P(]#15^"z2G($'Je89Q# .F/Pxcõa0xӞ^41#/סNmuK`ߋ@3Rirj"E()*(\Y2ŜA-]HڡqPJ;uIr݃w+wGlaI}/Ʌ !-⡊[*haڮc$1x2>̰`i#`qvR$``j.]@7U}~@̹ryOԴ'ls5=u\yUDY_.c}b,-ȝ;Dz-B^PVZ$#nKfytNs. ` 1(<!TOU\e/t',76 ϦMX~Ul0xO5ZdUO"#_aGL/C,$T4ƞ]Xzx{H1 py?4ar1 ֪>5/C`[¸`6nR/t첹.=PxrilsKW!e8K뀖ı ПKg\ކzF2Tkbk571cY [a1Ͼ#d*9aReC t^m)0\^Ap)ە(%1X),Mq #h>{y;X:]9<6Žd"aql2 ^/; Em `'LV/8~C8:GZDm#T/v"Dc-RB#yE )ۭtsRDCT~OCUeii\](SK;Z, >#`f#wԪX5yI~\7-O4t*PqVc@-vglgSkhSءHxX[_[ke,e+)*s}ͤ_Zm܍ ]C}Bn,< dx%;V܎ rJoR.9C?u:s9~ŷbpjOkEoF07 塟ǹYdn[ OH.Bk}lLN뾲@FKS%n鞱&7֟iW23Ͷ[\Zy&,%#\_E,![fqIqKoz`mCZ)/s(ޖڃZ҈a/5܏s@p Xɾ868~?{<3. ]iZ@zSk} 3>z.g;*ڵ 4MiK)'Lڎ'4YP<c(9B*YٓQgζ\Jgb<斖(g:|nz{C)wkuIb.ZE3|v1..> +kڮ8p/2H{灬sǧ[*0Cs{ٌJ{7|uscP"&/`I@Q4x 򺓯GIYvG"#"~ X{t|%ɜř!]#2Sմu@s\mpXc*=)Z^`uɳ^ \a͢1mLkӗ]HC@jܰ<斖(;(A1ӹ[iΥ@'{ =H/rVSj~4ph+eQINd^۾EEڣVm۱i)]ԃ31CO6=jxv4hu8bG7vJx/&\%/)Q'Ե ƶWңbdxf{KnoY4Ԁ#c;ZEZ,t/MdeL|Zt‚*hu[F#.G]"(MUDȖiv)'_ۼl]J\>]~<x^hE=E"jx(㾱xsN@z} ROcSh`O*6^X8Mm?\@ץG@_}[KD2(>Qb*d~O^6>ڢMi|MHkd*ݪ4\!u`ls@4GTy>o37b:Wlg^ovyФ4~3ۉ^9l/qMhj&0g∸[*LQo<ݺ'DZ-uuz{.leGK"э:/ozZ-4cݘrni@RF[oӖْ;%8xlZc0M>UX\8BBO*PƯiGq}4uO_%46];!y=G.] `B.ZrK^?CQWҵ(J0w$ ~Z ;$%pBv5ǖKkB{<sHh`9z$)h.‹F!x;Xm?>⬄G@IrDym;\="0,ASTQ s1X#9"Q,&xH YnOl ug|X8z6TVn҄SDQ=QƪKv?-c<YϏӾ܎?%Ԥ /ǦINuխ-&㟓>֯3ymd==Kc]-մmT^of)D9n7+[tOȗ*0S?B_oɃ{]Q[OgץQȆRɫILo"D;I}4FNk[5; Emut5_Lz.PGtA2BEޚ k19Oȃ-j?b(--=`,[uNJZqe3ҁ/ @ܐ, JNc`eצD!lG\oSIRG3'}"7)i4Y5=6,-eaIcY{GZ{cɐho`Y$ARKcDÖcXb,] :Gsq-ή奓}rnAYilf6c0} .'ƏV2#3ڬ.;O;d!ESآFV!' i,uY1Ndl!Έ<+ZMZŖ2ÒY؋2[Dd@bez@z3d>ۜavtrSn\fG5c^Gg^>ex/|龭ѾiىrYėk5x"KXAv+Zbw,9<lYia=`(0-ز׈|)X4CkM.$e C;Y{"ͦH:: 2MK2!/CmDھq M0|?VY˒CNbxlt>iH=Zcxmj`~f}XOw#^3M?ɈcO'>b:wG(M'j{qۻiq cj+"Fꏖ%=Ǐ(+GYkdzQ%Qj=/ c;L C7uM3wjVb gT,Q:AJ#{Z]eL?FH):9PщO4"S~ۨ=ȦS^}b+X&?a[H(F|RyS2/cbM}Pb]J2>oz,J1b ]/GvN?ցj_Qrقg|4˞>y"9,f,w0FƗjm=:ёQ=z庿'vc@ʩc+=S-EckqqB8y'tG6VYjM gs5`dJ[Y'ZZjGPC@[?hj}Dfe82VL"0)L^y`n܂ZGū@Ke9q(o1Y-Y64%4@KVѯ];Qt"O6c1Ϯkyjk9*pT( jO=#^uuUz!}]0,_W[+l/ˏ#\S{߸%upմ86kH1FyUjY7k([=\$$ػ-k,&OEtMkJ6BߒFԭJzz8r*2^ XO*Ɇk%Z˱eyi˳ȫwWQy{h4MKOoHxHS̴]zKtzOs-P+t|ƵLZ#k~W3'΋.*pyЦ<6}BgǴ 8UKPҨPr7㔇@}B+czJɟwzٱu5}}{6Sd#6y {~mԁ6u/^귯jGaʹG{}zq㱶sTio6O U5P*5Y8ϒ*\+:0N/95+i)R+ߋUJFgt/EaݷIY5^J^:CoxcoH,wG{8Z'/v?,Iz<2cK~>=~[i||_ ^y u91qy揵GGOrs] >pIb*D՟:^[m֙HFh 1vu͸#h5ـ`4: CkuZֲ}P26IJ,p$F{uޭ=cSƦQ_? m{1hsvDR!^@gPþh]=֣ G:?^2_|˿g#ͳ mvkU1V~.#L|?%aeiGt4Yk>2Qz HِkW2ʴix.cx~ZkV>3(dψ">1A<^[XLhқ< c=^W)7h$YRgsD V*b*PFWG~fG-/xܟ"1~&|8yRa|5OzPRoFҡ\C8}V:0ED,O\cj;#]!GIԥw#$y?BS>ڑ-mϧMmn ) v!$fuEOnfSHŚLj$^4&z_ighi}.QREG<6M!4y˃*4GXzY ?Ϫ2i{d3VPc-^[{.oaz[tqαђXڣ_??F^6ӶC7,)C;,U0ĥ;Fj^*3GIċ5}E=uT$GM}O~\0|w迫ԁon[A{$l{7߂;c4}w24L/o-xˏl{BE#Kt=n>=Xb1Gyщ; ~[47>qؼ7.FyIS8"v+Ӕs].M뾉lg;}lmOϣ.EA]?"Nش20cEؿPz8kLT(Z#G綥ׅ2#=+V!Gکv3pܚў7h.ߟ/tӔE~˓~EyhwrP^ƩҎK}xY~604' ) ,bl_*5>aʜ+(%0^MsQy>ԹaY[߀(Z%1Xn+EIMӉpF#JZ{YMNWX%$&ƼW)%p$1C/*nŞ0IR,3Xx=:)Oٳ31/#[hk6EDZŭ/Y^=rZZ - O6m]њJ^:&,X6;EƄEܚUG}9qEg :6ltH镰q3DI++ZfeR]~;6]nAVݬr0ڐȤ$+a #"Hn,'mX)%{Z*cؠ&uu,?1)t(X HjX~ w'NZ5o9T䷞Q@ZnǙ +k%5(zMK(eƥtE\ۛMR<|1kcԆ E4*0,;+l:t0X/űϰFr!{q]5$GJr#|ZɼEN*}B㸜%F'ߤ?YH)6lET0?ZzF18VoiI"W*>)͑[zuxl ]uD˜7y&Vo2e}KĦv }rSvNv6LYmu*KT.&G{GZfWHFvlӼԁmv;&SnZydEG1{^k?B[c;4z-'$O*9biI?&3B^DnQzAVJ >tER;Bx}8c|FzlPAz%2< 19ZO&*PVG$qr0n !Z~"5m?_[3S/\m^l|U'=8KO;QN<|`冘{^eaY-ƽnEZeT[O2Q ttHo2aiİDz".L&}-%BZS,( Y]0y=[֒j+|5/By|V2k9M )6\!Rss{5."3EAX%Jؑ#k"XؤIW*JP&uc6kiK`jӸN舶BRTPjd% P[զ,ϹG39dMag-PKay倵Xѡ䋑Gފ1 jdJmB9wS3,erz3P;qw >淵#tҨU3O 0׭xcĹZ`j~yؔ˻f;Br̺{'Ӄ/9 C$y$& hZ$ 3@OQNo@(`TLJFArkjLޤdFX$(j;v$"VA=mfi8ΐVy<jtnrzV *w] L)uYB 9w%ofEl5^Q0oTl/ҕфe;VtD[[lbA-$~`I X pVa>2S(M[NEv*`{3طHMi&4. PlGy)0i~~zZZI"s?@&[{ Thn/H굀z6pFTް/֯`-_9kGS#-g^㖱aƲu<|^aUlϷ^Ō祁i64yO3(64QF<>:sdz.+~w1߇S %wM6w EshRxd\ t\߷'Hv2R.Q}hYȋ:Yr.'^F7ѷa.LAɭk."Oݷz(Q~$ID]${O_137_7?_f~.#*-MӋU=oh`Y:nnml[|pVq컡o=.z/Y dУTP\ ebso/4$ "~UY]͘r >QԴG.I})GIdZzbykhiJyB嶙Vϕw5|-zRBVx0EWdHr+}?BXŢf}ْkG¢RcbhѰ?X>ih"VG>`=־"s2Tz=K,SZOslR2 ~X;M6OJ$R .[H@nR20bj;4ṟtc}:n{Jfֈjd vvkQURjkin,,ҽ X~S:@d vegK~| *q}^v.jG/"Y$ZxZ4:5=&TޖO[ˀP/s%Q=Sg<)벵 D,T/&k<@ӌC.U`h_.ۋZB(s ˕ ᗫ%6<|h1V=L9/(x}ƐF,l/!7Ro{my3A\(ִV([`z,-8yiau_lc{4}AB珈.u:7s1(],#ͧo EQDQk]ʧ~.SQ+͍^۹FcGENK^y,vʿqiLniC?YYYCIjg#v +h \I'يͧ5kZ=v aeɡhHyίlf= b")e_͊z7;tz}cyzՀѴ2!Ck-'9وVZr)Mҙeq(33Jm("36TiIR3:]Iv)kY":tȗxXlhɖ:^@)æCrd&-Q>V1W ñmL'7w4l}u-4s.?".5Ge5h8}_KJ7VB^JIb -ֻp; zN21"u)䇾0Ha)8uy.j(+OZ>?(]#t/\, X˂WZ҄%YKfw"º讵e\,ӥ.)gjF3ж\IX hآ֮NUʉ@T]-GLSm4A)Z*LC ut):Y?ر8+Urپ(Iq_*>>⹙,1eY~ڛ5鸑6e~HyQ̪3ҞOH8i|;+9W{ 7|{ʚ gfw>;MӲ°h^(IYd /|ɫ?1Zʺҕޚ'/֛Q><+yQ;g1p40]ۯt^߾ASjߎ}u^ڮOs,u`h$>.Wpj]Q;_nu./_@?6`~>V6]?-ُ/I/tvi)哷FİX.[XËfċ/ԙnlc6jt*Yӑ弰<=־ՠgvɈ"w%448qbqOs,gt&Md}<9 mZŁqQ󘦱W՛ D/]CJ ֚=G7tn#ˢ}+ΆzLV#}L`L^?-zM6h&qeo{hu&@q`JHHF<ѱAh–hxMV]ۼJ^9zet.~RV>sF{߯ݕ[dGnbrMѱ5w QzmR7MеI{9^'Z3:V}fE:04MnSl %)vrK߽Kr4t\nYVxp|?lEB|s۫m/mG伳7x~F\m22ցs݊χ=l=;y?ٳ)?9ZZ)OIy/C\Q5(1YIg}cH{ⅤˊjI_>e2Xw5Z2XcFbR/));#c@rޢ{1 <:wؾ EɇQHk_s_-q-mG'^8]./"rB[ e,gH} RǟO*^. H-fPOv[-#A21Rnmoб ^l+Z1"[1aC8cޅkbIp+e%o)e1±6֒Ϭ\ZW ǟdOȢ g`QʴãEӵ 4"]<-1GjA6I qh{&eCb1ZDiik )/唄Ʋkۣ@4T#֒^lhZ @4\@R{[?Vd+cSfVCy:.wLWxD׼<2E=R.t'ORt{~~ϫk8Cl]F5ÏO='vPN<]@:8_;i)DTMbI`rldy37&'W|x*`ES\j){ujzT5{ĩc"&V.Y.yE,ǭ?k<*_ \=ZF,6zƼ]nNaeнX~r=iZIGef"ތٌP!>)hʒ#Tft,"aZ X4ӟl(0&VgV~5:"?GvE<*cp񚮍,GG풛 b3 K̊"`FPF^k'Ǔ %m)Хz]m,Q tA cJ't٬bE{%" )Jn#H:3WՁ(C|:FO`}'Et:(b\,r1,ccEC`O}Kp;~StHRv [P5<%E_'xt9XcdJs cb6: HSӲ8XbVV~.iIf7BI!?qIě,S |=wX߱i: VG/ptW cϑCrgp4s,yxd%6{tPOqcnhek͢Xp!İC됓xe݋98pSg0*Rb;J?҃ ,#[a_х%%#A(ҶD-œ;G M[,mKRc9e> s76˵Yi"[XҴbzzI+QEcqގl([TFEtR}7jkc_~G >eoZz9I#ԍ{'q{blFYVz;*%((t&ÙdRs2px$ ZcF ؓW(5N fZjS/PJVAX6erj#ӉcoCnKi۶Y%4)M?E(:Y>N|Ƞa`m@!#%O#sDFw௿=Кa3'ʅh솪.#1Czz\X뱘zR#5ڢb35M I-.kJQcv/E^]L^:h/lg@H&8RіYC,-Ѯ@vn}n7I};\RWWNq Y(G{Ѳ!^cN6]+av·G8 {kK>22;T埸%ޱ;򲙴*#7xz$r|2T)vS-5T:k.-mg)]c\W{ Wbn|ڮ>wIV#yYVpYc3eO(3v'knv♏GY>$=Au_W\YEu|9g2?qkShG2CnZ>AdKk}qYr ,iY 8!5W$sF>jUz2=ph]:36,[HBf5{hXڈ ǥLmsUgǍ}u2_j$:Twh?ѡ}1EauFgl!ϖ$dVӾFpZXz("۟|27r/H6YdcM䅘6 meymh6l,JL'v+kiګ,?,+8BM,uFgowоj\i6xX;(e`msb ѵ% &8: Z:اO{A S SGV7ǒimY^xaTufF}%q,:bQ#INXC Dเ{B Yi+VRm% KGf3py}}_@4?iu~rtz-o|\{u:[1=cY?覦y^05]ݾݶm'Rfm/t{Za4\cr(ZS`b1KkTDﭼغTr"ukFV%Kq~WYjwۺ|uJQO[cqo{; O9J(ִw"z'ݑ@i>#&i`/cX'-}pk=ll#f9觮ɋɘ)qOo5#+(6epŰq=x,>_kӧ̧1ۂ[E~BOSb1ϥ4W1O֨~|D({NKe}.7mtlhϲƩk%nαzԤ"qsߔaV_ڪ}Nώ dž)O%k~gM1sch~_~Tޱ͍o=&K9VkEj%z^ECq(=fj~XOko"Do֑GzFV童Ξ^Kͼ~W_\9` D9v8ӽ^8jR S($4OA^OQ+6}Ki9q% J Knxj_/5#<7> ۪GiUZ1xḻihk}N\8>ց}c:G)u $m96mn9VзvɎu~-_gnI=M~6ᣣ7>'iSi䪣?A*iD(u]ma ;1K;rm|mZY5/dU-fS mslsOH?$z=H~՞PۏiMM*{WGBxlp3ާCΎ=f=:HÞ1\2,HdVv{hҐ0OCy,0GjC\ |n5P_1@# {j }a50,y^~7=7g7{fZ%2<{=`ǕB.R~nO#w@%dqd'1GJ96ejc]&+YYZJeO&Bc9[ [or٬Y{X TtttX,=\[bFU[=Sif(*%l ~R''I _1!ĵ[{1(]@7tS] mJ bCc. |o 7vtƬɂmEz@4U΋8]B^k~l%ebFo<{ƣSa>GbrꗥiպH1-Esa$[G)\Ҳ隕]O7[VM9|*=SI=td5 ȃg ū{Hg2X7#N5"yMA/AptiOh\q,F=?YRSKVnW&9-?کM ۛ}?7"r_/HSjU`nxBq&7v&KW=dO7ֹ(N7~b"`}{w.9  RGi8 QOgǭx=@ tkE>e 1;F%' ٨衺>nU8R^WbfmAeoj%_d^ iG+2{ ' {żry ][RH"r@NJ倔\ Iǰ ֚ioǺywˁ>704:0v[Gy+|:A&" CZ& -ݮv{PniX~C<,U(dʢ W-``hָm!2戽\ h\ 4O믋1u|a٦ @`8p12P ~g@vG폔/rhjmE(lV[Ƭ;gdq*s+pIsDC3?nR30-u`hvh߶.::h)T9?m'<^ۿ3΅Á9a\"nsg1?\l\bu.A <[i~aM'Ir(5GX+iF]Έ^/+<.g؍h|l-#r(5т򑿯Ti_e2*3ez+x^7O;7à'?;3]g˚\]=VyxzXбh+gWR%lF˺ʎ3<Qk-G^E٪%E YSef~>atVv:6cc!5H鏖ˠhb]"q$y4h} OifkQXQbmlA{ckʹ7xDc<;uH>˴Ie'@IӞ @)HYzhڗǭx=<6⶝|af ndk/y8Zg6|yl#fI,֟bJ2X7#N5V{<h"2O;IuVZ/ :O(I¾]EzzTj_8n;[6[ʂ\ \V(X-Kb+Nq_zOڐ,iӓ1`Zn8,F9XF5X5R6<h!1Sy'Jis\ѷ]x1(¾N[o }-^ $p~)9ZǶ%պԗm룵4sVu9H~k&xrvkE~}OhMgZ҅/))Z,_E˗qK_\Oo!t]nr 42?Z30-H[([Yd,Jڦ%Ig(6ޠǽ1l74m\c-G:kh@{h EWI#yY`6B(XN~+c;~k('䥋-M;32:*v{f(ae:}c"q,c#HP}侞Q]M:QpJ|{7*3jY=G`?Xnj<,)_WgأgY(? l}̯.~}>Ms4pzi@ݳ e Ǎ+&)4]P2GYtMv{.o^:-{ WH1)xM|&Bjr< ;gygVA{ WH;c豥{oo捉\Z`U9O~N[g{(mٙ?owTG劵3u+c6$eKKP giۢzk"ODsѸ,zY Li?é?w+ORgk,4 :<Cxs;Fxa#!ҫG7+tbX[O۵T- rc[0yֶppbdE0-=JEq;[]ɭ˰rxصrM9C%Z,<_X?#"Gcbc0ɱ ae֑܏^{^%˿n^Jl9{g,}//cS3]D=|ټޥ){sz}R=&c4r_\N )wu/zrzu@jqC[ڝV(œKUW,f̯t*vy-ڵ6Etc׸!^_bH㔢A6 {*4ݡG!/1$[cjh8߷,4^ArnyM(iYwCWڱz<gI!ˮ< )_30P{_EM>p}{ibݎq;19Zx|GFl+ uQ 4Ybc2u;ZƳ zeQߝ2MJ3-dzobHg-Yb*(b`ڮY^:S.o,^g;,{ye , 5 4ӏ,G=h2uFI~w@۷46Z.7oYze`; zeQߝ2uOm"&A%.lӆ>nE[z5eD7ykP\ٿeM=K[q[@=%pWUYS׷?e_Al=&_`{ɜ4<غG@z}-7 [ 2]-<hdړtCZcl9!IX~CzWb1b^(ڵU5d[F9q| h2SۧB9@yHoAZ~FPok6{3~dz±\~oG cs^rS*);=x=s{VK?>z{?۽*ou<7y)]kxI$:œWȉNuk'f ɗ1 Ǒ/Nǔ}2qZF5,>J#=Q7.[{ } +fh \? eՌi'EL`#6;0*Vͅmu#ϵ^ePXok? #?9Db=#aQJh>eY#`Yi5Mϵ Cr2Ц6y԰at `ĉt}4|IpPycIR~mk>VY4C9]f xr,XyIt:,<# k2+=a<<)oSx}e~7vc]z߲R.V\VX$O9L?-;Ȋ==4hkWܵo +4 avym-#IY:2.AFGb_/?n\έ',RRa#ځ[_㹂&[@Jla=LS(-7vj#S}VEF#X5 G\.SЎMGc2>}eidgG2P  ɍ;ˀoӚƈxe!dh|:ْ{>׬5}->=r:v=Yk)VQ ~[[6tQkCͲo/!-[BG'sKë&P_'.#1)/SxoK]>&ڵ 978.NM?e2,=w|blqkε@Ϸb?X#1 *0{lIR'/?_}tP0*i[9#W/>1+ݵ0Gm-vHM] #|o.Z+v'grF OxF$=?Eo$~9T7` 4Xߞ,{TQV-~%雟7C4b6{k k'K #JP侇ʛ-|қF8=^hYIǷ4 )_ɀ0H--%Pi"rd5Z=哹G Mca_Y$c6yfdfqZS[kikQ0ei,xQ~J[b0f8 ǒqk/GE~]cI!]$HH6s)"QEYyֺ֪B?kb`ͼ~gLcIV=cڜa+?}.S:nwW9pj|6@ PHcv?X6bTc-uC-ḵbǷSAye~ԁIyv 2퉵o{-%q֩qzhfz9(EKptOHxQgyuֺdp,loF/t9[ܒ!~lKc1;J1hMK4omoQ8~zIm5v롽aj-ti|ѵȻ2 #LӲ")mJ̰:rF[fݢ|] 0=!mQ|8;R;f1ʎ^VI+קu\GE5OD2-/r}9=+y6gbqe|:6ZEU& ґm7:WJűOrkPa=mqWQx^íu9,.?! 㗿lM'ekE{|NP:kB:0};TfB lU.mq6[:%Ut*-wyoƄ7"O%VMhİ9F{AQ5 f##[#d;C(<;~HKW0Œ̣Zֵn?Uvs{g(䭒Y^}ie}kcYvuG a!ij-YH> 90Bz4vYk/VZ{|NK%id1E8 :) [Դ7ԟ5/[Il\hK&0Z,uÞi=񴞂?#;Jϳ12Z}@cS-/UIg}Hۤt$rI-^B LM}->Xxa6Zo'4}Tǽ Q@NI{'ׄM}K)%9xG!}d8F'R q?L_U`jگW(yo"\vH ט34tO(a)=gvC^¼>3Vn-O*R~ǖfIykVOǥ4]@7N!Mb$ƊGEd?6WYcޏJJ,`7U?E'N[|4,rI`'XEKhi0_FvgQ" m|R[jl{ۿ%FcR9,m M8]RW^5^XFWe=ZO{LH?>Tۊ(=뚝/Dz=:^5ϑqίF:!Goϕ[_7i}%1e`Ϩ>DscEh2xG4CE{x_bWJm5ݞ %A\6'<ݼ۾5Q>P;WRlLx{L>WHrKe7SD#xj>=QI[BPbG\^E5pReh$SF7xbYE"}xݸߏxJSE&m+8m+H^#S~z)%hwbk-,ͥ Kxtb\6 1ԟ)ۑoGrQ|v1P.RԴU4l;JUJ?Jbr;Bd,1cjN $9y}%j׫)1D{)\yo\?F$b,BQP!d*Ea;FRy$c[;)Ob1{rz1e5Doww^ll;G9{껮~-S?v?G,Kmϑiu42~egyKE7BGQ"7 S7|XYJ[YP3`|!m$YwYgP*,/uҲ)jj 1wm5tq=2S(YG.^}\#ˈZC6#G!20ļ'X 븿Lcykm}*^{N"gG,f,-L(- wl#|6aRNVNm(zux!4˼>AH$64qrnӼ! >Y ŵ6 QR qw_m\ bE%jlX[Yފqo «W=J[&r: aY0ਭYj<=Ύ`j/fHr̞"P;R[gK)5͸>NnJih+*ycW}F#|NZTn/]Yj zX><#"OM~D1!9Ho4}Ry~È/)-}8y_4 yttŴ_bq1f#{ۅ]_p;-­s_4kK֧"OжVtR_?irclpJdOKduƇQ2t\c91nUć:ǩ&CC96RX B4mkT;KˏD1IQYf;^KjMs()eEMI6<"F2XPg{1=/uÔkz9=\dVJdV1Y^K4 J 2,vE"`kIXi%5󾬨yE57Y^X.KwyR;o liCaͯMxC0IO6/J:: CĔṠ,*27Q*k۞7KZ yȸy1[qb "P쀩.^{e1̒ "%gc_؞ѓeՔX220#$v!eMƕuM":8FHz3#9}9֙mkDM1~+6ª^w:<``^ܥߍ钳KsRojA8NU^%sF짿WYI>J[oͿoVѥ[5| wO-hOU ~\---lO 6Xr]IdM2C-=Ȳ9~d ̗Pr% 4SVsX F4&UDޫqOf[kK|Y};?s6h]20OMF8@n}5dzշ4r=Ĕ)l#,7{6&m;_ցٞN=i7rnBu`e=}]7JK-YQO/9[I/Ь}YWːϬO9%|j].}%gHtR9]k89]j3ڮOaEsU1Qf}E_kܖx_b|fm.zm`閾oKXyxL}gPe4I^){#_@oXN}+7hEyj~_YG絷eRNvk#@ۥԁz0ʇL٭yomGl}nLv(ߗf/W]*ߧyn =%>s(7WZ%\_- ԧ]87G+ {[mW;ڳ.>~ܲ]؎˲\@fWv^xuWē[{kDqqF2IxrGiV~ԳcUlt,KwkUҾ;Eᧈz^ {;6nJY˦fF`e5 y^OSjP ge;@^7y\; L)2yje 6TYJ.-1;jezdPz2|c@|1VYrku-Cw> x,-QJT:2P~e@PBaAF{~ `x1IXZt vhD(O;-uDԟm>Qs(:-rQZT|oIГ(/ouChfd]ӡIRgNrD}Qm9~1ӑi]0wc>[tYo@,_%~N2M}Q` ӜҺ'4i\شݮeK2׫]qYpׄ ¤d%׬TLJDiwrɟᜐ]GB/)f]o$z?9ןَ[rGTxr=әS{,V*8<QR42>l'KZvqYx )1vgHwmϔxϳs-0vep^x%g>oiK˳ -kX *",H~+V"+x̷:0c^ۄ_ jj3 Le ;9Ws mlOjW 8O9>".{\6]}cNcB[x"q d%(qLh1hxof|6FPY "7u.Ќi问M;OQ, ji3t}%>:[,46_uA_z]V=[;ӎ̶]eJkm!\l|/1)).PBBp[DpQ%g [:VC]&#~jm!}(Dۿ.J5$Y} ~4 a6,>츷B`^(4[ُLˢn-pfe10y4gۏ>-s>>xd6AqU|xS>3֜鄨y}0a(1MxL'HWrz섲 x0.8kӵRs=bqg蠴hy"3˼kXڢ2&aQP̨*DE=Owh .3»JC΍5ۖ[qG Y`1&PGbqg蠴hy"q\ ,B47Ċƣ >\QU2:ps7玬R; O%*kS-Kicۄ=ć `iɓ$Ǭ^4p CG]2n(f$D01v^.k\(7"I^LYUXah9((ˣ}K.:ЎBuː~-@}=khomM=hxK#n%ޚ\_Cq+_UIQd1VRjA |af]e q'EPaZWDXԗ+}閍K7I5}j_Oh\B'VG5GIB^T}кQQ9\$?~]mjvqVUW vĶ={rXiׂk\/o$B=h^e 8`JJuo̒$zki=&J&G8#)Q,)(nn/=ɣ?,o,qLzl&u50]JSar x a紣)P ) eU\%0SIJsG^FhךaU329&]esGu OJ{mr/³QݳȐ i4PM ,}'Jg~F;߾*-­Gq{{L!Sٲ;?jW᳭å LM]j弩M}VTG,L<259k8ol=^udr-0ws7UimԳh|]9v3qUo< Gq{{L!ӹxRF߯RMU}>4L<<@+{h_T<"w@HJ8\UWzb`^`Lxgbtr,?{Jt: <ᒴ %F<>#iUCekqf-N65H$Ag6eQ[zK18|XE@͸D ) r_!ޮtu0d# =ߛZG{Z렰E\zl=YSg>v_=VKU^g˴<ٸG@E@+iy.rH*DyDiy2ߋ},w<]vfa5sgr}۵bi~Qx84b o_#vyoY܋"4v^jk{Z*>jѩR.唣P9үT{1{.K$~Th?j'%y>"s[ʡGGV.yW ۣ|n맶}ߏA|wikGۖ|Gɖ6ukK4vHu R, WJ"KfζVS@o&{= HraG_>xcY=MfU5YykQDU= K[نG~k)G!}(q޸(#Ai<ӂ>q罏z2c1}"}Y`tDL_U`h~1}T={oh?-e,W>#'+,rL!S 9k3G#gQV9CߌyB[} _?k1N<~Β ̉9Օ39̌YK@#~0vr\C(9om+-8YQʡ#9Z?g2+!eYՉUytfkfg<Cs0!|.IZa9Iڰp sfa@)Y`pXyV0x:C.ao=Px}\sL>e'. w,l6՘(J> %ğ%HoReR~$Pԍ% XRĄQ7ΣK8za`n[/ L}-p2Ty?^G㖫^fG\Rs\ǜ}UZ mcQi><6h,*ܯ_.S$emc͏cX?v{$tH7)Z,޶ k{ӐGaQ H\^ehi] !}͎`F@WDb)JeG>tF01<Pf攱Ğ:dcŰ@'f7>%IBV%j95EC[6R_ ⬽sn;BO_]y>J(W+a{wj+Z׵Wj'ԁs1׳E,M_pПP ?¯J'^N?vX7>ckh^X旹F>Rwnoض<ޡV[iVQ3TdGB4i*0OS?Xdm)݆«U;l8>})>85X͇2nc5 A&--,=gUW)˰K(-7*z˲k*w|)jmA9{(^zD|l5A[2LJ6n5F~} : M^!iKXRۛ_ s#d_~5#ԒK* _88u~bL? Bن=NlцoQ`F2m.|~^?!gcyĢcm=^{0sTt!*~>",z[45Xnh g z)?L7)d) Qļ{j>j8fSN{=BC18}s9C6 W{j5|vlHi =W ʦQ9#T#|-Sh4Rr٢qz6 zxJ<˱XW`+z9iy7JnyYlvfCzŰ=g%m_q49 K%qly!o62sLJ8>CrSE 5!~ 9cyF#K{Yt1;鸈bh.4M.L@g9^qT*Y'FMeҭ* @~r^6@׌cs}nqcs}|ďӍjϷezC 6N뵁njILn=OjF۵ 2700kը.^{Qz=M?Η;R5z(cn8IK׳֥ܺx>橚95kzy:1rڦf?QeWe sG!mz웿[VyjEnF۱U5JtV2ίwјuaѳ = xoOuevrm^  iWp$ QADcWEMY9> KBL=eFx}B6+gXle<9c,w[ S>a~_%FuXs .b\ xqɼ7֍epYvct.8*yRC46za`AÙAid\U4z*nt{N(DU}*P&U-UZQeP.an:\(B%_/Yb@LYOG70dQSxuܣ>I-8 "tJe\ ,47iY4'zKϢ>y>W6.UnnW0wϑ8yLKzs1\ @|Uv1ucsn ~Y*pVY8*P*M}ՓÜƿl$ƽejR~-H~;q@5r>H)|xDL^=UqlUB k5rFrd{%jO\~˴۹KiZ@ہHLa-XŸ́48W.[qQ#HquU`XZܳg5UF#׎Ss eśw%4x K_ۤʀe 6v%7UpRVB\rf8Z=<[ã(3#}YZtlR7.b}iQA-_qE=Ҕ _b볒(V~YxPZY#rcGJQh7χ{[壋˅irIО>nG =Mg˳Xe-ćGł^:R0L'L51(h`GrTg)ݴf\;H fZ[ qB*GR~ܯ䕚)a/(ۃj{,ϗEkR3M4gzl^g%i-Kԁe@nnzè_ZʉiWsD'BK`/j)u=@Cz\Ak\lUm{qT8w'.ia+mO'DzqTg\tf*Ls\Al,NyE sS>I*~Q!6o'UV䬙MuZ5璗Q"{g_ed>3?Ux+Hku4cyiT7WWu\SM/KirLs䔷4#*,S~闥 ,PEX"*"=CÆY"f|Vg@yo&Y_/S;7>HbTP yx$Bek#QKxvc2jϾ)R8GiP}c *G(DFXع\~Sc;E)m"%(sO1^[_~ү6wq511}}onIǡ?@NG~=* Jelܙ%D,ezuy1GCʽ6A&?nv]tXR;?^sKrUS߄ 0>^t^47+g~o׊:Ӕ^j+O8#WM u^i!AɑoYu]i |.z[Z.s*{j|o%On6߷C6FxMߢlqdQ-A%V҆ʚƧ"e;6?WPzΨkD# (#rYm19 ϒZ,[UQDQkO:015!xoiv8lu׎7c,d{Ӑ_M"8Sֳ*>3xިQ5A=KRntP2pf Hmgu^[.Q|* c52 z#9 <K敵gPÚk?e\mU5K`g(oR]Vc˟C |et!@㔡NxOFGSEM7;4x\˝4r&ﶘ='M#8NliYKY"ܒ3U>ZK@p^b1B ;˘m=?Jho'bcaa9ill=嬚>Nß!QHLyXV\ anEϳ֬DKW}'ǍQe=R^"SMkkH~-D8!=5֟^ƟZQ_ ~fV?ģ> >e(0l̑%!Mi:0]jڿ~*Hgc4wh?uC>}ցiLՁP^ږl%J|埞خ/4_Nz([bD+.#6D}vHQ'䧖~|y\Vb^/c5Uk%;J+e0.a<.y9|yolwO[JlC-6ʷY/vr|TFj\Qu< CYwwtC| )R_i'.g۶~VᅥzLдۍBׯ/UKj+jvcgѬ Uj =Yg|h~O-x&yx=}=oDDofޒLJh["!s@ ,UT3"6/L*(YgϘO[_&IDǏǔyZ-TҲ^ n. TZCE#rQxqR->GT;uL=^{=rDY=^i<_Q>GGPf*0)SLMZ4eVSYTy Q\Zs;W`,*+*=*ƍvdUD2dQ(ʈ>_ oG)CU{E3rDzĽd'KGB7Ŭxk6gNhx[0:1:׵?LZщUP JVK\}iq]©ޜN}W}FZ 9Q֥4$jKm_~n~;Z[ϑhĐף8{HDҙ.7 m3E{Wl2)''=v潣vK%dĤj]qѼ=sbijO*ٕ4l?6o%^C+Rn*0K3.m1} nUr/[%?m/^Y ϧ+-:'8USS?2N!qtb'm1G/!MsRNkFE)}(?Z9;t.oGj弄y(kyQcB_[i80cwUH; GpM|wqUj: ^?x:н{k( U҉Ƕ@FWؑ}}>\U8tO5N>\6CF?m[Q2t‰hNhĝd1YB[^dJMX)kQaZy*ztGͼ.yJN*pV h*azU*NzxZw{BQ1[]9.G+@e ¦FָeL (*ztAf^.ϕ[vNfyHob@VGTU@YW*z25cnV8k^?Y?dMV]P.7ϩK˔-YDͳ e, k2PCo(27ݰףfn*ˑC.54b+U%\~x/&G|gT'}=UץXTxaet^Z5ZmR|p`ny8=SeeT~[trYj3Gv?jΡoL{ND@vc3wðVۏ+ڮy.{*l}%(ϱ^S>CGy|iWȉ䚥Q/2xe>5*e^f3Ӝa{ /i&X} 9lF,>E+"Z}D̷*0C ,C?A>kҚY|\E}V+Yql5?*074w_7 ]JcS\9ej%)xN"<R>Q=n"=a*P^{ҷUW|Y8O)\riTu0_CS;~Ua)qs/׆~/^h{$v<$y=;h7)jh1G:/kqί@IS#n ҍݺ%4Sɇv:Iy'ΠxN˭tfןϒI /8D\DF餥axtʧ}C3yܑr_KVǙW|7e9-iN;ŜKψRdХ LmLncǀ[2Zy>;g'\20MU`얹AZv wm{ǧɁPIlʦZ='yeZ6QP2D}\"ӟ2;Dadb^\`e9fK&VˤewfȞJ؊R|88.9OI841Ņ$G_Y2"LmJcfqGK?) =ڵ C7oiIl{'-n^wdz7Z_y]iJ mH~mQ:窝s-v9VsG5w@&meFu]*a{d)֫,ZXĈYk@"ygWE s 4/&z}7*MъDΚR }L &§ uR(m,w)j3?Pk>éV)liuf.GHA8ׇ 5]_^2;){ WA]a.0~*yoTmuDyy.RGrQv<Y?٘-np]T<xhf8Qarbq8džJ`z貤^0zFF`V=Љ^džӃ+CѸKs {wD(w-誨ZNInz[x(ś#1sEoc e{.<\ G}cY_DOzOX(@hE!^.lzNMk}My|^l_hD!ܸXTDxB6K)Krz'>qt"PخEiފ *P'8[m{o"p緳kҴ\>@hg8[m{o"p緳ۋǔR7NGɩ$=Vǩi ϋ/}s J᧟uUՊQS^=Zw-Y:}/a,m'T8_k8۹(lKk薔~ݵgy},}~;@a^ e;yk8۽7g8Y 4tY 4|ր-T#ќ~RH-'>n}e<<1}T<_Jt V"Хe-m3ro}f~'dH,غ*~e:G낺3䎧{f[,44LG^zi{(\JaRpuwh#VkZZ S7+-߯HkX\ M9hYx̹uQcBޗY&)o!)d/e`.oH,o9 lGYTk}qȧ+2T2J!h3EY.m,Ŕ]@7Mô"Ԧ4-Bu*qe4{׵d(q+9\_5x8{6絚Q2Od(G|1"0< |)m3;Ed߿,ǒGwk?O[ //Zi\Ьe`5P^j.畎V[Oygۿc5ը 4jևjS@~Sc @.i W߯~#)VڿG{ݮ 4MӮ ]_'T^jR#2 >z{B{B!y G=ra,;X F*-)]Gϧ2>痌6Q幦 veh :wT@ rMwŭz8M=U v<"-/ݼ, o99%A!V}*L2,20YypI$ ^;?uAWǴR uS?N^/Pi=OYSG FחE5C뎖ұgȢy #cGcs_Rr%nZ̻={iiz K/gΛSC.9nʹб!j 8>go<4:RYl \ 9ʏZ#N?b6+ 1ĽM5u`Xkx}YT3$hY+OS=ގ,J7Z0E/%\ƭż#mP>_6]*~?lX<ڹ$KQ/U`N9᧲=Ix/E1_{XLu8>9#rSHSJ(?i29~yDr '[@z(B œ<207ݴl2Z2'W\Ў%So̼5e h%>cb-mFe FjA=Oy嬥,͠,^#ޢSt#ˣWq?"y2-gܻ,MzkTa:ye`{XTUYʖ<9yĕ"m+zh1YX9C)"NJ,-i}Y|>Gbia~\]Zx;JEGJ9<6Ӥ&Ej^/#+~y)gM,|__t4t)m+ױMMݎ|KvI'Mmoi|OC1ئ!/IߌKGK'(Tj>h[>8w[@{Y _:Eηޜc㏧qóh3MrXҮf&G`l}tӔuu+x3:y\Rm't5r1`W,kO4udiZ|TN'3"珎eN9 ?O S+b\Y>E# D>H~0rshqf<9-G[ɲ:[WieV(u10Y˳Eyh=ϲirB)x*~I,L2^G4.OuR<_uTq:WsF1tp10[_7gh`[l1wˬ|-N/bo{WnG{}Xn&VƑR~ڄ/ގfl%M256 ƙ1Q&1{!F1` 摦p^{{ԢM-Gܣby<.s^o-qnRnvL,X(84.zj-0^[m| RɊZ~6\E 7 ɥվ9yV-6J28",l ur!}rc硵YvߏGlQȺzzođ2As[ |rl*|68! q&cNw[e[P|T0>I֑W{>U|56s^(?3vluh5^ ^C?"2Ӗe?"Ug]1u-G!>^\Wxt <<#3CRY)#}.]j20XmUSY͛.-r2׷\Ɣ' E=2G[YyoZPI5hSrKGD6lOO<*^5L~z[9zC?_ev\ <~h=KS;"O%W,Lw/ڟc)xT~cZ)s{Mʒ1rj{v"KKXoӵ _ѢvRڂ6g /hr]U+ y+Y=g ~Fl=<|%=7s;h䨢ZA*Vxx0/poDD[XI-{͞"#b lP~<77[*nނ@ߍMJcsSj=O=1sohqI+m~:6\@/cAk(?G3 ҇f Gzfrq=^Ge,Ӟ\cKͭq>Kq%tGj=g%%4K^Џ6zNYV*ʳ*ޖκ|ydG_<^}h4SnγGcgȣ.(+HzV2";ߘwOݘ.ehϵ\ kٹϵ^n-4SjEMץe,0]KxN;.὿=۸QJYV -<6L^V"R% {!?*P> 3urjqBko}"^_e xu>ϱhEHŶ|MmAB-7N!^ Wĵ±  K_DY| (# 5S 4"w"HVyQcfD,ȋ%-rr?74 `珲¸pT二3yZTICӺņQF4 ;?Hۛyhܴe->"|,2d6Egn9)|-Ĕi=%[p0IX(%֎wx9eۘL\XnO"/]lE mQ=8@nqꇵ ,] F1ȶ$<-%U7◣۠ۄJND*ppJ^;x=%V*mY7<{ MmL^:S*4< T %6U* $,J/{=N9Z-7YMKGƖU#zMKͼyvY4yyC0; ( "z)9T;ߴd| v\)7u\?>ɰRdP@0mczΧ,8^~yj7'׉h"-MJ^=I3N _~驻T.-MB*z,\C r*yC;pbdzFl.fgzVo6™JC8, Q.o8@KDRqy:| !VKaglYCn}y /OdYY&7 aӗ[s@Q-,bK$MZ9zrgd3t.’J^&b1gLe- :)L @Qᑳ]"qOQ! Mm]dG$)hxшz(~O6*f|i``vVH j-}BcRXO#{HVVg6:{xc|9DYJ׎( FTG岡y_+Qe5h(QV}ڥ_I]BJS iM'Z g㠤,sg ] e2}xı_cD&Ƃ+e2 Q.16W cYU7^>F[Y$Q7Ze8R"Z2ĭBP-,C@n"dM-?(nRJ̨["&X_E{m3Xskq4cA1 4D<8wb^>~Փ0̩5/VP2>5JLhh_q7>cqDӜYCWK’]zGRJ(z$Gfz%#eck4ZyAy^ úyņP.b*9 /5ɧ\5MG4|2l]B&JL2k,뭢P4AG$qoS(G%%vh/oS$ڱnL9k5Pڍ`G=> 4Y*޵ȭd ]zozL,ۉIYv [$.@7_Zٹ<3MX8+8To+w&QeU3ȜG" espb<@sd5ԅv34ń]c' >=hd6k`< >FY,}Y <~ReD0(18%?k}yi]DhZ4~lAcAe4Wɀf$íHRKVxdn`x1$ kKhq)i}CzϘ>ckcIx([>%{0s|d".̡ͣ *s1@Egh[vU1} Y]rM3L믍CZ]ⷎ]G5C| ,ݸH9ƭp oi[+pš(;dDd4Ƌ;m8M̶~f(a<b|ۋ [fQ@#[3Q[%'z=UN_1g1vrc"G1p>oc%PylDnBsOw_B0! >  Y-cD텁=#&%O^O.+896V6w?u>/HT{ވ1e9uTDsK~~t]GmۊHԺ;EvaZ]BE /ռq+H~Ƒ!oĔ/F,IUvnVTem':5v챝~Ysmӟj-)TH2uxDyW : ,cƺiѝB=H}}-Q)Y.u^ŸLXqB,bq<u|s(<{Fck۳8Vv%/*Qkp'"J>ScCqkS?.];WHDl7˴U:Ojp(b`ٲ/x}O@,ן,Սܾg\y΀Q)VnKݗJi+T!,B廀HDZ.Z*cК}]`vOh~n ,ykGzy2H(neqKӶwsVz9bssm2@@\*߻z5lTxkZVQۇC:ձ b n˷a9K,*55H몉a$[qRW]+5zt!a_o]v?i= z [Jt).Q.CŖx>o9p~y~4%(Dœ=&Xg~0Wxk,'g|!F3.6,L_r"x U|ϸ5=5Ʀ[w `v7 SY^,^ )_Vi W6%(-ĵO٣ u6zDi] ]31Z~]eE[ Ӗmjf@7Y>'%:Cn2y$bI. - (ۃz66yXn&q\FH0] džQ\j$}!:'.{+gGrqGqc˜j;Dy c˦yGyFyfs&s %Y}3o~~?bfXQ'3g 8aV)]JClE/~g|,٠q㶭xʽ+c3wWfp ʥSTnXey.жM/606ŢV$#oT)-G)@ k*zpeVd.G"_K6|!0`k,%٥M#ג+5ޢbV.%eNS3x<\eoMs9b^`"o s3/KZ ח yy(&BJ+(B5^1N噮Hɱ:8u)!(/UpK:u]Us U;;88ʱ"RrV:m1Xvz.cv7ilDxB'[z7v'jkfyWz$x0N`QYTxc ]<#~W W͜\v#s)9 UFc+Eے2\`3^4Vg;yynS?]oo?8[ܷΔP{a@WF"3jXt#G\ڧF9_cy]@{]cT2lFՕ%8^,>!y߬|t9g8zMeyؔ9>jGg(s}۪􁩽|xl}xif:WxTU5<.WUC;;V2sH{*w<Us%4@pǖXxy<>"~Ãq+A\TYbɊt1_ZxGDRrUP#Qo96]`nnjeLzbg2;uEÿXSQX(U+J:RƄ܌R"qȭ.RF T)4Xexتy+xgmT!ϳ@ Oݷ{B< ,ifѳ =%WV־_P fk"ur9{fڲ0vPe^1_jIQ1O_VuE*\5}`T^!rD.ll3c59DQDz;/W3%?.f磅L gy:oos9b^0^/07/wjor?GPg 購~s[>K-dm/*FGu8YyhBt~gwƉqrzH470w?tc Жo`L)ۊe?mWA>ly~\y5m`y ~egP6fm mRhI }׍SA]+?[ݤqҬ|=i}VH?h8-V -jܳ t g 8b}ce^K0ӳ{}Ŭ乁y{dZbya3!a6!(>_#xsy"Fyac5?F{zP@۵үwKJF!g晵+e!Blj&ɢ~ Z,sh7C1`QO yØ83]E#,<˶jxLX`zj12lQCc ?GҸYT=z4*,,̣,gCgEf`L2D0kHRZg,^>-Wr"_~V2 Inw&)ܖb$8yԔ\^*M.bɾj?bв|]g`Qۮ@tf\] gɷG ܴYcgϝm UgQS:6pgyk/92-{|xQno9(; wfnƩM:X'/Ԯ-;%U\o"3fwm?_C+o}]KnuKl O[^(b"*kAvvAv!j>Z]~y5ckDƳq1 -u#aul ǞZ碧(6jˏC;˭ LbO\+Y[>Xr*ýOgӧY{q4$(vh -Wj^ORXy*-0kb =bZ*/cZmor - vX @Qm{9mYoh:=slܚ緁r6luV20]`R ?toxU`9]< Z֠6}]? ]&zD \{a鮟4{|eU9"g3j []fܶJ{${y60uإ~mӸ_|D9D9ٶZ_ؼel;:lȇcsYk˷=S=5su^ؙ{WFjgsi WJ߿zo-xoXc>D'][E:BKx"S<c'XT5,3x=wx||tƱx}Gp,(R]G03=kxV'>CWLgٍu3ͱ͗>t2}/< L>r:OΑ]njkY:'o,zV_iqU?:"q=k`HU^ǘ#J>Mܬl{BG=@鬳 9~ gY,Uc]`jyY@3_?4Ce[y}byblcn^EgC[Vn%%BQڮ~\)KF}=n;6jnģ2OR]}-,2zvvi _{Fɭ̫ud{wXG7ʈ9В=BC~?6m!qN#Ɍ6DGuڭ~z~ma~#yQ~.õī϶c%tUh֘bs`|ZY_!(1:ܫȇ(9ƹ mjQ8^&o%Զ8,Y`o}(ޢx}=Zd7&،{Ov.0x1|YTcdu˴RVs'^Ysߴ{kQn(%9[V'xh YƗ-|FW`=bo ]0Ɍ-EX.ČY+"x2e׿Îpf86.oo eypv_g๜Z3cqm+/u^W|H߿[Vh0Nq|yX#86o|j~:BɊc1kYٺ(F깱xTF5i65^`|?YXeS|zxmoo7F̘L;G<`N9M>LCKS?_fQ^k%ޯwݿuscu=3|L{{q麴>Mj'#{doe;gt.^e󣤃O~gMɱ|^J4j--ͨ{/)@ ׎7ݷWDZӴnnF#:_#>r?5⣭~Knm)Ffjw -nQ|RDp$O ͧMGnSrdWte&Աc9MxBcfsy= [8SJ7LF++*!MLŠ>Y+gbYĤzW-~?8v6pMG{ƟMl&&c=48}}d |1-YyYg̳ X ݖ',f1_޹ \dP?2gk/|vf}gqvD#F ݖ'/ML{hpکn>6#eѫsB[xc,!a>ozJ*Gzz/2 gcm=g[R*?֏XZyoƥN ؙ#_k.G Q+dsOUtlo2)wvR_=;k SjSsm}1r?E}6U Է򸮠@:um"v|8i~w5&!վŜx祹|D2J1eo2̏mn uO \@gSyu~zRݛSlu8P[tl@߭]`i~sO(;b%Ϳn{׾rʼToT7 JZUXMC\sV$:Okx|%GJd#^<,Ʒ21,V7{#n3gB,]6^۸}gX,05<] !_ڻ (ݬa&rs}9+tb>{o\4~wU"Y|vUi֏_`:m Jmc9}5] i!C)'1GyZfǁj #QVkثG9wYRLz.uܺ?˽Lx X[ >2s#+jBtʹj@7Ss mo/ p"¥(|@yjy0͡>qR1utAD~&GN5=8`g@JVL&FE+狏e,xXfLj/V97jocEqZdkl[j K[ /[=ƭEsccl<sQVg9b| A=6>H5j*KMtel.h(O.K&O%l ?+XKy҈QbYeӆUfo՘Ǫ?^,=Ozo!bϟKAq)JD F'~W [Y>2~)2ܴ˙^3MXKfuT-0̆l3k6K7]OK?ߞhN~6>i/9_KK@yl8{-Ӷ_dz._52h g,5en b]Xدn>hl4|ܲo%ڇZ=WzW3O k,cu&jƯgUF*sqgEx죮 Q? ` ?> 욏pq3MÐ -KZ@8G1"yf4j櫬>)ܻ2+8d|*%~>fעX:oyl c+u(,yoߣ?i%[y|^.PM]HbJܶ=!R% 9s9T-mu)h7^0X-$QbB9sqnUzrb^#xD @2ә<~sLV TyZ[$$nǁ%O]mи7<5 ﹍ `(wo=ȅms!q;o Ȯoa˾A-&qtfsT9rʾWM~ly0m ^SPЙu}/_eVWyvvWiz߱gGT.ٶii+Q[?,Z={_WQ5g6Wj rnnyZ"CZs}YR^gs+KGQٽ5K]t({mcƶm-6x@Q *Frϣ֞flrkn[ ɬk+Mq%{Ȭ3P;s\br׭ d"^af7<kV+{ko  rl22ΉZDۥهupR:kcm~xe8_~1I&m M| kb`_-am 9$z1bx<WGŃily:'#:gA沲E&_,V[uZQYAF 6- QF?<^~0~ G$cy*T p 2B<_1|0~,sÀd9v#ރD aX3cyΠ(W9Xq,dyvb9`(儵gr + 1+q"3=o@eLgϳV2|L=/pp 2y2_1sz4 / ii%389s$QQ9pRuPJ[V#C<+H0T5Ga}ȰQG<Lk2aqU ml`&Uv$!cz,OaseY#;E6b8_Y}+K26/N\~{l>}C\2X1$QG눫CU7Q ULF##zԡXƫvGRrk0B{o=k*{V1-đPV{G@jܟ}/1"(pm.06}y]@[[Om)ϭ%7e&[e3t[(Y[&zc}UCʪ~YW)0%ޛ/Qx.}ƗǹZ=^[_f/16wY`i/K?QZ]Ig*+ۇ]{`3Yl+# GixXx>"gsm>Q60m^;]ck%>WdƄadyq}s1z\nCbG,0>sg}qmץ&]^4ͣ; v1 7,F 3LD'^^g+ޢ ei?K6A<Θq|>>Jbh-Ggy5XO^rVXnZ!g>;iXK1-i6𪢹GO=S[Lo ϨȕW25xl4YIJ>- 9zB%[c,arih> X|x#Fi?ێ~8y#GϏ}}Gj:{8n_(4<_)4]Syw 0zڍq3ރ9Goësl\LS;(4-]7TºW%5m-H}Nsdž#,մȿXE>rr2)D7o,zBMq7w-N7lswѣ7J:Sx}ueX֗eG~=#ǟ#裻/.I+Ygg]ϗf]NG qb6\e Zؖjdޯ9m`l./ ,M r F٩8gJumvGUmxTjc.'s&̦(ne١Uf|R`pE=]^r:p:_T\wsdaY>ZtIĊQb^k֖Բyy&rf{pYQ^q\ufivw Z=zWf}1SjO(%#59Ng}7lK#K.%]3vX%>"}%vQӥl~<3t7usy]V wͯ k?Qq;d}n63"3?6_V[qS[PVE{[=& CQj<)vgbFg P]_Iy3oű1׹tcz* "%ϩ-&CJg.зg{, Lq,GY0ڞmo fZ(% A `mOoÑo<:X4Y8a=xX#z o&O䞍ǃ!qjg,`$sxV.Iň*>g|Pu!Z7>k ?fGs?.VK / I3s"`Wz:#CFEIC1CCȴgXy(qxV`^"^jnݾUnR3'iX_{s<۶=+Y,"7H⽚ʴgo=[[~fN+r?I>uͥ L^Uw¦[SglԼnWa{m n:8j6󙈇ZqYQNJejChdmj9kzN}n^>bˢQ֪=<8VO|w* :tcK;>ej,okqѻ? LҤ]?;,8>;ı;~=UwX+pCz؛Nm5[q?|s,Vʣgڲ gHk6y8R7" h,E1HUɯKS63T> (~ݷ(䉨߹ 0DPnjo2e `2vZRG>Ж>ˣHk1w;4+x1XJ~UxmV)6 ͧ-(Zm¥m@ F3DyUW6*o65.Nc7À|=VQU%q|<lՄ-㷿+ ;lVh` YkFe B< W([sIsge -)l^Ŭ@?m|܌{ 3ۀ_1a\Zy{X0WOvH>uckеM]W8 B_`Y_{TϏhq[k~!MM;覨E jL/dG;<&"JudFD<~Hm }Uq)#'"m \%o>/}^9E˃^%GDGFWbg+G4o+㶒WʫAvǰpn\b };oh$ܖ1UYyv q*okc9.0:-3\:fƻLk Uu=QUm6f&Qs{\KsٺdY"9g_fRQ;d|Y-3v_ׇfn 0뻄1Zb:+أޕx PRTU<\>:.gy '؜^}mnj:~lvov[Bmv 7,>3 q̟cݢZg8z|vXKg`vn= LS,Ϝ] 8@]v]_۱>OSJ9ʭx,F wY=WoR#Mwiܥ|Q#ݺզwoL7`Z7DEsFdfX98 iiYJD[oy.bKۈdx5nunˡ"5&"cg(4'qJʜ6=ex$s-$maii dwZ>Wy׍gxj~sfaY)ԶԷl>{:k$)Iq:2Wb_Ws )\k_P{xۭ_ݏw8}`<}9@qȣpr(Zr}`n<]^#nņ=Y?Yw(ZJ\kNY e{d|q(yP~flm$_SVzVLB䃷?9,Ή{'3<3on Kv5= pPppl:shH YK%A{-nܲ?,&LN¤e*ؾE"'tmkg~?z1c1B3+ɚ%<< بX Qc.P+?X8S .ņ. g3%< +>] ¹ lu X>:צ k6>^wk̘J lՌ[XhC&!8 ^kHpYk$t&Zk5n5^e½IDB;"P|F_iQ)٩ .%3ndy -6r#Nd 7g5Qq\]~pi>f|˫8|ZGG3FJز rl5+2q 1po(i쇵 mgֲd?FԖjD""1"ʶ~6W|wD{EiI>𼑏Fi~b챭$^E~ګn<8_BN}il^ ._(Եs//:OiA? )oY4VKNe:2i}Sth4,i= t};' ^Ox=PYm2-^EyQ`nr:6 ܠqF0q,ŭZ[än{p--Fd67 |c1ڀLh{at"kx9tϕꚏK1Y~jk}p%N(TX2\&^!<<<~ynowCL{ڟNwq|֞q{a`>46{ޏ*3bkM,lR\B[1j+% 7@=FwKv\rB3E`-T{:_1z"ol40qqPE﹙= Ȇo+ajը|ag_p߷}Z?=<˂GqT +c2KutDm2 &J [~|+/TГdщ˵-qvUzߚ0r[ ,s70C֣K/2 o> $+*-a,*l fb`f:pxˣRcR[r qqY{k]?.0.}6M ! b 0p{{yB3 x}z`b&'YRڈ);P{-qbI8PG˶5F '<"sȱeyTmJGڡ n@A(7zmS3stM:<5gUBr<=~O#ªYƾwܾ`{Y_7 ݨcy[ Gp{J26Qi;sy/:U1%U^r#"4k7EK ;֙;q'=349]XkpyQ73E~]qqSa_7Q{팙n"XҾ[|oՔM:\*9b1޺/_y4.h+˪iz{kd:-jLibRtiQ]cA=cK~LcP :X\jViN,= }]Bۦoj,nRUcޞn7^Ày=2ֳMK@a?Rrs.Ӹ<7C#\V:zs74v#^ﶾpTfh`>!>aaj\ r1ֱ~e<,BoJUWYsw|α~(k|,j`5/Q([ Pdx| l^"nin ,Ca64JnH6YeJhGKٳ1^6B-%ztTPГx*[:KL[,.}:%.b[Ϫ^#r?cR1~80~/7R?4P_cxQxn4+yY|3ޖ;~ڃnO\ Dck<M<㧹s}tWs흹=Ӯw٧}ؘƩڵ LSj$j˶DblV=[݌Uk6&'?rn=eܲ!Ng=p]E;,Z(k {hrZqc2>jvx=^U>yo"f2%b$xj?19˼X;ǣu v/&wSo y|Es5]2p` /[H8K=Ob{㴠VK?]oT$_- VvFDnkuG!RgGfXrRQ 5ߦǗU[柍!LbYkyr,㩯!>,J !C X~2a.\dc,+tf7ׇ+߫(*P2Knϲ{dSgoyJ+)DjlEdVjUíŨ$ cMWeLX6ηF12nq80ï׍|_WzO;Fml~(Om3romַ om 6OO ߢEۗysϙ1%/&E 17zgTm5V,JQ)8̒ͣ4*1!G|Ә䃞rnoygpzhfo"{5_v_?J?}wsnݕD5d^i[ys6Dq*r[ᶜdQ.-Ŭn/YэnQE7r#w8o9ьnʪgK%UEY!C^c_0vUt"yhaۯ/UķDߨ]ɀRi/Uzd=d^DAaK[FbW_QF^#l:00N] nMDWr9^7n<㫸W&<惍Hj)nFl^p=*[<="6 _5[f0$7K=˕DTYə̮xtppL꺀^3b A,=,RJU<*- yx] T$> G|fgOio8MN+4G{j5<;f㹲ǗeF16jbnҸG&d ɣ~nKK6{f!hȜۀJN>FGck SK@<8'u!ʳ_x&XDL%l5n<3} ]V*//9y+0j 5G傷M[E_&9u$GQjŘz,Tȡ=*ڎP+[Py,CR뎢Gjy+}²gB>9Fqbֲg}ݷm``F9,O8lJ^Wv׳@]*TP(b߶d:1b1wc +fE9q:^I1$:VF_l= ^c쒬!iFuQ^k[o9WY+IY{χ|Ts6Zke t/I1jK9yhkg: lj$7gZa$!m~xHfw]7{R/-e9-;Gַ^'/=Wzv{#*r m9b࿈FuC, 5UY#T'+bo1gJDnYv[r|[l sa`i쯇fɥQ;dU̽|L PUuK*"[cn1-'LKWd#2Dv#^P3,t= ti}B]_|LT};k PRi>jxRq.ɑ_Њvi@[ӂ->z_}V:VM+n%Sdw6{㧪A ~XǂEПUQYxGP*k/?93tkyl'ΘCӨ:'731^VccVnc}3<٫qȗHkZY0X =d;#Dr Qx4p׬l52gF߀og#Cq3?ϼ߮\kXihi/47Lx/{|J?mMTe~"gͳ١zTwh?ghe7~;އ=߯$W"r:Oxp|d1ĽBz<'HyeW7# b! <|kW$/xݘ-vdg0>x|y1Q9,w<:;uT4&c@NyaKcocͯP?:!>EMTj]0z;`xjk֗f|w?#y5VFm\rǮ9G[7~(]80m;vH|wݶU#OGzU/5t; v$o;yϲX~8*W3U71Cͧv*aט57v7@n73TCԎVyB ?7Շ1"d}[l%#Z0ywGjq%_ G|ֳ7[-d.Kxjg\d``o21,#-^>qG`#"Aϭ L.tm]EC,ʈk+\N Ge" |A?K>V2 -KNV-FI9,͕ ??zmP\kN+@.<-80Ƨ),']Z?Q܇\>+~*k*HJC"^8|Uhm,;.$:t~Jå 0o["g^ysqfTK;#w(,-XTZ\+# (^ƚi^[qcsC36{Vٔmy]t./0:,WN^4bY$˒.NVz"HưdVz|eTp#{] ʀ\][{]@_Q.Pn^/ԴiG^I@:#>tfm`"TY}>n})G(c^+oP8~6_9 6OqY_\)ǿuW??T%m_kƿ7~6Z>OwC;ןnjȧkw=U=~myx|UJv{I}jfgN}ǜk}nPE%Fu&>WO4­y`XҴLj46$vʟq(|!wdE{#v5rKzZYY9~T͸>FA=k^2ӗ;&~K(>K'"!yJ˝m >}!{ѝy#ckS,윭7s;DG79˽\~(FYE/Oa9uzU* P?$v{Bڷ=}=.F|]~0DL֫V2AѬϩ^0B>v2뛅nHƗ8 <>UVmGضMH?2K)X{,:Ǐ׈kD;Yuu.a˥42O4'zWyH< <>UV< ,Գ@'a\q+aYO!{BKYT*.U,QfQS/#׸o壚]G%<G2_XT_em״m[{-?59+UnqB3mn}вln =Um `gPv{([v&]t4^~xL ?=Vc_ZU|{)B{MR;'3ZYV5G[ܳe5QqH[]QG򵌵6.n]yf=}_t)Όi\>?VkͣqbOޣ׷>0M㼶y6b-sO)q;dƚS]& `4Hm&n>0lj%[j赒WM՛pƿrX'[lz֢e \ %Urp~&g6FR[FaXPuNշeZѱf_&\qFƏ<1i놗V$oćeQI 962W=[~c(k"mbGz=:  DYjzdjj- S W֗T~3qv@˹Yt2%-pmS?_~qBEɳ'rA"yQl, + d3}*>XXY%0a34LW*ʷ(zhYR_ZaQ{\3)qk=qbHm`ha׈Mg3nj:~O_~xGK_5x]bvZc=elRخ4W>P[&]c!ByS37J/;F Rze_)d+[= ZD)$MomrZ uѡlgR p#zIZeQm{B휖a'Է];Kq=/y6bliYи^ϒcVo5k<ϐUB*{_L`tu%Ϻ4 -+9>y$8c֍q=6xf>)<*{6ô%2(!u\n>Ljlkظg;뭷,R[6IxxuhրrU ˳I[yYvi(#d\Bh>,/USmnm`ln`}55RCJPr+<%|OV{$~->2S!{_C mjU杊go>B?>y$8cOVFG}7q' kQj=9oY+|]+#f'f38Z|j`v>'vX_/"];,BaٛGUsIŖ !t1|6J5uBd]dE}Qfdx 0n5Nˢ#u&,e]@yfuCȲG `*|O#]@1GjW$v(?-y>4g+>{cr2|uY~x\.+1τ&Y51JFUYɣ(ʸeUZ/(qԟ;YkUKY`^?30/Y`,`~m2s.`=zN$7Cۢ* OTDu80sJ—uyEhu 9^sf:4zgl?|,b0>g'B,3qq%wh:Iq\2CZ2Xm)mi$ ]M/R[HO߶zZn GAdLhZy:zDĞCr-Ԯ/gVυVP7nk?G:Õ®er\ GV71`X`ܔvV'6ЍO60g?nԯ8G8?ݿzs3~ԭRٱm@m1bqEX"fTWec|g;Wr<h5sjb|`u%}tmc3L?o;3qٻc>*G:tyi '< < iLci`ja억 ]ב{Beۂa< <ÿ}hzShǖh^|휒u}{=Α灒xźsR)Y*#XyJdZ $CcE#g֜}宨G_-ս:@|ԤqwZ`$k`V/;Dw1 }Kj#-ec&$laݜ=[Ϩ83{T!Xݎ1#3ϭ<{y/aag|,Q"_X!'Xny+}- _'/vDzm66yh O)tb>(WC>ntfE˰$Hي=MVSi#]f0I׈)YWcla뙬2>ckV[I<`w}6cL-EC`q\rᑜTfL8"zmd[kLWqen/'}`ڿjP:jRf~R})w{l]Ю>ѯ>=-P|x>qTQ#ܗA5L*kXڵ ,iin7Q6maLF}lOI3c%0VFj+<򥧁NovmOVg@kY|mdzŷl"M<*&[klT"D2oD5 JgK\IAlv3OB%~vD821 Z 旎J%G"z,]''k*)^ ԪQxkQ,e~ -Z6X!O|mJBzhflc !?gT%grmؤi L}j`nxU5$U=,JL?Bx2$gc x+9|(:⟳bR}ދXc7w<m0r DXITLJeSy>giq Xm˱EưڳLj2wBإܨ3j7Ǣ\Ӓ{$;{qYSf!jV|oT꛵RV]@?7KۍkX~t~:1v?uHneU~]3w:7zkf{iv_F1/s]Z_E& W7vUʚa#6pݞ)4.p~krmMG%?BzTYeܦ({]Gq`Y*݋ǣ9?Ͽ ]#4 _@-CMgw#|:@ư)L0džsAg>>{FinYk Hk)fG5XD4SK}]??6 =vg~]e\??6_x׈K\36m:@lG }mIŁiϏ/%:IjVb99 x76b$pLKP~}jW7CɷMmdLD%f(Vs1,WQ1#uqۗvShhn~NDZgmzi@I/{O4Y40_RrsӦܾf:7o HڕOry˼5Dd[e-!-k̿g~0TJ-%EDGM&P|fn&vKmo[B#=ZOn~bxX.}BOzO|;?5\q]Gq`󞹩_hϷI ?Ƈ8^ݿYny*m?[lgxʳ s6Цq\v].wi[gVEokJ^#)_6N~Hyovme0;PVo?;Vqώře~ޕe;"^E.Y?z-?",ӡ-A 7&,-K=3+2J~pDώ, P [ehp8Qz7'M8Ev&.nQoju~j4nTj -mShQnEھݙj{hYK}޺9?ow@5a,tms!z,;WO{Y.fhS@lk,4Rק~k79mK?풷 [.v+?d*msh2kfOn՚6=t}~ :(@"[۵9`χqmEvks`hajy-ІnE+E:cZ@Z Tڮ#lz?E筁6-(5lWJv]J|h;4w 3ع6eBOx̹|n{p5{S懈]2 ?#yWZEDpٔw_Dsޜ̒cEQk衝\P*w(Aԓ%{҇bsܛm+ LplsK 2 4+(v0=E'KʀOs ~q@YL e-,7)DuƼ LshBz%X&HMZ_%H<<ɆB}8'etFf9^G6%ުyW6>K!mG-c Wn,Goel{x2d tBߐ ͔5}'*Y{NW֌͓?ݎY}-_̣Y(1Dz>a.8"J/uI_(QP". 6( ؽ. q%!l|Q(ԦnMh!5wZJ&>*W2(i!ϗ^ +`}^B$jpYJs7򔂓O>B',RWN#o{iz)z黝u咡eMCqWJܖ󽮳=y5ekt4r d4 q])!/EIN2F79/^$&,)ȫ6ѢI7~"u:vdSog44Q }1@σǾ FSf?ׄR }x85;yd`oVًZtuL[ }fA&fߤRA>SNIbƕj"Mgr)NZb@x);ճ@\)EuO8yo.+aT8f|zMǍQ.N!s籟 #4u%)#<ǽYHc-wi1 )eo {{s/ pA5Y K$ _sT)Fs1"UC9}\6nWҏeB2Q>{sY QN:8 wRA~$ 1>OXGZr[B>J~ 14y zM(_?< jp2wT5&P艘:& TNMrr⟩ЕF C9l%:,+*ܮHWShp|ܗQ\lJenG奄2GV- ~}t!٨1%(=8?504^'$5)nfLm;)CΫyV͎߃=én_۩m"XPI}2v18cje:S3>(:MWgAu`Nѹ m^ul_Ǯ6/tǼc1qƞ5rmrSi}\}׌FRhRL妾 \|"Xhl8Iy!h kmm@=ж q:"c\|Ps6Po$f9W1%m8K@ =08&5sP%F…"KySo$Tܷh4r-KZm6QRnYϔfٲh6γV[Pc߰'h5!|s1tsķ2Ѕ,l.%=}=n-tC`hzCJrZ)Q5ya.g%m_Gx:?_Cc+j] JR<س זQ:Q9~u]a;o|댺cϋy%y{Bzl ^o)=^3ΒA[Ȳ--<^˯n=%ٛX2sKE֟VookZвgH|DNCѓBҐf d\Juxos3ic,=agalykdtz>ּGjyo{fі%ѩkf^ Cӗ>E6s+ծَ \|FC1Y 7\>;PfgH>3 nbtO4;3"k|^38Hlϲgn''(+_--ɟQ w^6ϸgѹLs.{n7ufsҦ 9?>qX kU)*PHm=16<@;ByH?C.xN& =DaA`ǕBBJrKȝ^v')% Fyڲ,"%1:JQ`Y$#!j(NeoB%#sA$RQieK.|e_INIjDq@(nϋBmHoˁ1،\߫9ocHmUsxb=@o J5H+6WӨv6MsJM̈́u䙽 N\NgW©6M%߲x:>壶*D)n4,ϯW shk-cr܇ ҵSFWZl]7a=h.DmK-f2/T,LxM|o$W]x!<$yU.]r1*0Mca C/Ufn@ɇD/_r^kz^uoטּ--vx||9wΣ aLSӽ fU \>Wd:)2P?*qRgb?h{^Wd:)*P?qR.2 +Q_g^8e@Q<8Ͼ2'%)#*%m2`͖)^|#7үDV^yC)v)y5q2b}h)hN8=4'N Z!OSzCn+|0X$lBʏLxPB%!\} dXb׸`%|Q . ?AgLI(@.;GWʀX[YkT3U(oi% })`_mg',?͉$ZPٛ@!̹Ԯ+$.0K6rp}p8Ôb&Gt\c qƶ]pynO]wĭ 4[e)/9VԝS, ҥfܺkBڭ- }jknңu_{ɹ|#N{mRoCXw7\xI'Y[=ssbt"y-?r$.'HQGe;-!v1q.S >y\R29mQ&*GpֶWBE* {ku@ ӵIsb࿬Fs~mܞ/Հ6Pa㠾5n=plۢ^c}Ob<Я}HQ[ -_Cykwv?{^Sv.m_C%_PHsvgkآ^Mi5]V ;yd^7]+ }wqJ]¼5p;E4ZT;R$ Kj!k.w=,V%u+TRA}h_w:yyɒlc^V R>P-wvo淈xZ4-=KMc(?#UFcKZdًe_Ve7Gc0 ۄ$MQmVCұ*pihI{Z@ -܋[ pGj*VtpOi/_dz}F44[& _$1tЃ@mm#J¢!?j)A-(hmM)ϕźok V-Z/|FiL0.:qOS㰿vG7j;gCa山-z|Zy\k=`ӫ[ʺVk=N& 4Ŧqx]RʀUsuez_e`Lr Wou`c{䧹ku~#ngҹtnciǏLʬ*Eagle-2.4/example/phased.sample000066400000000000000000000121461321437612200165030ustar00rootroot00000000000000ID_1 ID_2 missing 0 0 0 1 HG00096 0 2 HG00097 0 3 HG00099 0 4 HG00100 0 5 HG00101 0 6 HG00102 0 7 HG00103 0 8 HG00104 0 9 HG00106 0 10 HG00108 0 11 HG00109 0 12 HG00110 0 13 HG00111 0 14 HG00112 0 15 HG00113 0 16 HG00114 0 17 HG00116 0 18 HG00117 0 19 HG00118 0 20 HG00119 0 21 HG00120 0 22 HG00121 0 23 HG00122 0 24 HG00123 0 25 HG00124 0 26 HG00125 0 27 HG00126 0 28 HG00127 0 29 HG00128 0 30 HG00129 0 31 HG00130 0 32 HG00131 0 33 HG00133 0 34 HG00134 0 35 HG00135 0 36 HG00136 0 37 HG00137 0 38 HG00138 0 39 HG00139 0 40 HG00140 0 41 HG00141 0 42 HG00142 0 43 HG00143 0 44 HG00146 0 45 HG00148 0 46 HG00149 0 47 HG00150 0 48 HG00151 0 49 HG00152 0 50 HG00154 0 51 HG00155 0 52 HG00156 0 53 HG00158 0 54 HG00159 0 55 HG00160 0 56 HG00171 0 57 HG00173 0 58 HG00174 0 59 HG00176 0 60 HG00177 0 61 HG00178 0 62 HG00179 0 63 HG00180 0 64 HG00182 0 65 HG00183 0 66 HG00185 0 67 HG00186 0 68 HG00187 0 69 HG00188 0 70 HG00189 0 71 HG00190 0 72 HG00231 0 73 HG00232 0 74 HG00233 0 75 HG00234 0 76 HG00235 0 77 HG00236 0 78 HG00237 0 79 HG00238 0 80 HG00239 0 81 HG00240 0 82 HG00242 0 83 HG00243 0 84 HG00244 0 85 HG00245 0 86 HG00246 0 87 HG00247 0 88 HG00249 0 89 HG00250 0 90 HG00251 0 91 HG00252 0 92 HG00253 0 93 HG00254 0 94 HG00255 0 95 HG00256 0 96 HG00257 0 97 HG00258 0 98 HG00259 0 99 HG00260 0 100 HG00261 0 101 HG00262 0 102 HG00263 0 103 HG00264 0 104 HG00265 0 105 HG00266 0 106 HG00267 0 107 HG00268 0 108 HG00269 0 109 HG00270 0 110 HG00271 0 111 HG00272 0 112 HG00273 0 113 HG00274 0 114 HG00275 0 115 HG00276 0 116 HG00277 0 117 HG00278 0 118 HG00280 0 119 HG00281 0 120 HG00282 0 121 HG00284 0 122 HG00285 0 123 HG00306 0 124 HG00309 0 125 HG00310 0 126 HG00311 0 127 HG00312 0 128 HG00313 0 129 HG00315 0 130 HG00318 0 131 HG00319 0 132 HG00320 0 133 HG00321 0 134 HG00323 0 135 HG00324 0 136 HG00325 0 137 HG00326 0 138 HG00327 0 139 HG00328 0 140 HG00329 0 141 HG00330 0 142 HG00331 0 143 HG00332 0 144 HG00334 0 145 HG00335 0 146 HG00336 0 147 HG00337 0 148 HG00338 0 149 HG00339 0 150 HG00341 0 151 HG00342 0 152 HG00343 0 153 HG00344 0 154 HG00345 0 155 HG00346 0 156 HG00349 0 157 HG00350 0 158 HG00351 0 159 HG00353 0 160 HG00355 0 161 HG00356 0 162 HG00357 0 163 HG00358 0 164 HG00359 0 165 HG00360 0 166 HG00361 0 167 HG00362 0 168 HG00364 0 169 HG00366 0 170 HG00367 0 171 HG00369 0 172 HG00372 0 173 HG00373 0 174 HG00375 0 175 HG00376 0 176 HG00377 0 177 HG00378 0 178 HG00381 0 179 HG00382 0 180 HG00383 0 181 HG00384 0 182 HG01334 0 183 HG01515 0 184 HG01516 0 185 HG01518 0 186 HG01519 0 187 HG01521 0 188 HG01522 0 189 HG01617 0 190 HG01618 0 191 HG01619 0 192 HG01620 0 193 HG01623 0 194 HG01624 0 195 HG01625 0 196 HG01626 0 197 NA06984 0 198 NA06986 0 199 NA06989 0 200 NA06994 0 201 NA07000 0 202 NA07037 0 203 NA07048 0 204 NA07051 0 205 NA07056 0 206 NA07347 0 207 NA07357 0 208 NA10847 0 209 NA10851 0 210 NA11829 0 211 NA11830 0 212 NA11831 0 213 NA11843 0 214 NA11892 0 215 NA11893 0 216 NA11894 0 217 NA11919 0 218 NA11920 0 219 NA11930 0 220 NA11931 0 221 NA11932 0 222 NA11933 0 223 NA11992 0 224 NA11993 0 225 NA11994 0 226 NA11995 0 227 NA12003 0 228 NA12004 0 229 NA12006 0 230 NA12043 0 231 NA12044 0 232 NA12045 0 233 NA12046 0 234 NA12058 0 235 NA12144 0 236 NA12154 0 237 NA12155 0 238 NA12249 0 239 NA12272 0 240 NA12273 0 241 NA12275 0 242 NA12282 0 243 NA12283 0 244 NA12286 0 245 NA12287 0 246 NA12340 0 247 NA12341 0 248 NA12342 0 249 NA12347 0 250 NA12348 0 251 NA12383 0 252 NA12399 0 253 NA12400 0 254 NA12413 0 255 NA12489 0 256 NA12546 0 257 NA12716 0 258 NA12717 0 259 NA12718 0 260 NA12748 0 261 NA12749 0 262 NA12750 0 263 NA12751 0 264 NA12761 0 265 NA12763 0 266 NA12775 0 267 NA12777 0 268 NA12778 0 269 NA12812 0 270 NA12814 0 271 NA12815 0 272 NA12827 0 273 NA12829 0 274 NA12830 0 275 NA12842 0 276 NA12843 0 277 NA12872 0 278 NA12873 0 279 NA12874 0 280 NA12889 0 281 NA12890 0 282 NA20502 0 283 NA20503 0 284 NA20504 0 285 NA20505 0 286 NA20506 0 287 NA20507 0 288 NA20508 0 289 NA20509 0 290 NA20510 0 291 NA20512 0 292 NA20513 0 293 NA20515 0 294 NA20516 0 295 NA20517 0 296 NA20518 0 297 NA20519 0 298 NA20520 0 299 NA20521 0 300 NA20522 0 301 NA20524 0 302 NA20525 0 303 NA20527 0 304 NA20528 0 305 NA20529 0 306 NA20530 0 307 NA20531 0 308 NA20532 0 309 NA20533 0 310 NA20534 0 311 NA20535 0 312 NA20536 0 313 NA20537 0 314 NA20538 0 315 NA20539 0 316 NA20540 0 317 NA20541 0 318 NA20542 0 319 NA20543 0 320 NA20544 0 321 NA20581 0 322 NA20582 0 323 NA20585 0 324 NA20586 0 325 NA20588 0 326 NA20589 0 327 NA20752 0 328 NA20753 0 329 NA20754 0 330 NA20755 0 331 NA20756 0 332 NA20757 0 333 NA20758 0 334 NA20759 0 335 NA20760 0 336 NA20761 0 337 NA20765 0 338 NA20766 0 339 NA20768 0 340 NA20769 0 341 NA20770 0 342 NA20771 0 343 NA20772 0 344 NA20773 0 345 NA20774 0 346 NA20775 0 347 NA20778 0 348 NA20783 0 349 NA20785 0 350 NA20786 0 351 NA20787 0 352 NA20790 0 353 NA20792 0 354 NA20795 0 355 NA20796 0 356 NA20797 0 357 NA20798 0 358 NA20799 0 359 NA20800 0 360 NA20801 0 361 NA20802 0 362 NA20803 0 363 NA20804 0 364 NA20805 0 365 NA20806 0 366 NA20807 0 367 NA20808 0 368 NA20809 0 369 NA20810 0 370 NA20811 0 371 NA20812 0 372 NA20813 0 373 NA20814 0 374 NA20815 0 375 NA20816 0 376 NA20818 0 377 NA20819 0 378 NA20826 0 379 NA20828 0 Eagle-2.4/example/phased.vcf.gz000066400000000000000000006073041321437612200164250ustar00rootroot00000000000000BC]mo7%^lv g ./>ǻo(=_qd7H#y n>dϿ<9qwo?uqrv+?S&(x}v׳'GO_{뗫}~zūnU.oSWn'Ok{wOoyx|䗓/N|}w৓?F{wU܏0١qy6ɘ92.}1ydF31kwIƌ5 n(ߍ[|7 n(%G-; .g2F/́ .s_=ww.vVɿ_߫ߟƴ^͡l~=uuh56UkQWZ|O<[ہ*|oR{vGvomGڞs zG_C[Wu\s>(wgQ|j#_8>cb=jcg9E{x4?b~ޟzg=5o\պ^kqtXVO,/k+6&u5=9潆ͧnk%]Wl P aȊJ8Dx4( o 66^;8pr/;6( Z{6l}iOhPaoI]9"ur!"A E[}چ[qmAP^GD rU/s-y o~ޏm '%S BC#%V~]Qt7z&מ{u=KEݸRJ|hz\?zCZ<-^{#q(e:?ߡ =s nc昵.`6Zs~z=hAZ6==XC7vCɧ1NВ Dr 66 ,B^;&l䬚8ZmpAAv3 KdzA6j'Mas22KD+ki,"duʶЎ:xe e.Yαuo{*sOT_!lEEs.=UX7GoA@hszP: B[w׃m_% d<7rlzH{sWcc,FXWz#\3s}Ͷ&:poյ}ci:{-GKuRͦ?y_j ]qb2W}1g纅kδvF{ R8Hc־sLKz4rYϋc`h6KTwEߥ}k3EյIEv۵]>u\l~=ߝk9ig#.痊WZ> BȨ>:ls֩nILp[z1KG##JE uKlrt\R d 9:&4>> G_Ⱦvz϶F1财xh5صch}x^|:2B isgkoW5G_GJu89KmSO]cxF:4;>a ]aXnWo)А~yT w|l~6*z 0Ғvv2]j5ݾytbl+jH]ڧև혩ׂmhq+&Ԗ~NvQ-}h[j*[~7-~kmv{i}dc[Av~ײm;:_'}.и:1?;P&mwKek3_mSBS \g\7ȕMm|ߺb_ BsP9 T]ڪ>ÕՇe~&A|Ѯݮ*0]QJyog}X-,[obZY[ǚ-| =#[۟H/S<_tPR!>@u9m q^ޣ4:t[^vk U\{? vOQYcjSqrcHlla>#?3Ԝdmtԛ=<6R==KA@2 A8}Dc(_\1P?BX%={\P#չ9D761o^ֿKv{c{C9Q } _[z|`n$ߒ?GrdS=~|eWC^Fzڳ~WZ-=hǞݣZ=ٯ:;KCwjXg[G«&Oy+@5I-%rnl0`굠i\Mn6`vx=B5-6z6[M^Hϋ(=#[۟5nDH|:jv%/|G=!YE l#oq }dZAϵok}n O05~gi.hvm1Z:b[/K>s ~VG`Eq!@_?7_=o+ǵVxd?{Eڷu7ޏ4il{kcQbyZVj;Z/uj h_ln[.97{Dym6W[A9g E8(A0#@K10:Qk-Oqcc6z`yhd77˿Xt,xsO{6=jkKܭD[҃6  q(>?QlϚ_sHKAkm=z=\V=}Ӄ1c3ܕފv\\w }k3_=찮(ׄEq?}Glj*wI9N_~M=Xxw:(~gë+Bޝ+Pay<-Ȩn;?B[=2ҭ)nlzP[lj^jj%d5yc\},`]y~>2=:жmR.iY̱u,OcjncGFuGFWTuF[ >n_D;v삊m֏^njn+ng? }rڥwH OgʙY[d]A ּmPQ EklQ\ -m5;kllsCpԇՁ>!\C~mR]q7ݶ.ֆkl|?}hU\"S )~mV^|9>Ƌj\NWRh}ֿxz^RkՕHUM]٢Jcչ-u"k۵ UjRki{Wj[;mt"qXS?KӪU!,XqUc@BZ@<{nzohEh}9:t"i5!l_qrE[k;tL-:;K|&sv`t-.\%"LN!ԕɡC_Bs_:_!9z:m=tBC]˒";]33a;w%3*(RGGHGഥ #x_]{g׸5ׄ̕oE#g{X?+S3vcc84]?~>~VD *l/AF|ENZR\qc,FdǓ(G%!on.7g-(6CdyB ?Ae2}I\+:~x  Zk:,P y,v:g*;к|syZwt|V\dmA6Kr kOqڂWuR /׼k[g8:{3Ug=X,1 p[F,tߕ]E2\ [g{wz{ݜ.&']񾲶 ]V%ٴ<9mu3^AT3 'sLQz4bai|[vKhXFs|<(]yF<臱>9BP0 mÈ a|q #kMa5t!5Ao^0nL}YhGYH$&aeEÈ5ks #xlȗntap0:R0wYH alY _Lx0ݠo Ѩ־9MvTo%(y|:nx5ބ_swΧA7IDt-{T >c~C*g拤7S}^"$nkf{iWZxҘ0}ېaz _g]x(A[Np凬8|")wDb$=Oߋe<1<4r[ DKYbۿY^aێT9 fܷc֘i=Ҹc`m%2xzv~C/uk ^-A > O<&YzeŧoZn񠏱x~B5Os_A]}2`a9'XV>1__`fz[lXxh|1"/,@õQ5@~cڔ^Qkҕ^꠶2za~Ϊ5L};^hHp-q-+˿uef`No~0-f<^zrᴖb^_Lv,xDri|}kXUmqT saiC]g !_N&uˋ7ƯO,Ч3ʡBk(+7rY">!yVC_ռW\sǴLY=i sr߫Ǻ$%+뇿Gi;<n%ӓ6[&:ݩ[s CiN-{(Qϴ8zؙVk3%k[@HkSI+v%%dIʺRO&p s+^y|ɯeu u^T2Wc:ɭuR4*i]r<Ӵib]n]֘2!e=ͷ1UXia22FVGSIM b{l*4u֩#,jl'ҹZ_hel~{kO)4?; Ai_oxF;XIǏGuI1p >v1S;s iKhi }_wט_N^ ^ub4Ui= +L&`%ϖɄ'vrb.uo!A'[z=et;fcBNxٱ.&+z,x2̓],VY`l+μFֲI cn`י?wS?g(h'b;op'ʝ۫l_X3m]NO=^6@Q)̖i9`e uQd&<>+2_>8XޚsO}I}uХaz^[,EU|"R,wr7zg9|X%u]H R,)M&c_Bf4\,: lNXGiOŵu+_n- LMB[{*Vh ʴl*yˇlD:-Ky̓}#L e=h>ofZ2˔f h,%3Fow^B?Bߦn{+ex6 hOжPyJtyPDxvVk9^ףQ4i ǟ8x=oy};5"c>k1uMI\s\~75EuqqhylB9FԤvL {ϕ޹L{+z+\~;+!yÈ_Ă@Vz}]v\\a) aF3~y l4 bʑm駾{V奔G)?jUоgOwsf$[~P{1^hݏ 7YЯ5_6A߄)G_7y~#QbZey:փ[|)K+\!vm_Dۦ3uc-d]Z.c(P\ETb~PJs_n49@XJx[zd*2^szy}ǒf;{ ]R{ɨڶoෝ>ͽk=!u=-|Z  六>S3a^QRQތ!Gv*u3"-n;ZsmR'5mHfz;U!]KKq_yxWx;x eg;g;EsTvW5}D@^H]d pz Vk1]MXk{bRx)Rn_n._! sK+9 !딄W09V:z}F2+γFWC,kRP;{Ҵ늂W;<+/,90^yP$vP b&qU>h+,זA7˩ lW@Bx;AىJCf=&=;)bXY|t kFН3GKL}-X˓5je+Mb4eNޮ|&ϟ/o3,'ζAL=1f8?5 n4@}p_Iy߾>j+lW\ƹL.|@co0/BC]˒LdxGco4 76S3Yz~M|ZίS?~빯dZ>o0wZȲkN~oo?_#]!x&zr|PH 9L~2{cB('KЏy=_~>ec(,9.%=\4i$}Fu]X߫a}Q.Rra1K~m>A4k+c1?]bm:aG`NxW PCoų0Fd9/95/2`_.v tkΐUbRۖy [?_TpAE%?#=nJx5}U6p-ΔAXA,]AB'QnG{U 0w#M%jҽg] J,#.Vy< ~Och?,}~?8:(F}:1/y6xcgskxb+th'4֋bs1uT_35/J/*EtUgc\(|IixU/'WkԪ_|ugp]ؕ' .;1UDXɌ *G"r+],[e㸉S91s5΍ s%h\Asݠc,9?rz}Z '<觱k-,)CTNr<鬁JNƱCkT2F\ًXX\yY I"sA>d4*rEdX0,p哵>qm {r\0yGyhktpGBDBk-w6>_aO`6S ~1?r#߃cdxoGUJo[ugWh>7} }۽1iH}{W@Xs{*eyx>h8F`/2#t" M dBĂ-ǚp.nr=2z>m*.{7q -D3̸Đ0FIzj Jo&rs,8L\/Tfh7|QDoeeSy4kөӿ!#ڗNDS,i܏4yuKl?4Dqj/wg*._5ƚ#ڧ%擥:8)z5xI7ʱ0םh3OM<ǪQ2&ѷ8?pd`i<%1(:'\d%|:q֋*T~Y?s?c_Q6k#ׅlS`N;S?c vN9τn }lKs58@=xbppЌ++Nږ_aTss@WŃ|/i֮GiKNks#WG Gк3~>4Js~vy> {빰nInVtr]9G͗)6oAŃmw3}sߟPt*5*: MaNS xT@9MySkmj~D$u8h1GklBe]>':qg3Z.ֳ_?l[A.&UB͔}{[#--A Ώ?}O>W<(}܆+lǃMG|:yӟ4닦i27ՃuSw՞< |#2nnlA3p-\T%W\rojeU!~ %k&g"]be-r'r$u z]+Tck:֔܋a݌6Cy7p!XJ&>V꩸b}&7˿"W?_JzTޮ*z|Y8{X5t˂mR^2n։}#/^jΚ::olw{_࠙ntnN/zўyo_PWn{J:Y{EIE\ي7%o nx0wyȦ)svRh^>VWkypAmcm:9M4WlUWuG ({f{ۣﴃp?6u1@zQovqo2*oE[M$'ov'&UobCPϠ-o#Y/>>#_:XoX6st]m;o&7FhRh8˅ IX_|sl,uK x P(DžatMC?q#9V~yTb ,xy a6"N.} 8 99}F)U`^>d1U`ť25I墜&czb#4zrC#Z:6ȧ"QO‘~J6pP> SW)73)zCr)N#)(d,5i\kBC]r8<{?f(*^}a-<֗?^z`k Rz/DnqrY&Gb]3zM/QZYccV@|-Dا;}7Z_aBas=F٫˱s7W6*-1>Q1׿c{3QSuNPSs-^'sa=r*S9gފ͍Vx?_.}yۇùq_w->ꞇKLO1-WO ,cYW:qgjOX"֍ejOt.;Pmu-e_P9qճOl5gl௅qߊhrˑjQ~]s esv>֤eKyE[p/|xe}e?*>x>.)6Lˮ,g?lچ;V.vѧ R#w\TXǣ,k dt9 わƢ8)~at<#Du,5. w>q\|pyw}J6QvQ?za^1ܒb.[ȯuOߵo[F/r_hfתN2~wRJ 'ZV=%ǮcǫfY}۠eLWҏA]WdōSz>(ө\xxy;7ךSjXqƵkYJQ5_7ZOX?G_zmuzCTO|Ύ>((}6ɭ_{U B=ؗS̿ZnիB4D 뜤ka;?ƅ^ӆ.v[?֚g/o[#{tQOY{|o[:rڽ>zˣ2cp5*ʢq~?[=Dq]P:|HTEDjʤ\W\ \}u#R%1PG>\ڳ\UG]ǥ3$ x.KX>5bH`/. B}]$8|?#ؗXMݚHՌh3WfXcŜʭ1ߠLta<^L?pxAxF)~|Gk*"e04 Fa\(&uŊR]y#*f5?߼ŝC۷X_U6aG{_+Ug}nNVCB솜}m񵺣1v@KB?q{)I#Ke$SW`<GH:_z(9uDx>}x@#; FBxqeq=MO(4+|Qn+d]*AWrĽ\.y.V3_-*5.c|m-[W|D5ֿRiPiY>6p2zb㬘Z5jxt}\oٸZ4n5&){|}kkp>1uS#wĨ|oP'7?bD/ kl9+S|Wa\*?M?9fjY)hGϨT+W\W|C(+էL*N0}kuJPk긩y'XcaNxT5%sWz\8~aE5ywf~W`Zrׂ͑[e~OQ:p5uMv՜/mV?ߏqӇ+lG`kmy>.Tۣ[wU|cܼ}7s_~oʶ_/?]?߫~ڬo:>8-tp69 A_p>;!d!lq/!uOؾ"uϟQ^e>xC꼺w]}6gލxOmѥxMu~rc9ZQ.\}A} FT*a;\0sqMm[Fc sϺh Yс;32|kq}Omm]{[~yV+|z wڶclk_u/?ئᱷ?n;pXΟH[}Xc]Okq]{ZYM:} xv_Џge}Ck?7Qn>=ώm~m=!>5#yg+zh2Ny|= EsMt.7|i9a*ːOnJ~uuABHzL,!&:wV:<8gK}&2o+!K|+mҶ,<ԡ&CZ]0rL>rJ6ȁP%~s8:g|a^xxB=د}ݓ[raa8eE9 q]l7z9pM=zW4ׇ7ϜS /عtתr &Z.Zlup肩Ր6Ars}wP&9X-Rү=}׺MPˎyC0^7{nn}~}xsq/#;ʍNvdJ n f_M1rAa 'g̽=,2o)<ƍr}so8>:br:fseƣxAUg۴v*>5Σ}]W+WTuGUű(>avg\պ(*o rOy5 1f qE'j֓>/0T uXأ]8vNmSp#p87Ҋ0H>Fw@Wu>>P:cк^4Ƿa̷CjV#3ck?IWV.ґfy2|6]52c[yz}6+*> wFh{?> ux+i#_6QS>j͍?-+p&>nl{_^. q *7]{e@Ti= :]{igoW7:S]fUcuM Wq xUk\lq%I/~^I`87Li@v>|pX's_Z֝v>*Fi>?aT,T9&~OI%$>q❲y2:[%-mK} گӖ=t&BX뱋Wx_dZww6c,e>ĺ8O \{zcm?Lm[liA|Q>-KqYLgib({8iO{c^=˭{౑zoslyiHjD_~W_ac8b kk~*a h{?7smC-w\{h/c5Gō{J1ڵ?7Y Sk8`>Z "bȽ]dQ|<ުL :/k=|Fg_>~;=ZE=sI(Y>{OB 0y%Fmg;㝱}}x*s{|}#JK91Zi}3kDYUFw0Tn62%7w@5x>PD96xh{$#6^|>`a3]lseGu0"nJo`@][8W:ܻĐE/xװ>9w.uN:\>|P6l}e9=qZ8rF`E3˖qN\̷dQbykgBC]˒0<{?fC8nl̗^*3K wq!UeT%) ϴTT pbB???E3oH|EKÿQ2aGxRń6?01||N< r4F4UHǴ*Xwggp`\ۭ޳@0e;5N_ۯĮP C h߷x?,V>^ѥ u~N?=/|Ni958nSi^*h=}yLF/[86U߆ 4MrGc6~e_ئq2Ӟӓ>#"t9 =aKo+8kM-Վfe6M߫=0tͥdU6 jFϷy.gmr#X!X2>nx6>W3:EŽѣhN4,2\wSgi=5fcc݅[Dhr̨n#OnaoXۻl,ӹ=Kх[[V0Bek@ϡml0Df{J`w<U0g]&<;μ8~xq{ R wEq?];& Ƌ[Gax+Dvl8;b5',XDhcmM# |1u8W]sR^+ Uph7CAm{m-ET^!MkǕwB[ g0 }AyplGsdxyW68 bD8Rۑ"xtQJH֢H1k]Q9L|NHQr4H1nc I1=c3<"ȝJWJcƌŘdƟKKN? =H{y.wekK5[WTڎF*ÜTUKϥY_AKcR]<<\Ϟs\Zvl*}Շx,M{a_,vԋyc8Csym0`/cc=Μ.i;%e-miγm~diڧI3T}JTTgex򵘽>ޜNŃ:5F9/DKSs(R m:aԵDMljצ듧쫕c9OKiXve;aK:%ᕟ1u?%)c=C̯reB%+.NXrar9y%T^隤Y.gxH.Hi|˥=ٗL>Uvc<~FvN>@. ؒ)~ftyt}`mz͛}Z+beeʶr,GO.4,3?˸鲿‰}'YaW~3#;>֧/|xpJbTо'iJڧ)_T5nsZ~YٞE*? L1+Crez`K9?)2w: EQ8DGےǓY&~E>lAHS4s>Aۚ|YI]A~iU]  ~9sz@-hc<֗-oovHi`ΣStky}v)Vlt8c*qySN mY\nP%iY2 z ̼Z) 9:1y{ \PW(]۞cX}ijƴ@kskˉye[eق1oo:Ӳ[3uPs.kӶq>4Aǃ6iCSwi<}ʚ9 $1_E+YpZNNˆȼu>Lʖ?g4s"/_U|U,1gWqY- /oZǼ%W5kU|)x:~ V>~bOZiVy׶ו}Y͘I44iYih)x=g??w^on˙u# ,k`i»@.i8xU&_lڦnFw+HXgq+ .sĶ}_iKX^&Z[@¹UN$WrM.3M](Lz^HW QS1*;lSVtUcGqLox;}x}][/1׋%tٚz'su H2kύ1G>SgN?_clŻ:-1|U}(5^DoLrj>c~Pýc,sS0,tgĵE0xuAAZ̓]'XhxJmV~v|;pyʼnܬpB,ض3[}Fr.#O4[=*[UsjޱQ)2(!o4}솺/} x tl@a|7tM}{iڂFg_zC:4)Q8["<*aP-k<uw:vXĿ<vnJ؎<Ӵ’G Rr=>*}e9h$+>lEp_xrt圳{46fr2&^(BC]ˎ:]g>f E/z{1/ޏ$W$d9vRFCĖ>$%yr}Z7^\~]}.\?.9<ׅ{^9M[9syZsxy^Auŵ13/C 'ͅ  i - NfH˗8 }UזSe|'m_\3+mxՌ ȥ'iJ;@f^`~l=9ۃK2 ϵ.zPHО07W@m *ux#X2szb}%@U#%j af:A yccґ}7-7z­E5g;DYn{6|$'Vڎmhɷ4?E|s|yZW6.*S_j@[br^Ci#y8iׂۗ[C<<lܿ}{g\&!oGsLdطk<ʂ+8ttŃ?`@x :aڣa[0cv6w&i-vs}ځn=.@hZ|=5<`Kyq9Nݮ' | Z7 CrG*s3z-J{YHv4=A-)aZm&f9ORT5su+&|f Lӽ@o)wx\k|}`[O-~(ྼ 8ݲ0tk,}m/m,OhNm?h[i= tb9d{H<Ŝ--/۫~-= \ZZVL7VOR6Yy,ZϰV6Wݬ6lՍ-rO<4`9E'x/uN<8`O<fQ;70l֊hiʇԹ*ZQG64_ZT\-.F5Fqk#e^|3 "tS{C+}3=dgfs}]hUvWqWWMk,/<\3ýBrK{ɜr.Au"OAwV􃿢Ј-#T~X8h9o\O~r@Z+|3?`c PxMvPz@/G6re>ߤ.)ߒ%kV.Ohsh`_mʼH2/fnG~-}@hJuMCir+;|N>c嬛|ԌG-|l!QV_[xOv:kӱe78xmct{(~:dI~^lY>]z[iZrFit>nYג;}ע۴/'BH:Hf=/培Eu Fv7[sg<|w{QMM?3liY5KdpȖ7PR*u:K n&$_k兠96G9쁮_n6Rs6:4Xw߲"4yCm,0C#绞>f Uڰ>.gnx>99RuPgԶ6zX>eʋV1aVbqZN,F@ۋr{Em_#w ?ϩ2 ̳QK;F)-kU Ru2`-}Z|5W({98Q_9byv,-pC0<9CػۭWz)iдGx,3 {4' s| O!4o+п9vNcme[wjuLjn]Sӽo+T<~wF0;Jg2 }i8?ûytgӇ@;e;MwKKODtIEKN4[?ӯ㾐[s?Cgyv9n3_?;Y5V;e_>~?S;lWhp}I3.R])=5rgM^3П:nOO$mz;$$75@wҀgr> Ѐ˃gS6ߟ==syl0ďv1|㟗ǯߋ81^y^A\??}>b8ey=Q;9,^A_q=@淜Ss ~i(c:zZ`ݯ\6:+Q/}Kcuh4P\' prL KL0"Ч^Aql}m#1u,u~ybZ e|Ѕn.|ЎЄ_F8ϳ9?x,|qz>q| >xg|b|lr0 რX`nl.|0L5!|P6'upe瞱q]ܺߚu퟇u9~^g_zZkc$} !^۾KOfb%{~~LtkcB'kto~^T>y)vxcǎB^OGgy 9RR &?nFClcߧ!J_ICm]k8Z=gپ:6~Ny} oc7^ ahƦmz E<hGlty[_Qܪ0BkŦA2GcyFǣ/<|ó-%}N$|s04,,׀џs(`gsZy)d?L_\Z?;CJ|$:D x=Q ,1bck_1'{Xp_YZo8f0&1~oC:v̈́0G]O9}|dgصU$w>iA7>ێQ򽜣vPIr'>ێQl.W=C8@*#aU$wFRݷn"ΰk*UN;)]B&p=S >kgeC-g1Kɳ`\g< I?/܌?>tfxAb^;\^GF~k[B~og=3vǡ>E=`0;-C^l:bvt~oP4#r>/̈́0&N7BH7J!R+3Z+*UNOBH0Ԏ4d׵о;]=.3QvVVR6g/KlFɚ9/w!fI\y%d 3xFTb'f3ckaedUL_%U fZl[jCUM[:Zou]xEn5^>%Ş/%s_͓Ai`x:[|9^*ثd{IrY8-'LSQ짩Ʈvzߖ[2Re at!ԇN.[}u S:gڢZf[ll_="~\ 4Ay@GlYvϦnGߙ*`7>OuR:88٧ 훪p>8R3{;u;/T}ca}8|ޜӛdy\;N·%CGw;b6TvY%rE\'K bf=Jp#qp2d`*gW$i>`?3Je\lopfGl "tp- _(4F6𔇷ոJrC/fG^`6o7Ånl^?fX!qc86?ׇ.1ͳ[b,2-HczGƬ>9pMZЯ=:fɰcn/m<.ɧh獯f08C3AJ1BØ;L'vb1ud,߳sO3zbGg):G}`wSf篪=\@\fy 4#Ƚm53:g`ˉt+E™_G?29lUڍki<1?0WsKB .Q,C[E~4P=9Qtrm>c4Z;fjY[] Xkckң.r_Ssޗ(w-aI_^[]z:7 傥&oWsXrͶ.IyYl omuwn?i! gXc |{1s|<ݡ]gX[1ar[b ftGPl&_A6Yƿ\LOYmaK/pgcIgX{7m/ۇU<q'B}I5Iͽ^gׁch1S7Gl2ܰ lGD^_?+W{}~1߱yOۃQjКqlD2rLm;e{$:|ЧchnƢ+ =rk2ur}+ZR5+YqƉd=6s_l[R<߲{:b~}͈}6)oNGg 7++!*^W an+!TBbb(t]GKx]˯߫H b[^do|}|˹D^zK|ϲcBɭZ=kܶ[,|s)5{1_;g?wB!*1teϑa!vtt=90B)6MvViҳ,Wʛ؍jrlv2C7>huZ߹5MZ7~faxԉՖϢ=\)ˤlMK\knHs=j ULS Zپ 8-׈~uu~G?D#Mߑm%Ǯ8@}k~qږrf-4Si]N—,rF'* ,$42q> R ?tMijp=Ss䝒,@8Z ,!a:xs#+O<۳謥`cXզ~b ̡\}W|=5і<+B[ԫ蛹 A=˱'\5.d]g9*{Wz>gRe=E-?m7x['bk~PG "^MO5˫}ot0tЧ)䝸Ju>Ȗmkmӧa!4tKi%_ DE(fsщ#ɧD`Z޼<@mNYu'2kƕvA֣gfkLA[^ B&rh,4~Xנl\lkLpBn { ^1u> 73 7-]́(<,=r]iLGq b:1xX1I8ve>a1uaIh[ɯ8r{u؎ r ́$ _c=s qdn\z>0[<8 } kab>` Y,>4^8]&@|1`BC]͒6<{fKԿ=亵'Iy'XDwD{&X3, @tvHXt;vR6;O{\/}~ᚉEˁ::͏[p\_VVֽ.|=s 赹l38ŨknN;GB{q[ ǵnRv+3i'_2_ۭDZL'.ceMiGq/_/.{m8؄8K>+g1iӕyo TtB+t\نpCs pҁ+{;OXЁk@Uс%7XM?頟V,k~~~(zr9pzN@Yx%އ[R>O$?p<aٮ,˴4vW: #fp Q ZqYn|?*x߾<ǜÎ^Z׉NJb;! c?mC =5.ozv6t+t6tPjzx2<[#t>nDe0NXt#)qA[}p-湻>Huג/2ߨ'I;dkPv +s8tF](qm˚#~s%_VVV8Hٰ:`^'pWѾ<Ûa9=xiɞ@tZj1ñ܁s"^;"zEeccg[7]\|t,V(ϱh{􋆭'B/bV5pctZspN6w>S `v0t`a֧t&Wa;~-H:1uBV5`tkӁ!o;:`q@͡ΣtƘPdq`ZR?;+uw~]ςy GG?#wBqnAqr7Es<:cs̏0'd{Ayy.k|_ru#,FV*y ˪Q/~݀y.Gb*bj,?S2ѻĩGzǺ./% >9W:o_DX !cC+ diP^gakJuV ^,k]V5זǟ"w֠h[/X)ݾm:Z f|eWvp|LYbلz ݳh U<>4g̙zoe~Y&svm8^E{6tx(m׌WhcQ7]lc+՘If.,1' H7\Uv.Á;Kexo/+Cd#m!1O={XlZEkzbO17-W||ʱ١vűx%9,~ON[q'NՓ}$'ŠPyrj ,I IjϥI~2[~>lWqw ͧ!v^V༃_D<|}BC[è_yYgl̟a6ѽ]yÍ |ߠmd>6d͛fAgt~xaTOUΙ9ou7b:Qr9T<v=%s[S *bG?C_;&f7Xdml}Z{|0mGh2P7h!k;"_i0Gc?L8ݦyJK |C(uiQ~[w}}Nr,Ns-*X9׭5>ag.}?nDPUu"zr\-.cIsvDA'OcY=Mj$L&ٶ|sŜeNXy\/C]:=C"fNdiks/7~{)w -s۽BtZTYMuq|#d}GG[\]o_O rfo~r:0c˶u.J) 6 H.~-X/vt>㸟ƏKȥ2RlXj[Tc{hRaJm|_6s_NkRNKNk *0Qş_9ޕnˣ2@Ο>O5+bK4l>aL_oX_Մpm?G9rw׏>0z%iZqϝ |! u]6!2䡒'!,2ZeZSοϯmecdI{65_qem_o{> O \&+wSsWq׻qx^}v}#ŏ9.~L.mbv ^ܿ汃a[P|C*qkrp84.Np[6*1k!{!P6O@|;`6kiA>=~Y#k\.À]W_'9|QgKt~.ƃy}?Г -k8x>WmΔ7dr>e`^j=zi(eyÈ@Z}5t ue[?y~nc$^g~maַz=1aeW ۀerLw('k0_s o段{KO] 0|cq( e |!`}^J{~2<~[|#fט4,'mb+>ta01^~(߻Qg$V]wg,my}/oi\]aYB]rf3F1e:֊u8cײ~'^0羷BPzt TXe`+<2T!:FBVnCB`6Y WU;:FZ7)+lFU'j:Ftµ0Xo8N6@ȊcCt&  OH0T X:tAXPC/qK*˃q[?v2cJ=qRac5{4/3s,kƜ [&Xa@u)ATovqeQfyB~X\jy1z`?q:i2gU2{VDy}x!K$ŷslKPDc^c?Ol,bH<R:PSZLF5k2sa{bl- O5Z?1n"Y/zx~{]{En/,09VE=l}7Y<1̋ /:AF9$c׶:>:P+T`/|BqoY}SlTt`muC^GHj>mOΡTeZz:}/Xb]x܈=6T2!׏ncr? ?[||qk1=n:W~ǘߗ4w^<( %CDtUo[BC]r8<{?f7s|?~%befIIn1 *@ӏ~ [< ϱn)GWo:`ee^-s>78krro#[t2_uy.]~_?o#y/&\9<7ă?-x &<ȕÃ&KW i0{,W^ ~*/颟&O0qhUfe?:[3"|hy{,퍉Q~x?BpdSŃ.|̲YDd_o0c{~ކqt ĈS;'Z#Uq_*Fgr|䪜"!SmTYk|ćJesjc==GԽy ߌn0cwڦ #.<ܽ7|qaYLGuޯ=4x 1. ޸@BHR`1׾يpYT,\vWlԴ ܮ ʠ}m͍{l9W |F}uǍZ+ϜNT:2Mu}7<;F44]??>!"( OD8DND8o%Oh{Y~0O%˱úaOKb_˨5E+2qҜ5&Ioʖ' UaXj|*?{/-5/$7Az_1|Yᥖ%-!w;?s.@{/!vИ,gs:ODquÃ~ 4S;my|'x-`R4+<ɡGѼu>WktWU6Wry[0 s;"@_]q6ƗDO:~.a9{;~dkW|\uCicFxإ=e[\K˹|/`阛|#v]"M܁m)I׭Ou|uY?(Hy~*_{9[/(u%>/G+Tm9/СO[L>s:a_S1kF|(Z\±w\ˈӡi׋ /F/r/#FcuYc#E|YW˨5E+2qҜ5&5=󉾧m>dUt=rWK}S ˆƜmAYs3ʗ^|FwU-mz׹3Mu4f, ŜQ\CsPA>"`.ke )dk|_FۧKlm]U{DqӅ«myXmKg^ }ɺvy):k+}3Y' lR ' 靀O@=ahߏ\ڱCBG#Oiz <&eHYRY˾=׫G(ڑUc蜳^<7Dz0Ssp*B=3kޒVY~o;n[z 0ꚐeY]!,/#!ܠ+#ǂи9a3'qx9.>NTc?:{lL,m0RA^{*%/sG:#/(r-=O5x};o5<œq<?9)Gx92h\K 󠞧t:+΋+,vKsr=lΗjăyS<ix#8?h<`99MEx%xZ ʭ~ik<(Gq>ǃ`-µSoSǡmVn=S~Q'6zN.:z?aL6ח15kNJG>Ǡ4QK}]own[zzt}r*,Eqe[e<,LAdr/>tMo0c˨MS߅櫓=-;yn~-#}e[Fc9/ez+?R*Y&65)}-PmϚ^4f8TUr`}{.zܨ71k-+oc˖D{FV)W9^v/+Jű ѷW~>_{;.p)2y=J=peϪxT^P8.x/QerYWkk   Cڎ>e^9jxTX[~vCR?;u!l~{t}/Sߴ_Kۣ #5Sf[=VhPUR}"O{XA P\i,rsr;j5ɷu2ա⾁-XӔ~7DE|Wʱ^QUf툰Dn`c3 8FX -92l5U3w^;>恏o.ODn>~۩㏴4jvj~GGI_w>+)>񚾞;rG\|lxC]h-C6X_UJQuXѫ^bsͶS=uV~1{3H ̏)Ϣ*{lw(OCqoxЌx}fNH޷1$h;)]G>s,j1:(oˏ[hҺ(Q7:bn.^fל3x䘉k GuJOc #a](\9Xa}l| Sw4ﮘ箅W[fXtQ}f BCY]ɒ =?ƑΣÇN8Kk%xxȅJə`f&x@R>Wb^=DƗ5@[H訹J<ڡF[>\Rgrr*Y=ؓd _!,M͓ ǿ?~~_39)4%dN`ŀk=s5< KߎOB~1G &ۗ.ズGbkmW漱]EOuGZ9 RLm9qXO9 pa1O_W 1~>-jL ]-}~,|!u]! ?. ֵ}:Nk`x 1"0=ƲIt닚_`1qާs%yOc9=1:u9w uޫxi{c/zn_6uN>ޘ=f~^mc٬9L:S;n-qn0Zq\d?Z1| a@j)'(!{C9s$0*#=&S'QtİX}Q? \ MFB}^Èku5F5 ^eN0 41aulワ|0tz ur]!+&̕>k\e+жlyk?h_JW%edG >1?;KOke mfz>sz8ίYؾ [mJ98uy r [4>8C|-gm|Pfwჩp a~ѹWRNFyX7Mwyw-Y2G'ۭEko؅_s]@MtugXWX ;)ۛ/,^Ay,^~'6xϵֱgթͣ8=i2?׶B}>Xשt[qjxN p>׷Ճ1>x1| gӟ>?6N<2\HNa4>ڿRwر2ϻm}>Zƚ=sXnuv`Q14SLs<[bيߏ}YLXl=W01 Ӆ0cllY)>RD/~b&Jt+Rr_Yt²l{z1Վ{n <R S <{b%fLV<oO1.ҹEYUlOo`^Qa.8._0Qc ߇=cGWr,&>=|b51k`.Vl>hG^]XU9N.>X5]Olx^Q6b淘ǽ1=asXuOFq.8:, gh7_j9q-CO[L^gX s~iyw>XE3Ӻtl('Aǭ}x lv^>yy/Iߧo2X2ow'gcg?V^H5NR8k"e>/)O. l_WKv|Pgs݂t!na{:cڍahy|#z!w4B؏}!_1~>aF26B8h%z3B-F;F!3us7>]>4>ثǏ7>yG(:~G|ݹUlMc VzE<5\nO)/"ҏ]# (o.z^{; E"ן$ocӗ/˟Ӣz4>?`"=pɂדT@1!>dx-j.&o+{ ʌd6ֺA;9XCx^\ l H #Cڱsr|pmhe}CA&5-x\æ8^kVO!;KƼa7Į?A;|=pױ{ :0ZpM{ '(m~Zg BRf6I+%SK20$FTHޝdvW >y{o3@0]؟bWX⡿ Zj%+ ǁO_\V&bس~]Pfߋ1)_H_P үkwczr;[䰎3Dn/\yz99X9^G-{eS;>KT2w6n}G>yΝןM#Ab\Rhˢ>/J^}uI};ӦumjAAy|\zMV`G9EQeC-k_zX ap=ۓ>nG}tZKY7sa<ʄPt;C>v!!e;ߞ_~oKSO*z^g9|/{_zغcSZYx ,}q4u:X~aex`^P^OD)vxg?|פ1 X \H{OԘHZyzޱ|[)R2[<) գ$aa>k,Gb>+m/UzN҅ݣI}Ϭ?1F^/g~ijmgaԓۓ5AGot?3uK*=ɅoW K?5=akypcT(y:1]gЁGkm-'H:зY{]F^D͋t`3Nۤ\o^g1ӣ!\s+b:nt0,>}`uΏEWv[wvbtcpǬc}#<l트zE9E8' G7q6./_o(?` ϡ}YB 75V`9@sڇaKyYs[p_gXLe<[cO9d1K?C9?>XaBdZx3KL6 7Moz.ySRd &m1K^0*~X \ھruZ~ߛBC]ɲ5ƟǷMVVa(AoooKi\kǯ?׏??C#; zcΎGث.emu=oûgRfG1ܽ[905sמa4v@0[o UEte&椉aQ+OxQkB!BҾo /^YXp3ȇb$47o%c"~XϕR(7bYJ>&{֏X0›5qA1aeƃ7!fFv2z`5f&WVuoty<0w}ڇ#EU[ҁOi=\ύʅrV⽞"ZoH2aKhY'F'>cG[rDmʄSg׾irjy6vRj[;[!r,P /Y~}>LaڼN mqCHMM~~}NdG@QrY:=M`rS<,]3rvw dqx̭|A/e/L5S%J5OXk);?g9Nt}[|Ofۜ]9>yJM7:N}fIs{"nh]ߗL|5bM]RUGq9s{X328۴aÞA= ‰(V9qh[jVQp7"X:e.7jx1;cۑ,ۃU L.+Oqwv QM<=mom>eԑX5W:`ZD s 6B mQ ǫn={ll}~ػ~yr:oϵiLrGb"7*l?Wchr |#.-2 PBbE2*)X7l@&˜ފ.X /V(m{][٢?Ohl@y1!l.vN/QmV.Y77( 6-_a66vq 8zcrnu) x32^w~K4ө=6b 6!+! cםwNN>@ic5?nuXz6e31?kYMCF{X{{֞A[`=5|Y_>ڌc~F<.{zyjfo_ٵl~YkVXa}:1>XbGsjr_/lsO{돮t0s>^eS?l9\/e˔^ga*v<4ØNOF~܉l2WB !IJv]G ~Eٷ!U0v`ɸeǨO2^]y|g#Ӽƞdwuѯ{wv7Bqa7v[eϚ*N#?r'QYu 9oM\':LsLy.z.O7\ƕοtΏ~8 a SWT9﫤sJj{xd[S|vcq?k~:1"ֶViҜҙ̼\Wl';o7zjs?n/m}J^6rۼ\&_Re(jܽsݘ޾ynOC=O]k\uήֹwBҘѷd%Q !~% a3*}PA4*ׯ|{5t|ݔNnE僼*T>F/]'ʷ)?]oO/~Vy]{l+;t7\V>_2[?6ϟ+ 9_+I͏9evD11VX]u О,Oϔ͙_qgϘ= uzmLzλƘ#kgs\o%MS;e.ZC>㺹ρ",85?&ZyY:hSd';9#-L&8JJfBDO錅Er$ۍB6cl?җ//}q| gk5޴*QZx/CLE8ؼ<ݵAhݿpv1qo#o_06vn_!(}*FNV7I1ع-𵶏Z˾6/P&_ڀ\ǎœ0R09,"M9U|&!<8Nl<64v<^ 9V醑0Zl UD8uGϞal9Ǽ_'q0v6Q"=# &rR r=u`=Vl݃-~ֈR[Bg͟O\v___3raҜevx@7D90}.cHRkύ.R}s1 5En'V}>*~g'9qφQ` F[ۚx'|c˳rΏާk%Ã_ kۆѰmwm9! <:>WK6t&# #NiPy0o/ t&e9L`9]F >0Q޺ y5?E#>xdKPߓ7r>޿m"e10N/)Ҩ#F메(Q{xt(cuȯw}1lps([wΕan iT_Q.lBkJfgKK,/:ܿɿI:0^4wVtQj{}9l#eOp߰?hf@<kW>龃6M#4W3B%JGP amJ9wg4/Ә;i[\ UALBC]rH<{?f7{|u>~%ْLEѶ䮘n#@Zӽu+]?V͵>鶟#[*\s3#vF^(F,{&cïK,ۘny>moyߧ_>h:đ - :p[`@\n#Z!4BNn':!,s#~~#G:`58A˼'Baqvi|}6n|龇 LӺC7QXF]^4nI8=}ㄐ=P>!߂~֯cNA#F"! 9[[:BJiJ ogc+"h>FtPGc}0w321ra~놴n'Fx1B>j}l58۲ugFqSx1???hbrk_?kҦl<]?8ͺ~,ԥlAvJ{~JәƴM,(b0x)Dv8%luIX"J$!/3_eH#-eȡeӚNmȊ諴+uPgq)WLC!245mȽ-ݐ-uCЩ@$ FvL8~)C*ktť Kïm. 8hK2k?P[򖺮F<@C W/H 2wllhemt.v\,,9̌pmY6>}qd٘' (t`IR6]2Gkn~^ǑXdpc'+Ϗ͠P@;!,wN4y/ӽkkok(|' <"x& +!?ws8VD6pPG~) XpܮVlUhZ)OoPow0Rv9bcOو8"Rq\Xc G:ye>.k]j,[50vBx+&gOϱGSvPA:urS)>wOt~5# ,I}V||r9'F?u#,Lr߮K08,?M诜IѼuRm[}Ԯ=7U#\ho蒹)w võ}6ꉨy=2?^w?~[RX\V>XALK﬈hN/kUmZ9jz=?㡦51<pu|mv5C/.ubbyU1GfTϮ|0]:ykޞ23A6^Di^^ 7xf/ujR,_jls>_[eqqPiFf{>('1,mr!epsԊea6^){Y>$;y+5o B)vD |=k BkW7Dto|,\gB|vi=P(~/D}ȇ5÷e9g2f`'~%E2&j,Xۇ;ZDۖb91W>xv9=[ɗZW> iq_aN9yJ"ҬϬA3CO.^l϶|y{ۺ(a_/K} qW$5H=娸98R?>`K+.zg,>u>knM_a=߽^QgtW>'6XğYhXǡ04>/G_͋6i|pCaw,\.DL} {YW\̿=ϤlE.G#]ʜ]!~ޓ.V(mH/R27m!}~SV]RɈ^JOL+Gq.1/+7/r6vd~qcr&_gד:[p)-1 (C|%(c_748g|0r~tFBBpDD@{(w)LP~Xbɷ Ǒ?<Lx-N<֏ '~YoTX9n k8[0L X|Of}1Gvxf9ܣ,VYlAa/r*Q1hDzɱDv>2cLs,al/0.cz)=5FqV-Ys[3nD>H}ؾ,sMḿ=;Ʈ|2:Z\g~zSOힺ^yM{[ۥ+GZZ:|k%||B+[:AZqGc%4E=ğu [{yW\:u.v>rXوԛ(=(b};eKs+,sy)VWs0f&3r}tY-"łC:cI9}]3VVʽ~3&\JDǹ nr{#|k{drf2XйLj:GI%!M+C7^h>BAxt1g]'={h^;xhy*]45Y{9>G,M9pw& 0^n -E6Hm%R?z\XjYߺ>VCIݯ0 .LxEÓ,VX\I}OfF벝aD70!4BɄdB|&<'e:-!r?Κ^APa@VLC47 j,:Eўv1>K_pD_? eH*@BڒB+ %D2< z8CdE2n<Q=*d kXc%^V,꜄m&ދˡn^`]/x W^k6*G]>5EWI"PAcD .T0L)Ѥ^f^Ir!ulb*Jt}1į8t*ɎbOf.}6W^=랒-;#mپK{`+! ֱ؇b˩?8Fڸ5uA55*UUﭡm<==ƶc[$f>nkpy*[Q"a4={y=kq\b{c5G+ݍ<0Jp W'S6յ,^u5eVmoNj=1[V ~Aqs7DŽXfGH񨴅/ek^8l]|m9.{bksk@[f]ڟW>uxJi/ Ϸϵڷo/姯YcU}+kwJuiWN1+/^u7>2 *?kHUz'{WBm eBdbɟ=171{KvqLډmOd=Qē`ouRF{bħ91? =vbtf[TwʗlǏHJ+XۖHR;︌p߯q>\9^eC/?_#׍gA\i O>@'o܁m%26zT}$?pc( z|^K^R97䀦X@%b߃imhg:%< y>_uKd?.?L8pH:\^!@)NC\o{aOj/pti=BU{W kk"|twX2=*ײ0/ tiakhcƸK~-clēg<7RgQe\ ib'sҷu}>xNmU}7θ h?Y>Ű}HHcU97 ,֮}52_9!}KEe%>4R S3܎ްlz=>o)0p&X66.{;KvuKvcJ5t(K/.6)R!-pI/\VK>z&!/{gQm˞ %+mBmq8k2f;9`bi5yYqEjcvB?2N]hىo+ܷحu}96ZBU02ݿ K'sּ9}vc38 (K35h AJow*̍%Hd1[4s4[G l#eOTh-sy-ʙA']VbmEpPk聴Y+"BT˗(o.K \vPցKt3CwWmLAͥALw@9(ӂ4ӎC -x#ՙqXPQKf stK kLk<Ufqaזr7/O)s6`]!Nî_zBKCg?gt`9F<=NjtrƩ{KERnDX&ӍM9kcQN] }"O@hr负i/#>Km[k8gg9v՞Zsy.u<HiUXs+n? n ͲX۽iV17@i>o)w0ХCnuCn]r~z("Lq?0NÂ7_c=⸿Ky$9=t?vʳvE9|Ӹ>/yJ͐ ؞.4So)Y~S^#eoɞG{z)Az=vs-!mBY.cЫqOv-IXP>eBK;[_CD5u=t,:FQЯ츪mXve,EC3ȯG{bv{McBhov[`,iֵL]s4Wq4Eg:{|B/Onj$>.WY=l9]g  !r?gzr|?7@q[0jK^ږ>赃vh.u.ӏ3~>Zl ͍:Ѳb29` Lw%yg|NYʃo!r[z]KE,鲟3emb3IՂrKɒֲEM)~$ 9)ۯĖz{cض@hK}FvΗb oVΛZ2gzJ]y-WܤmBIBlss>qcNɮصgM9)IW<.a]f)S^ p@VL6dA/>m:AX%\zvwKdažK><ʍS_tɏو)έL7l{\>K)'{$y83 \.3083Yy4H2eK1~?WC s^l7xy8ā3۱__z*y=Zc}R{ ϕIJG uge!"dXoRoDs(NS3ΑBge jZU8)u62K~`g;<񷻸bEƬ3ɬ.(WBow u*vdѩYTX-aVɫ`~ڼ8 rVx8PwazU(,ۗ4a‹8vjUR L-[s&8}Cr kX1䙱eZj_B~ƹs*=ܿϩصeglUlͺ*&7XI^Yְ*@~g/B`<5XylZCfvlIfu++T yE|Z3B[6x`kZbe6WlJ[a7SB?~1,؆ۑ8gZO|U1>ak apk>x1z:7<ƉǣBxo7Dxy>FqE167 a6O |8]O7 za0ʯ)r b<7j~zzxOs{B!Bӄ뫌aOb'zEwʈug_Oˁw찤>eSF7ufK3k>3'%O E)Hxavonk;`SF|ivO};m8M]W_s;1bW^ MS[s4cǖukѺor\gb<ϱg+mƃoxг7Ֆρ<3<ط>;dYxcފ8R#] i1 #lf$-vHiVͳaE2#Lˣ~È[0B~5'a$hh #]frliKÈ뉭+y #? #Iӣn4͖5t#'}E/F(+:ֱx8y^ʃ??- /gsxȳ@@G9Xz܊,]?G;v^LtKNe{;oײ2'. }Oߑf9CmuM-?`߳62>GO]짩7Mھ;Ͽ,<~O'>d|w!}7 !aόWwRg{Wʃklgc 0qq:Fgna93l4ר5v 3{e_\r9?>Fֺ޶Z{(ؚKxמJW[Ӧr-ׅѬõ֬hKb=Q6{c`ѮXάǖPkB1=޺Ox,Ɣ,=fly^Ay1F_*稾lw֟mqGLtხf:i`=-i~G^el\^?9׵p֮ǚ5ަ~\P>sAqᤨ `.UxTZJoR:Ľ B)8-ݙ~1Kaۇ(- ˮ| Urɔίveuzu1>DR|ؘ5T{n6?';nCmϞ:O*9Nm cv@P0_:k޷am]/}}^U4g1521}z)Qz{8ao0O0ugFn!8^ݫ;wQ\90I5cן#]yYGk:}-nC}׼4*?n-~[]l/rكv<]s>rOჺc_)-|r|Pw6<"mZb+Xm_ޗ/5̸0~%5g|gԍװ nj~X`.LCMstˢe3ͱugo78s/o3 #w1gp= mY/KɦvYY'Jfw9]%cnTtf٩Lv ~<4ŁS:+]e(;!GS[XbLD= o؅ B!A-c9l0ruY>t`]]b de9s#)y}eiH,91gmcTϯktbskcU~ehÙZ' 'As'sEe;{c{dVYy{m?nOyiWqm+Ǎеn8ػ i\6V' ֮y׾|Nvjn},_P*XB/WQՓ&ғľSX7h]{ JaST &rXŶg|Ǜ K̥|ΣnHmSV]|¹1tSlasi)@ǂ>~un^HcIŊAB2c~1͙&*z:v$_+5HS?(oM=뛈 }ץ{8o_lR?).Qqn›vees@7in~#mcnm3XF7O@{\9w>m3y1zBW`MߚCk!!wއބfuӅ‡ޝ|> >m3>ߗ|lH>h>Ρ}hKί?g<{<_=&}ck_ߖ +8ҿ6'zL^{G&b JL`xU8`-h61C)ʞT:%" ;Ky'~OHǝeоU59լri4O5zCƖ%5χ_߻Ac{yضtA^8H1ph+<#feî|%XwxN1g1y9>&x[9KlR)hj˭Roqu2ب'm/⫾yh8=1b?.wn$vuɇKwB~mc"F/aqT>Nw̆Qt!0E\^Qc75ЮD0*U>SWX^'aT3gѳA<nžoxe.ni'D 6fVa0R>>n(9O8(ݬ=90*ͅ:<>\'qM6NuFAn: W\aq`eSX\Şp܆QCqa.Ο?o'+I}8&9nn>~#ȭ؏Yϟ^HSaHvWym3ޜ6pn8:p"7ƫ O>II>fҜĸu88a>C9ra<͹dX<1b`s Sn8M Cde<?ǷaM,z"F:>/00xe|UqɺY{2O#Tn9{j{l*U3k.q~Vɼd*^O}XV|aF}̼Ux=Sӄ;is7Ù דY2^L(hC֝i19EaK.e0?ʉ(9a-ձcWO'n4;FKcGs}Ƅ{SꜾ3)MϝIfƣ=W~S1k|pry}o @CThQqz*{|]D~<\ăߊEK&qkG,Gb|z]k)(N~Uq[o0=~dqB$_}~1]yK*gs?Sݥu(=M6l]s)L`<+Ϲz*б| o+ih[K>VW9m}NG(Lm!R|BXb!l5:֎5Xyti͟C)cJVrcPңFqKf4o !z굌ldB HBC7wqt?q~]s}ByX!u'%y;\"zG떹j;;>alB{̦v~ibWBC]˒8<{?f[lj9uccd\% n0˖H RG]_,C.quזmt9uvc[?_Mtyih?kv˿/-g.wh.CV:uYBzxj02K1i?_RLiXH edޞ =^լ'w\\XoI2y sD?x\03|L@9Wb͟|0wݕ0_ϗ?/+BcA;{';v+M6O{ئVhi+5dg0]%s7||9v| ?ߧCsƀg{k׽:2rq=8'!w4)?vƔAc]8<7S/{6^~mm ~; \osSqB/i[GX ,c1Yʓ6טsKI|A?6iPG,9Xcb[Ⅻ@{dSЋ[y7֭^?.k0m~폃صL=0 3Gb*"g}BS &rl)\T&C^n X^f.rlA)׮ɿ 5Zq3\hvVB7}dش+9A@1[3Za) \͵k36AsQ /ƌ/>ݔܵ';䃓N>]t~[`eȥ#0(t$"K\}{C`Par[*g)շM߱x{ 8=OVbx` Vn~|\|cu>՟,FӁ9`h湹qxz\Y*sǴ:\ٲ\qwRK$eZ7"[G k+H_‚AVGc!=Vlga0G->4+ӝƲmEKv&?'Jjǯs|.Hb)5ݢܦn'M(@ZZ,4|]XPdM6xk 5v.U#_F{}Y~X]oLnu'!4!0^Zm5ņ[yX;Ncaǩ ?péNl2P2'Mi˵iޖR3e[>PfہmV奝-N.-pc$v2Z)mhau{I?Pq\:P[/R.vwB #̺xmtR P6mBL,E0bt Aci2aCޫ)æmK"ѼXԡn逧{v/vX^#Oizn_܆qo9uC9 ƲB_~c#]Yh [Z eˠ/wRgMph"vhcr,鏵;F]bW5;Fv"!؝#^WbŌ2?0ƴ؎^3{o촾CXL!<aJ醾 s,{8LkE;*ˇ7x0Bc7yRseetvgpvK]{0o/1r:>@l#X1N1|܈`<,X@@Z00lv> <6PN|m(bǟ:[ 8p s>m^`l<4;癲'Ji53ە׻MDζXLyGͽǍrQ'!c0jfl?'쇻N>u?nMJ4 y{]^ ;c>X:.8#IwhǨlx!|[*oBL֡r,lg%5;Fx s2е}{'+iR;FqVw'!~4aClmyrshWfuW>2uř.A@XSb FLZn|<95܄Zُ`Żw^Δz sp#s +y-FҮ{tqg/OI]'0)]o'sn҆h[25>kùŇ)A6}>Shi5t`pI'|?:x+~:@r:?`xK&z~tKy]V{k_:']> aQ};l~Z3[}SM[ts֟5x({N@<ɋ7*{,"_7Z6j l]m㶍]KX1ŭW55놇_qu8ϓ.;iy5qm'Wჵmg5gmck5|c9FKlM#k)ǭ8:HC~qIEknAyuN❺s.(w0G9ǯ4#}jnO͔_#Gw5ݚ!>!l3!ۄt;]s?~jn/1iSͯ `!w%qcD3vc9lW0C[Fsd_ZjT"r=ӨcN{΃d}JJY\ͽ~$0c}+2^k}-e!"1a;~#B[=Gձo֔.q vWHq9u>Aاi,=h\,⾍c&vl`uod:6bvj-~Ѵ?t?Qm7/hd5NP@l뫛=+2X};#qܚ8S^|dܔY!̹BFq{Ab뿒kH a>Xdk?Q\yvlXlX|Xý?&XtJ`noZQӪE]`nh0}aBC+]˒G>k>98v?>?ϗ{Ϗq=X̔8}n{On^e88cBx(苰Ky B >*L\7c*܍>M'B膦i~#BGa"\ޘϘ ۥ6D9ϲ7(r'1>c> alӮ]u$|_-!l(#eyCuŻ<\V\ƶ^RQˑe>Fek/ ߔ3(ca וҙ;FL]7j*GWق7;NGyz8ƳB1]ڹwšݚ ݸ9uk lv$Crkdh~ ndW;>lduN6e]xM1KedU!1rcVpKm1A;[۸ zŒǘob9Ů:m۟grv q%5ϥ4 ];CxQ_xxMGz`Y1B躥9)O\Z7l- zYaLp kdXrk}匊!NM^\N+mE!jo>6#>.6v텱 -'/6ߺa򱆤qxD1c@9EhDLk_w-~|wB_m7?C`=6/ujkﲵәN%Ol+UcztWvaux0Gkˈl{c4hb2aAq;e9* ҴtuL4 %P^ϸ2}{םO3v+^*6?#8zQֲ2qEٚFk/k}|0jT<|8Xy=0n qncUf.kg/3#Lpf&3&ZyP]19&͞>miJgΉg9.17h|9`{|N]G;Oq 9}7aY]Q>qF2;E6D.` x{֟{MgnSk-xyG '=SCVZgw3YS-2;T2z&bqoc9S'aXձqr c1˸O#'i927,>8?ilsK>{_=jp83L|ǨWBa~ LiKE+ؚHַx^UlNưWb\(Ƭ owf慛[XlFxW͓i `|x*_)+*9zaYld+U03*9}Ao@%ۙ]ݐ`Yl>`(OmsAo<Ӄ}LCs>@84"5'-#(g˟1ea_y[y|WcNu^<c?o;]ǴZ<䰬'W7(;qrui͚r\`LSs/j_ZUȆu-rU=bjVo`ׄs}'5"ι-Y=2u4VYi.]T9 YuWQ_|wQlcmˉx11ޭy{tG޿Cl+:ׇ49EҍٞF H `krIn.A#7;+ZQ= Ѹl%~d/_~sy2kM-21OcLT{cT{kѮy JyJK? 勯k%kۮ}gޯ6~׫W \mӵ \2Gza}^Mb~FW+Jmh[9·<-if8ғۑ=B=l;nFŎI|ضxu{|dc\;W%{{q̨BopAZv]?_[F{NL=ș",!}Ҋ;$ړ(9iipyʑ}kZhoq2TWac2) sc޷Di1o0d=m< &nsUOvn,"}QDJ'Lzߕ1S{,O,F~m?|N=k{3-q!CG~ùj h^cl^#~Qj?Gktt?GQu]SX ešcyT7lW\kn紝i5ٿdaSɀcӵQiEwkk8Z헯'DCq{w_S:?r Y͒yt{|Ks鸺mu0̗/X;A(/|S|$HJr/ qaZ"qV?ݛoHƗZ'vEylsr<"V=gm=QsR;;ikzp#!iA%N{:6YmkHs=?k# T ދ_Xk".vukڧKwX}}]# *Z{^2‹_z;A#!V'طǿF\or!\{%bd47[#UCȯs|S'OJr z cTYchH҉u9Ko|{۲\Q<>I&u,u|7S^nf˸7q ssQxV>1w|~[9ocsmvg 3c^y{T\\7Fל o1m>#ۦ=X. s=Bش_OsGC7L/?x[m񉱠sQ.WŜ0990gq*E%6i[p܄sZ<765M&)s]+o35uz$8g,Q2{h\`c1~rz?KjLg~jmSb{fry'S{9Vc`-u򁿶"";^krl%~:NKl:_o{q-|_>{;ʕơw篽fEL6ex?֘6U>7ax)ןW[b9׃,,7ibnE .aa,L=n=4q= m^ g}-!+uD9^>sx-|̗?94C3_jVGɨkLtct4q1yK$6ST:uE0vu60 ~\,3׽\B.mh:ǩ=n+{>a}|8G23zx'^u#aǖ絵kN 'm67'rc^GˑI~?QBCf]r8˥֨c_툜Ȼ^6n[Vb\lM^gZRk5}XoqEc-E6dc;}lܥ^ Vf^dzƅ]ĥM7*2@jv2X?ya ; Jټ``n+xBgI غ #\vpy2UqrgDDP$S%>؊a=Z[TI!;70Fʎ #0k&cX#2X߄Ч[0kNq;pLX{F|2z+>P>m_eJ B5Q~x΍Pd'6ooC,|s(ļ^bri X||p>`<`|aN僜aea|||`cxCd>9yqh>z< }xY~*p`l|>yȆ ~H1%)yr"Gi(|ykmZ'ʎ]*G4O\1N,۰bGEvM}fxo5 UٌQXS#Աlt-/2XBWBnRJErMP,[AiMZx"ﳕ*p=AO@*8-5V) 8C-jY?NLqC{1j;J['Ș,}EEE|,2)seB%)9/8͌pۇ{Jm9O0{F8 :t!}ɤC q{5w/i }؄Km~{m/!RFr㭲?>5ձ0i=2Zy m>},} g7 bljЊtGgwFi;jo󠟼}O)[|uNDV ǷXCC_ځUazZ?xkp\ccbcr)c;.?;xy{}<{=Xd2|cVtB?i>?CXr+~!~s;y0qYbaH]xںD@'Ulc6#1Cxxs6O|sr;}7u!Lk?+'ϢƶuD|fӁeʯ{ܦ[zîua1)/"#~mU`XR4ɿy n@,x9˦\-ѭNzaeHX[UlOVoyPsFx-G}]ߊDkUVԮ5x ɮ8-cBBG26|ٷGp!eϥ)|Pw|?>Wk7}v(w-:/xPwm ;S h u(9Z+"ئ5޷a6i! Ee1ēcR~?OZVq‰>qvMCR߾zǥ;|r3zCyJ65'v_g Y]_6U|h챼٣Ŷ (CZy㯼&?煖ίa>~&R1?s cE=Ki{ZVlg\5aZ?V_9TRaW>PgkЧs0,y 6֙5 7Emxf8ﯘl}a *yEqxuŪZ!eҲ4e^eD\XX\0Ub ^~~qz2̨"5PZ$뺋f^VܘqR2R&>X?45}q4 $ {`<[V.| &_Ɠے'k[` Qv{=릌?Pz,Gx S+C6EޯHhS'| Fog_{;_gQN"Zv20,֎0D\'Ǚ7'Dlx.xO#tT]ejo}XnAc~A972 [Dy#B?sc,Ftgi>61=kK~INW/?֞jM<^Yk\Q94[ x_gq p;{ʚqkYx1- oXDl11\;:]_`_ԑ9exB A'` ɡ^? FsRi|h>cV>(V>sߋ ھWA9F׊G®X]oXc_)KZiZ{g2s-ۉ5uk'm;<Zo}-r~F$\AvVjeZbi1~{ԼV=;w0}g;!#FU ! WNK?ۑnZA`rߪG}˿tx_lSx;Az6y lQ-靱-/w4Olv=ۉ1yOq9l?bS5xiNOj6ToՎ2_`\&-mpy}?!3A5 B`6 B 욟G㍄} C{ogo7 ሿs ~ =t0}@t} |n>:/+e86븾ne/_Z=g(W91)̣e*XѬdEy|_c]5BP&6ڡYS5?^ŏzY[/]omV~'Ú}g3 `F9O4 ??_El좎sdzg,$m|a783BJy{zHuQw~F,fu;P];O&shUbGls>wq:-}YFάԅu^W&󝚎%(w hceOP|Vx]֖8Q᱒/|Sy}mpEq.hMٴi-kyɨBN9fxKCZl  b;Io Llڂjѝ_W;P'eg<#Ѽ:ϱj/#n~M)C_˓-z'.setmZϟS)mvk}֭lKuşg_ghnŸ0O!> :⛯rm/iâ_W }֬n+ã>eϭKgZ)Nu{']-ăO8[֝fv |ߦm Kt{ZrM-XxBc7 a8wӃ!m1h)c0j<<mll[:۷ٚ5TNἺvrC| b]1o(ldwo]j1~:֋Goh+L ]Sk[[1\>`N^Z8b|Py$X:>xm(0SikFؒa<^luUՊ}xpssƅ!ϓ#,pGCLVGym{Ř rd3G*GY휶X[  `aُX;Z5GY|R U,ow?U).h}o(6@N?BC]ɒ6=|Gb|J#;@ KT?򭥏tk\뵲ߥw~ΕX5粕3yc%ržQ:[ 7sHyeTzJ ۯ1tcny攖㯏|#t(w*+9qZJc] W-szyb韬q5j1fot}-xǐքcc%0"{º0MÔ~5Beδ&,}x ffǪ1)] K^[du|H K<.8X/-;ֲy߳EJ/Ӷ0Z2Z%ȶPIx*@)#:eU|:OC{f1Ӂ:k͆xᑉU+TŶF4^\7"(X+E ~g=sq:<ng#u^t{LZ풝!姵- Ly)OEǾZ?>rzX˱-LgK $>~ ?$ŭnGگBerYF>r,AXg)XXK9,c/ǘ̾O/-cK:ZMi/ĥq|2Lܩl0=fߓH6PKeyd$]|!= zD#`YH.4a-(9tIer^J] @σ&̋ Ak:21 E+GUkךdHs@8Fic"{R\hj O~C^ou(KrC薩[.!|s+4tXggd>g\/ رe( Em .c>v {Y\?l!#_aJmsi)|Jyb5p %|#A;Xa^y/t|-AY<%!Z~!H4.{:ԑAmzp( RA^39x05M]$\$E* e) wuG";/I)%&j Ȏ9j_@%=T냂'>Ssp=z6@$ہ (k u {9\7ˇ97WQƚvyZod{oڞG™ TaSBߍ7W ˬ ܾI;{<\USLtPc9<4|,~݊:t6豮|,t>M8p|KYHhE/Gߜ"!C=nҞXVhǴf܇$] ?J틞Ȍo 0.o?o ݃d柜{;E[V `LjH}|͢/!#YrN6{F03)>~P#x0]ykMzrDOVǟuC;D/{c4w)#=:e$H@eB 5'ZA2.q|Zq~BB{u)7Hu!>+AyTܗv~2~AG:K೒q>֯iq" /0|cԟ9v$mJXϥ{U烧d|P(V2,ps+0躣u 7x,)fHs%߄eO%Y?>7#,]kByme-,io{ʹK8d|_w>o}F{ʮvm?:x|ٷe̴lx=gG5S{<2cZ 5}cxK{*NlG鵮#:MZ,܆\8u SrD+םhiSN8<8hǜѵ p엔VJ_>|6ďk%(pNrJrM2jxr ;Q:;GvHtЊk}<||mGKH|(UL5Gynus [<x{q ]0wϗN+O}NC.ysֶޮ[I{5 T/a|8pYbyzEӉc"V/>^jG=Ŀ#m|_H/q"v+.luMY0ѱHȣ_zH[o|y7OytNJz ^3?ZY֟i[u %ImE4ܞ@kҺ<.O9&*WK^q65YjL:"w. CX'ȧp~oX7,Rw}J-"~9u_uzLsKkvwkZ5d;m!Mu9%##A'E5pbIIG{l[d?eG!)̍.OCKK0siGvӑ<VtBC]ɒ8={>fԮcG1_2sif9KQLY"?\ Z_Q\cskG2Wt^Fr=9R{|Fc'׭|R22wW/M}!ֱqu_۱"uǞk7<-AJYz'W;~m< EL۔7W9;#c|lg̵uB]*t?0xapFy=RӍ*6 Z_&ZϦtөNy0G2Qaz"Ԧhg:bxAci ^|Lm 勶vtJKQ&9ٿ {^O4mg?`Ƙu-4mxe0A@lc^_c]hy=ᠭAlm*\ "0iC{ϭ;~^t wl!FqF [@u.6W<{5D8NڷYH6dgGD } V{{:w+tzۖtayζܵrd67lCM8WV_ÿFYU~nBxg,7ZGՁ_1wSlm1w#}ٗuquY~ BUU므k)RkR)Zoݺ%G~ry*9o.%\*˹qD0*-#/:薌<0}\}X^7*\. uBǶCU_X57>-n_o_αd/DBm "<(E@t@l c6ubWcz<+r}!> M[è }]e-izp@ۗe|-e3͠q<@[a} 8xqAJ=C;mY}rN$.7?bڇgܗm95Yq[χ4}EǶiC`Xa\a-p>5X+ӧEO4}A7t{xG/d-HGWK7z,YkZSȳe#[1F !~>OvXODýctC/>R[l^>esϡG-V=mգ*v>йѲl G6զ弧ݫ=iT-o6_Z\[Co̭TZj]#\!8 =~~Hܳ_kR1۽ måk`}/,3bz3Jz))_^=#e3}0ɳKߖ<5&-3i=#Ϋ؊9=Ht~D_gך)Q[5;b_09ƾmO?E͘[oOFޚcO@h; ܿnpl+Y$L*A'^M&Q-y yMeMLo/,]Qc'̨ /pX:5{$yC'`.eںhl-f<{T!2ж``a%fT,>W\d,/+,\"*~}u7tmߥ]d ,s|N|gx`(ODPSP5KmFNd\]dpuZ.׭}8m<ۯm!O`m4=r3 q˃AV*ȓCh\.Nm u&za3F41bvl5M%ք͓yopjo>lYϳ3Fے-:<]29-ڏo_7_6 :[C{63F9[1#amMwȏVfm XNf zPB{>h)kB~6Xc )Y&Ll=lGl# FAȽнg,:\mg] hrZc ٧kkQnfɋIoOwx=7I:?|s[&of xAֲ]Ixx_B#eC +rgtO,0 M%yC?ƖX2Уo2fk}韞g󞞸3 6h ϣy/zqߗcrhlyϭ-|b 5O<U0\@RC͞Z SIM6Լ|RjӠm]<5 gipf%u>,Ǔ|Srf<ۺ,X^2%yȡU'TSH٘ cm mokDDAԪn5ֈ=G)r4A o2lbƧpY+dH9s֙-&W٨24!=.;FȏI Ly .&T.QQc4jCڦLR^;4i-:SdZͧiYL+ZV=@BBmlw ' @ ~@9дtm==P9ANA(̿  tX(xt״3^?9Ƃ.[[ p)Jr9O/VB!OZ<{Z,nzfiC; mƙ5t#YyAƓC]bܩgp9`T796ZxO\>X]HdK֖Xhs>)r]̯:=+Y!hkg0Pg a[p{+:ηwkTK?V+M촙/@b!Ch6W lS_%qr/ 5q#}L _;>I9tm=]&uP!@yZB ?+䜼@0!QQKKI9ve@/|6EޘmϤhF[i?B_$|B%Ԭ2KґomcZ2V$ Ӄ^e1vB]c_7)WiXt(gJ>l}f\vt@xҀ/?Tg<{$߾@WBKRҁ)unvs|< v)[y`xBՌ~O9° Koc М{Jקk R:}O<'OZ_%UVliS?olMꪏw;TmôP9si%NR f 9iK|2U,/&YV0َgxL ?(,+z炎%߹CeA`w+otbzЏ7@UW}=87a,#%V]VmKV9cjS9:Go1޿4qBh=#}yL1G_> `|5 t.ı/*{;?y˕4K4ϧ痭^6A`4wBC]˒6]|Svj*_lc;v[@,\WۖD}W+Gx昑 7ֈl_D?5t0 syoWLsns7@e4]@+tD[@f&e[ϯg^- cu>S~ 4ƞǢ--3}j:˜2\!_J.yJr:J>shK9egː*7",CwA~a/Aei`"ChT>#hʬ|amV1h=,52iѡuVi~y붋+mR~Tiٲ3-ߴmɄ^"U&x57tծ\{8m}R]!9[FǍB!F֟=3/C50湿¸y@;Fym`|!γ9hHNY,]I&R&vٱgS):hee3_VAZ#\l̀m6mjK#weNC"ifO#veϦ{k7@S~BiBB}P|>kho8FbעUpxm؞:h<ai)a9:O"gkm <;3߉߮Wbsm?πfOU۵ˀ_̌Gu+quT9/ngB33|ami Vip펻ReO\i:FSYc @,d|Cc)Ә۾Brymn4|xO?#[yU<}13O"Sφ^<0OW@:S%&}-CpQ|9[?s|*TޯϭLz0 rCyNk7]Vk_9ŎY2-h/#=9B?^;z5U XtAlMHR>9ZmYm"r=wiM'[$6YUt^9aZM KφVD/h<1ke٪o7)ﴸU4Qֺr䌾9,ڣ|2-\7M!PuCAzkA\VFƞs|~=DRfh-ף&RW&Z"S0? *k]i/H/IB 8Ap~dlN;kX|: %z`:A BFe3ہueְe 9dA\>],E>Gm][-GrF>Ix.o-haJsoﮘǡ/*?>@mWa;YYfx_(E&mdhS%Ҟ4S>{o~fؾ9s_GEe ķu <%g2뛮mGøoqld]ΓFď5VO)-.S3ܤ9=☐o_Q#Ԗ@8q =~Ư9>+a5d쥱|_ɥJw@ioN5W[::k; xxG~-%42e/F%*Z{#\elpZ)]|.eI ѦmZK: n%8'o;`&3fQ;/J~]Zֵe lgQ6>vZtzShkJ[l1rZ~F5D5nWuuM2M O?Ϻwa1ǰ4d^8&]ۣ?]7z,^"|ZϽ~]>Xq|1<__]u㸸֦m??Xhv,ܔCvP6uGZ^8N~9kuK)0 V,I xJsybZ)3{JN>x{Ksٯ2kݷkG{9b]+G摤d/rG9@q˰i_B6MɇՔ.(<Zv4;T9 |/J^8X"ļ[΂B^x x@?+'] 06ၴ >" Gǃ xw~u~d^% *ѭ-S|im]Od<=yiEash%v}C4}_µe_&'8u\{>=ϯ l?e:A@XǼ\a]nNCHv$K~Aczp+KE=F+i٦^3-!{~Nn?O>tF>חzt DCůlP̀)V }"Ehԏ`;~>:Ibm) Ju8 M!;t،hŽ70nq}Jc4 Яg>̃770z2 'M|%#:2@!G_ю65g U]WlD0`\D;JTxPPMp'ƲZۦ9 ݯ ,llvv?]?J:<7@ԍ39e|h1GƖ#yKծkH]SضDZTǭ/6N_~]e%"²z4w׎ѰuGciq[jVb%+86Xqgjm{/NjUOr+;3$G<}fG`q>(||c:Ltǃ!-|;u:\lrqq=[6ZTg+/ϰJy+WatܧaS^et?Ho3dWzoN?^ 3WʖѼ?90 xQZY״xZB'6?yGm,궠oRrX ?6BC]˒6]|̔,ʗ$v6InEx?|?/Gxv|Jh^k8ǟ,R}ǿ?~bNyZ{]W9~^۬ly϶x96&:|" 48"$-ͶЮG\/Nj]XӶ^u 9Zeer39.᱐v P@k죱L-rӛ'p {lT;cW.x0-w' ; 3R*]Q( /]m}_kp0 Ϲ@PoR{)"gy-h/fu7Pd]en<%[F^Aw?φUhNf4CyJ"m; L<}¸mǰ@vuw_|z0ku(PԝkLNޣxAo1Ń緵= }o-oXN4ǽ6P (Yˋ/okrOTԢu_y,~Ic̒Tw3CۣpڋQ̃'O˟ןw<, O>:e>v9\ u ºl9 ={xFw}ct4g省j)\R9ψAs&8I< d}׏2tVw1T1C>kaff_og*28PG%F|fm+| w^,9N*΋*\*#+lgdh-FW2-jO&Ȗ]/4`!5o9ksz{%Θ8ua(e6t<9Exyݺ{|?|ƝwCOhZߕ>0ގ[Cs:gu; ýI-BeT8m4Nw# ٵ}۶(Ue&FfuL ݛ_\?3];w/@ 5Ȕ [TjﳇVm~OhX7nfmm 6 +La4O'|ecy{{[ Kr|E{z1R=;a}3lYӭE-eZ^Pŧ(PDF۽5LݣI?sH?fuLbR{dӈiZ2`1 `_|ƊueC6갤tGş{zp* 8ZFϵuV6S\^݋mm>MNR{Ķ{fV8-N1y2]a3іu;",ò]Nϟv#csζx^h@,4 QˎƻZK9>a-CNu^3} ?Kp \G\/JY{| %^Av[ KeJXg&߶Ż=ƓD "Zv3kai b5ɫ /2G'㬥S^[Fmv|8\ ~AKAf83LNElSG/^<@G-9n <@Gd,F'Ro#S23Ǿ\Ď4~tkͭ<Xa[e1EƝ<@9WQh'#S)=G >-?H~9;{(}xUgw<_si.ɶE}ۭn#ztb]!jZlVQ;l-HG'j:rti-`_Z8jy # 񆼆ZG?G &Eږ?'d[fltvl?ÃLɗafPo!^.cϧGL\N=!>OCŬR=BXVEc 2>8C̘Y"<`,8%CZx*Oq@l) w\Tt2^:a>FE#.Z3O$au`iĶq㷎iEO& Ei hc;tiG=fnu}[!#yua+ylu`_zZV&xbs-/ #9 ?w''5fix{Zw,ZZmyd_~h,IDupb{mYFCƪ0N}wy!m2fJ(A}G*ku#(.b>R W mքLju*2ekR6Ek7_ 9,"y3nA?24/|#iuU3u'#I38#Ǝ@F 3΄ `^X|dloڏ`%jEڜ//k; g2B y1&Yy$QwyIiEtߴhbAwkϾE)sp,b<9ڥ XOޯكcl^V$_dhE:~4-Ejtp8Їg66mӆl +m c G.BC]˒:]{>fJ[[w|6?ێ;JE}Pr7)j9nn5>$:$1W^ޣc}2%EzϤsI1%C_Y}߬ ~~6fN_Mӧߧӏ6#o}N#kϓW.?I|d]ddחgRܼrm|F/eYǠ=3/Ʒub@L|nyÃitƃ5ҍZkʑF{01aIcI SV2KgIK'6"Jf $IK^<'m 3X,Q :9KJkQ©ebK&YRL`5 MY&iZO5Z&I y[D`xNR"ve`gZ8ŮOqN? "Hǣ%uiI9DckIâ{/<_)#ϕ19LU폖7DXyS;4o{g*_s1-xƤޏNY;'Bcٜ,eh-C3W<~n`JǃRٽ *}|A\~x0W[[i[v48#_^L`x0}y2FX_uC{oZ\z'4_N۶93{su{}΋$1,Od_hnoAI^s\\ `йEsVwǔu^̒ dGz]>7bh.lJnv)k_1hף|y:;>5_V7] ]g<-c-ڸ \ֻ2n99gx,E|m\$S}8.x7ʚя$\+FỌt<"14HfcQ(IVsGL|xc=>l75>G8J%qή;A)Zp)V -ҎAVp۔-r4a5B;_d =VrPGU]lyWl~Hw?\uJ2Waː+(7 YyB M2v5E즎bQWǻY3g)űPw8ۡ tC7+!8Pxd^1oXm2w#Bm.4VGx[ۓWA_PF+WăwyP2J` /:9YDWʳ AC`GN<^~" خWd_Ő0:#{Ǔ ƶi+",v]gAMl㻎Gt[x=]e<0m?3*JZ TPeHt2:5|ÿ́r'REl(_5%6G?g>]-<ajR>F45<@T@&nPcS^ C؇_?[^fu#^n_A]ܪ=榿dŒN?*l٘9z9J!mw 6U 0kxؕ%q6%^R7cf xIgF|B:cKtoPFfK?vhYemN7ҷ=u3[bg'~~mԷ6z~j M7׻M?iR~-zfo޾$g/6}kxfoYuo7DH?Q tFnPZ'>ɶȰORgԴX|{,Xurc  LtvƬ'v#J񚍢WG68Oj-^PF'ejo\ѧIЈd|/+c,;麨X6/X'ֿ0^4Ȇl!{tQD 66X-drn|)oll҅ ӕw8X{cF88\phB! X\$YIՠp͒=vg6j> ',!HCuY  %_jڅ8?vu!A1rq +8вe ?ğI/ҽ=$O*mx~`$ rn+#Q!i `!Oʟs778hԌw8UkRe^2Yt h7TJXGYuk^!UKc;^Γm$-G, #İ%*() N?د0 %:yk:J1Gfoy]ﻅgmwRU}l;bGAq%iF8Dӻ.6LtOV_?8ŝ< ɵst eٖH lS!!K㶷jh'{5vVz}+O0x jaOV ;$ l+Yض!"W.?kRS]Oݳ@˽b2/<}!0^ _m.cBC]r:]g>fD=]wqKfqL HQR$Edǽ9es4ڞ. g͏5i N_~߿ʒ[ƦEfK>8fKdȟڎ{vsx6'q|@N[Aҵ|rL^mEýYk=MpDF423²mY0zGִ[;ZC%3 6=vTOszd9$,>mՑW ^#vD1ZEIhJ44k!gkKs,#խ;B1L۰]-qV(]euꪽpka+kieEY[ YYȕZ(<\+O|:GӋHR%2y6$v-u^NC)ve:,ٜxmB#!,~:Fh{TzOu+^,?Rh׆'#]kuتђ/)4l2%q;JK)_i)k{ʿL|_KӪ-ԎM~mᣴZ*k/а5 *)Y j.\ /gznWZy0 !{g}3}nkVv'wܼxS(p2^1:F(cۖqn"-UYjzVS|M}]ʃ}4Ѷ|Vڷ,2?u!eYDk{&BY9.m"tmq]yYwe?x=3ƴ|OL|dž8j~crcwЎiFɠ7Y8hGȳ7K*aΛˬgX=V,>C}'\l:ᾒ5Z<!̷-ޭo!wA =c3t{Fy=a덧6gjKBz±^2B>M+J TJYYRx5}jMOSz-_skGl_z=҉R SeX)Fk^oXZ"X1\խ%=:>h?v|v`t~>1 _mF<= ?1mYla82#{*oON5>RUruDFѺgMf?N#J/}y #2B_ #Da]C>6N|_eAl>;V{>xA>B{EF!3%O!uA,.''k/&.~Vr s>Xtu#uzϏe['{sOyޮ::ہ? NY{]Ū>ܾ.mv׵ ~>@r!XI?/]|:-<ާI G[-б+?B؇R='Q9Ds3]y.]sI뗆~ _ZȒ\<2R{>lS*}% ҍ./O''$8MzuuM;F/Jyct:+x-юR}]zekx |ȱ/`]Km(o5xyJexk*2`pAm}"vhk4^Jў#U6AK{5;-}9܁8eRPf=G+:F^:}Y_)GȈQp]ulm5H-y1?N@2Ɲ/r ?e([TʲX]'m,k< c 6>bmyQC\t9`[[ö]B<]6C_e0DұJ-%~}kix<(a͵5uWެ,^w岔)e|0.ߊCSj{\#i# i4<;=߼y'c=%:NK ;d;p'xSzJ7apIevE8=K7krc|ZP_pwXȜt~XpKy;N'74*QY_=߹|^= sJo0&hom}yUrC5l_>Ok^UKRC|@0ڡm{-6Er{aي"R[DژIJ~ڸo?tE}IϹީRߓ|J3M-! nxAuu.|A)Oxz>@۹lh6tae[^:mb>G:驽|LXmߙ}\vo_zҸ'u[}FMt~nwަE*0,XL\Q4-$P}% ~ʀo62`r9r玥6}J_[*NS=˖O MuoumG tz{K|ấs!!ߡ> tq\1HCiܤ6Dr{#=Pٱsy?p}F 3R>@~KA8p(^|kA5w,w/D]<|cU|@|1yvwV,>+CZy" y-]uS{tq,B(ߙ}\v;ShzoލS'}eb%Rڧkj;y8&K)iž9Rˈc/ZzZF<eiVXG  y-=@pq[.Ə)d3~8׎g9֓F9]aSvo*צ<}g(;Z{o^.pyK*l &5`yk}N1=>X>aƹBaYؿu償"lAk[b:FQsomu}ѺP7=obFeHWF躱F Ʉ&m^XHQW.گQORE݋)^5vYymWQjx,iy3Ƚ-4J:F;1q,1VU(׎潒mqL}]4'}{ f J|Fu64s|α~u|~ǘ__}*_6Gn:g{QdysʋhcCʍ6N^mHLS̰VK\VOyekGĖ ;9y k,涘aYdzb,axѱn_Y2|PssoU̿󐇏n wFœK9 0SKO0"SOgDhGXjS ^oC{bj0}VEF #;Ì1 ܦ1ͮqӁ׏ M3 :t3O>| r2XIg1}O0׸99__\ksO.,*]0+s˰Wx񋽇&|=W!oLR&k6{]'s<kYbWqpy&Ƅt\4^5\oZQFWA) u|b+s',92]Y_9cPP_ qC. w#ҍW:Bvv4ƅe)dؽ`dS0l}ﶂ׶m{]mӾi2NZl>&70YRތ8 t>]׏9~)t5s#/pdy=p:/\ ]Wp5;d=O.=ӟP<P|g2be~(GCxbN~VOepwPϒ=wkҸ]{r$TcY(; 8@\;TC6v(tr/jpuN`Sk('y߼Fy32!w3#'*C1ikj#O=mÊ۩LqlͨVa[(ҝaT=(զ#-?/KAz-X^نyMhmr%M/y\N}8o==j;;FmJc$s&. o%t,=hA2#^<."(_=dɸ=}V{輯lsK{m)ڠ=59?`N/tХnkkK=Rc#ӝҶ5vaxDZ~e_ks OmLSm`:xzC~ĉ?7gYȇ6Vdt6 u6Rģnξ p] 7Up3f(:b:9s<&m ClټG_ؽjÇ?ˇl(I̓㾱X׼’G>Gp/dxpÙ(S4e@3he)Pl{S7DNa1>pUi= scسTJS 7:<{8O <<4çkm,2ï:F6dX\m1h}y0]FOؾc d`AKXU-b*RT| =կ}0^5y@cǽNJy3]2lcm; /I-7b7!lNY fC {f,) |0T|>>P919|eE>Pλ|kOwݺ~q (# "*LPLu\汱ac<}Aq얥{B8m*ej%AnquxkŔO ory=UL=jMsL5cZWK>O+n57B.S3cGG$s9ZǺHi%6=d9>$y?._;Vo[?ϦE5]\CD\j{UGnsݢF϶z?n֭i.m掠By;ێgG~j6{?g'QK2t}up㡥?0tp~MUrK;s4qNVϲ.k2ι:n(pusn~ٷαqvW>ȟuy~?TaTފrQ:69=۵:K5q}1 ܴݦC~'9G.W7F诽P9˧3SָX `غèhܝBql:"Lo, .JP%J-%VY沟כguɡ^қgxɗnx(of*s~LF\lQmRl^*b 7Bǩ{[.M_uC\<_-z-{K.57[*qV}:_&/( 4k kʣeI_<'b)9<'5#hF͡jr>#FPO0>`xkZN_i+[r8g1j}eurRV&;kϸM1Oxr' c13׿fw:bc[-og<cCFeꌡzU7g[f7. $ҮR?$s$6[MX =ϓ/^0kF40Np.f'#{2£oo0~}7=ift| /om UȩSwz~~ʲ>_m>>jI˭07zKCy!Nœ.VNu~XR AZu*C+9U>1V3~Wv2cC!Q+`V?lbxanOCtLx(C,dA}\=2C/k|{ǖ/f#\(,xPx_7C?+ӳc^"6c9WV73j9iZWGXmrX9YjǪUN9}׶*v__gU07=Vz2s01CvjwʿtS]q>n?:|4}.bq740||]J6pGa3{eyyA2.R>pۍ/ke${!v?n+ 0AlXS__8WʯukC_EܪI0Gq#qH_\1.2^5N>sϷmΖo 6':LKV_wӯ0kì*ҰLq -=w 9!?hfMF٬Zq_;\oEhqr dd(f] kE//wC`DNe7++a{Nǒ9T!i{y3n[MC?B 4Lhdd{7kGYĸmf=3}7910b/yW>r=1v,>[>%l!Rq6pRXMdxm{ Ϩ+nix~Y}j{+79\kK$X;9evýڊ3둟vnɉRi)o?$`Ʊ! hQ’5ZSH~trc| Ȍ`νryY_~OO*|b9GesgaeZxKXG$J ýk^7ƾuJ1 2p?I'\'y l:_:f3/o"}wmP%y.7IO.؇1Ӿ $B6O ;*6$6lS]/9Y}P?C_oec>K/3z>|nWʋNyhG{qe_U|m_0q9ƃҺ X G]]s>:}n[y)wۍkD8q־zHyܘxEz\"49"SbErq =||W>DпkŚK|Xf/Γ7rոetGk_5|JFH g\4v!BN>Cjݘ&MbYgXWh&|% 2OCp:)olc3o"bQ7o͚eS469okiX[f&o2 5/d羞Ѥq(>DȱV+=^/ڿ1ۤYeX}i%b]^.WaᇓoKס탟x.KqMii_p-gdYG@2g{wms1o_3=hG־W*˒Ώo.rF%)"N8>Cm<7&sKY&n\" |_#|j%ރ{ʻ|]x^Y{(O~|m7:(Y{{QwhavNHEwp>VC+^+׺g|^xj}];hDCߧW>ڎXs-6eNi3=ǫQQ!{h=^E 9-zfX_ nd]2[DNt}8'J$SO|RƞU#>hdۧ’sDS_eO?{aUy5? tvNl/> jz{?V3] qDk1x'#ל= SY{tAw|/=NӨm,sz/?_:|< xˠx] bN}cdC[#_&+OXan9s@H2]Omc XZyr_Z >6ax]|C)'JW4m$IbwXiN 'ۧ#՜D eIoOkp]nl_uNGm@MKLj8kvtc`;pm5whK*i)ʜuurqKfO~w7ӆeYEeIG{pPkj*km  JzkA fbJh z(G8pu)w _K뗾X)U^4jdE'Qk#J͍zmVy1?k߳sk ՟ݷ }zچfz ["_&80t8}-mLa]˯ۡHˌ͒0Xa/ E 0'~Qq–ߣ]`Aȟa {o[]ZhĜSryҴTWfx[@Վԁra0aesh?}Sg \Max፼s4S47M@;ʞSlJ`qF 5l-&O ~Ñ/ڭ#'-6w/KyY*uv=?/BT2{{Du~:{kAcd9GfV,/c5(9w>y:oR& `\O{xgs*8zƉKXdcUu瘎ycrFTG~?ceRx(Je,p=+ӟHmAo+̵O1FI&Z$(A<@>S&Q\-B>q)eY[ X{q//SJxg2SD,c';}*{D>c um堼@<܋u|[ė_:7=tҍ+yeEr bkTsv9o$6=. &Ե@r#D-W5{}x?ƣ:>k|Fø"-a&c;UŠWK=&+|rsu5PI'}|_UʓRru/JPI?ïJCd/_ۀߗgs?uZhzJMFW/ .qGIW\g8v P pw͇yt^Z`G֭2ka>*Kc;-{uQI*Q x}>r0twQ|(ۨwl W9JhXqk\! ;iaŸSR~k㿽@ x<= Ǟum- 6U]P&ƣ*|2 {W5nYqd'GwXab\W x~/#L9pV XL_&[Xz#?LDeStehi@l'VN80|sWX5?<[vpRYM+yʼy7X~0JsUhn"7ߋw s S^}pAG8HEkX"O&?!&h]Y_$a藷/bFcQYn=,J uV_XQ|v}4Vpl V\'yX{z *BP~Џ'R%z's}e)2vn[t~pe_I#YiHǜryCg{e-<)>BwmpZd:~5^A)gY~^{ʢTQdX.[? s a9 aX~Y=? [Π+vȟT% ` 1J:a;&UBdec[\/]zj7R@-66|uū5&Ǟ׀.V,i>G]a3x|WOye8 ?5rk_*!Ge)w86~GHL^7%S+p}0w r)X>,5^"y`m-߲T8I}~_ցav;Fv/ߑoos&mnͰ;z:gxt]wrnv_17iduk_lɐ޿l'm{}^ǨM/96e9 p1R  jҽә,NI{q7/JKF2WKaOg}XӱB/(zX&K>Vi!piH2XK]FU2Y6?1gmt(Ӹl$o}zo\ZFh'%[.ɭm|E:M-#In.?fԓZ[Sm>~l&([aXD]oE?{<}Ce|iwò ˿_gMē(>! x'o*$4Η¤|qyg<us=C`7.ރm,HbSۑ (mgO|Ƥ\ dlKH@ #=wΤ+\!\O<)׉ E,e\ztO_G^K?)ǚr;dakkҙn-c'{q VilN{nwSXNs vBm3{> wfwnQQtٰptg޻.]{mc#li]_oiYx R?^Sh{uzfk|[g!-92ϗ+o9{OoݫVGm߼>dRCJmKx˃^ |_G|I~WiŭԑQGʲJ,l\P}4JL>HFJe2uOuɛfcOZs}lVg4tCj~XzXD1C Jh>S[K-a9 elV |0ܾc4ݵ>8B$>9\蚎ѹ4c>\ Ro|! *p%{Z*kAD^,莇֔A޴N0x#AO_ӗ#w|D^i=)Mя@ $0J}xA[a]x|t_~ a)m|~K6/[mtk}Tw`u.s\H x a ?L@8KPkY|ـn[g||7ܞBi +FZw*&lu}h#ۯϵeN>%?i+5FBs)xX'R-W!mrί9*YD X>j^oMb}=Vy'1Gp_҇At;fX<;Y h37qa-ʸa}l"<}_`0ΔbG |Fd*#d^DɡaK f7\~>mg|fdS䧜3>O<;88,^"a-#Zs~_2e秷t-xp>d jɖδVpˈ˧e$l-#$;N&\UwDˈ%no"pSi-~p׷N}SF|Kpy4nm|hz\>E  e8'xQpvPUPSi2Ʋѳp-sd+ N9e:~gyeoʣ^[yYJ:,?[>Jo"e:_ix+^Eq7i1ُB蜛?V4d:Yͳ=ג@#Td&{e5}o*{Ǧ4]!m_kC#ڱl^TCtYѮ~ƛ[ۏe466C>+\N.8Omk*Ե sz6GM-竵Dz):`O~sbn]YwLFq,֫}*Fx0V΍LJnaʒn+Ǎ-A׿ a7 !'՚Xi#L+PZ^F=ԹHu} [uӯ :Fciiė=|{iD>o˻}5yeImi8ΐȯr{DvB?S]RyY>-צcF4> p0_!qu[h{Q= 6w{}Xfz#-b쯯۞R5S%輕><{iHkbyȔC:*)dRv^u|zQrQS;H%CҶņo:4p~mhPKYvt̑dil'i,!=\ױ-A)8{9Ux meJkC`m}]ro=Ọ }҇%m'$͈_94K7iiD[&!u%ǻ\j8xח9 aӴZ?>hb|xc= ۖăyu_d9vo.ω=drg;~qk<6x-[h ?ݱ{dnCe.~.C{ΫZYNA,s[auyÙ>xAo<-^Yy4]Z hhBv !0^t` e< r0 `_y,G^UkJq:s 5]Ҏ$Jmc~pāmz>!SOe;JR ,PGԋlT?:?ﲻgxB!Pkk)1O!Ce"B{D9纖zsj{i[?=rN)[%:tՒ_ؘ-lr_k-ٳi^{F~% Dh%B+aqp{Hُ[Uqt*Uo`?Wf>e^kLFz4Of *cum Kfc;i|(Ex.!!8Ht ùg '6?\ӿ"qa[a翿sk[ #F1=FD6ZuK^i<㏤ːsOJ_2}z$yLCj!zfǖ%ֺ}"`=:H%ߐ>i~2 /L]Fb#xP#KKr̷w/,:s@3t%OWY-] o6W){==ަrָ ^% q$4lӼgm猪@;6ۼT+=h@ќqި7;ya mu<"0zS{ޞ"=E)EZ 1_,Eբrkg|kx-ǣ-~ye!GKr%m󬬡ejCۖq5ܻ,{=7BѦ[1ǶNc"vn0y>#_ݠs. yw mM²xiiU*J`%eVy[\-)^IA/#JetjuxIξOs-1|,kxZ@4vJ:etYk\;@!_}. #}<i{N=!}N[oeEo #Z:Zͨ^Jx(Հסyx5G8\n0nSt Tg\p[J&6[ê@O+A!AHQ5N #ڥ j@I9>^k1|.`Y-wQYdV|)AII˖!\\Ϯ:sFti/Ү%0dø?AY'A\%\+='mVc|Lj[uMy>1Z-L˺ӃVX{װKD.OPlJ/8ȁzyM;xy>@{/vqZN. @AHJ֛Z] 6569;i.IyI BmnO羮%Wk Lcg1rO\Dr<7j=)̄(g>BxANRLk zJ!%k!C}Jd0(#ױJC(;KAk8߱⒢AM?֧3M%krl]D{憊ӴsxFӜ{`P7AjA,$PФm?@ދO9[IiGJ}2/Y<iP0/<0mu[2Z\<_7~?Jsy2, 7aX+e ' qۮtb"86m-XϐҮxzpF-tM#=w"|~)A=Ѱl:"tDx^^юF>uDxsD8K!یpU7U\7H9Q+mW"e*zUYimܒO$`|][gq]Eh^- AK/r?An' l?I4Ef{iv$[kHqT(R}OGoB;68ZuD%<5e1w~a_逰O>|}: yx p/!?Vaϗ=c: O_xާ0K{{gL}arD*f~q6o9Vσn!o{G/oG{Ѳ$8_z벞Gߞuߦ|A;,D}{JyO`]K.f~|=Ǽ 4MC︽u@#s=1hh7Dg(h[h!C{G 8^K"]"p/uߏ޾!o0q\i7W*bV_ZaWp jÑ=a/5s e1ntYW?[װx"NtF^]E]ʲEy>:~ssG΀mkco@E3\0N Ro}E\}N[,ߗyͺA9R]2< ѷK6H{Esy!7U~Bן ϲU{!(0U5ROڋS(٪,FG>ch 6k-Emܿ!7uGۮeRߓy?`5A0@@2aFt9Z2ŻC+-O;8*jy(>ydI fЋֲk/ޏ۱b8A\-Vnd ċ8H9P\8_ߏ?O Cr-|! _tA!voH*dbqs>y?V2q=ZM+xΧMHܓOB7\R$x4}׶2I},$ Ɨfsn_TAKڙe#FO^H5\'h?\_u#]_P{y;Cm6 l{o} -i 3ٺ>]+;"(Pe/}z R:ջ샂~~B:Ȋ8ʙLyTQn@pcJ:{V?bO?߮-i<먻W1amJ;ekxEz ZǣŹz6|(4lsDF͕r/Szz6hP\!޷o_Z1MwK:{n\\G,1]5_e1_|) VѯdEK_3i<[/λW7AKrұX (\od>6HJkrY<OJsWsãf,scXpKg +8ۡL|~sl3}Pӽԯ2쭯KKLzm{~ȐY=zqNu~^8 _xz(A:8R߭m]a Sx0b{b'EuhscvZ1:S /k|O%ҵ:[m֎9|÷>` 4o U㻌MIQYlr~!<߾+^BKcgV#w*G-륳vrт}n58O 5ڹ<-%[F̱6h2;go[k m/\@"+ޱwݲg:Cxޝ A=yHHpf[]K|Z{9Ue]́?5ڪOy Զ+=.u>xTmm@Y>kw>K9gO,mKwoC,61o?[Ülȵv.5WHzevA?{yct3?C,BDƞ%Ov~ Cr{-bS-o?M|E>Bmbaf-;D}0|uZ; )"lׁDuGoT /׷Ẇ] hA@@oB M=.sG-K<˗x.>%~a̅sU.2 #) Y^G r 7%Thz%%~I@\_SO7zIrӟK^S?:J)Ku\',2Z|m{.uZ~_ 2O9\'ԉgx}nsW:y ~u%-OR:Za|a S?0* ̆3;C+5.4q3=e 9ψQfZuR~8]z2 Eu;tys2=2\LCfk g"E ][=ABVܧ?ɑ 5G\c|j e8S2c,=3deB9feGYǃVzIYdχ_rڼ*tq}5a\RVxYԖx֦:xA7<AC^cy<6V@z@q%HHcb:<w~BspMyn*k.}keԶh7EZ\ nc=7*Ŝjuy6a9AojuZ_x[Fq)SF(>#({:Waq'YSh&׏~'^(ADs==_qXk cKD^?%,ҁMZLe~;ٙWy-iy2r֖9rvw;Un|A9ac~*\@BC]ɲ8<{>fBԮcE1_}m? ZrT0ϖHH H_ա:t2'zqk?+?&]Fɼ85nο=^w~_ٺ=,K%nXWZs/;GϱLw}\mb;ޯǃ~SCu?uե:~ʞ F9,||ڞ>3 X>ƙsN:ͫou2$KBt@#6O"s=L+)ί{K_CaUK2~f:~s_i?KF<>ק*&RX9v*.h8UG>jjӔ$!ģ46Ҥ}V=.IH+ /6`Ϯ6E</Nm=uKm _ !Cw$15UÏU|=p䞘)შq-~o ]s 5x)/PMJ ּ-5Aʇ%9^]tob467laA>h|U#\/>J߻n!RUrè_˦[7ju{Dq_Ee" A!'Nh_SzmǸҽ_=&s:h\z2H?~/(/4˰clEæQb//.8+ mߜEm4cA${ BOwK3֌ϐq?[{a.p0 4/Q l{1WD " 2c yQd/E&o? y8yg̡.H4?zSQz}綌#ĥŷ[a;U~{9V?^X,xw~n?~ቘEoF{g_|،u?B}`/[y\*LqQ9W|+'xl1w4ӫ/#ucs\m`m`sSF.?ߞ?ǘZS!L 9=(PK9{rxp_~y|\xt.QW[,7/78.xy!beRq9k

51V}i_`0ǔŇX7\ЌW>*_ნ=>|Z>i۩Mu̶4:ϱ@ zOuml-Gxxrnw-˰_xَl+7Y˼W>T^uӱ<A)PWѶ^!ԈFnс?uhiNLYB1if* 8X( *`] !_g@͟Sum µu}urtl|FOb+Ǿ/:Lcwytc:PU i}:`&ҙrt`?b=@|}hG ƬܚbRqơp/:/GAmb:tjRbuwDɏHzKCG>~C^*ƺ at\ 1E^Rv5mͱq*w[lO-{E=)WbXWtY [붶o[]Q:4ʂ7);oN^%uㆱ6`٢K1 sڐK'3Y_uP/+c bNA/^s1f8M_9}ǪPpH@&ܔòw0*Nu(8"o_ %Td mۈ8|U}:sh\ۧcsxˬӁ_z6 B;s-s8fx甅u6F^eEyJ3:Ճ#+ <ڇ|ɹ>t6}O:`YsЁ=Yt0UU}6Zjvje&yO~ H^DTL<.)mvQ۷/:d5 oƵ$p+:}TAq?c[\=\QR{%z_@6E }R}|5@!}ry$/2bq&58|,YLeق#>ߗy|%{^;G=dx\ܦ%屻m{`ƪ/(S74}iz˄yZ7r^X5}9k_V#a#Nx] oR{tjv,^8PG}q{%~}=rqj[W&ҏڭ4ǶD?]JQa[%[e|\'_~9m!p]=R^_&jN_Nn=1粩kKmʖ|0tIXv9pBn<_&qvzt6W2-_?]ۦg7h셍U 󝦧5m]bFgglg]/60BݵDHgj5YBºțo<+5`[쳥_Y`%c蠤ѢƄ3z7(Z2m7RyK7/86s<7l\ǚnp g솮kv3U,gy鼏yo_Kk/~>kS!_t0m$ꃭަg{y{r}Q2.pzv +6{W'x(s{w+!I?_B1uu_ӥw7Q d{5]ދ!/弞Gu}aEk~}FELźWөw0o[qi=a\әڪw%m{a}Ǟ;\]zס7!*i_C(S@YFoY\=Bk-. ׷,\ d#3l|VQ氿&ut;iٺ%Q-hOǩ̹ oP:q|3CBX!h[Z[C8 MB=[! Uv]+!WBQ`oDOa,Y h|`!ɣ!Iޟ|~߃ԜQ0 ^FW|儠T~ aW۾Ii?{jύU*NfM|V Ow ~zIʉs2Y=GJ3kgvD։^=*Fڹ*߹ 8րħ0n" !P!*؏\^霊QXG<qgqf㟍W{Ǎ)5{ʩv@gIlYX=R9gD-fQ-4tỰ$kzOQ s !V.Pšme#:\\RrECk6Q/4T I&qtzWsV)EC><#PWs;?VJ6= S]_tÅ!UW:m #SPU.o99[b!y:`16gʽZ"0D8 <"Ds=sC}bja1 1b(+S ]ax)Ac44M>6Z[TK}aCs90 چugѣ\ }u`!0hm+A:hԟ`~,-r$ͱvDW[}dOv}c/+>0s!-'BƦ%9﹧w{{&3{vcNBNPcU5pa[v|6?b^.7T횺!tyMMHe;F\u3`Z9.MuvW]Sus![1®ڎ_uAnC%)7˛n$vX7jcguu:F^:FEyYkߎQ?L}=S8;F3BC]˒ ];"%Lb|I폏peսA}PO+W:bVs؆z2՞wx\kci˺|]9=G-]o`3h)iB7aӿNN<~Lѭy;u! L1g@mH};3$ 9QΎ 隑l{|*: َb=yVf7@8 "c7G <̏?E z|%xgr<֑|/)8Ky\Ҟ(]\y9TȞmIL)-TOץV^Ci d>SGsEF3q Iy۫\]4"aSŽG  &~˒wwI_~L]M3K0i2D{ז=g9L'=j9-ȸeh0i0v_?[Fu2cZ_k%E-ɵ _5V ׼nXhxyX.׾B m^a<LS>'f'[S0?Fm]r: 4mӦB3W=_s_xޣ{{\&@=iCH\7C@==i_@GF‰V;+NcBx6G}Vq>Hq.;:aJ9X@㾠e^Q\趆4,[) Rhc Ӝwc-~JKw]gu2oеc쮈Х>ilJ+A8GwUf_e ӟP_ {]@@N"ҭU>nxiS;Fxu}ǃpº*AuI}sGuSKF㇆-Z~ao׏'NT-6i،ad "e##h~k,i|DD/yu@2욣>@2NOI'x}]Ô6U}TT1JX:|zO[Mqư ud|{Z Nw6_:q .7 iϊ{|m'kcL֕9pZ#6pP!#P '\+ElǍū4M#&nqy"uPCGo&Ɋڅ׸ ?㍫GӨf:BԆ^}-m`3mXiN6Ҩbyl3ԯQNڐF'l Qisi܆q,˸%qO4b. ilb0-8\&TNx-W\@4! X`8S8)ci{ #U/"esH)`1*}88B@@@q PsmG@y }4S&1ʢA )5pT sTQ!*eO@ZOMp,;`*9:R@ol?9@@z@U) ȀuǗJmm@6B!]PzE=\Fh.. h1Ŏ7 bjKǑ-Z̓$Z4uq@͇!Oec:}y{;4{C5#x|JҪh/k?eN9=wl\uQu>m5#zm$Qr]K6by?{xxj1vr6ꕙGxaNc;+9yOSi8]lK1h=kֶe ' a)CׄV\(Z6( Qto>+/Sv+%Bf&zclZWG6$H>5. ϲI˲kQ;/r=kZŧ'͆5zb])Y1-[]Ƕ|xhf;q_ !cdۮ>J#|nRo1o-Yyhoy5NLP˞dʹ" M;\6잲˝gZԣCLC6\ea=eOuqag"Z3l6%|ZJg^yr}{ʚ-ůK jtH_-_z.-m)kB}ײq֝X YgcypSFuQ!,T[qT< lgΓƱ.o2EwbKrkF]TI[iA|Y|-ڃM/ݬXrF˵L4{aϨPDj6;kK.Kkmؖ'ZS~vo05~ΨiҔ+eG_u³;zz|iRtwB<뒹`؛ ?QTtAϥ!a7Ѥj)þ$k|~ӷ?6bwv1ףS/)W 3 ^ uF}F<WFy=ămo #z/I~\È^070e 6ayže?vۺV #B|rеڛNu=o"?rJp쓟%ls>Z\kr1mblPͱ#"Yg!'>%26t]+I5^G}x-}T"WΑܮu}qJ:vZ8 3NM\٨GŽ{9kɱN؄;M:|^65}G6;20?6N0]^qbT A??7,OtBCr]r<Ǝ p̗W}I2zA CLtDR{VUTp6HEZp_r/\GLUxG_(hX++^^'EXۉqGmZZ߷Z?)YD=s~M鲼uɶP˃rNx]Sş=/.9D#sA{4zU4{<ؐw߯R6<Nj}xvJ۹Qӻ[Ʋ<-XD[[sA ^b;9%@ 7%iOJG}FG}^w%r_tqn8: @8 @ !iB״͵@h!N}ן/Q" , zrG/S`Zp/F$2ϡE9"xzQD!B:r!8ڳz|"bY=y_#ڨEaz@^9.}uh 1Ι'n.B׍MۏTV2[-|Xg[lOmlg)]l=~x30mFsJ\kaլ*g[bGCWX`劝[)Fq>Wb.JXź*yםKWg;e+]DT娫%_+g*Zڪ }6,孺l˪VY+Fԝ_q?Awk,'^WQ~,GةH-I͏*N(:T oxL\SBú/ʟe1kD ?s:_yy)]j2ʕ[uÜsǃ.Ҥ o }Zb_Yƚ(z9f':wF}bu<'UӶP&go@Zأ}&Pw(3/ ^߿0\*+uPLjpb ( L7@` ]SCPi2AgIĆɎ?0q䀨Wvu *}ho%sW/0@k/-sm7s}01)`8&yTɿDhc6YR3c״as ݪgugx6f)y6`Bц txK5ډ0Ʋͣ<{P۬o")Durst,B}̖ =yc?%>hbU Ǔ'ږS~s)xikh1t\<(G}cm_~yI~N^~> qB3 S#Fv𿇜?c#k~M.dzZΕUj!}Jk~:DXGzFe =Yk;짡d=?V.Ly#v~ӨLϼ_mBa7۵45FeskM2 ,;N4 Jݜ_D;1GI;O3o;6hp{nR{uk/3}'Ϫ|;<}Ӓ?6 6փ_U5^vł@4m0ax\!6ط@XR&7@^8N؏qlЗn'v72U[8l?_kn-돕8۞閾]Uߕ>ӭ`l 3QGK/{EZ.n/ l.eG,F̫ն>6 Iu:UһsڇK]\{Wc~WPrQ1c"ڱ 8M0WS7O a6 ,gtkS+:`1|:Vֳ 7:Ywǃ.xi *MG5#lsFy}x Vu^O١-"a>tY!W۩lfD%^ue3<̾l3n@QauehaqaՂyYOwElpjRYYg3xQ+0s4jE+\=ϫ"tţaCGڹ㹨{k7VGPUMU,VoylZOXPWgo_mΗ9ƶJ9l-^7dgO5z6ymmwmC76m# W | 0kq[~Jk %nsTƒ:78!""L(9Ym~ PZ<0`>/_Z`ɧjW_,em[wW<Nx9/lg`Is>`[Ab ǸTb}_ɣ>@cxЅLZ;a Qid6Gn :{{c>^y5j= lu:+;LĠD/~oWاwO5vAt])x6v_/କu~uz @ڡ}<̵R~V/4m7jw|ٯK)|%IOx.o/nc])/7yB(uBR}B 3 Q!Bf~]C3AW* BO5}4/@kGI:%({aɝKBR:yЯ-}w/xYvrl*:ͦܩ Yx#,c3sKڻ0Wo?.mK%ΑKŽw 8 d~&0(/KޞKVs2^ٻ9yIaz4P_ڳw@10R.Q h=BjQ uGַ~cq6 ql䧔éNތ\+N< R{L[)xdWQеo>sUŃz<4E y}_eA|]qdPL)!DX:gX%cmGKvssu,_&QTr- ,e ݬ?W/@%ke<[Z]JXkWHhNj2aONk>>S uI׶BC]ɒ<>{fF8CSSy? iK~U₍PR_G-|7ڢ9g`lntH\\CC|\dsK2sO1l~fчOytG}ӱ˸RY:76m&Mi.?/7CQUK$Yh>+F6xa_J &Gkn}4x/ǃF_j#u<<ŃAB>M]˯B$ mhA7PɺV`핝MOAIu,>n?n2ޮu.l-IAa܏IEvRV L3 x6 '$%" K $)Q5<&e[GyIז1G*8xQF"dSW̧?#Xɖly|jTٸU:ӣd-͊Pe&ha v}?*FJA$w~4}s=k%cW޽bu b]ɲ_=equTȓ,ױ}궵 m-xN4'b /e>座ζ_{޿sqmYov5C2rrD E[Zh S!l>{g22T3CՓ#2Wjۖ?J#iOvulOgɺ,`mn~ԌmC(*>O({ފ=1P;ߗEqC%=Gqq%xPNW]excx-zG_C)ޮU9G:zϷ,]ރl4Q--xp{&-q"2uD2kش#ny#9rP\&QEu|W$|m7X/70Tܓ: cѕ7k9`(?7\)=lu~퓮XmkG[7 ӒӿݯfP[%cP"# GPzθ,>)_B_kж D WE}Puk<:?֚4JwXҩgv!u3 DďǮdYxl*yodCix@{ǫ{9Hap{HxQx@euA8x|-[K(k=qI{z,+|;z6g[aqF68 l o[p콦R25XcЖCax4R(, Odt~5SWKig)]uys2پ \|B 0(]4#e~\*3<3ƙf^آ&1-Lr4S3=ij4͝˔΃fCU 4[d64R,Oz=Uw?DB1وw  OW=I4l6n-.鑎 WMb[`h%FsG#nG^#e\-WP%Mrat=mon(^ZTw9Ov$ nR/~P]amDD;$}r{iD%+VHМk},//XxA{cOyrP\"ˈu䗩=v% hX'^~zBQ zg;U e'; 'L [fJAC+7;9KLmZ P V<1&[rl+{hWB^|H%~HJ1] Lnpr+N$dZzDs:q#XNR1O.rzt_m!q [м ͣ8zW,ZdzX)b:{)KǠʖ^x۴xETf$%'9|.,/|{pk \_|@e]n754i6E xlF=JHiضr@( Os(Ǒ7(5:x#sGu5|A W|1g8.Z%~g{em4_ ! Od(<;z7'^_gG^f>Bc3aCBxoya޷>=uI6.?8*3CVa=R9\BRs[iY#'\mCs"[d#K[x(a!I3'ZIi>={M_'_[}(eݻ㛷1Iә͎ܻTOkX9udGwq+虭G;Jz y/n1t;D(AײjjbWi^WC{.064Mm5IH϶E]WV=I˯l>rI%ڤƒnnxЎ mKΔGa#Ne,.ӭ\Kh,x Fon4.X+ȃ{ S5/ J'lx ;F|ky[}di~׶%;7Bb{u0D~nKMuD^uDf4`Z,61J)H>X>KںmC%=>Ӌ|?•+ٖ~mokq ǚuR_|صS+`Ήg7id\]iD #<8e#~>'.~:Y#cO|>̶ vUkGlg[ګW .sЏS8 }&2g9Hw?~3 #c3=egRu5j= {1MFmHPʜ_gVf| AEF6 Ae.?̂e=}g PծZ9 >v>CJY>CD!H 6;C2k`Ǖ绱o ۘ#"gm,g) !BBlcsǯӠz+},w. S3#B;6]@r hYD+pnwr8/@ZrNlcy,s!.9GpLN㏲{L=9yD>:X0=d|pxҲ%*+WS̻18l+硥Qs4Tw477Aw!JY0cFNpb. ٮDž/tc!t$¦B4^ fQL=;µ|T?*'ܮp<ڼr0%9qMP& ApH{8ӈ-RPFɗ#嫁?>EtAsPC?MvD'{V d?{y|t}+{+Wj_x0~u㟠~oj'w,Ɇi\OSP~[gwX7ׯb4z@3>?Gr{ْœ4^YxEF D|8>m_M瀠[3[xRR7Kl_®}gߡ1_#aцK?&|pϏ˯ocu}1 s@S#Lqjp};4 ˧{IQg=Zx!+7B`pzwQE_ @h53Ȧ>r[ cIT ;6FBb-}m1m28߱?Q>6fЌ`{5uV9ݳnK[Y>+~>0N8|B~=RF`jIwȧK4,C]Nloo)#bҷe-95"Ԧl MIB/`XۋcUₓ)>ABaHLlݤ} m7]*u<},lWbMC?W! F e3V4âg+ގ8CPazl/l]rXaXpj?Z"Do"nʟIlV侵ƝP;eeu8|3uTʚ9Y6q)Ex1f7Cx}o8a^e:7س@|==_h"%g/^A^*oDoQ;ؖ[VF@@:CXW v&I|  .c]YlGOO8ShMk@HZQU=-a]Fb<>]C+)yyðn+Zn;#|3\C] |P}$zx[szaO9=-+ONÖ|x2AZcXu 8b!N,Z2{*yj ɸcVX ѵl,㐑aكw^cac32[[)nm(ڴش$2݇0m}A>N>uN>8>cowmKwރ?JlCOvBN'!Xxu&nX庥1NBvS2=z[ B>lſl >X֞aP ߔkۻBO7k'!tNNB(; i>tܷyQ]^_Y?F庾ԇj6j w OGŖ2 1bmq{Ȟ8m74 wX͖c%ccq,mY.km`zIygw]|(9?oc?]16zW~)zK9]Hry޿kbgs@;ӿ/g9-?ś⬝/ȸ[zώc ?)n<&Zoz} Z3zk^sc{|p8 }>ؠ =0&v'|p|5>` m:3KƜ%)ñϛYNY 0>S򑕽7M|dȓݭ;(ٍΚ_:rc6^qPgߕbqlT^أr;@5| ۔v$KB5V6ZcYIN->aZ?l>)y28odX+{>>!qs̲GRR‚X>Z.Sp{Jy0#d>ۢqn{5z|6^YsZk3y&-vm5RҶCZǮ JCgO(PyJ]xTy%ynW]jBZQa}.sEzeַd@~e^?!Nm|߻~>O/ 0ݷCOȢ'G^_::_B6nˀΜ6 tn}I٥l9E?uLPWg?m0oXe{{w}^!5qZbHOF^8<^LhcI(șJMu5uK_r@" k)^aDX?"6U*|l3W;gوXbuYЅ0]_t~\ފ?ˆߵkcl<>~Ryjз9u1Ʀ!dYVb-+s6ֶ[9}d#%li޸L,XI=V}ןٺL6-\0!ac3\vz7u !ԑ%TV/xϻf˭.9mn9~l<C| n/B(ζZWj?,{p'!f ׻Nۮ L AH۟oswy杏lҺj R_c.z9PmOt<% 0_Fׄ76<-s|"$cH_~%>, LKbOf yo8>M]S֎28GX&5zz+K}=-1K}IU1Sn,mNl\yR:˰ù\׶ L'^c[&!ĮЬŨtq^.0̇~~E~|!=mN}^;!z=_Wi踭QsyӲvD7QkyEeS4Rk_橍Wbsƃ=Ŭ}\uMm- khj;:`xvxѱ,C>x`i;:Aī> ;U!/16n/tvxM<:<<:W4:x'`*),";(^v`Z}:^방d_OQHD-JfۜNcI0uvȼ~Ǟ°DFF#Dw tu?e) KkthtP8ntpw0ݼF/ףt) KkthtP8tpn8ȸqFض_w)-S"糐_;o۲c.4b ~l;ǽKKʕnYN 4Mv7ycOY|Ao|p\`XpѴu?e) KkthtP8t0N;ehϚƳƞ°DFFJ2.yƹh|&~u||۞odloGlzSnvm w_*~0řnJ (/8v_t#"^3/\oVE|a~O9|G@:(]TZ9I{Jέiyz?:w5{KmeuFt_[ԭ΋*ʣND>'cTmzyvyRזByK'm֛S>Dd_`ʯ0wxbgk9nق˿Vg̞1l|*Ҝ\7?۩.F`D׎cnXNAw~U7E殟ӛD"7 `. l֮}+]? t쮁k^oùsiɕo刑}ge/Jdɯ)+n|b8+#)&_X-~ Z5)~5;6n@$GIhR;þ}-7m/c\'!S "e'8!4BWXy8m{#Ӧ^ðllֿdȤ[x1 s7 bϭ{test-|?Vzi,(z9}m>2O˒}t{Rn~@s#gx؛r%8 |\ _vW5U!xlICÛn=_CIFRH{7b9ن\z>O |Szek|Wfcu1mM\muJ1*?wLjvmǨ6Xclvs1z~4O_Br=z5:(Y_ yxdjj6=ݦWؠ)90S/#q W] vݶ}6u7o}K0.>~Ə!G57> F n^ 9/}׿{]`O[gZKKr {mcb|'OG1<>Hoa_1ilSLo߼M x*_F۰B 0g߯L>`b)ქ7l5m(/s_P6PqmVgccBX>Xcc烔SڗۜwzgoP>~ʻ׏6v|z$u:F`e`4``AINxՠLw6ɏ$h6H;*W 9`i}B_qj$MۆA:kojmڊ\NmL~_<舘Ą kKXZ5^#/FVw?Wz뢿 !O.:¸:ڗq0h@2pZR``PD+(/ yK*hpHOiDuf}GgC\Y|_c'VlDU'&G=ŴgrYL퇉Ɓ. pxz䥯碏r$Q9#`+!,p~u7wlixX}-1gT@ϱбFxb-ӹyhmoc8W kb95+l9=Z12Ӣ3?s/״Z(mc>CxcS7Vߏ>`k1p>`>`;+`4t;`r$b}bkf|=9pm:FQG]{<+r|_SV>Ƒѹh(?~f ,T"0.[?tn:|| r(dnc,| ^: _R>!m/Sz9 19>`\Ǹ2>Hzco0󁭡8yl8Մ%| F6gkAL 3ڷ#vz>0&95y|90F|ǡǥO-f?n\)@ ,aZ6ئHt@wH` Hs[ mmjm@hA^a ls4ㄧNceD[tA7:X|`~Fcre>a&0bC?2bF-#MW&w17]vYx$%y !,~F!4BhG:<ݰ;~l)^8BПٹ0_Xl.s<^139.^b=s殱̸8@\ Ϗ|\-tI_>luå}ǛM\e<^c0=}:x9}Ӆt"ü^lf!t` \>O! lBB { !&B>~!fXK [B3e)!kL:K !ns9BދW{7-r#ƜBҊ_+A">8GNO ,JW7?/ QBɀ/39c}[x%?/`a>z઱Mgܮy22)7ݕA/'&Rld6De}l _y:za\eE2eSvt%a?. !{5Bhae:=t:0.Dkǃ:Ke]*O[}ɭ~W[M'Rb)ׯm1o!>=gzRWBeHvVHr=B7d'p U 76oPpKHmE\y6\<ۚ5OV/OGd-xQϫѓ?WzN:Ąt _ؠ۵1f'6έ]o׎ !H LOj SvBC"]rHcy͉9z\?c`#^ߠqL&]qe-G/Pq&bփaˌhoQtp~a 58.5.·r


`/k<8]kOY)`8&I$O( vހ39Q#ޡ`;`1Nxlq\6?> k*xG9vSqv:X(6(M<A繚Ẏ).j*#^#5 e_x~Чg@56@Ȓ7?P\tz:Ps~ei"ǕOÏ瑲=!sα .1W.oqn Eya' KNrs?^Mz9] wQv|yk2'1ʈBƐ9(s=Fy4ؕ#GٶU@~N׻u\@.ˠ ^=vzc]?;ȕ_~ן'[9Nt_By_VhwqU2m%߾q~ۂ6ՖLz܏5Ry'wcm]^,\l?B-*fuLkdy,ix(s@XlXئÍ_Uk㍁uA\2$v6R)[˾Tׂ^[5M>b99>@f)WlϴԛYUm[7شņgOcqtevQw>SwG;<>Vsgh]d2sGa=~Lo^^ yt>z6w}p]lqX^9m2i?) (~Hܾ<ʠꆕL`n[.ny a} E9,[Zue|hTw6˪_[m㨭H rSѣ%im m|K? O&QKI;) n;#ylHC CBXG@80N*EE.-v~iok@uj׬ÑWwb{rC׮ĉp6tֵ r@&H!gB0|%Ppϼv8aSit`8TJ\?aօ/?S١q玼ilF0 4?wy"-&Z`Q^r2h$YjMz> V`Pw2fwM >27_{_VbB vDhl̚<9֡sy(r;ɅA&甓9eoXyN}8A[sD* } 0_|C4~#W[~<y<3,vr>W_~Y6u |[D%M@+Ts/YK˟ϹP*VX{1ނrN95d5~UOm^:M޼gWۃp~)yu KVUvl+UVc"uayY^ b]HDUc?c09pUugvpV(&3ʢ%;~u_ͥ"OOx/K5גk+s#a9 Jg-)8Nh,{ѯY88l ' j`]MmG^+q- ,y/VQ9HRmp!3k7kU"&^7Jlڴ9j" m!X^ԭv3=SXJg~~XМQ3湗Ex>kâ}VCΰ]ĮgR=eȥE%b0 Z5bRt}o}>g4[2U3ǐɥdR|*gAﺀ^7wC><2fpz2Qǜ+M'{͎?'6S@Ϸx_j=@'Ʋ?t70ʩJ8Ls@Rd20cr v$7ʡ,C7S+L>umuxZ2_]GD2ĉqʻݰ|̞ubqû̮i0 L#c6f>}]x ~WLk/;U0ɮA>~%`?3,DB W%WJ~3 mz<ۊ=^l5~T[Jfh;MmV{T__8=>:~~nasOy_m;ӗ#}SEq:?g|v5~@^i{Gäݎsݾ=ԫ•\p# 8_JS*@~"E̊3.b2Ƃ7nUEEJN,oN]\gj0^@})9⑻b_+i\X_uת }b=ej\nfz"gj h*xmemCq&9Wyl!C}fwq}N5Qǫ>4]W2/m1';xj35TeG%p՟ȥZ/p}ݑwL|yr1QN=Vt>ֳg˝'c뵕ҝ 5?~[Lg~ zYk]s7V-!evv if^E 9{~wq+kVyp>K58*\nJ;w*T͵Z'WnzVGk^&su?WKs}`>];ʗ)αa{#[ƪ^_^Quq fz~h5?X*X^0q}GI~I}1bb]~k+X|D`۳ *_/{}XSs%3 aΥEhmۓ~>o{ȩfgh+ 2TR tAZtʽjf&uN}:=`uB\j_}IJ:5^]r};f̡Gte@s9uz4m2mp~ {UQ9ìf5zd~̓]~FW0e zk8 ׌:|29y J+tXp@tډ$ڭى.uVלzT_ic,9*uef!UV٘*aJ[eʈbz˂rF,țgx>~Rl1f=cim,S1چ>YfQX׬dVz~uF-.|}i9]K2~JktM6D#ٱEy0@TNx\K@??5<[x܌#%ϡF*J;w|ٚ$)guX=v<l?לK 5*Иz]y7oφ>]Y- \﫸SoըqAh(G잡GqɡMBuiv9`~m& lFh[H<H3N}>]F۱}y~,Ksq\/_OB?XCt/m%Ͽϓչ&I_(Ϸ}a)Z-]ʘf6^Q&g\K3󘿥5\G?1_׏}7|?dVHIeBUdA *hR4?Fˊsss'߳Â!'s кi\ :-3_{u)f-};8JJ@i?Sӥ\Яچ:8/pmX+Wԏs\Ǖe<_@XB[̒uaz IE9!@ʆMIJ(ytU&E+/4Qf7y}y kâ "k"%ְ>)E.S^Aha, :/^&e~MFChaE0ofIĢn5n2yƋnb,ȜͣKA~<Kt"?Iwf@رԘxjB>J:Td@S aSۯjt[4Vmt/?tDفS:fS6:8)NtZ8в`|!X1FҁD9ϯt `4wsۇN{Ee>k-v'#N{nmFKKf!sJCx5.mFD'ZI]F"w^ܖ(ZȪms%<vc'B4Cئ/o[hE.宛.:֪Z o cAJ2bb"-)ޅa v aζP w\=ӧupDppm9uO-Iݗy?SEW}~ SmaZ<\9O;fZ&s+EY=-2_E/]LZҎA^Pnkvb|`(FY|`7Zx 9Ok#5Cc2춚y|1/mY-g|Phf5`-}n$zDms>bE|-_os=#<¯Bx/ӘOԭ <Ξ;6UD05k.DGd{rTHuvְ8v^l(bÖsVW%|0<'>8ҥȐq)#o&Ͼ69ђGn Vo0̵zȳ޸|D\`mLXXhnk2Zc~\lӇcƏM  eCPuRz>%7™mb>xAwj .7ܯ3|W1|p{+rn1?ROl ic}Ӕ?IxmkfSeYO!O8sa}9E]iV'+k^ bۋ)Z7:3Yˉ׍ٌazZDZW~-BNϖcy<1lS,:*sǘœ['2ݞ8tC;#+->zs1׌n<7qYkj~1_X`;6lyy7Ν-2EljW5Y:k*;Cs,ϋѕ-~}[i9)Nðo XE*3HVan@^&;(Yaz(a/>0 <(enIld51'5xMTaIc.ՍoxdŐ%u_|~"ޢP&Gb hdC!x0,yYDQ6K6VXcWÁl"؋ yrmo\`Fqps(vW{t #~9k&5$)&kLXڋ}w僩G4L9u':C5e7jܕ/{` A:Y( g"iìN^X!x`'Paɛ%);P!`#mwxA%>)&x.?ӘX||.ɻK !}ϭK)a Ǵ;_Yq"  <,| 2۹Źyk|nG:>x ض߷ak![ c,W0$Zl-mk\& ,y]. šnxƨ\`εmNr~ޙeۂ}|җŊ<,XklXjNO~< \sLi/|tcG5\ڹYsGL77Fe>8[È6<[0n}:: mُ` ~A^qX)|P߇",>}G>(_~݂ۯ}>Ҵ wKǿ+:KnH {g޵^6dj 6GJ},F&>E\k1M^mqt}a"Wrf|x-b{0v*Y:[f W>8(-kwZ||k}뀞T=Uco0Oyn̳Cnn2QlJ{S/ZRk߷]q2nu7Q2->m B{2k/N0,cN'>mQ6 {={ qenO}wZ[ig[ڔ;kݽFj#QοسCCߧo߄Vޱ[w%ggu!q#O)3+2Xnï$u $y;o㹘+F&z˕?Õsf?GW^?1 \'Ć:̹\(f<~@! }9WXJ=PCcQ0swciw|bYVySR7>XS:u} Y|`s@|/h<_G0'p`|?>@?[@녱|'| 1#`aO>fXa/?k|xC&/y8=ٹֳ[5j9˳Ę\1[\5yJlx>G]'̍زSxPZTYm1>6f53ԟ<3wS`}/ ,,`pA_GcΗ-Ӵ }ML=ii8JF7F4 1bUc$]U~v?G!b[2y-LtVY#?u^%eEJIVg +MkkA!hhv6nmk-mo~BY,, RbX]@vـB2tG_K'% ˈoooovxxjyLWBSߝ!'2HgB;FkK !"b><"}B76^B akzLwB~OyJ;ߞ1>8=~e@|7Q>@L>xT:>cdD+,C/6s(Bx]=Çã{ jI}x|g7BS/S̿c5WU6^}xWqxUs#;-΋oBXה gN5ᔝ}{o\l{NK ;l,ew9~ꀲYφZFŐvM`SoL#ϡᮒ//G[=[GKޘx<{Alniz˹9/\eǝ+<S7<}\h_w\v2su,תݳ+Җ9iS:g [牜Xi,"}~YBC]˒:]{>f[[vj*_r6?c%%+Au-x[n~"}Jk;Gun]O~[gУWJ˛vrOi^Uѭ@Xۿ$C|w_^禗Osy9e:O|:{ (/hk6/W0 ,֑HNwxZ||үx(+2\%Mv7DL5'Zӝ{VbW]q5}1R}bMg(^\ c ֆ]Ij Yq> Z GGe}{Q ]'o-tP:.@8-"k"v7 t׋Bf>/V^?ўZÛN>4^^"a $~xE_czϥܴx`4^[z:Պˎ=z4WŨzDl7+b'vlyМl_#D(jM,v/-^"C}_Nql ăk`g <(xsyx擾A}MU3*Mw? 5#ҫn94;1'iœWT>!MUMp@MUc*qH[9ʩ=z+Ei2~n|՟ǟ6DOT! mSWU|A;gwx }?co3bBu0gŨ*o*a[v}'*O S+,@H_0*m3gϼ3okaB"TdQڲ@VNXr\5s/K* Fk- F(cGuS@ciBXO!hB@qE>b[W״|E!S)Cu'K9hOn 鯱8.u5iSQOxHÁLWOp;6-XZ\.|pL/X2$XP/71:PX r  p }YqpRcMPIU旾rX/8h=>n~r!SwPB:.p GpЅ GBLy2 H@(˧'C/W7> hח c *x [GbK`ߙITMߎ{!+s}Ux;l\g}) &mvx=먏eM}޼r7l({εoN˩󁺡}x|'T{|AZGi߃f zg]߉9XxP5ubDTlCGcZ߉) ]ZU |jw^#v/iYyMuh{wΗ-Efy !K_nmvc im*7gK$קyu$EO v y[tlϣd||Њ;$ԯoJjڝP:O3:ҕ/jۣCW!璑^M W;A*$}D=:˦\z|O{CKANXG Sc Ц[m,;~df#= 16?G|,} oy$1ɧ#wK+x\VD~k'P)9ˊ Tحǂ^byq2AFY|Z1 ]&$_Lε&!0>NEEQ| '4y'=8u20_0T9呚J9cd p 8?@ؘO?6GyZ]]RοXkky HwӲE5_=gb[d epz1/Rn64"md l[Th UrA5EIW4}zWsy{,G611Xhj!A7"ߜ7cGu]9Wp Az]$2m@ey-:A--<ڶ_ݷ_ӵB^c.4@&ӷ͒7.qv?ƁBoc~C[ip{0*8?OٲѴr"BB6h @ ;?OO? )4{]Ck|ldoB{jAODB;>Un\5Z,_993b͟:|+g~cS Y|z2>BߏC}MivZg[tu8<@8Pc5>MȚ\){α<i9/~@b5y=K=L Fy>d0֪:'>SaFxl}-ؓeGvSe3#<Ù F_E]5ڟئfGADzQf5y.2+׻5g1I0W]skF_ftƱ! Jۗ[OCڟyN,xXc4JJr-5gÍ,Z2C+m-;'ıa<@0 )>)NXx@,D1#bs {Da>sys{WF\ۊսc?mlsZ?gϊ!O0Oҽ [a2?c? _e0B&d%Ol}a:\B w.Bn~%u?Ś-ݏ>p;MȅtՓ!RgrDU:uoLDƖO;^TxifvjL:҇\L:_~-0+\"bkdPCZn3@gf#%KGwWߠ~6o0- KMٲ@;r~p&], v),9jۖwR>9 Z.~]Ǖ~^ۤw7-ƾ/jZAF  xf_H|li|s@m| m@|i,JY bkcF˧ƪe//&{VRUy|k3><#by{n>0|jjv_9&CY9,}|vεuuaQe0>g+&85&:Z|ޖ z=M>WEs-v,X~p[MysyƜ%WXL7>p9/ƼtC üwp>?zN״c&~ͦul]w.^ l\gn-sL뵚Ê疾^M؊ hIo7>X΋K{Qr;ד5Kywi=YZ)k}ȭZ>grq"'%m2Ȣط<[6MnKlT'ru_AfIu֠[:>J ,^t mRb&ڮccs׈=^1be|ϰ.*vS?䳘u^KrSNXu6F_Xx|r +:!,:^671yW @{:(#%/͌PfIX1Bv(M;_ vΕvxNB,b9s^iC:6l[Hǐq;l_r/|1cCVYê7^c۰q|Qˍr˚f=X+G^ݮ xǫd-ުYº{@+0։ ;V NNO33Xǟ b>(:zdؕ~'r=yPwLNq}~0+p{;Wy[tH">{YP>ʀ_`L)o_Z1 բX9fe:#޶=eOݾO<#=ِma=?-kd,Yc"=gvߗںdk'z(֭K}8C~р=|߳Ku^ۭᰂFcKqd|Xк{v6^lE*܏ ۋ -6x`aK6q}|qǥuaXKU_7^{Mu$d8Q_y}T׍}vrƎ kj'i@/1i}x~Bx'Zގq;~"EP[!*lB" m,~?AҚ.wSqMCۂ=n݇'=zf j?&hK2!ejIXQe?),b8ۮ={ńOLeX]<[Fy<> Í[Nrq>8WgU- # }0¼ ό iGlqɨMπcgL~q%yXںs7E0"sJ|ͩSB;2Bg|]sw}I$j͟&^E9*vȻT}Lk{ZZ;F0Ǐ;.{5TܿYpuw>Xuu>tB=ז_W5jiKg s *;i+)M̩HF^?u:͗2֜}/^hxIBP۫V4?DMY GݒX!ZhYӺ:p;sy]|S[ϩS+m[1IF>jͩĴg[Ζ;}BNؽCg>10BÖk,EhyjYCaMNA21l} !ا.'a[fl|훍5<>:bJgr2 A[xs+ByΒf5C&<Ku|܈9P.3,U``cLdqiIyYH뼭㣖:l::oDag#VLy=cQ;mKx.8Z\7>z0i: Wղb\2\YVm^7ëXxz ֲCSgBժkU:x1]9o#|bbu-v٧뙵bIJuۛ꼡R2B?y5q<}ACbJrYǯvz.kWt'>L~->1b]-$)E>/m8{ Md=}:̸ZnZ lZ~ֱhf8E[gV3d{g3oqYn_m׍o1~鑄qKCjg`B,!hB&k>'!H8! ftslBIF I"815"LL:qyI^B@} !`U1R#!,dҥ^}_ />x y^MyWsQ|aq0l@t+_>=8)a^甗%}/:m݋%B,{=juyb}=m{+ן1j3[Fgfm{){(ҽ2>^;F~%q"yJ40cEU sB>G*͊[\+<uӍ T(pLTæqɋ%G3h!T0\d5|9,,;lXO xM|`CB|jlͫk5IV ({]`Y!]na˹WK|(bcO󝋤=X/,lw3?y}o2>aI_S_Fri"מo?5m_e>8?2nWϿg/Sx. u6Kik7.]>Ͻ5~f BC]˒ ];",z;_lc6,_K"8H3l\A,g,|CJ~6B:`Rfg-(lK~ֶ6v'a+R75:jLajɜ?umCІ=5f$Fj}i/xb_ cMyeWW^vYΌ0D#Zœv阖ebNJVTId$'v~jbB[H;9n ey9)۵{^Iloe[b[8>lKRXϥ[Hd+~v@W[n֬i)=]m|{5b9ɷBiX>eԏ cRB#Dr!fBke{ BNb3OhI̳Y2@.>[$3 0ri|Fާ&3b`ҁZYf%KDc'#O\7F\E}IOVH JH:XDLUb'iwRA8FkHVFtA cOdz˥ (?-;˷27zi\,ٟU < r91߷kn)~Pkܨ1@12Q @qݥ/Z2qѵ=_;'+5sp9IEƀeN8 LkL||j\g;\qk8⺃c>0Rt|`EyS`?&>L9MqGJ;%&h-{(xʠ` ' LP""%ޜdDABj-|8XZ)`$ %.JT>6ֆ$D*$dFZFo=ώK8F8ulks-[I_,[9<1hdO4/?eT:QZZ;y>AqߟR.ۯv-˵&?aÛ Z|r]!]-YKW>y/m_Z|lMq'e 5ZZyjkQu2YXXv^_vzJu[xuo=pvmj!cmd]򵴮>mFۜ~mF=ɿcB)._BX~{1pʣ} 6mԐ_nBcn.k:9Zh[F{ʶǸCvq㐪~:?w)gKNjgʾ"elg\ȷLcLYbgdϔB$3^h}`_7>m`-Fhvp5>1QOcg'l\ǘ~ng;_mg2 6%y=x\?ʗjQ]5qfy²c?ϥrTz){ +7הxW&3~}M. {mJYHBnMVr s!a~N[NR|)Ɔq+6t^eOr!_0i!T-|+BmMc)Bx5%?[HUvP;Myxޚ#]-Y./0{S0}Gy1| #p7FrOLvnO)Q75~v0XsرY?Sͳ-zYf6Yu'>[Zū~: d>必] plԭa9v1\W'űϸƶlsߙRG Lgi`mij ZM~-A>֝m}n[56A% :FG; 6irX =>ll⃵8zn|p>)s:>BAMc[}G H}q[6BAgrmf);J͐U[Fٴ󵯾 c\r[ KOr!^/s"xO)UO:OR.syPAڎ7mu2"9ϔ#v8" S)V] !Ҹ| ʥ =k [=Z+dmo}sF8),\1Q(loyF$R5qċibr%.·.\ {R?TL'/ZB+O_z ܄?K†-Pa7%8MƂI#F7kȦ ~G:IJd]Í.u&Nj1 9H6:H!sAnÃ6l[J@8и%Od4Oa엿 #45zX C6VQ^.3+gljYnkr;e+XE1ͧþTFKyrƃ5lL"`.CѾqDzl0dba|{1cJ #7 N8zb#-uUF3G3[ۺ޶jng}1p<'ڱV{6ߚo?3B~)Z:d!XX;KŚgv%,Y1:;d~٣C#0; #=F8sTG)}ߓO-Px8Fc;=‚ Xs7\!c,5W!(t 5z `[^0]jϛˈ2YE?^zeZ/O^[FҵW\u"~ϚtݓmFB="q,uD@kX kH7FXWcedvj˃ 걼kl/ڋ)_d߂0`z9Py^}N{)BZ5 istV24z}=l%-,R4,d[_]k\TGdyǹR[e륒p Թh -0C:vm6+*ܵmhh۴aw_xϿJ bj M^HhNv  KC. څ Eyh2.sp0įϗ{ѿCʮלOjt`9UZWъ7 j,EtԘT*Fj,L?*`|G1f2:t2cNiAuLK9蠔LAu |H~5V4C~g)f&smV ##RVTz S~ hg.jV'96lv-w~Vjm}Ow4gGk5ƅy|p(o!dZ٦K`mNAƩ,Si9yy>l iaNaӵ~l8^¥%/(]Scy-~VקA߫V^AWpD0l \yq9rWj(oV6o3Hz8Ɓ-l`~KgK9]cl˖K-VdQ i݃`8UvKյY#!Gݽ=].B*{(?G3hg>Xʑ2iWpܯv>|QǫAk1.0M 4A65| A e ewX=m(ײsliF[զj_ն?KPE_h[s Ell3yŜyrs5Nyvvqm鰾o i,e> +FR>Ly7WO$~>y _?,W^aYw'F(˲w_:u^pk@~-+F@>G uՋ2\߹[PڼuU=\ح5_wondv2 =Z_kmLxpMq~0M񺩌F\;qoy>^pڣR{,6xn~مIy{ z6 ?fx>V_[s1_ a[L B[is6]»ɜϛc=ҷ(2{c^7A@708^zxzmx[mH;{g\қfuc=7xܼͅmxr`[޸Ǧq|Pq~o",4χ#a᳙Ygyv1KFz̬iggq"Oں| cѱ3ʉ$= :m]e{\Uezz^\aYwFa^q|tDƕj~ƹTj"3pӈoI:6l'ъ7P?nݛt͐(?Ep~D9Olk{Nk(mtXĶw@q)El~f(R%ȭ#*8Ժ),dzrq~\ŋ}~3ʉ΄0s9°%Y3„NtIGOQ&̊(eC<^.O-?αI Ŝ& ǒѸðc,1C(ڈżq0Hj(@q\r ' Ŕ{M5!D2re ?1m1e8|llz*l nUUEUxJӅb]VaJG_-#ƗKVקaBwfa*ry0r'%%Murr~c^{Yu^_sGъ^LUo6?%-߷vJecy2j{B Υy#abg/Fpx!ǎGg3´[w2 Chun9c{?blͭnOCGyV{^{){x]}`y~C`iYٮCeku>YX7*cN.O3_ \是e- +¯+戈M~ #ƚ/; D[ g?"fq+q}QGFCO8M?8>Uf;ܨvn_??B 6T2:Xd~185 _>@75^!=4T:=W=ǜ9zFy+eYR9_01G^t=vv>{m&dP {^*clmm[߸Yߦwsu\q&y-q؏f#ovR`|փiɬqL|;HTuˬnۀ V|$=ƾ^uYPT߲}ծ"]\ur TɚǃpDRt/p1*fT]ǖğŢ{Ss&ȩ(0|/rxԜ9=Boan/oY>.2Q:[m2V<3Z援oa>l棬Zi ˅;r}Yw,:^s\ܯ{Gp}N|e8d[j{7\yTAk\UF;+=yߡUTyY*s6CSh,uCjS0/j9PcPOz0wiuU~#9ws]`Z{G6xZ1V--Lwke92d 2;OۅP>!簃׌xA)TmiT[jj僒rWj䭅oY>zl]{TrUSl=:>UR`cjeDmu٦\nuLqx[Ė^6MmpϟsZ-ZQm!y&u8v<ߘֳwo=ۢ,3ǜc/ zsn_noK7|O+ouMzOnR~i,2ʞtȗ6LNzv[ccGzl{oۦ}roqݽº/:;uI +c0 O9,Rc VF2B-5\TpcDri% tT-Ok.MJ1h?ϼ5ç.F c{TxPиxVr3`NEZڏ11{rT1y*%bo+6<ʽ[Eq|ɤp{9{'b}%Cjbz {u?Cؕa߆'DEp5pʆrJ4:'H11brl<ڹ*⪷ j`Y%L>/XguaRIIQ?Xd'%h}M㤅53&ZNfhCԃڈcYXbQcb rF[1Џ>(,"e[SWڙ2>n7eԊى!&/'m!0b2x³mD 2'턠)e B(Qn6!pH8X ;^8w!ux(C1\uM*}{rhw2*#y*Oˋg_sKdQ癣Po :T,?}dG@hr2pWF1Ɗ̞F>),ڶ8~3u}c6yNcq=  v1\>爾m±VJ]]lS=[XKe>̚+۱:uC~_z۶b*4ʆXsUArẅ'/tC;{1}a:bqw$xı= {8oϰl.\o߄O6jow½NpcU\]ܮ kwPbuE~ 6*]wc<WՌv+ޯӏmPݘۅa E{W2A[꣼)j\hl!QcywpLVkw+K/Be\1b?./ڒw.n_<~J'ƭ:^>-7c*1ExyWeUb\>W)<Ϲ@g'I^1F|l81߈k*Aǻu/0iŨiOٽc;h'!+/vB!(:'4C!l%lCR w qB7ChOфs1\:|Q[ݕj-0>\:87+ӏ!,z881#cxV=[uĊ?Eޓ["_caq2F>oƜ¤/k\;f"ƍ07jyY.._bcNup9Ռ?JNBC[]r8]{>fJ[˩^vjdf{?~l8&p@c'JX@:_ݩN祏s~ߝ^vm^#y2Д˯M|.F ҖI.Ϲȧ:A^K~.iONt)K9Oq2۶ӟӟzCV2|{\[/u|5B~I~_˱hC hDh6xП_ ,:rt9/%G^#sk\y^9 :̝oɣO_i-_dvpSRkkй֭mG9r/ ]Ky+9X|&S׃֧';.iks0Gf,i65G5}.1Jϧec'B2M^[i`n<8 ?ϐR $t_>vG;$G?gv`-<c"W :mg@HiI8QQjֲ|G:RqeFOh9ӈR39ua]~_Np=9=^-ueX5ڂuh{Ji^Ӈի_~̨/dsS py ;oa# ,km" u݌5I#YNg47l:u`-k8ӆ&YWڎW7^uD4%7n Xrg87kqfrؓM#|3B=u'w̆tb=mv\`1o"]K[6|0\a~;;sT+ÁC(ۢXvhg\Xh@W?[.7_3=0{ieÞJVńg< s1>)Ϩ-춛=q_mҸFقtv.+/ FڥX>7}g%O@؆t~t2/l.<ұWc|ڭVW<BmqţA <ҽ5ǃ˞4.DCa#ŒXk .D[8rحRNcم# >0[YmΟ$m>2}؀}9f˺^}Z%v"q[w-m~&7Jܦx,Rbu`atEӎ+Zc<ŔM+N0m_$t.>yvAM &{1icS9Fol`x` Zo+Gmϔs,ﮏ!,]7N@NJ4-CKu 4Ԣ#F6GǞZn_=ݱ&En5[h)n 7@EFi\sWZ+6zТTv?K}d=dslD~6˰OšFssKwifhLxS*loؚpp5}6V[k [?9usCnK_SC:?WN"ݜk0mݲcwW쳢󟍵&r\GGF([29爸AM(}(D1!tFa~,cOX\f[S l iNkۘț}?nDzQז֨ k|*oɢnC=D[b:mҶL?kQoSrSߜ~;d>qokrץ^-iG9f[>%̿mtjɤt?g|}R0xWOM5|Fccog_)!oz9B#H&W V7DB^8ހPC"4!6.@}n;Ok9x[ߐAk9wk=JOl=D Z9==c$P1>²]5 L)?JxxS-Me_޻@xN׿ z»@.w.T ߵ@~ƿ*c]N=}r{:InwKN]ʷ _RW6 vKWH=9]w~N҆1&Kx}ڿl>Fx=S?WWp9'^Dq8:>hg-(27"ۦi:ihXI|AZ˓ڟ˅s_Vu~DP,`赥$}yx疣;έ(:{^cdݸ<[O^s30`hty.7-nSW~?N$so b&~[ȥ喟A_[BV/;v_/w.B:e+e]-#]j;&.j|Wz5:s~)q|~@!m תJUkcdȀ1Jsye*op}+ܬ^'_e(cdۥ1Bcz0Z;JATc'yLp ӿHҠyJeo,?1;`uюH^# <'壻Oyms7vN<>O:Fȣux:o8u`ܶMFöv󺤪o.g_n %gKs3,;w<$ʕu͹GG?G˻eӻe$>e4x}?N76uf34ӄXg2[YfZ_rlzs~6쁚?WRCn٪; z| AQn0ځ:Ɓʶ3&͠q3dnt$ie2*!Z4[|섃fH1y$/(yLF+ @,2P%.ZC>y/ytZrٟeVrJ^xv1'^ X " gsȷ.KB]1fKj\׿opt{ a:qmx yZl>@q2_ⲁ^ą:(hcф IGDEiȕ̀ͣ[4M-E>"4 lt_LXp 3_+ySy ӫVҗ۔7ԩ^ ]y'L,hM<˖P{nLLрZnۛ} \=ip@~uz㲑[1s|:hi\NSqxeW+&)KBC]ɒ= 9/[T$"e".݈ j5!snu~>х/\s#w[:VZ]4t!isn$9eKykhw<=Wt{M??~><#DG!Oiִvo^ϗ3_*E8M5?e !7gx䚯e8aV+F?s[KZp ޙna009f3W =J#%YY(.?EZ崢X*5M$CښDwgHC5ſNZKd4..IZigbwq\@E:97J1s>?-SBHSz#K)IJ'IXyfMe5/P skSxS\2YIFp+-d4I 7)))%}NE@:'+ [k9) wDO_s=r38:F=pB^7gc,Es|{迎M0,ip.s@ JBqExtj_oԭP#)M~?٥5WJgriq1~N:e$) @b>2/ Շ"fpR׬ስu(nmG }<ZWͦu+-S46c >xaЍ!,NǮz?9r`iї0E^4!3m\3+M(WW!֓z! !/,r6,O#i9Cm^JQ6 /$6z L>6r^R#xyɝ&H<t=Tl 2hӖ«\~;0*y '!GñBO[>!G/pq rJU Z q*SJ|T#k-[iw0~yi? x !Px!~=k"$O*'P&` ~Je5= kEz:%yj<4%pN;4eS6%9,tᕉ?%zؼK< l/Z?8$l-A( Z/`VeXXJ&Fƥp%p#zF䝎3GWaGW8 {q|s<*q)\!o=^~vw5/21 S']Lf5*Ϟɇw>Ѷh5Coe32]32:MOn#<#Ю#~ZΝyԌfDk5ZC^3ڋGo"qy Rn?fWقD/í99q0ޙٍy?[ pF%9'k ' % [2z%gPjgt]*ugg1MK\gk)okuNi$ʭ%ǵSDnRDrDe# Qfړ2='2EsJ9ۄ!?X)nֳy~;iB;b{(i-'>WM=k˻w3[=vwtUW 9{=mF瑃>`T37}*TxnOvIUIE)s4LnXYh|oҊk ZINl >BJGEy9`k7l8,vQ1Ӯ|caU6{ A}-~6CJc9Ch]!ιQF={>u+iEMD+iiyѴ~g&u#zѓSvt6w^>`$=V0w>2گ;-һ"Q Bk܎gw{0v(^BfiWT딤{ \kUgŽOGWi3߷_TMW4`]99q0gnB8Ρg:5 w=GzL&ٽ %\0-}Z7<?^/LHo%<%cjnQYH{8f 8,>L*#Xh%7kVzJ :_?+ٹڈ)z]ޓFՋѓ&ŅC6ӡogNWrQRogNק}6 JCôl*O}߹~_ZkǷc[ʟJ//=qGCpcFơHD޶}ubh9|-mzGk}Gt{ة\m[Y+ `mZV~[9Ҹyy%KV<{T# {A`_ |%Ydx1ʹ8mnm6g'egm".ކCsolulglF ?A_6mH~CY+rvtCoWzC>1=B ~9f8tݤT>mSJ?;]‡w>aQ :6KFȊBg/[w12FPQKSF|]L[FL/{ֶ:.Rrzҥ3ғM3hD^Ia{fIiO^4'VUY`NzYh3'_.ǥQ 0 '9[>-_I6KM4Y_H2T_$+mrtߟwQ9g_|r++\@y([y_K^9Rܔ~eֺp:RW @H<Ǻ+5HEu9'L6IKRzdJZ$>1k70дgp{!h qq  x![ˆ/^cY-3_V%|`HE_p,y%#ZK3=`̢kkiSqmJ'Ṽ;YBˍ zqig1`nBlbڦ?_d l4,k>fl ھ2 e ޷Ǒ$iPs?L霣pT2IƲ D;meuUWu`!$H1 B8J: D揝 'L`' :5MHR>VnRtP ֘?<ӏHVc8 K?Ńi(aֺ] Wnާ ,IJץTA&EZȾY:m#‚[uC߅o0_?P289?8AP`#Fci wR0҆QOv& xMWs~4.SbfPCЀ†TӴ'sq(J,`~2j9xfkboLǸCHol9rCzТsb{9xwsӌ auwV޿w{\Y}bVsGdxmt- ܵmS>1NR߭Kmmw~{n!LMl"?ўueagPAuDm. {03W~mJ ?ދǨ7g ][a~uUNj^~kuv_ޕi1xD~;8KЄy(![V{%r4#:[l-)!|I ߲Ke)n6V[}鶠ܦ-t m+˭O=ƪbbzk,o!,/^Kz/ca~3׼qn[c۬z-XNR=ۚǚ)R;'y\ )~|[Y4d2gpA*aDZ~4-y{N)ϲ(vN{~[ G9K?[/xk{y_nw*4x;\çQdԜ|-\&8CcY[Y5~d\{>CXozpԵEHz>V=)s|q95xĬCg:J؊b$+ϒh<#b|0ag6fXȶ! AF2˒6 c ׃q 6^ݶg6ˋOmF??w0B7i/l {}ݟ5iy3n\?58;zDY)\r?q,e"8EY*,0>>.aޱc9m%uhJ Әae\}ǂ\̄Ul^ZXו$#ycʠ}~!zV; =F3_D r >* x3K-ܘ^e9n`2DYN ˙K᥀R[>x yXdVQM0+Xt˞Mq9~}yELS~V\}~[kU(9!D'#M #Wc!}29CEjuJ4 o㨉}N_V[ym#!GϝF0L@ߊ.pDb(z*$Gie6<)KkC)-wO˰2 ~JA>C?hA EAQb/=wג1h`Уk(xyV0kҨ_cƻ s(?,fBY%[+"<|L1v(1gl~g}:kԄ.Q eke$@ʊҟyZ2Nx꫁Sr"&A0)eZ vr <̀p~xxpKR2RO3lxi_k(`Yh,1rKeBxh1H?@ǖ9:!L!v~Qׅf3KFpOl0紃3mB\Xn*c_?(}țU2/P#(%Ƣeo8p؜^6׷=KeSX4k--ӧQ7OچW:l;~hs\Օ*a 5Υ!hyư} W~\% ]\үX,m]﷭Hz>YU:v&z*w0y 1_uz9m!#o~؎CCy|C8B^ɻyCnJg[䖻w=Aݘ{f3c׏SV0cLg}l\=O{DVrz1-{yCWnTCB.r9BUӀr_ سe!C9i^{3"DYo+< om[x@d9 Zz!K'C/1U|FcܻC^ٳm9 <ؚWvWceZ.kvwɕGU2읋 z9ǵvSc5м.p9{C毟o'33X$ ${FEK4B^OHlYYkcC R>9aK&{8u7phI\z,>NGBCZN0]Il/Xt_[>zӱKЈ4qzۗlҶi<d|~a[|ư4q==f5jb>clklѹbϰr%ԅh!=9uY_6^ _?K(Y,?|j.gTu)/>H~+K~.M sMMٶs^=9Ǘړo)cVԶ6>iZV>0覕 N`ܲ?z%<\"N%\:.J<1}%WK;ڹ}Xt?NW0p0{ޱu̪0IY|FLZtw@&FG4f?e\;v+׎Ky_mm*m!N#q4H}j{Jm;[?oF1 d8m{#AW#z4#{88x~h['Y?4-RZE|hbѭ,ɔ]K=lݥ{mqo=aqW92BCEagle-2.4/example/ref.bcf000066400000000000000000001634001321437612200152640ustar00rootroot00000000000000BC2} |\U; b( >V@{]L i6M&cyPɤ d# EA@@Ee>Ex< ("s=l3IZIgY~Y e2.4i̞޾bpa$fN5uE-ͫ - MK]ýC#M}}9Xj8\ Jb- țSFy۴\Ӷp8\*{F͝ [o80_,G;w`~;R0UKJP(䋵u}ז'Fl(ۭ)ԯ? \͢Ǎ:@{Pwo]=5;0G6m']ӳ-L[QXa|2@Z ӆͨ-qe,ulߋ+/^܎#e| 6dz~T2nh12ρ2e[xT&Xp]N@XHX4=׊G`ɹ`Vq) l' .%RN%R0´]`0uK%Dh]Lqemm KN >;=Cڸ{"-l9-_; p-`:SIj,( "'Efࢶ( q"=pQj5 EUJ6.*2uBqE࢞(`qI4*[>Sd.(J"}pPHDQQ4cCaJI= 26ULrLˌ9DM nS#T(@J#Tw7*mh@!6.@J#TȱX)lS"Ò,M%ÒYdX݈ #'G2G"K"+7őR#ϱ~T9,>oVDD]'5GN$KE$Xc wLTLE-?KKgYqddC K+'TI3c6r6J6A,ĞMv96yr6jq+gdza ]9lLY8Jpll(FN&[I&;Ҹr2J2Э5+'$S8s /AT**>@r&uܘH@E$ [9G(ƓhY-E@iǃD@E"CXyr`(eǽrϗsQqȁǣr9Jm9(9/琣[;[_!G!hqr9j?r1*r9J?p`Č8 +[zlUa"E}ĵzcnF ` 당f0ۺH+mI>UyR=Ŧ^HHa]KcUixԱVgcJ4ĤoM^5^5^5٦wxٴ|=Z> Zk<?l^-lחb;]0?6*}-X.66!o :K# ݥ\~>(qQm`nf*vطx"Լ\ShJ@3e؇_HX F6gުd39i6@NM%K KMٱՂ\Ǫ RtjȞBSHdQWamkA׵TaX Ί>0`1r XGcAr}nhr#\bx_m]ٲe:SB&owNlo f溮ZhKhV=8dHwxׂ~f t@dNvmRgA޾nȡ]=O]#ܡ^th%Kvi`lq| VX[P*k7 c뇑mkpþO`ɪ˧`mJ)S %\:%>a )q8;eb4C3>-ğ' '.gr.gr.g9|p=6ظcczl\<.p999}wpysp9sq9?]|>|܎>._pp0.o񱁍?t?=xl<^6/8<~6/r..gI9>Op}y><\p}`|lz0N68;`8,Or,?cyX^`9?q9,/ ,/`>y0< <``>y0000 0 0 0 00~:idҤI'OT?d0 MLʤIo.y )oLיִTiau[oy5_;mڧДڽXGIߔݳslg;|}v[lhk& LM&O/B._zWL czaU7e%+|*SpX@~8~Ц4rXm:c]#4׵zޏ^@~C@x@3FY & Ί cp}*B'@fc$-!(SD蹓 w>|hh͔HD[o8?AD:w] Z})H`laG_ {M,"z.DK@<€p_ K Wn '| ߸>4B8>}]Jde'k`ٚbuˈE.#֨Y e,.Fc&u=ʐ H!-Az`dIOe\g{{i:u$ g,Z5}1VM mh8"z᷷!}ͷnrڍ*]!c&vT&'}w _b47"5]zvh~ώ?2ig΃xf_p>s+$R^ åVquݪ_dԔʍ%A?Yݯgdx:A$ "].[M+;O? b Qm_ s[6w\y#C!&xc#񐨷I`% =gb)N`gݑ=a牻|W>< sf|J~naO{,{DK,Mo8YfA<YQ<6&fy|Y*ʯNyEnNY<?[*雮ID"O^>m%XȂnɄ,uG:Ooq~WԘj:[&+="P\dd!=x}!7$Խ%" ZwR㮸jPo/ x!Kf_XAMrǚx,[3rU"&xc aIySǠs&=ug Ȏjd$X(#!ڙ0Ʋ.2"kǖQjOV@?98dS5CD˩54Љ>{7r(TAF:„JUw+zPk[.I*8h1}s>D.v%u%[krrz)@ ?NKL!\\##sq1ť,&5MΔuqZZ EMƺl.PfK}ػ׹}"zn?hߔD@^sɸ='bEtb'rT6 @ww:2W6-=ho_iVZ8_4]|+}l"5TeI!NYQauf+[39EO 3D(tWsQmAx܁T }-375˭`TQ2Uzƀ]Ԑ-XU FSs׉YoW'&YyQ|xӒ6XpO8v0"3h=J f*_̴.xe^~ ڃͯjZ*ˎUd8/O|In@IM[=W#;! 욏Ww,QG%q'›GS(jd!|v*Pm >}/^c&ee{^Lr@]ŵ_!@7<_:z)4FB/Gg_8C}蘆uMtUؼ5^7X^ Ce6p|H㞃BmO"B޷Nn8C&I$7.P]UtK4oIhv9 e5[hܐ,4݃tRMaH?re!7'M7'B-jhyaZ-"=3ν,յEs߿hz*Tй_R>+s:Ks t.Ww%+a aϚh+ѹHH6} }D_x.ڥ #f=}*M;͢KLϜOlE'Rʶ9cĖf]&upپxwn鄀r\>͂NǐCd!KvK:.$pdZ!n) @7xdyv_Z*Ut8=PZ*R@V(i,2'];7E:N&9 hބ {9HsDh[mUR\Ȣ`fФN~Vl7W InEzyE,|CWhgօ=vqw]TT,ܤt?׉̢Io&V!ҸܦnC2l\)COiu8|s/kvIsȼYhkOGvx*°v@'\c{&=pX'D@9Oۭ+(G?ـ+FzxA@ ӗ| $H>w_ (#'aƜONK'g*b}'bF*| DD 5:;I݆=n<&SCv>4ϧ|6 WՑ:9u'KT,Vȋ̧RSuގ8tj9ľdſ:Z nɯ|Tj?$hhxx:>oVmWhcW#r?0LL'+Z>)԰j G3zŜ>>1X(iGF rpf,c?а&3E=6'mu2PgEFnK̛fe [U㢣AسJmMzMr#n#]tJfa#]A)b "eHho5e|MEq ʰXPף,!oM| :Ơj~s#ϙ/7;[[]L[jE[bRq-),1 g)ӐjϠdgܩYr-?&Գ_(u&g{]D.tmw Y*pdUb-ۥ 1LUk~-*e,4ifuD#Wg:6s̛v~4X][_&@^ST@?=Q^Fo46 |jB2-t?+1o8É}?ݮtH:g3;xߢ-r)ڽ-E(G=m@r_38yR d Td6d.is̳g/ٝg8?TQ,VyF敒Sn>]x,:k2k hqwmzJގ)1ohi|Y!;_SgS_X0f1=qTL5my6tY￝G@Ѭ?Q؟4Fzw)GD[_^D㓺ڪ6I]R͒&unWȒ2BRkJbR/N'<${d%JmHkb%*ⷿD%Ű lu=>~WRF^E/qDzJfNl1:\A"_#pNcd+ K< ]I3\ -M_{GX<ߨNy!Gx~Ƅ'ES~౱/ ӷC1W@G|~` [$?~pNu)n+ZYX!ueJ6FB]Ts05a(k{ s e#xQo=ϳM4V[;D/{)ܟ~M6FYi=Bz(WVB啹ǒ,CUner@21гQ= Y:?y?[=@}8z/S_{DФ BV^-Tn?G&" ^r&<ǃe/12d2HR&+4,YO但,[]O2_Q*d4E(5Y%u0*Zß]U.Q`O~8UyH@#Yweyp;Y&FW4J.b> rRa lV,8#Ğ8B?& }~u2oӌ m4M-gHƔyAz%+ַ]/vn+r8KB:'yum =@[}?!u=d/:wꖬlOd(Df9O_27F&5'w,Du&c15Q"ƂI=d$b҇J5%Jiܔ;Da`kAN";BZSqЄL?T|!s|yəD@ ]J=? !$Weפ gA<_~aъ{F.A wFZU uO}x~d7|z4 ş3w΃xvfpCl>Dg _JQwV*e<ϵ NYy2uaF/\jH$j弮x}Ji1tq[y<ݾMt[Hd/oUeCN1%N*y!7;I Iݢ !iɛ@24NMƙuIƃEÞ_~}#trg_5SCބdURw7!i<7(Ynh[4{;4HȀus о 7>1;X: BH T U)x)*ge"x'ZTߕpI=g_fz 1%;g7z?Z6o4**(q>c~U@ %- ( ,A/1~ŒFm?#6!μ7@_BC1] ՇnK؅eQ"s,"(F TxEAE4E4#x!(bJ5ޠU^== $LwUu^U*٧K/-i}? f bkMWOlKWNݧOζm U[)z _^QM;:֬^=_8h,I2]K4/MJZ]1ncUIi鬖%%+))iYp͹e J%>,)/#rݍ"kD-p녋q L"LH<ϖx~U4;% StUfr /~%97MU':|l4H˻%)/TR(66teY 1 xn]x5KtuqUT#@;T0/♊bD$(A.gٖ`]6/ە5J{UN%ZJKFηmT,ZBReXм ,0!|V>T2N9!ZTt)!ZrCEpzj2Da)LaMl 9oH('u Y M'C@>Xؗ|M/-\]y@gWOʙP]Oa48,Z^J1%?J߰^uB86#LЎs|_A=vV8&&-  Hko-Ʋˬ8f gbX6UndK2"@:@F[L*ˣ+@F$(ňbj!b* b!}}d69x ԨmH?v <ТAcjFH<"kl{d3 e ¹ ʲ=v_Iv{jc{- }S1#;y>^'f31d,s 38D-O4 [vKuG w'SQaqה 2-!&wjS%AY T,h_oYloZZ-MDcX"p?c @G :dtq{pEΨjCr_pk;'#Zqi|C܋=ix2O% }oTN߇G_AB. \jteN\kX6dzK3XRN%իB.ExZRV-mEٗ%Fwx2JF2܊ybF+:pE}EXoi9{>o M;hi/tGTĮFtJf_q`2 ^v =އ(t蕝- HqDU~kk&"5`لIK߆֒`;vo-~H%ʻ:w#ܧ{Ku 9؆@|z.[ :w♗\wtй$@iشɕm6AQwa-P[6V_ S_Z4 E״ %gR-n|>Η[JGOxWx-^xvzV ^~(pƊ-y(VcIeѨ0-26>ޔ}ün6s㵸 dc>O'YBP{ }OjPWƠR<کlG 6l&sB;IE>J'5|lK?uB5D/' p=qGin2dips>͜gZÖ0ѳ@9kYlёĤ}o{a1 ac84j efX Z^bᰲDC>V #'VzK !r->r4ļ3BRi~%-{en4MŹCK(BwlV|l+G|].̤l2`AoXUM%‚v>Ho ~B떷-ŰpW -,XģbBN~$:h=}KIɈbF%>W>KF*/WBˬyZM'tR4:i q`O v=r>9sO [!,l}yrGDsCze1 6o_c<3¼vBDP,/QFrDּ\l IvSHn: O5s8sAo#<7^<7װsMGU?{6,OT"iKxx.)qV'ےSiQ Yg<-E4Hl+y#k/" 6,~%dR ,og=tW6uH.]%B* 5|JbEi~# Ҕ;p>EX>ٺp6t%{!N]_ Mg"isak8 *иWX hӇп׻,w}w˔-ܡUxr8ĵob \L,[Hp\Y,LYB6IkU!7$X+疸 Na=^ŀopTT=S<ǂornB%hA@.hϷ7O)„,~+ L(buCt~y& 6x*\rmJy@U CO ٽ*mI,,lPd2#,)G]'غP%\BjK(+TicsTA!gkg zvS' f,xn\U+\vĊRb^Њ")^-X鶵r;DHWM7Hmҡ̉ 1;L odT_-M<[N>-jӫ3ڀrjp[Zr-}4n7+\aa84R(3qXd^5p#<{{3S,L)V.(XMpp9s*"m9 RTY臭kib?u'`D+Q?u|ê*xI^8gDR5k ,>j촼AL:IdzQ9U_j횮Fn{O&*riaH=OC@M$cL:D?BXQtt3y׵ k_Z%c|A;VDžC2u;(>.oc)(Qk2J`mM?`8x9LRb!PwԢthın_WC+nu;ycC7Z6z֤b;.!!:@vC!N /PCaDJCZ~bls^<3lRPrhv=BoOhatR*!5RO7d0>䊝 bE껠v=+.,1g:ѭ`=7ݻZgw xqn猼-9ݹck˟Bh6$'t~>*LoUt7SX"Oqm7v\)'rFPG²`y%z{hd")ݮO)z豷pI#qC}CC?V;x(ߐB kuY"LMhzg+4/|Ak13`.m-Xޫ3B2E.{{Žml]໫ĉ@pGPxG!wH6tP]jBόN&RZeԦ)D[ldc;ͤS4'W3+U zOF4ڙ7(bR >ತ4gcGM1ޙVm}Ϙ߱Az|{XwV)^b@iuGAB. D~O$p=uXv'%;ke3Pܙ>͔G&ELU$a,3dh -]-Ӷ")-ƵzuMCx,lo$I< ^*χZ֝YM9NU'7 q)Sq+ 㸾.'BÔSNT¢XГ1>izxfh$:y4J4xf%zM#e-vpvEunqd\eɊCK_dMTW{ 8s?4 hܣFZ/NO# A{#Xmh-lX_IɿӸcTе پ-yol~rO8&I8Nh>o1$Ljҍ9Y?NglQUPn^Ⱳp+H>sBhX6^I p;e5yDk +3@_1'Ƴ܄gA`xꋊ;:t(w,N<فUCMa9qbsw":^`JwCpX>½?V|!3(yj%Z2&TBS'Ez+O1~MGSxQ\}cpz kX+yC=S ָwD,.ih' J'8xR 0OϜk4r`D7|:(䳅tJMXo$-|>Kw.W#6%m?_~=񸩸H ԢظkyX@y]8 7}fA]{h?Y&&\)h [+#;e.tAjq'0峑ܬEg~M|zptnM@@_Eq/Pw/mVQ5n "((A̸S9='ν9ӗx9r 2n'n\.Ke z+?YdIE9!0MZЫ*@7'> n):ĵZ _ߔIR[@2 L^4S7RT,%h"_RݫxَgB>*!4,;TP!YrknV"|03I lCs/n>}ZuJ=a 02ᙎ$#tA>}^mτsq]UL(9JY>I;)\N#ȉWz9('@>ض|'Y<!Vj=W-Cw1%z'[]6˗A}T@gCfonfKYԳpo݂_0Hd՞,BH  _@5Q ~E$]yZ@qH͈0=&TBcpԓWCPis pk}_3qek||V]__P[HŽmp{U U Omza_Pk~EI3Ȑ'P"+2"Z| };/,n&QR*?u^T@Ջ~m727R{PUIymzam(R]pyzsq,^32!OGL.? s^DT3g`arJS_c@(*>F<R޸#)<{֌(E-Jh>/;eTxT*+cwʪ(ܧ4_e UCN$*ۯy1CA@/:2 .Q?<>AYx:Ytw4W2BW6c:CpKDygᴿB9Ȭ%1ܦ h&MGb7g;v7uB7U. Dr;O0:eA8VyX 2,P@@]z7 `~Sxe گLѭr+CF$`DX8 R8X ۔(jmj;;.$Uµ4W0vAX&G==r3-~=Q)瀳NΉODf>PO:TY@JPRjI5}(Tyo3tqC wW}Hܗ~#@>JlʧVU*̧=c|?=kQD!b+WAWzZOq{U› 1:!IasUn$O'+TnGPIw =gg @{k_@KaKb33V,}a:m%ЋWȇb!`JZbN">$Ìc>Ƴ[ -DQ"mXaY`<υC|&䜌|DzNMxrwPy>3ʣˏʑcxHQ`aDxtng=!JDD|#Y! v;oK=5з_?9F՚ XH W-]mjAlU(1{im&KݫkL|FRH;,! tB*m^9xRz=:,q&ħ, M4{-*Žd-/8ďj|a~H%,B?!Dcxwfh.F fqD||H4Zt$ک+F(}*Қ(ЃGn /1>NpE CP |a,4-edX8Rql,Np :\gJI~jNI_^= '&jB-'kp|bvQ9xT՟3|KC@>~w:Gj6WU@A>y19㾫,RB-Phu-3b sYvu@& 5#I5ۆ>/`y~Y"*i!q/H½R,jO 4OåVd6޳H0\mXx! ۯٽHnq o$ɇ`=,XB̏RMuXdpB}E <2 "wrc㱄uP<t6V+h$0'}3ujЏYvaUI/GyH5L@B{)'~o Ox{/g0B1e7)%'54s4cpK9x86Q~0U@Lܔ*q|?6}(Pj+; s&X>pߞ3(.qb*CR9͜A #9umc!p@-[P8/Lp@'V_w8d {Ԋb5_]1=d4O#냄.@zA{Z@$N~ԉ5wxWEco_0)3T*Ƃ~%G9x~sYkjB_+5,Mp₀fFArT>_pC`A ܘf{=Rf ԂoňKve7>~ ,Q p|f>XYx@^!{%RB^~0iBƐT~>(ţΈB$j_r%ػe5EWB/ PcaI2z>B<3 ѱUrɼ"ـ$;"![B17%\Yz&xSܒ#<δAlRObN:)o#cS,o+w2VMAd,# h}IԀ62߯zA 1os%mJg@u1+DF\c ,S#U ](Ƈ~FO1]b%z0۶ӧR}3ax>5`?Ϙ@a4"+max&AB"ﲖ9¾"FF: ԡڽ9x(һixy烴6P HBTFœ'D@ώ^s#@FH9Գ̙j4|Q^w Owo6e~l)]N'HXQ_NҲ}qoKBK1?L =`0ft;,Cќӏxn|䷠o:$~9ru^M2J !_clQonv<*2ñI}':g 8[ZJk]aF~%|\!^ hyٽK|9:&;nM -굠SV -b<3Jg:E ]ũ|%q Z-}ϖ#ټɅz}UD+ j $,PVgR7_05g!6.~|><=ImoI'$i'abqvE82wE7[ȘؠϹ$P)B6 vrGnf)dͼ񘟯ƶFݦ3I~7y>x Ww7s`X1s߆U^fgF}˷l̬\Aj"BKI6J6ߩgZa5 - :X-ć~d%Xa<7;y๲aUCuuF}kﰾ5%U R R , g5f3+Vyt`i/;]>+X,8?#S< ^O|:HộʣV"6I2Gג?ގTBCh.] Շne9[g؝]9d9Uծl)zQ4 #RFk53F[zԁF_:( o I@[g%@#];)͚;(tSFS ZX48d+T0 5n0}4mf< tG ~l{VUphM-CTJΧvME@mK5n㯔L3Ɠ.* j"x.LYM.\utӕ~x֩yz_To|m,Mz2YxѨ$+lhO{?˽+-@w-,f4tahN$C d_X@<)n&cS׃]_QI-譀ٛ+NXqY@.S:q^xGq }͉O Fq%kO PCyiD̀,<}tOV,< zyA57 ť?:R 29ׂ8{S`H"^XG1ŽhlQGx{&ZuAuQ,MG+p wF5_q}m hCZxm^.K=G|w. R\RN׵ϵYpu%T>b灟|nX koX n\PtU='pxV#]LdU]pKïHuk#wR]JA4>OIsR<3hL.-{O7(l]0sgo\?2Myi+~5HG wLtw9>SՊI*F44X; 0s<m,s9lO8s6znⶠn-^Ru۶+:KQO(;x}ε9ً+u?S\-yeV|F&M.O}]Љ)fQܧ!F(O_~^cDKnY+Jdz;xkQϫ WMeFQܕ`Dt tK}AHozZ޾ #;^,\MBUg@>]L(Xɉbf"M1: fYVYJu- Y _&^(cjŵ^c@zY<>d\@K[k #%F4NdXl FI,WEomZQ+A~ca٬{'izyjlC- ASx܌197PzPw;S~6WLKZ>Ud 3yggs/gAz~hjѸϡF,ƞ%8mbuΆG{™(ayKfg[cjJ8+Xa]7۟ > A߾5j-@Δ:#I 嵙*,/Ti §jz@FP hL SX˨^ݛܐnڃܣ+z)OTKx~xJZwh̑of oם! ^ҦQ|jx^̸ y7' (mMyD2qo"Qq틟|c{7x&{MMB pЫ>uۻ8tvg B!~vPS"ݛx4st9ϕg'ξQޯ?<Q4Q{f@'ICDl=Ľ$(6℈Z{<?θ"_S#3}b*PTvDd @@|qkF  gh(fߝ<>7EƑSϾ {zFe)W6 <@1Y^~GKNf *~d$Mxl<cU>QW|j\Jn:"BIM3p[2kp[:(ܵ*!0/@N޲c)>UՔ ]1%, +S4;r 5wjS+654h:6zgO;"H/!ҴMYD{4.lo`=Q`xa@Q a b(R (C4keJu10œQ8 9 xcKe|;Ug }h].q9[fx``g>> >C@0s6;b?CxC!ZPOh+k*/vD@oC@Mb>łDj]'/vb H_0^\]^ R,f<pk-|<0'Yi]`OuX!%)C'+kV,[f*Lt:eegJřdY? 4cYTOHLa<(e'Y:O=\Pէ'E1 m{P .I' m>; h5z‰q߹hkOylZR"R5|2'X_P W Q/5C'8G@x@ȅʳV͢QA;)vU>)ƳkGO5˘Lo53U QNzo i|([H"wUD9*G>e+Gp߰521 Ǹx'xɴ5 SЎ͢V?gekqA,%>c5zT1JRJ-jO5cE^ݫ%h-Xx~ٶ?շo$0af>ë|5?O-ӝxQ1rŻ)\ڛvSHDL:Xx:e^ٛ{,ZeeTT^ p3"3bh*2xTN9cj'6nQ>bѲiGΝ赽_lσb ymoBm(6tL5̈FR_,R{R :؂+_v Wr"DSDI9I5> \8QgqKq }K0ob>o*cշPfزE&SrKOX_վa8h*LUɼie[`(*,{,{JTtd@گ$ 7(c?Hgעֽk ^.Pƥr9y2,ˇ5us0mvE5Xu}fM~:[lqzrst6DQrÙ9 5G36ՀM2xZwmG,땈물Ϸ\^Q^%)Jae-%D/dv8tVd,ɩP5ߝ1]^P{yӈgu?A*~q*Ll;/9+%3v?%= ٸ[ ]p tNT]RuvTj](< =^ҁ=%H,gFN>dzKB$3hOM|@F,<$ڎNf=}Xd 9}L";gԝ8!,!33S|h@9.5r:Xค5txv1w}tS-OTx?!nd? DBx|*v6-ԕ$W9C5u$W<Fߗg#p'l^?}6D3"L$);Јz{װj O(kſH]|ЅߔJ){Lgx2}l1ul:,OVqξ 'l?Uw+ǟ c8Aqvy^a_(#29th'boso\ 2L~ٝ jB (ۯ@pjrqܖ'-x'^ʯϋЃ𧾨Ox\7R~R^]z7I>2 V-xf!Mఴx2B*yzMT%꟧"j.m PXQl"M$Wsz=-gnP_޺IW_IM޲,*'Љ0}dBw J*@9Q*j1;+/7 9j :FǠXBQoz ,f9t+։'Y~b\fqK |*ۂ}!p-+ Ƴ2%A81X?عC`3XWm#$*\}rWć\:d_19e1w3.aCט1F[RӈGserf%CFvӗ~ω)v=ju&i ɲfZv4=Ps;.ϩ*zr^|nunEђ-M$]Q OZ6>%'fP!`a SC )I)[ntz00a3Su;~uIL%l}sU߃x_;}82q๥W^[i2&˽sM<Ϸ2 "c)2 S.ڤe^s/hZ3.f-6Cē/d9A%<: e#'Jm@xϷ6c}J~ ;! +֍<ҫ@3ZCQV@=G쬞8Mt,>`g!ok/)M$x:Ώf!4wVo<9ENTjg=W"@1~x ۋT@Gt>@8'ND!+2 Lytد@28ܕ}BZѤ-׃<{%0"mdioz$(DhΔ hR/]:^tOsknoRaBJp"+ TF&dֳl{> ]I>o/9ey mN-+!AgHtE)24MSl{ R >B 85 |YmM#HexP0gRyj,hӥ-dTtX~Uq>1>>o-Pns@s haƳg& [Xo}ywhC)6IZh>zFgҾ5PfC}'ݰ1|@=?`ɤL|@fjQmJ#}/hshs: ]>f\wL,Oe`>5^z,OvK5ѰvGLL)*ۂmLV2 K/{Qzu秽[Y.oU)ڈɣF8?4E"zP Kgfmܯ{y'"#QqP~J@O1"֝;SnH@]Â[œ^P+A"zr>uY@MU h&eV=t3ly+NM0գsf7S B2T{ U&^\?g4hwз{>p0g"8O2>3]Ϊf| PY`WPfD<؝uQBk6ЯZJ$ ώWlQӫ'nޙ>oPL hKaZ+=E+,'<ɈRX/}nzP{#,6>>*76vu, Z2FTg[Dwjd P h,S<svʈC acԋ{S#Z^Z-ZP&@` E1"jXV8\KeUgh20"fT!~:j jnF Q}N/,7nD,hˏ42IfB#,@q|c)g彳3gڗ1 4i_c>u屹{泩<\ /@F,g{DWj?G}>hAhysHTԬvsR{Lt,JD%;}~q LأnJt?=Y:mW .5:5IP')ZꚋY Q8s6G-x蕳@YpQnԵqfJ ||'-[Ă:U kWWȃe4%].8~J 1"6kVv=D;pu |NmC^QDhPhp6oZH9%OEn=ԤkykX))b`h $sF45LcA:T@1;9˓DPx$s.E|X2a“cTD寿[<ӱ^"ᣀ}(6ۯ|:'BUJtH@{ #(;^:V/v Yй?h9*=7Qn_&r[U5)+Inu~}TÒf VE#CB'ul~!y u0,*8)-7;nɬ[+Z;lfŀSY_O-p|-Fu {ɏJx.S*]#%kaYVEۇAͭAllbGX96xY5ϴQDBC.}E2-*7 +I`8Nؙ%,FD>=)b8=3A=E,t" aOoOwV]Lwuu=ު2L# aϡ]e_p]LW]µ^^_ᩅ W{C.?4g;qBq~ yׄݶ[%/<nͼnEeee')+|I:G/u_*{c/JYI+6ԸG,r`u#-\0)iH}# +X:9؃HE5#*z7i\ѫ݁U=:M4):H.V.^>1C~4 8N +0 +1knS\W5ÞazWKcb7sbCJ0=x۟!<;/9oEV*ϤV.8+o*^9aI^$(vfH&##ד] BH\ؓ9^<ʡvq}LjFG?kO!zAM\= &?x.{Q,fcx*14:@ :؀:5hSiJ ACqO ނ z@Jdchϻ8?{;C$h.>E۫T@h63:δ|gt*p?=Ƴ)Txvf ox/\1ٱWSHЉJ cN`1TIa1j(6g7$FM&@ ;@ &SJfwRZxFt*ex6)GR<7v\m&TqYv癿9,ܿ)s᧫ \^@`~`uzפaWhvUAƑ21"4| )ni%XT,j,|mZ[ڀ.wݰX:wOu~\ڽ`^yl6KX4OƳ~?? ~ @л+?v_IFt]+oָ=~vGNXm %YzA%W8AOFK]:FAr4Qd b;9ͦdGI! 2=es,vZxqEL,O*ŝ>#npNih>ˌ8OYY4U>!cz5Y{5YP-!~> {BQ5SڸtJ$: _6Nm뀟C,z{zw@^Jb@M/G^?P_5DUE D;Ђt`N8: oxVH4!W/LGb>Z !> kx!g֬躎| ϯA 3es@:.:&{Y ~3)Ă۹pA(!gsH VH0yfE/D-x{0J8˰IоַC[?vnKƭ8_28,٧^BFt+ȔҷhQ]Zr_f&aH}3̸}y{O 祧pkivޙ=s±sAyN,B))5EՋd6{Y{@Bc< B%h -2,)4J^̕zJYx4O3@aC >W> vΏ9I /${+5m-hwP]E ̼UI&šʹhdf4,N32M>P5t5d{YYos6/_x jsN+$) {^ȰQcxO>jU"KmRo0$nezڈ7*ݜ!u &洋n+1΂m3\K fWŋ> ,hж;Am}bԣNKC9,}a.+m#Zf69jD@lAMTbx&i~@0kE{>ۀoW]7T?[VAgSieDۀ9{4ݗCq@}vKZ][R;-o>C@S鬕FYBEP0$؜,:3m@.%(r`h R[VpzT)@Fe*5g*CDY+AW@.8;՟'4W~ӇmG=[ǓuC2ϥ%br#Šfjj7dXxm;d&?C}QO!Z 6_>dy%16_Mox:TNNҦyͺ%Vhp'c(N7>o=gDKP#Ӎ l_/;sn:mR]|Ԧ·;p_5NYGP=Ni *=WU\a_}J$_[~(~'3gFx|)5N͡k*lpط|9,AR)HnhH3Zқg ?&moÙXޢ5UMTp.| Xi m ;JNҥ I@ x.`oO9J"A?U&}=\KVC&o}繝~=& WZ5[uJgJ3q ф"} n^|%@MK^DwHV^"‘Em^ecAIC~x!?X9 .M[A)ncX:dלE+o+x+O[;[f}cu*J3)[ ~k{4֘mEvFM31&o|%oO̡S?_z%FOgeRhA&دр)'/.SfOH_"J~OL'[K^K9g&/eȷ3䗌ko֟h+'CɬJpPRX?unDې1?[}qWL\j'gkH{09ʿVPl~"SLOo ='b+@9E#]+@~?3<<mgQ4\[g̊R1X]0wſs񜟯]6QXu]~YpdċnZ?~A?jJ53l5V>L>2 z TڊGm@x:Р֘Uh:fВn7=.@.UKbVxof3poFx*$fTHjw[!&'0 "<0%#ccd6dk?՞n{@FU+y>ŷvP Z?(=݁jm,|}l'Bca7|)Bdo6/2ʚ+%n&gh Nre6Nx)kTx`➻q:HHM ŐWS q Ć|%bB۬TݲU%5Fߑ,aPo%e=D^xNx~tUKȑor'x~8mK+Ej=lQࢨ?X0)̦cX6|?<&BnWH9TϘ_˙sOT-}.RUWCK{#d+'m6gxN#!e7yj}ƈX'Wi.Sl<^tC[ejyqA6>vv lQ+{Q-5"=uo ;,Vjv!J%6~ہzA9ߙd ܵ;!@'zyKe¥=hC k䰴jc]kvmiFY:=~wQ)w ODVbJ ^ZwV$hDVp {(8Rmct99͚t t_ɟZָo+uc_hKfͲDܲFhx*ΐ#%o+U|fˎY<d¶X*d>hwثP۪wa:MV^m\E?38ĘLv૙_Qqcx ߠC쩂P6u%զp) }bYa ga]o,g'ۀq#S#9[m^>s %'֯ na]| ,{3Oxᕔ[ac*|Wf˛;y~GMUomL 9v,\X2~R\mؖAMͰR#+ OSDV&H$gSO>@zM#r5^|ߚ=\v奖|XeTFdeT_0px;5p9 \sXS,vQI*sJ)ùjdo{$ 3UuIDk";83f+[=Z*J EG)#Z^5h]I'H[+!69sY;)#;"Pw[_;*d,} hImH(*ݨRXgazffj虱PI mok*m7OiDn+*pJ[jK[Ll5=әt"aFZx곂CMscR*EƐ  ,`Qs7͎.A /{p*(SkJ5rKt"I_LX&& +ٷjo.hr&a&'{%`_%=n|q &И!0ȇAӇhͼ҈\z)J&s 3IXd NL'8;~MОU) {^_{&Zxd"cȻ3=ۉI=EQl=(i+.Hok)]W?sr,v#%J*Ӟ#8+>8Mg,{ z?o.|"C;se]!z{yx졽[TJ$ٷRggʛy{,wش6~g} 觇?Y\n3~ڦ;뛪TWJFs.ժNMME oK<&薯d0XO$ ʼn] xەƆ馋 #Rɭ] jX ~8,t2 IjX0d$ h|s;`pn .ăăHJ{.ƳNMkLb4s Q wgOG?CؚNֵT=^]y:"(Eg%._`v(?Oqдۢ)ׂ)=dRBB"9ee˒GY;iVjY';!k`+;˞[FQ~$(VeҌ"3D"}O6{tby 2@d6L;!h};=A sgDWIfaڴ@9{6Aڄ|ݷ9A.J*sok O6=y򜒠A BZʕަ/]#yO'F |]tSJ`n 0r/%>d;]M3tʧ`\$hXJ;a+S] $59H{3# hޥ=g1Z}\=IAwA[ٓGP%zg!k aMSZ0Aj azO衆AweD0,~cR5 BhBm̡da]"ن 7tg'q^"!I66} =k7:xJj4l_aT:F]}*q[w*(=.S|=V_Wye`<YtI1%I K<mZ?|1yŹj~z}7 ID:9?q3.73xH~MU$PuȊ&)~v3IGZط[oWYe>z13IG\vy,l k뀿29Sm-{yY1~Ч`s& (N}aΊuО~:Gl /U2t]7hma "pP 6 :$EEt8]/Eum]fOgʓk|_, 4S\O7B S'dyr$K*I)sv lj#3yqh^{_M4FM'>˪THёrpsY^2Dn[R7g1U>K,6/ p\x  YFF*-&X -MFBgv|l=GǛ[x䖼BxzuV^'ە"7Dh7 Fyg3iϾ *tpyBZ䰷mfIe1+a4{tKf@ђow)G_A/|%ZQL:J-8RG[{Fq['ɜ(EX4eה;3$isbR +I86$ͪ^itS I ;Bߜ|\V.j,X5†xE畳 d<$,Pbn ͟`]/7 #Vr5I/UqNեFp[){z ON2 ?,EPzy?6-G>mEo Y4^]9̋1pk(ol0b V֨⻦߽pđKy}O}U`o{ y?I5QCjLW( q%b;6-{#4Y4ahs2ȶ>l!ftw+lV0q=}n}a.mO.,ix 畚O0 YvMf2|6 Yd\Ü^h'+((_ƊO ﯥԤ"H% X2Fȝqx"?UATA?Z霡t:h-%VjԂ=iY+"vbQ##3?*OP,r[o14M$2\`S\K ڼ/?4럇nd>AUЊjRZ!Zc LwTDl"2_ p^h MW.<7R7_8ekZ[GşnR +\ˊFO92S@ ՠBXav n诶U1UKDSV"þ0)ϝ0P?=4 Bw>Jx"BnwxViU Pݕػajn'x]Y\cyj$]P]#;'ZP ˲|Sa-¦ݹz-^Z+tZp|-%[Me +#ꄉ䛠@nwR{jO ϷuH<(Nޤ=A:2AZeLƳyWiߌF?5ۥM ViDwR GUxyaOFqmtѶpŏ o޽WJx&_ةJ{x9R7Ip:# sCgM*Qat2˛6䗴]LK\o>cGWw9,t)0q3\C8=:ǔj5*PT (K,܉ B7aY|($}vkS8ߓVQeZv9ƓEFw ?u}ƀ^{F2٘d96G-_JE:J ܹm uwHi-],Nkɢy-f< #9Y~-@n:誜Rb zt۾t,΂;|ėT˱t׀"uNP]rP=.EzeE(×%ZZ(EM^KZX C-:-еRh"hXI턢nG:4پ*hVG|bD"H#ـ^x.v3Bf^9K]P>Я>÷=:0X0t Ml;9 h.RRko3R5^5=_b{BmY:0GD3iҬNPwf ->|+֘70K}'twU:UN_%yϵUh.C؛l\3+q{iVBC#&] U?VTT*"Oo'EtnWEn t䒐Pz֧tKJ>TH0ݸa)t,&-5t%&˻qM ,L=d e?{_;WoU]k҄h F%֧+6j՞eD!~T0Ń-D1%h&\>^@t蔃f |`*R8Y7ypk4]s }ٽNvk}n8,-l8{ xsY˰ k$X*U8&s ET^dHSpY5y?_Ϥf%@?)YpA>_2cY&S=3cyc2>TTna!7'^3p&"@=z'J< ڷ7 t5<})ۉ]ubGî&eN ) 0m%cuV-(g>խ!ETU[Lr/# .*KqY i2d8L2F1h|v* = I S*TʀKV 1~jW:/9aL.r `?)!@g,)ČNDT`9CLDܫ6eLD(JbrUv,W"&50#*3!VVNCE7eynҥ&ش" HK -FjF$?U`H)ջh: eC kЃTJMHłJ-LHK4wRӎ!ڹTuOb mz/FHGcMk"n%Sj"xm6%&лc%}ꋠ{ psczmz pB=Sۯr{)\'Zy[O 0#cc"b3T+d^wAp~)n+GN3Gnh7]M<}O$<^t|E܏$5.ST.hDwOC\OޏLby2OZ7՜PV|>os%qtѰH|B?2d瀓L<熮 m7G%S%bT\ǁɐJ'_qKJsuBg<I'I믛x0y Do/sC:<'יH!{G)LU>Ţ &A.Su. Oq]s״ùpNGy|Fp1KMxfIϐa9uA'] 0s_!7U]SU)2YRgx+ʧL,ͳRLy6&m'sO`@̓~byRMhh¢GJX,N3_79TMh?sI-_z#Do D/~ ;2 @`^bDjGGf^l"oe$Lf erHH,$p++~MH\0O|gE`>' 9&]f!>cuipީSK}= 41yhvy( FZ9Tӫp_5ֆm(Y+LFjw^OjWj7H_.=&8 ̇y2eF H`Čެ8$g\mo{.u㸼|h"7$ont@BO$8W"UFcTIhs DGOkI(^yy+QXY񽏺wiO~-xFYO.~gB% +!Ӭh@u2gzjG:7'-:pFLst3% s܈T>瀑j=u}`*T4 :7\}<NvdY@-X~x70"ӷ M@ ^'qc6c޷g|v 5(i'T:I0qq}Tx{g~|#E~˾1{Xsl=a!̹?ؕ"|Q amIsZl=wt.\ 6 xza~&\I<Ş7p5p 8.µ(3sWK3̶NLD͆43!z{pjBC  .KZfxhn{;9"`EF2l%K mAnSֵWpZM֭YLRBO&|\P1Z6+cED{ go *'-bzȝr1MӉp4d`C붠dw|w,w,oҥrh?cR1.M@\ |gbjW~?;R&O7f[PgBT#3jo5YH^vT(/I]H*2*"4Dn'G},;wDdwN Eݗ{UG:Qi#inG&; S<$ %YM,"L-s8v͑x=OJZi(Dh_zČ|s8N!N0N%iP [35T˚*"\BqGP}XrH+oj>ujH=9%4F!T,-QB5="4UMqRĒ,;Ar?}|F->3B&]w"y|>k*hiQ'*؄:ZdDH<.e'Fg>6 N?(啭g! )!}1-+%( .s1NP U x~TPӗu6U#yTU>5nAjZnޫl]47%EU'Ihs)4ͅgRxT{-y&wAoۈMA>+f?s% ҷd6'~.o2f@_ˮзAo{\p?$RGHFr…xa]8P;ෑAZ||}#{2"MēTZN,Tߞ|"ɇ} %3.owF^iTQ#ISlСmjo '}1֭zMV,d;I/b9Sy:,Pk,F /*:SDA\{{>.;&tu'eS^ˮ~5,;T7B9>w7+u 蟖H'&)JBg{j 贞B&CA徾 r/>)nqnu\XnU Ĉ9OE y:w6a1e#v^KSX%y_ق*//D" >6鰀lPP#G#rtauw2܄V%ʵ/îh{=qX(߁"]/,e 3h͋Cq)q;Қ~&ձ"k{w<_jy62D$i1)ОmѦ{o>~(FNޟߗur]\$;ƫN. OĀFoQ-Q Pzݰ#3U4G٬ݝ*N6p/pi>uPaf$,/K9b7:5/44n7ti\k}8G,U%F~SZܢIPVC=6LI03.!VEv0׿R?Y=Q?EqM1/3b{+\9(W|#lbS֭Ƣu ~²>pڏgb-O-ƉblGgY7 hA\x3m>d[ ='F#D8Əmn ~Ӛ]Tf;9XQy2ay˟/㣷Ɏ@G1yT+"Hw-$WvfEyYwiv;M0W]K27>1×O׌[7 %|LlF#E@[([BeQyY9ųmTnOu+mi^=D^UQ# (DR<򷵶畣S;g]qՐkk~ف?A+\C_pjr+\w )b,Iu;6ZH_chFUx& #rPV0VHg o$'1`<$ߞ$\_eߣK 1b #:(:-p_꼕hFfD=#]* *$9LdP"]οJ J%ETQ#D2˂4«4CGRb Y{N=?TY ;b%"64x[D5G1(]-F@ O[T"wFS7[J-t wv6رz7*w5rNG&N$Y?աx>'@Yt[ |˃-PvK#; 2?(ں&WSs>KZյx* 6j`(?|2ĵcϿw mpBɊˀ!fn@]"1m.aʮDJ| 1nG~ȲVÞ2"#Kb ׬~ Ϭ&Y슊}|Xdɳ~=T)(=%ZnN7aOR@i#Kc  5HQ ~(MbOlM:Y3= {M *sד9)S"гQQT<cAn:z0l߃Q#76A9W!5ET;qrP}}ZaBɰmca&n ӄ(%nqђ+dtt`joF\Иv[AnO\`D\j_vy{W1+B?%#B[VjFT ⤬%2"iH8܌Hcߗ)aD/sjL!j ?^Y x~Kr㜕¢{{#]ǭ)$NPHc>T\4R|c )C,v[ ?ms *hk],)슖"lf,눀f n4 l5dk ăoQJ4kX~M- .ck,o Q#IF[]XD|PdA'7t \CpS eO{? ~]%'Sr '$ Fԛ\g,y~y&cu]}2[v ޸mз<}L3Y'P#@Wnw_ ;(g.׫Ǖs7WUr\' юX76Eh+\[Y[ra%Kê Hh"|Pܵ}Φx]>Ha-ϡq׷|%ŕZ=n,h>6R-Kϓi'LN0nI;DG}ZP`mK]ˢиBmQ<7VȖ2ig#xbX?t׿jd[]L9L^ZwJlQk ఖ/n t5\?xHҷmJ>6;1YxFcD5oT.<#ƫm8S:%GQ};3<ͷvr{S\۞oi+xʸ_UVlV;w2H!6 V DU ]3i WB ]} Yʘ_";gւ\n@%RHl&BO2#h`Ao3wŧQ0-*Aiq1e5+c=6"0iBTTm%ڃt:Z~Qڬnۢ!T@Gk gFV G7m D?ep3rBHcIYj \ WP})\TфlA-lgVqwTq+Fz.m QxhGm V'diVGlgYp'5M\ZwRmz`0?,Kex \VdžqV"Y F$]hCBCEagle-2.4/example/ref.bcf.csi000066400000000000000000000022411321437612200160340ustar00rootroot00000000000000BCsǿOʹ<](ͥhԨ(3eK:mLGUtE)"Q,EHPg{>~>>gۋZBpfA`Ῑ:,Z1 [MiGmhGڊm~gOӻQgE\}⽴#u""!}ô#N##⣴#ݪ߃vDCD;o/;ӎŴ#z#mŮ#Ib7 ;>y^\..{юWKhG9⓴#zub)e~7޹RC;7Ҏ蛿юiGZhG+ҎKkj|hG.ӎK.;^#˯ҎW5ю跶ӎGЎE=ő#3#zE8vD?1QM;'ю-Ў-/ы?юe#z׽Aq"8vD{RL;}ӜB;O%Nѯ8vDWON;j"Π+3iGY#l}l{q툾8vD툾8vD?T"ӎz/ЎM/Ҏ}iGŗhGf/ӎ  hGBG+#-⫴#zJqݡu@;w8*F;o8!.ϯQ/##zs7hGhGoҎ_^$E;+.я5ߦѷ(g%C;(K;7*WҎWю jtAsҎU#zeǴ#z*q:q#^QvD,~J;*nя?ѷWiGiG:/hGi-#zڵvDvDvDS[vD?~vD^_I;|5>vD\vDRvD?JM;?qvD^K;I'?&Vю7tӎ{ӎ%@;/ЎKiGGV3} ~pg}h>o k+bxvD/*Z"\.Uӎ֋hG)_VcP? mpDBCEagle-2.4/example/run_example.sh000066400000000000000000000011361321437612200167040ustar00rootroot00000000000000../eagle \ --bfile=EUR_test \ --geneticMapFile=USE_BIM \ --chrom=21 \ --outPrefix=phased \ --numThreads=4 \ 2>&1 | tee example.log ### run eagle without any parameters to list options ### typical options for phasing without a reference: # to import genetic map coordinates: --geneticMapFile=tables/genetic_map_hg##.txt.gz # to remove indivs or exclude SNPs: --remove, --exclude # to perform QC on missingness: --maxMissingPerIndiv, --maxMissingPerSnp # to select a region to phase: --bpStart, --bpEnd ### old: # to use Eagle1 algorithm: --v1 # to use Eagle1 fast mode: --v1fast Eagle-2.4/example/run_example_ref.sh000066400000000000000000000004521321437612200175400ustar00rootroot00000000000000echo 'If pulling from github, change --geneticMapFile to ../tables/genetic_map_hg19_example.txt.gz' echo ../eagle \ --vcfRef=ref.bcf \ --vcfTarget=target.vcf.gz \ --geneticMapFile=../tables/genetic_map_hg19_withX.txt.gz \ --outPrefix=target.phased \ 2>&1 | tee example_ref.log Eagle-2.4/example/run_example_vcf.sh000066400000000000000000000010251321437612200175370ustar00rootroot00000000000000../eagle \ --vcf=EUR_test.vcf.gz \ --geneticMapFile=../tables/genetic_map_hg19_withX.txt.gz \ --chrom=21 \ --outPrefix=phased \ --numThreads=4 \ 2>&1 | tee example_vcf.log ### run eagle without any parameters to list options ### typical options for phasing without a reference in VCF/BCF mode: # to import genetic map coordinates: --geneticMapFile=tables/genetic_map_hg##.txt.gz # to select a region to phase: --bpStart, --bpEnd ### old: # to use Eagle1 algorithm: --v1 # to use Eagle1 fast mode: --v1fast Eagle-2.4/example/target.phased.vcf.gz000066400000000000000000000510751321437612200177100ustar00rootroot00000000000000BCa5}[oGW3GCg=,{H%3O-db)RKR?DdUVGTf4-#Qꮨ勿͇?>W ߾~۳wïvon.>]\_= u=x~{{{胾:=nvv77>~`y=|qz~ůח@n旫7_,w۝ik?|OT/֥ot_K_eg.>./vxɛ뫻Hx>.=]-*W;(% [j\ Mquu_M`&i|u(rk*j]H\ `ƗO~0>Mܘ`a|\KX_''r@Mr>"PN{Oa}F0> PQGI"\IDC:]?`K@v|!O!PN1ѻX|(%2k/垠~lQe-I%AZ|KVn)d喢C7|2k  \[4̐mX!(ߢq@׉|ɇ|Z'Ϸh m\m 5v j3ydaA;1kUDoB\J|6x-cQ =@ |"9VU1X(g e |2V8VxЇR^6;EK[ , cfU6(oqxp6;E1Yi,CʃiM8ܢbE;~qXq8[#-c{Ԫ`oQO9vyѬ)ߢ{oQ=A4jO?)"ϡ/^+?t>'?Q/C36ET#\ZL1[Ü=]/Gyr񷓗>97W~WO˻]o[]śg/_}g?_OߝoO[>F7?)[Ɨ\oN^\]q\믻eO^1]Mt~y9ysbwVotw;w;ti|g<gQ` C[{70(X ^  7v`CQ@)Tpl`+Pn+WV+EA)|e7Un+WV+Wv_Y _ |er)|6Sm+Y-O+Wn_9r _ |r)|6So+W^+W~_yͧT)|7Wo+W^+W~_y _ | *(|6UP*lૠy[u _ | *(|6UP*n૨UWQ᫸Wq_E _ |8pK UWQ᫸Wq_EJ _ |J*)|6UR*m૤UWI᫴aؒbP*m૤UWI᫼Wy_e _ |*+|7UV*o૬UWY]mI^)|7UVlૢUWE᫲We_* _ |U*(|U6UQlૢeEEռѲfKzhM%Ii,ْ4ZlI6-hoܔֳћډmJ*YMie5)9f7$-i^%Y ZkAkg|T| _q{}7?{w?{v~vu{Y?ջK~rw7'>\N~=8]}׫ vAOnww#}Oݎʛw\ܶǒIS^n֧]=ҋg\|qkEV|ﮧ'pӇ^}!o}gY_o'_Noۯ>< |y?N^?tAV4<r{oTq  / ʷwH<dW?wO7>ӛO7uCxjpOn&w'.aY/@}?n\;tW}NwMv$8yw3]U9z;WkytI}W>^nߞߝdO[LyNOU^~C? in?={ὔ={= g=ʫP~"ӻnt*so'/|Ͼzi?17?g2ia_!<7Z#O~ǐ K]G0al,j8%)P3QdMJŞpQ }% Ⱦ=xpFF6eO830"DJyp&p0p40#ܟ y!A RIHI3 1bҐ| ?RPiMOs%[=?  @E;ⅎ 谅E3[>TT{ߡܨHJbg"kш@a]b eCRa ?15E}D{].8G8 oOj*|)tS=TR.OUCb9?"dD2ɀ)Mx/MS(7cp9$tLP @5 #dy:$Ɔ…nb@!0J"P8UJT7SBC7DIBY )`̖2YɵM&s]HX4{2Pr7H@''#@bA!NA4`otyva/hb~DM4[2MχaU%#zTZ󔅘tX%f5 6{_#9,ZφvEߩv[ B~ nrt<4KmQS ̩EtAQ| GE3Ux؈R{.F #ԓ;ywYD<FT #BG u;炯7\7<?HEa>66)Y1x ? 8[FBJ>j@9`0VBd;Bȭ-9)Yfseǐ9rMXLІ}D}Ԋ9 ($Í}pQk$`t[Rb1c' Q{Ga ^  H*7Gmu?=j)z76&5]#9*QE0ĪNfy P.)J ,= 3⦘ҁHjw!(Vv#wt2WAÜxAa;OwFo2 =th)*Go4"?@ "l1qm]eLF1"%R}…qOřcFDJ;En3VC2d. GO.qω%\$?ង:=]4}PM95}ؑcT v"B*LZcs-*!*!s!"ȈQU*r,L),i*%IҎzsdRphw]d PJz0R(Mehd(Γ&Qy$4S G48,\ a9c@C4}޹Xbpka0Ca(>S߬U| Y- ڂQ=[g"U+!Ps!d<_du0.2&Dlz)94fL;a 8"GNB\HbќR=l"iJc& dq%sΖ眽j%O"8rַI 42(?ߨ2J;6v )ya޹By,*|lGfU&ʡG%5C 5 j %oʠyb`퐣P /)yIB#.$㓀fUanT## *gt]NC`F  0sGPZQKne7WR44VQV6[V1v\Ǿ6F%Q ;=BYz2OIV2 u@Бd>gFG\+ty3A-{|r431h62ίax%SPx) CT)醘J*몫d,b\c!MyhkE#n]YWޡ7_ ewi 9jLGCxS$~R6$ubBPqق4N#6ϧqR/X8T*fwRWCFXV1;5HݡH`򎶈+`gG Xƪ_7,64cKXF uEYVE>h%f_ {1J]&@r}HgJMjiʳ$V<$'JZ OЩ3|PsQsq5!SGE,p'>w.*y$¼;Ԃ)5\ ۇt1-3dbaú迦H72G~Pon}q=?իw 꺤Lb6_yGV۴HRmY6_NtX60Ohf l^k0g,X?nsQNK.SֈqmgsP|-},4"4{FFmcs}VXHG$[$JlH(!sxtJQAKW#2UAJnK[quVp"jIT9U<h;x Թz RGJHǂ&e& R<Yd3ȳ7@]ո$M2O= P]5SpyJ^ I@_&x\LBA_^(64Rٓ}4p ɖ*V:;Lg|,=ꭍ< L*iEshL5 Wj{4plͽ)SP؅XjS>`8~ Nl/cuJYf`7XyALײ9mǑmJ͙J6ёhkX0 /EUtR/KKQ 1H26:B662@n=uҁ,ff!>Jb ,䨉8'XKhr bZ/&-\((EɄ¯ II堾CM7xm&쭊szy:s8en nC? [iIoDC5sf/ddZ(9WS6%X.Vc ٥f6Ō1O%^l.bE'D5S=2ACj 8dO8(*ʜ*SXIGP[e'12RL EU!'3:| JNVH jQR)&:ѐZ`q0Ef:9YHɷn؏Ks+ ^Ln5VŎ3:d^*SQk(ׂ4^(i](vkM q}>WqZlA,(GSU$ %Ani.,*{>,hmiB,H曲/닃Ldf*|R:EOK%bQzZ`nFFOژ1.uZ =xj(_1yߟ p wN|n;H'OX.lGTRB{J9G$8,ɀ!Ғ4u̅@1 BN*Ţ W]+>r'yOF9UdJG0|y8%GX\>L)P[J;LFALаzt49 g%Zdg|W\#2zSZo>NE;{[x Ir]v<DrcHM,y/,LM;~Ժ4S3ji2ݤMkVK"dew ZQKM3uB1 q+kb\}֞WmW}xo2Gfsx_2dU2^u+EUJ! tWH/,YCٖx+%c{0Pc}j6QP(tc^J>f5%~"_sq\R#|d+X)qC!;xc 8jA2Yl͔ ME1`7 bn0jvA2S*v :*ao@D@[a!f B>4S&rXcхKи =N%٪?ПK*C1^ 'JVPpB&l~WYNIaFzsאVyT(<20ͬ4ĊXG{ePOs3T 8ƚ 5 } < 1ryrg╌r!1+&I FNdJԜZCpϨ{Ђ88(2&WSw~y.8Fg~Q% 7?)!y6p@G))O߿Oإg > V]:Ή/ʧ=ފ`{#iEUF[7Lhgv0{"|1@|cݫ+>d qBE1 `Gk# mTY YCz4 CKMjqߥYcgPcÁ„|2_3"ҁ Y'lﭚY1^T}tPڸPX1}ܔ3@P8.xH';9sv 9(Ƚ f"1>WS drǢ'Bqq rZjǠX@vnaw^B3fyxiMUd$A2e?^==0]2 d80r"ҸY'>b<"BƓ;ijk&@S> 3TW? Kŕ6T(Q 1"q<"%(ɄhsȨ_rv٥Q!N(U0$-hZ1 u8̵ WFL|h7CDY]uJKޫ`LG6!'U*#y rH9aLseN*t4D /95f"h! BFMqWNUimUh½2Q C=+lT"l_ lWmUڐRs(׺q1hKw3WW no{M dT.t_~t(5DkP!qBjƒp蜫dL[Ӂ<*֠=OL$$ˍ!3UġLxfRy +۬L|(i>ЂO}Q\0ިʹ[j|ϣGs3q37g}9 B8zw$zZv<(3*) kM3ً0BFZ |ceGԩ?/p]J.!qPqj 6cpζV83Ȼi fu <_>k}mi|4[B ܊ @ENpbǷygwnyrELtbMW͔ו2BN8cmePLS=fQ mn XD(H6Nҍ7 !7D_frQEL<ܠ VS (> Y0#*,p&pAk:h@E=Oψu4g0mD^\TtZ8$jP;ؠy!uA'[ izƋ!! G) F^ J`6Tn23aT+پӒe n |}M陏J=:.-;ZxT--{r4IZ^ Pr'Cv4Dǣ6Kg%S-Qb Up|.BBuqP2RP@m4*hYȳR`zy@6|t vkc@/Js|rNx\M^n"4"QwN,ϸb_y-O=PHJ4t uXczo0-90FЪ(1 x-P~/ Y+kUCd/7[Kͦ|.Xϓ b[Œٻƈ]f+VvzJI8B5nyg:ihbi2hF5dff".=-'lp#䑌˪>'2<ӁML'Fv-R2s> ]B.Xan HG3XD ׻Ss`]IX-;!򬔭QK]x0':ڹ6ȃdβ:eU%/+;EK%jSyi _1,s侵bqR/|J|B*_NiK‹VYFGƏiݑni.E3rl,- b)DHhh8uXU5S3WHrYϸ!PIxM*Jz˲.OYWrnŴ)| M&¼Cݴ?pڊǦ2DN xj4дrpj#٘BsM sqc|'Az"fͲ*P'֮[N_o0!"SbO#}*x/ pi*kk}^r (^о#>S!)>+T4CAV &!MJdV1zǃ`t&8 LKOm)0>k9.9Dw&TudC 11xM~flD刃ȵ@Q PnFZYņ,@\IS%wq*MqXQAپ[O:-Vg( rPV /]tVꍈs5s4eJ⯲"n7p`U /,GV13VȠ)<,aqُi&aЖٍ>PӶb 1]+!2M7q2aafSh zYEMxӀ,e5I4A9v" u+l=ePW!WH:~_+>l2C]M@{R KKP5,Ѻ/{x `BIh.x_ЯgﻚlsT3ռPP:c@C#t`:6u^yXt}˞ZJj\(6Z8[LS)60`:2 Y'.)*'A6f_M]N—%}}uUsZS!]EFN7ipcTJ87RM*]xfXE\3 zzkըfm(1HÝNZb2ED]4PɵȢ )2r&ز xng@c.3a Z-#s FN3}t'Ew5:&*['-1n~._ۨw\YMnC"ac7a(m"Dd: <'yZyYfKHxG,1ՅUܐ,U+ 35v"ٱBop 3EwGhme}BBi2M60XLQ%l![y,hSrGEj f:xC@r#%t|vuYx +x.8žniuq wwSѓ^`z{l[X&4OT ؘ$r/rB V֣&$`L RkZh;߲y%A%=cFb' *HGhے܉Ψn*$~6'# 4&eֽ6pXM9☊9|e&2̈́ M}lɊ9g-qkD{[(۰na&GpO6ecG[ۚn#P `jhMP̿Qc9ㆬ/UD KŬ9kF`;FsXܙ%ijQO[?%6 wy BxLc|5/tLXɃ۲ ْˑ#oxqΨ}HӖi %#ᷚ!"Xrohmm10[ŷ"6QJ*lKuhV+PIe^WHӜD,_.E0;Pa}G4T+:,؇^?vp, Xgyٕ9ZYJ H7|BBppHQl]2IB \))i[p}P#/tx7,8(o}"ZCzږZO&)9n𨳜(p1v>SsKrEF[P6z6ru1eFf_QEiMCC%>@Z^u׽'Tj1J@(egJLiMNWpqho9lWaLa$#ȷtJt9Z ogjtNǑ e`YkGJ,,vCt|6詸w␊T}g>Q1S-cK|&vs4eyǰux&0U^έ t2y9|0zdSϋ `вMRJYSi5)nț4 mG-( M ʬOj+^/#2ⴞ|(ZѶRV>ʐ3KUS&Ч}UPĹ@am遈¬@=Bx5fs[D0z1zqvjGQyY>Ca5bO C&}LrB|AG?쌳NYԒ亮qfA{ >ʃls( yJWwp1>P]/Bw4nk~NEV ZiM)ı䤾-^$;3W] 6LMTGF3]_o] xIA-~x8by*$i6G> p X'l ct#L'h%^Y152J%R a# &u+~ |U/ֿxoכhA Mdծ+:pŴGBC]K%m^w~@$EQBc ǞUgdg^xdRUJԽO;\txǏ}_O?0?MF_s߾~_~H_R ԜDr#LXK/4/o_g3)S_3TgL?s&M.122 d,CdN ZT+ 2B HB!2DB$Sj͝>?C;(L_~m:>q|*#N5')+LJL*do& !-f[d)   \bfRc3Nȋ w0׮]%܅)Z|ԨȉET81oZD:T-R)߯BK!-8j喂@~ T3R|o叿^j0d8+B8 aU[V[.VH,& RԒvI+$q*Q j v&A(xvuɡVbEZau4CZkKQ%0}]GQ ojVYqEZНYNU1f9[5WFq *jszNf~9v\uȠ)T`Y.@:s$n1tFqwȝ]fTB'YMyRx8\8C5ܛ8 z1]N^ s"Eh[F+ 0ANjl mѐ-9K.CD` o5BVmW} HU*mgW89<,K-tUj?\hW{hQ` l|("Ag"+T[a;-Co ]4@VAu~^մ E5z- 5]q&\C̑iϦ|LW-`hM}1 ^/#$k~$CЅdJxcTooibqaXZ$B![) }P8#wJ4g#G6,q?h^ ?=!.cE>z͜V.`DFL&' =`q31XyU(!,;98Ex<8ȯUXKYT$vRNƁ8m$|a.Q"<,V.C1GP(>FʸGU[mHe+gyS .ͩv3 ,b!MG,kđe2(I8jA'b\P'؊̼B59!n&*j`x7*nRX ȝS mZ! ef8=3e3ۉUǼ)BgBjV&y|):C.mKOF=T%֎m]U<Ԟ?Wv۔ɲŧ})@G s"-SF9*^6p`eߊݵVՌĤkS篭QOu" JOo4^dseD qۖN84hckET:؉7'!()7X c8ڎI>M"ߜK7},ji7=CcKjkiPIqC(lc4D{*U2PJP g{(o0팚_5'u5#"4縑Ŋ.\wX9]8CW> %iP\Rq<(դ!8VgO5 θr漘Ő*z h uMX6E a%H.TZ _MVC$r+J$#ٸ 8wCSΛױfFƭN9XJM|mNw!LK/ib 髏~}8DDdJ]1h 4<*&#ob~}GtuE:ee?K7:_=io XZ#SArM,jpje]40CNZDBHO&aM 4W3~9&΁](Rʙ|' m6X}iѓ&EDۅ+Ⱥ@p2z[Rbj*LVrT ԫPsѺ/5!R&'٬%S]S4 PNP<: I6!ݩ ^|5׈* r 7C d*Uuky-`x!I(}Npm!yws!i~^/g$ W*9wU Tm5wpwMM^{=/PqtT?M 1Ҕ*l|(M s@~sva5\Gk6QY\GN?W"GHUx9^JZ7W J~>5h3xY04ˁ,.J#-MHxV6miu]wĆM{Sw+ ^9'n{t񰑟 ^$|1:Pgы+2MLWlPxN/gqXXћNF#"\m4ٓ)V% )g&iU++$2xDKdXD3%Fo-[WEՒZӖ c|N"N܁ pHY ꑀ(hqOUJiN|_R*l FC2j~CZY5Z:UߠDEP74T' <+d7N#z.&jlWoʓB)u+SBWi\Կvя-v|Q/gTAqΛJvQt=@e=­~^>;~.(Lp9XM!B\J#5r(F?]5@^i6G7f]4&$)kBXx̫TW 9AqNŽ)rHf!rRFZ:U]R>ޓA> %R}/)uv~D"S\_-`44:he5WԳNІ_~hLξ9z9Zi/b}G!Pr°}rzIuLTX:W cE1JYR|EB z%a%&Sk+cdLTS>_Odګwe~'Fg9+taKdrq]>Fw]9aAmGw>9%7KV\ R`7؀n@_H$[3j=sxT98u)`>vt`6 pJs|'oP8)N(x90Is%.j H2Z2lȦ ^0aVwWgtGRZmCF#A=zr82ݗu_!Q-2*7A[VNC+y3qXvlDa.`crc`(>h$C$ H'h-yE ȅ&~O|6k\F<1չ%XmB{#;`+NL}x(IL+Ұ̊| ƌ~#7#~Zo`}Ӏ׬Z67tqr*ڛQԯ)r>G '>x!=/?ru6l Ah'KOݩ_|t\3EP Wa2lO{{.y$}M~n쉜nu\FK*ltY#x ZjU+kGj`qH¥/MYqnFɢft^-r@GiS?MӾC (Rn<6 VߡG?u'"&87~pφp[U(ǂTq33BA'8Gj+JEv E! 9/棷m+hk<0 6eyChZW=[(PSFÞ˝RCUl'#6TaC Ucsm5 q+7^3ӏg V4q yGƬA~qB\fvs̢Sr A[)kC6D_"S|gtLзU#9&:Y{*i,GR0@!,AKE5b6/ _\' TJ=?<$_^ێ)m!`|56@{llkt v۶튛Y*ư$`*0 kHQ~4T(szi`mwCR>;T EĉpԢ{rHc2i..Fid/ f QRI;dЛ5z.f!wj;i4m [No[>j_ju`B(m!߶%{S#{!o:jhԼqpm8]WA_Pkm SGmZpT6!a0;Mzd4q,輌-+ϲo n|ٲѓ~HV?uuӒr5+y@#6 -P2hN*tGY׷dpnD\!zb!j9MV~["L?&\Oj{'5֍AQlEhFVd)56"F3Q\eQwliOW$\$@ fb `ZV>=1w#?:2גe> bs\b "Ḋ8Kp=ZH0oT8ºcl/.Gv TD'KL0^f4 DŽ52@Oxp2k܁n(rMH.rQ>-Z./yڴw)xCYml#IjݥS8\w3ǟR}Jђ!0$[ q$xYL$5i<;:s;-$ D _@s:GpJ/;ږL:L]Vr s`U/4<7sz=NeX1 6e}+6_ż _l%A;U9Fׄ gϝoH,+ %dD'wt=tǵFc!mMX Z¬v_zEROmvҡ ˒kP)gYD[( (>,$)A=8`_@t6"M=6|wpax@^U8j с`}pmB.<5=-(Wz1bfSֹxʑi茫7{k'W,x_1u 9V51+_VmFXV}tNb!GfA2 6S0F5ٷ*{=J앐wӠ%/>^3ڤ ͨmAl^QO{3$~1%.DL|杭͵ zɹ=P*.ӄuo2?GRP۫`eޏ5H>Nu.6ziOz<´F7o|z[j`M" 2ۋg SW:xX Oj߽,#K2ˊoz.7D-Lú~A2jSwO")=yYzpScujk/:l/?k5@=SܦAY?dz3-0$ݡfKy,B997hs'wm{0̝vٯh=h :v_6(fC? 6Y·P$GazzwD!>ϫ]EMĨPXΕ6L ҇_ 5ȿ 2Emz(ͥ|61?蔷+) i鯖]D1`A͉+r>sԹζW柞_)LӈYݝh- CrL*[0͔oކnPB̻ m?X\2q覟g7k#͸5{2WL˷'Rh8>8GѸe=Omf27|{.n 2̽ÅΣƮ4jFWRO&D3g4=s7gxxD=K z}$ICo)lWM1PjB|[5Ms BCEagle-2.4/example/target.vcf.gz000066400000000000000000000505431321437612200164440ustar00rootroot00000000000000BC4}moGrgWveGFɠe&B$/ߪ9U]M%Μ35]/Oﮮ/ܾoyۋ~/^}OgxNj_x}O`fw^>}w/}b1^~yy'o|/͵qWo/ow?׾.zow.xot_K_eg>^^_}K|i|K/?zS`]^ Ζ]Wے -fwW6xHqwu_MdMLP1}t#r5f| nǧݿC;>N\6\9O\r˕5rߣi1.gdG-l(#M٤s|-K? O4:3I`|>[(c|J,c []Q}(Ul)ZT6ƚ T6(oqxpߢۂƬ4x4&tz{`n SnQMA]lޢ8j8vzH˘av(z.-;NߘWO͚-'QD1"b^=:mEgx'cR4J;L$%׻K&cL'0/˟Qg|է?_ޞ}sۏ]ݽ/]__^_O~뫷݅/^_Ň[ /_zn^^x~v~yOo//nϾy͇_n.϶[vy{+381]\_}yf|iҝ7t;w;q|gz43?|gY(|0BV&ʽdNd^dnd~ e,eLele `@+QP __W0WL(|| __W0WL(|&)|&)|&io)|&)|&)|&)|&)|&)|&)|'+|'+|'+|'k>ՌS+++++UૠUૠUૠUૠUૠy3WaWaWaWaWqWqWqWqWqWq _ _ _ _ J _ J _ J _ J _ J _ J _ JZa&ŠU૤U૤U૬U૬U૬U૬U૬U૬U૬U૬fW _ _ * _ * _ * _ * _ * _ * _ * _ * _ *ZVt&-EgFnf&Ii,IS-OifF6tSh==Nl*fj^y*9fj~x*ɫeyLjy^;ZΤk~;_>7S/H_֛_/wxv7,wp>zϮ>3w7gW?^<Ňwx׵3-R}vwyD~{X{aS%7k%?gOԧ=wg|u}ي,OvIo٫?~7//x濾:{Q/wvgݧonۯ>>+|y?_˗.zw/gKŝ(_"&>_/6yU|_?`3}nFo.M^_ò^{|vӇp?7^%ws}sqɢ'.ow|Wn/>zy/__qx&%]]x}y'N6_4sgo>~[ ʼ?HyQr= zןy@qt~>!U(((=9Nb}yv~w4k'E_&Oz|~yNCZU>˦꿜 ~H]rȿ\@ nGo& ID췋VT( g^ w}O/_>bjőo$svqvG OWZ_%?}wss}깷?.ltC2/@ad8M9cd8G{`3JD1\G g0c*>0 #;g!oD1 |.)x&)3$gaC .A_d|;"@zK7N~= )8ŁP7: gQ}Rq/7*R(|%ESb4"PlDK $.SSMdzL.+(ޞT(R:v{\NPb2qe"d)M#DFQ@ͅ=F*[@3Ux@D؋sqل#,]<ɩtywYD<FT #BG>98ι+Ǎ*:/eK@a>a!6)Y1x ? 8[Y"w;̅|*WՈsB0vB[a, 2-9)Yfse7k䚐:L#á | 's=1֣` 7SyGImcK,nDyX0F2בW6E&cäq$'B=X9?A,P ŻZaK!X+)3 ̈bJv IӑQ`#wtXdeR#2 9[@:vW7?|)ۖ.(xFӺ;rJ"2ZváɺwʘbDJsyT3ZJ;EnVC2d.a \ C.K(H~ ._ɰVS?Flv؄]D S"6{Xav\ip5ȈQU*rD4ɎciG92Xpbdw]KdQJz0h)htGRx dIfH!-}v*51T]•:9P/f3,T}:ASMGampݳ`X & zugc0x |2֓Hja(`z<[_] Ʉ{!)-{Dty6!f.RИg:r3wj0(qDT 1NќR=l"iJc&K@QJ ss^xXN'9q"%[/7zMFCwdw65#cЭG-5C 5 H^sQ kߛ2ټV100(&KJ|C-35$yœ!].'7sWbÃSFš#kP=z,@Z\Yhh@U\ǡ6F%Q7y,a=@Ug$a+DŽy| H 3#{.:<ۙ0>x r3J31l:$e_J$l᥀lMI7Th%V_ {1J]'Hr}HgJMjiʳ%V<$'JZ OЩ3|PsQsq5!SGE,p'>;DG<dawFDRj0GEm CD☉h=X/):fdָg<swax>^=)P%e; ,& Jʲtr3AJl`ZY+~ns⴬ΖR*?F{{Okudcy32jKW` (kzeKĆ4>27G'Dnzu!Hl %7Vo#}n@D?*G[H:T/ZAh{]iS4u$D!T0/kV* M2Pe5.6<ѧ97$S3 2eKZqZw)$b 㔺N&|)Q&le[fn;bM0'SYT= E=DOE@g)ICY|S9} aKR<ل.3az1 : uɡ]ʪls>Qx4W3ITV]ҷTJDWvjXndIjF*";dh 1'C5oSq\Ƶ xLjQT%'¢ZT}ɵN&}4lp?E^ذgoݢk+ Sy/&7y߉L8:m@RTtFiJIꅒֵnA> dseEޟ bAyzD#C*XP}~64Q|=|<Ƭ8[M=y(YS G{H)=|@xZ2,Ӳu32~2\d % z*UDAYHd&s⫦cktUǧ},jGlTRB{9GN@Bd!Ғ4u̅c0TMW|<.>LL)OEdQ%5-4/oNY/5*AkDrZ{k }^N#=JFέoY?WxU[FQor[fsxZ0u[gE?rU+WQ o~%i-~l5C R99G_N`nVh I܏^@8D':DzFtT?PA{o98.sR#eh X)qC!;x-S 8jA~6YfJ"0r@Ot175 ;qФAԃJ'l7\Gz9썕*PVh)#مF˕bmȏ}FצXPo( Eu*V5{UM~վpBdZ21d.+r:0H p65;ϣbX+Z{>P&SҐXx i,/BBp_)~ ky88Qje84C (l!Kb`DDͩ5 hڋ_+h-HMmS`5E w/ѵݨhӄs[lrq#0n^8 *++IJh!5Gс 1"`x)ŇsS*~ Tp}NƆTP+W,L|4+z0~ PQ0[Ym@p>:n7B)ֱȱ+A9ehZG;)z6#^] c]:BE1 `Gh6BxJ,`ͬx!Cnt"'$gd7gS5c*aS AigƅbŊ5oxD=YlkxG]Ådavb[ؠj6+#s%(;2M 9++w*Zy") v .+(a)Vvw.= >HHpƬ94M e)ߚ[8HF2$;^Zá}TL: ~nha)c@#!-0VvW8:CSP<^xrG4 RmiʧaWcyjg^*Bn8&v, ),FIL&5*~ 9 3.(@҂^a@26ȹV#8ym'-&`8(= bNiuT.tdka|"Pr 9b-V+ڑC2a]dOV4'Y֤ IX~IK4kBSm&Z34H62h+6J;UU ʘG1 XaҾ<&fBPdvuoԜ:ʵoi@ .Y`Ə;ꙫdno{M CR} ѡ7B K~ffѢs2m1:Pg_ уaDMҺx{* L8S@5f 1loJs|rNx\M^NQrTӨ g\؎ } wɑKG[<brh4L[ggwy/ʈN-^}G 3>l'uJf1Jԗ3<!]*FO h64޶6E#GKv"` ٩K}X/= "|>r;Ad#v1'C(\ RBw[yX0q|V}RN hVuXaQD@so٠,JfQVXT/!!:D3\7'E.ΛھTՒޒ ;epȎ2"l|DԲ?-)اhoq""/T-Q$\$ "{H顃^#ƒK͖gĂ+mՍK,hmbQZ1{:Xy.e@ elR8Ycg#`@)-žgqHU]؃y*2a/j`I f;:=Gdbyъ:I/=CQLȁް$1,5kh A?yي9(DA6!}(:G8!ICr~n yzitXC܍%? 5}aܸÁ}w /_WXn[!j ӳ9e?L.-/SHC Xv`W@N6DtfG 4E@ Ʉ}"afSh zꢦqRdi@岚$l9u" u+l=ePW!WH:P+|d>,ٖJ}XڊL_e1,"Sk=eʠ ^gB^`s2%E$&l#AWS 좉JE,H3-мϾjd\}GpONE膕Z'4nOjG$p;::Y;hR'/НH}Hd6 P<ܮd NZS>~.[QhQάYMnc"qSa(lv"2]JUqg,3bdo1uO4!S]X "PLIPof(ƪxc#oX)<,Cw} 9bnx6A`qK>PO?G#k'Ӻ% cD;*RkM 01$jKQsl6D.9㭫,!X1T< b_k](T$Nm ˄85J`Br썍O"'"W!޽)heȯE ZV3ڎƷ-3<$@~3~(fqm3ɝ6Br1'j3qA=@cRV mݔC? Ȟ7_)[&A?Lo&i eHV9k[#ۊF݆u 69{UηHc#GQ-T~Vyz|uE^7+ޠhmmz_ [x[$%P:hFi2X$iNL(Gmo!;Z9e_d>`Q:EdWDk ]1Q 4Tp'+$ lϓK=HPVcA]c`(ueN2ha${dc]̆?lBI\l|M!Fq7X7~(<>ZZ>{ŋp Ak#@t+צ֩LٰCp&3E*sV, v]cԼ(u,>ppH( Qg|$b |4F8=;V6&H)p  NґV"ZCI=TmK(jd%bmx$><ꀳ-J-|gb4!7Xd4De?ѳ!p(30232 -@Lkr(bl/'򪛽< WPB-[8ըUbMkrRf7F{w[ChFuv8Fb<ˆ|KD5SM"gat9DU.3e7 hm)AYml8S:!u'A|ɠ4Qb^S8!DrȮug5Iv+6# GLuǖL5$v((yL07C *("Z-V람&tmTU(2$LCcI5 yɛv2&PE oۖ(ռAιo9g_T|[.`"^[,1־*&W:qfA{aOA~5pͫ;8p.;' 5G9!tu|VGSAJ8֜ԇE3s۵p$=ej:2q rxR3H mv) AON9Zf< pr mLV[x X3 a8E+.K33sKG7$LHWtA^ 8|^om7WZeӖ:8P&yQ@]=Xs_o9o_%+}=~/%s?!~/?-3|_ /o_3ȾϒR~FI_32~y Dr :J#T;f6˯_ ǧڏZTxy|L W\q8>'ǧZǟ4 /xP:i_QCY%}p~o ePH&teyI 5Ps wU|{rR͐*(.7N1P֗AN N-E,9~hr0HUu~5К4H!J@~ L3nR|o^JU00ׂdc!KFp+Kl:ycFF@$~픢dnڥ5t-Rq)@%W!B DuaVEZ2Fm:V\KQ4p}]G6 _U) Vpb&u 0R-`1SLQ sw*(.!L5!\ET*!۱RC;Hd2fLw)8u䆜2#{A⧻4J0GLu ?q݅l*orԜa!E,K1LãbCߕpgC~p6˨٠6qVjYxz@uRP"$1?eQ9{*N!Z/k<ʃJþE~/y;_QSJZq1檤GsB(M v"9"h|\zsCf~3>eMyq/l!DU?-pm*eᢪv]-- -] &K!!ʴGS{nfyœ VWoA vS JaӇ')XEu{.%w$hޒߢ7td>cB,rG8*Yi$DLwf)B6` $a&Eт/1,fqK˾F9zwN1{',JYص8R"F/K1gp3sEvf5tX+TࠥWѢ ֲXe쮃-=V|I 7IbyR*l  o-Q$ic]#KbͺK`kxpb8 h8=?vP>dJdcJT_Pʏqa wB=Ĭ) }P`_eIG" {iVAuh^I?#!*܂@h^2kX.փW!̛B@iz`Su!rpgH Ve "zT$@vR(Ɓ8||I8,U)1"< LV]1 F01Jbܣ-֥\23l)T ۙ 0@sONu1Ʀi9boBS1B yl|&P4 ↛l6Ɨ?~]QE; `p[&ڱf`CA$գNH vbąYwձQgB LSc\ e !U6ե;cY#cUȮa[s׋w4?&:}yliw„h\je*kwt!k2"Q#2P41f ]QmUܹqsvkԧ2RCyOdJ/2~v92wD ۖNQe:Eoʍ؁7!@򁇽7T Aa3̅1AMuG椘&o\5\mn*XYp{TҺaHvpJtPZF"D32ch*%vyQ ZkP,Vw0jy?ǻ?9NpiC ẩŪ AqL2ҮiɒrSG& i#3`8) M-qU G0.G5LD$.aX6b*Jz4ҏaYKOLN6<>UgJecSnCI{,ͱ@ى|b793nsʉb4T*$P5&xnw.E1M|q}]0H_b0+9H$"M?l=]lt?Kiq#ShyRjEq1\nQ/i_k$m=6oʿ=#"p$M]=P 07ʻhbaZ-DN1Ȍ]N&aN tf|sLvY{#gu]mRbEKO6,R?tZH"xs-hva,!P;"]oKʱtPY Mɋl 2UP, <ꍮ~7nJC{O86LExkDDHl"?31 "- =!W<]+,K2cF+[](͉Ӻׁ͂\@2F9N re9H}7aSh\V#jnl'eۆ %rAOc#GM n --3aFяj-5l2s$d~J>~JRٹf\gi`Bh \;srYSSKYbnu3Nۢ r3NB.[p(;h0ԻVzu `Gm!rFRF[pWHZ+k/y󦻐S4%#Ą3oK[njq%MCi -2en2?b@Le'ћ6}m,n +C֣W,/ {X-U%ۙu|DXR=(67WK Y]WK ۈsz㧏XtUEZS7]/| H.^C<duǤ!R{80gE&dLp3Ɗ؂;`Z9t؉3l"{ɲhӷ(1;7 "%fX"ɞj5EX88堌lSd9jtD2(c"ENLUzRKڴl>AzpMvZQ4`g' 1ºU*b^ɇ >#"9[sK5@P!`)QJlPXDE07,4'ZxwGo";";;F] nzV߯ʓA)s3SBWi\Ϳvc1-6|s,gPAqiqQt=@γe=­}^ 1f?o &E!ºvgP0~0f$* ziRԧ꘵v4厷2EbWg^Cǀ>{rhOf|rRFR:]R瘞Q!u %Rrc/)svqE~Ӻп#P X\ fjJrgM9T5C?W?4`57不v9r#PjPq~˰}c^p20$2T:yza,-ZHh`[/4 RthM[bY?Nd|7-|6k7r$Fo+gwp0ҥl N.PhD1j[]zζ5ce@dhkW ,ye}!nu̩hrPqv-S ^,XM*5ΕeK'W\])F,ÀJTSVfЬmpK-\ }ro"3DBs,k^CAS H ͵^aY7K}!E vp/UBl|b<,Fi$i#O z-`dy+hG$H8|gͺW'~= p/G me! ^q!#hۆO-+ iS \eq*]ɛ:c#sn{F/,?z2lD>bt.ڼբ~ոAN>zrGW?x!Ӝ[v @}ԤDV9K\@Iݔ;.4Őp/jy>#%Ud\e 0 i fxi!>7tqJʋ7_MSm+d9@|XwC8 o[0)G6Gɵ{kuB;y^,eEw׏ac<Zd$(=5 eޖK|U󾋆{Vw7/&ăCU}[ltY#F yZjnU+oG{jVȥJn|S@8'\!a|NxuȔZa~&r$Thn}"ö"YCSq>!|x gRn&UZ:&;F|3 VHqhTlTѰrgě`hbᄲc$7㶐._;A ScBTY5 qk+73{@hx,GʮYA3cF8 Qx} .F>՗i麅гA)O[~3Q:BG,66۬=4iVh]i1-` zbR =nz8.l (XʹŎ۞{—@snح2FG'fU| un߶]p3K%lt-  y&^}%~?kszkw" OC*$^ߝ~v"@kbhт39LfSbνc;fhiD/:Fvbwk?hH.KmZ{HJ[j3cBȵn!߷%RdGo:jVխG86FΫ5m(Ek}*!CGuXp< #HZmܜnu> ^%gֳlۂ8߶lz$Rs,wl$;\%| ztcTZL%K4X ks,g#  X^p*0n0DŽKIux7JƲѯ.j+2z3)øL)lqՑᢓ2=!>Ӟ3[$$@ڳfb `XV><1v#:2ל|빹)E~g.p=ZH0t*lXrA 7=GրJD4 vX@ e|Lz#CFWfzN'<l]_ eQI䂳oSNy&W KYC"dg#:IT.-rᆛF?<}XpAQN/29,L.Ϗ.N{KF?:im3+X@>\\TVߖW@v&]: ͟*aw 0Tdt 1K=I'qO9gVsB]_Ÿ ׬ZmE;U9Fׄ gﳛN6$N-%ڬN2ŏ4m7ck e۵qmﵗRcmк, \|< ϲ$:yEMTFa%I]0 ZtH'I ȴAi!WWد>pLy?Jk΁.G.@>o]IpmBxXqPoVzōM7/*Gzۦ1?'rl$,N0XHWRNA,G٪E?y٪XUo݅Ciq#1O e:ȻQMm"q :CمX=|ơٷr*O|l% ?q*e|-=z&!.A,g?ZԮ.Oy*o~hRޞa WBֹ-A%ϫ}$o -6F@;Iex̨oA쬬.XzfI.cJq]<^t*,:[ݓ.m-s{]\# 9ߊy|:/8帥ķW{C0=5I|Z5mr;ґma.o|z,H]\m&cVNIų CW:DX j:߽-𣏕#K2oz.7D- Æ~A:CO"y]oB+k[_GYqXUCS\QS0%uI19n9mo C5_ (}[ɹN?ٽk؃qf_fw@_w_,,}oތbVñ%!|ICqǮ]mFCKsWR^B:Wj037tIپeqEuQ./\Ԧg\zGahNAgAd9}`y!9ݼK%#8"36xٮ f5]tµj9H#4ȸս%c |Btt!1.m}|6txЗCřIF7< 8/^mƭ%q&`z5|4nZϓ:(Dٴ ߑ )$̌ᓹ̖;\|ؕzJkIb3 \č0x><{z'Bl)lW 1PjB|BCEagle-2.4/example/target.vcf.gz.tbi000066400000000000000000000023731321437612200172170ustar00rootroot00000000000000BCkLdd:\Q[+W-ېLq΂AB6JKxJ3R(,530i岴,,9悽ֻ՟ly3;w]QQH$K\MӁ+.,*.VHWGEvIN ,vyy..Ͼ e ˣwzC X.np & ,fIDzk3q{vLAvC屹`)"|]b$8]~..V>.]NbEdvyXp .o) 'Sr>rp p& pc v;5'^goXaցOՃs1U`gy|=3`ꛛ:Jvy&vy+V$ )9=om:ǯ7oc;u^ˋO[=ow#?cw{ ?gL˷{/G2{' d'fݲe_ s6c<]G/dߟb)sx4>x霡B~.` bG=?׍._x]~M x]0WvYNOgMffO a/]O7K``````````````````````````````Gmmf+jO[fm}}}dm1 o}_F7 od}W߰F71 oD}OpFӷmo'}G6vѷ=mo}?v¬o}>7vηr󭛶li͚6iMMo|S1߄i/vv˷Y KV1?2BCEagle-2.4/src/000077500000000000000000000000001321437612200131645ustar00rootroot00000000000000Eagle-2.4/src/COPYING000066400000000000000000001045141321437612200142240ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . Eagle-2.4/src/DipTreePBWT.cpp000066400000000000000000000577731321437612200157440ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include #include #include #include #include "HapHedge.hpp" #include "NumericUtils.hpp" #include "Timer.hpp" #include "DipTreePBWT.hpp" namespace EAGLE { using std::vector; using std::cout; using std::endl; const int TO_UNKNOWN = -2, TO_NONE = -1; // TO_NONE used in HapPathSplit and HapPrefix // struct HapPathSplit HapPathSplit::HapPathSplit(void) {}; HapPathSplit::HapPathSplit(int _t) : t(_t), relProbLastStop(1), hapPrefixInd(0) { hapPrefixTo[0] = hapPrefixTo[1] = TO_UNKNOWN; }; HapPathSplit::HapPathSplit(int _t, float relProb, int ind) : t(_t), relProbLastStop(relProb), hapPrefixInd(ind) { hapPrefixTo[0] = hapPrefixTo[1] = TO_UNKNOWN; }; // struct HapPath HapPath::HapPath(void) {}; // struct HapPrefix HapPrefix::HapPrefix(void) {}; HapPrefix::HapPrefix(const HapTreeState &_state) { state = _state; //to[0] = to[1] = TO_UNKNOWN; }; // class HapWaves HapWaves::HapWaves(const HapHedgeErr &_hapHedge, const vector &_cMcoords, double _cMexpect, int _histLength, int _beamWidth, float _logPerr, int _tCur) : rng(123), rand01(rng, boost::uniform_01<>()), hapHedge(_hapHedge), cMcoords(_cMcoords), cMexpect(_cMexpect), histLength(_histLength), beamWidth(_beamWidth), pErr(expf(_logPerr)), maxHapPaths(2*beamWidth), maxHapPrefixes(maxHapPaths*histLength*2+1), tCur(_tCur) { curMod = tCur % HAPWAVES_HIST; nextMod = (tCur+1) % HAPWAVES_HIST; for (int p = 0; p < HAPWAVES_HIST; p++) { hapPathSizes[p] = 0; hapPaths[p] = new HapPath[maxHapPaths]; for (int i = 0; i < maxHapPaths; i++) hapPaths[p][i].splitList = new HapPathSplit[histLength]; hapPrefixes[p] = new HapPrefix[maxHapPrefixes]; } // add root of 0th HapTree as cur HapPath hapPaths[curMod][0].cumLogP = 0; hapPaths[curMod][0].splitListLength = 1; hapPaths[curMod][0].splitList[0] = HapPathSplit(tCur); hapPaths[curMod][0].to[0] = hapPaths[0][0].to[1] = TO_UNKNOWN; hapPathSizes[curMod] = 1; hapPrefixes[curMod][0] = HapPrefix(hapHedge.getHapTreeMulti(tCur).getRootState()); hapPrefixSizes[curMod] = 1; } HapWaves::~HapWaves(void) { for (int p = 0; p < HAPWAVES_HIST; p++) { for (int i = 0; i < maxHapPaths; i++) delete[] hapPaths[p][i].splitList; delete[] hapPaths[p]; delete[] hapPrefixes[p]; } } inline double sq(double x) { return x*x; } // use cMcoords and cMexpect (cMexpect>0 => coalescent; cMexpect<0 => Li-Stephens) float HapWaves::recombP(int tCur, int tSplit) const { double p = 0; if (cMexpect > 0) { // coalescent IBD length distribution with mean a = cMexpect double a = cMexpect; double term1 = 1 / sq(1 + (cMcoords[tCur]-cMcoords[tSplit])/a); double term2 = tCur+1 == (int) cMcoords.size() ? 0 : 1 / sq(1 + (cMcoords[tCur+1]-cMcoords[tSplit])/a); p = term1 - term2; } else { // Li-Stephens IBD length distribution with mean a = -cMexpect double a = -cMexpect; double term1 = exp(-(cMcoords[tCur]-cMcoords[tSplit])/a); double term2 = tCur+1 == (int) cMcoords.size() ? 0 : exp(-(cMcoords[tCur+1]-cMcoords[tSplit])/a); p = term1 - term2; } const double minRecombP = 0.000001, maxRecombP = 1.0;//pErr; return std::max(std::min(p, maxRecombP), minRecombP); } // populate hapPrefixes[nextMod] // populate toCumLogP[] in hapPaths[curMod] (but don't populate hapPaths[nextMod]) void HapWaves::computeAllExtensions(const vector &nextPossibleBits) { // add root of next (= new cur) HapTree as beginning of HapPrefix list if (tCur+1 < (int) cMcoords.size()) { hapPrefixes[nextMod][0] = HapPrefix(hapHedge.getHapTreeMulti(tCur+1).getRootState()); hapPrefixSizes[nextMod] = 1; } float mult = hapHedge.getHapTreeMulti(tCur).getInvNhaps(); // iterate over paths for (int i = 0; i < hapPathSizes[curMod]; i++) { float relProbStopNext[2] = {0, 0}; // iterate over splits for (int j = 0; j < hapPaths[curMod][i].splitListLength; j++) { HapPathSplit &split = hapPaths[curMod][i].splitList[j]; // iterate over next possible bits for (int b = 0; b < 2; b++) { if (!((nextPossibleBits[i]>>b)&1)) continue; HapPrefix &hapPrefix = hapPrefixes[curMod][split.hapPrefixInd]; // if extension of hap prefix hasn't been attempted, attempt to perform extension if (split.hapPrefixTo[b] == TO_UNKNOWN) { split.hapPrefixTo[b] = TO_NONE; // default: can't extend (overwrite if path found) hapPrefix.toHetOnlyProb[b] = 0; // try to extend hap prefix: // fill in split.hapPrefixTo[b], hapPrefixes[curMod][split.hapPrefixInd].to*[b] const HapTreeMulti &hapTree = hapHedge.getHapTreeMulti(split.t); HapTreeState state = hapPrefix.state; if (hapTree.next(2*tCur, state, b)) { // can extend to match at het hapPrefix.toHetOnlyProb[b] += mult * state.count; if (hapTree.next(2*tCur+1, state, 0)) { // no err in inter-het region // create and link new HapPrefix node in hapPrefixes[nextMod]; link split.hapPrefixTo[b] = hapPrefixSizes[nextMod]++; hapPrefixes[nextMod][split.hapPrefixTo[b]].state = state; } } } relProbStopNext[b] += split.relProbLastStop * hapPrefix.toHetOnlyProb[b] * recombP(tCur, split.t); } } for (int b = 0; b < 2; b++) { if (!((nextPossibleBits[i]>>b)&1)) continue; float relLogP = -1000; if (relProbStopNext[b] != 0) relLogP = logf(relProbStopNext[b]); hapPaths[curMod][i].toCumLogP[b] = hapPaths[curMod][i].cumLogP + relLogP;// + recombLogPs[tCur]; } } } float HapWaves::getToCumLogProb(int ind, int nextBit) const { return hapPaths[curMod][ind].toCumLogP[nextBit]; } // look up/create extension of hapPaths[curMod][ind] in hapPaths[nextMod] // return index in hapPaths[nextMod] int HapWaves::extendPath(int ind, int nextBit) { HapPath &curHapPath = hapPaths[curMod][ind]; if (curHapPath.to[nextBit] == TO_UNKNOWN) { int nextInd = hapPathSizes[nextMod]++; assert(hapPathSizes[nextMod]<=maxHapPaths); curHapPath.to[nextBit] = nextInd; HapPath &nextHapPath = hapPaths[nextMod][nextInd]; nextHapPath.cumLogP = curHapPath.toCumLogP[nextBit]; float calibP = expf(curHapPath.cumLogP - nextHapPath.cumLogP); int &nSplit = nextHapPath.splitListLength; nSplit = 0; nextHapPath.to[0] = nextHapPath.to[1] = TO_UNKNOWN; for (int j = (curHapPath.splitList[0].t + histLength == tCur+1 ? 1 : 0); j < curHapPath.splitListLength; j++) { const HapPathSplit &curSplit = curHapPath.splitList[j]; if (curSplit.hapPrefixTo[nextBit] != TO_NONE) { nextHapPath.splitList[nSplit++] = HapPathSplit(curSplit.t, curSplit.relProbLastStop * calibP, curSplit.hapPrefixTo[nextBit]); } } nextHapPath.splitList[nSplit++] = HapPathSplit(tCur+1); // restart } return curHapPath.to[nextBit]; } void HapWaves::advance(void) { tCur++; curMod = tCur % HAPWAVES_HIST; nextMod = (tCur+1) % HAPWAVES_HIST; hapPathSizes[nextMod] = 0; hapPrefixSizes[nextMod] = 0; } /* * At any point along a haplotype path (i.e., a sequence of alleles at split sites), * we have stored a "split list" of positions at which the last copied segment could have begun. * We can compute the relative probabilities of these split positions (given the next allele), * which allows us to sample the last copied segment. * * INPUT: (t, hapPathInd, tBit) designating a stored haplotype path extended to tBit at t * - t = position; (t % HAPWAVES_HIST) is index in haplotype paths ending in hom region before t * - hapPathInd = index * - tBit = haplotype bit at t (to which to extend haplotype prefixes in split list) * * OUTPUT: (tStart, state) designating a haplotype segment randomly sampled from the split list * - tStart = start position of copied segment * - state = state corresponding to copied segment in HapTree at tStart */ void HapWaves::sampleLastPrefix(int &tStart, HapTreeState &state, int t, int hapPathInd, int tBit) { assert(tCur+1 - t < HAPWAVES_HIST); // the relevant history shouldn't have been overwritten int tMod = t % HAPWAVES_HIST; const HapPath &hapPath = hapPaths[tMod][hapPathInd]; // compute (unscaled) probabilities of each possible split point in the list float relProbStopNext = 0; vector cumRelProbStopNext(hapPath.splitListLength); for (int j = 0; j < hapPath.splitListLength; j++) { const HapPathSplit &split = hapPath.splitList[j]; const HapPrefix &hapPrefix = hapPrefixes[tMod][split.hapPrefixInd]; // this computation was previously done to determine the relative probabilities // of extending the path to tBit=0 vs. tBit=1 at tree index t (= split site t-1) relProbStopNext += split.relProbLastStop * hapPrefix.toHetOnlyProb[tBit] * recombP(t, split.t); cumRelProbStopNext[j] = relProbStopNext; } float relLogP = -1000; if (relProbStopNext != 0) relLogP = logf(relProbStopNext); assert(hapPaths[tMod][hapPathInd].toCumLogP[tBit] == hapPath.cumLogP + relLogP); // randomly sample a split point float r = rand01(); for (int j = 0; j < hapPath.splitListLength; j++) if (cumRelProbStopNext[j] > r*relProbStopNext || j+1 == hapPath.splitListLength) { const HapPathSplit &split = hapPath.splitList[j]; const HapPrefix &hapPrefix = hapPrefixes[tMod][split.hapPrefixInd]; tStart = split.t; state = hapPrefix.state; return; } } // struct DipTreeNode bool DipTreeNode::operator < (const DipTreeNode &dNode) const { return logP+boostLogP > dNode.logP+dNode.boostLogP; } // class DipTree void DipTree::traceNode(int t, int i) { int from = nodes[t][i].from; if (t>1) traceNode(t-1, from); cout << "(" << (int) nodes[t][i].hapMat << "," << (int) nodes[t][i].hapPat << ") "; } std::pair truncPair(uint64 histMat, uint64 histPat, uint64 histBits) { uint64 mask = histBits>=64ULL ? -1ULL : (1ULL< nextPossibleBits(2*beamWidth); int checkWidth = std::min((int) nodes[tCur].size(), beamWidth); vector reqMats(checkWidth), reqPats(checkWidth); const float logPthresh = 2*logPerr;//logf(0.000001f); for (int i = 0; i < checkWidth; i++) { const DipTreeNode &dNode = nodes[tCur][i]; if (dNode.logP+dNode.boostLogP < nodes[tCur][0].logP+nodes[tCur][0].boostLogP + logPthresh) { checkWidth = i; break; } assert(dNode.hapPathInds[0] < (int) nextPossibleBits.size()); assert(dNode.hapPathInds[1] < (int) nextPossibleBits.size()); if (isFullyConstrained) { char &reqMat = reqMats[i], &reqPat = reqPats[i]; if ((constraints[tCur]>>1) == 0) // no-hom-err constraint reqMat = reqPat = constraints[tCur]&1; else { // rel phase constraint int t = tCur, ind = i; for (int d = 0; d < (constraints[tCur]>>1)-1; d++) ind = nodes[t--][ind].from; reqMat = nodes[t][ind].hapMat ^ (constraints[tCur]&1); reqPat = nodes[t][ind].hapPat ^ (constraints[tCur]&1); } nextPossibleBits[dNode.hapPathInds[0]] |= 1< nextNodes; for (int i = 0; i < checkWidth; i++) { const DipTreeNode &dNode = nodes[tCur][i]; for (char hapMat = 0; hapMat < 2; hapMat++) for (char hapPat = 0; hapPat < 2; hapPat++) { if (!dNode.unequalAnc && hapMat > hapPat) continue; if (isFullyConstrained && (hapMat != reqMats[i] || hapPat != reqPats[i])) continue; if (isOppConstrained && hapMat==hapPat) continue; DipTreeNode nextNode; nextNode.from = i; nextNode.unequalAnc = dNode.unequalAnc || (hapMat != hapPat); nextNode.hapMat = hapMat; nextNode.hapPat = hapPat; nextNode.numErr = dNode.numErr + (genos[tCur]<=2 && hapMat+hapPat != genos[tCur]); nextNode.logP = hapWaves.getToCumLogProb(dNode.hapPathInds[0], hapMat) + hapWaves.getToCumLogProb(dNode.hapPathInds[1], hapPat) + nextNode.numErr * logPerr; nextNode.boostLogP = dNode.boostLogP; if (isFullyConstrained) { nextNode.histMat = dNode.histMat; nextNode.histPat = dNode.histPat; } else { nextNode.histMat = (dNode.histMat<<1ULL) | hapMat; nextNode.histPat = (dNode.histPat<<1ULL) | hapPat; } nextNodes.push_back(nextNode); } } if (!isFullyConstrained) { // compute number of bits of history to use (histLength minus # of fully constrained sites) int histBits = 0; for (int t = tCur; t > std::max(tCur-histLength, 0); t--) if (constraints[t]==OPP_CONSTRAINT || constraints[t]==NO_CONSTRAINT) histBits++; // aggregate DipTree paths that agree exactly in past histLength std::sort(nextNodes.begin(), nextNodes.end()); std::map < std::pair , int > histToInd; for (int i = 0; i < (int) nextNodes.size(); i++) { const DipTreeNode &nextNode = nextNodes[i]; std::pair histPair = truncPair(nextNode.histMat, nextNode.histPat, histBits); std::map < std::pair , int >::iterator it = histToInd.find(histPair); if (it == histToInd.end()) { histToInd[histPair] = nodes[tCur+1].size(); nodes[tCur+1].push_back(nextNode); } else { int j = it->second; float sumLogPj = nodes[tCur+1][j].logP + nodes[tCur+1][j].boostLogP; float sumLogPi = nextNode.logP + nextNode.boostLogP; NumericUtils::logSumExp(sumLogPi, sumLogPj); // prob i += prob existing tCur+1 node j nodes[tCur+1][j].boostLogP += sumLogPi - sumLogPj; // augment boost for existing node j } } //cout << " " << nodes[tCur+1].size() << "/" << nextNodes.size() << std::flush; } else nodes[tCur+1] = nextNodes; // extend hap paths of top beamWidth DipTree nodes (part 2) for (int i = 0; i < std::min((int) nodes[tCur+1].size(), beamWidth); i++) { DipTreeNode &nextNode = nodes[tCur+1][i]; const DipTreeNode &dNode = nodes[tCur][nextNode.from]; nextNode.hapPathInds[0] = hapWaves.extendPath(dNode.hapPathInds[0], nextNode.hapMat); nextNode.hapPathInds[1] = hapWaves.extendPath(dNode.hapPathInds[1], nextNode.hapPat); } hapWaves.advance(); tCur++; float totLogP = nodes[tCur][0].logP + nodes[tCur][0].boostLogP; for (int i = 1; i < (int) nodes[tCur].size(); i++) NumericUtils::logSumExp(totLogP, nodes[tCur][i].logP + nodes[tCur][i].boostLogP); for (int i = 0; i < (int) nodes[tCur].size(); i++) { normProbs[tCur].push_back(expf(nodes[tCur][i].logP + nodes[tCur][i].boostLogP - totLogP)); //traceNode(tCur, i); cout << normProbs[tCur].back() << endl; } } DipTree::DipTree(const HapHedgeErr &_hapHedge, const vector &_genos, const char *_constraints, const vector &_cMcoords, double _cMexpect, int _histLength, int _beamWidth, float _logPerr, int _tCur) : rng(12345), rand01(rng, boost::uniform_01<>()), hapHedge(_hapHedge), hapWaves(_hapHedge, _cMcoords, _cMexpect, _histLength, _beamWidth, _logPerr, _tCur), genos(_genos), constraints(_constraints), histLength(_histLength), beamWidth(_beamWidth), logPerr(_logPerr), tCur(_tCur), T(_hapHedge.getNumTrees()), nodes(T+1), normProbs(T+1) { DipTreeNode dNode; dNode.from = -1; dNode.unequalAnc = 0; dNode.logP = 0; dNode.numErr = 0; dNode.hapPathInds[0] = dNode.hapPathInds[1] = 0; dNode.histMat = 0; dNode.histPat = 0; dNode.boostLogP = 0; nodes[tCur].push_back(dNode); // root of DipTree } // compute probability of AA at hets tCallLoc1 and tCallLoc2 float DipTree::callProbAA(int tCallLoc1, int tCallLoc2, int callLength) { assert(tCallLoc1>0 && tCallLoc20 && tCallLoc > &nodes, int tCallLoc, int t, int ind, int h, bool isFwd) { refHap.tMaskFwd = refHap.tMaskRev = 0; const int maxShift = 8*sizeof(refHap.tMaskFwd); while (t > 0) { // rewind DipTree int t1Bit = h==0 ? nodes[t][ind].hapMat : nodes[t][ind].hapPat; // allele at t-1 int dist = t-1 - tCallLoc; if (dist <= 0) dist--; if (dist < -maxShift) break; else if (dist <= maxShift) { int t1BitShift = t1Bit<<(abs(dist)-1); if (isFwd == (dist > 0)) refHap.tMaskFwd |= t1BitShift; else refHap.tMaskRev |= t1BitShift; } ind = nodes[t--][ind].from; } } /* * INPUT: * - tCallLoc = tree index of left side of interval of interest: (tCallLoc, tCallLoc+1) * - callLength = number of positions to look ahead * - samples = number of random samples to take * - bestHaps = actual indices of Kpbwt haplotypes currently encoded in HapHedgeErr * - isFwd = flag indicating whether output het masks should be little- or big-endian * * OUTPUT: * - vector of sampled reference haplotype pairs */ vector DipTree::sampleRefs(int tCallLoc, int callLength, int samples, const vector &bestHaps, bool isFwd) { if (callLength > HAPWAVES_HIST-5) { cerr << "ERROR in DipTree::sampleRefs(): callLength=" << callLength << ", HAPWAVES_HIST=" << HAPWAVES_HIST << endl; cerr << " To use this callLength, increase HAPWAVES_HIST and recompile" << endl; assert(callLength <= HAPWAVES_HIST-5); } assert(tCallLoc>=0 && tCallLoc ret(samples); for (int s = 0; s < samples; s++) { // randomly sample a DipTree node float r = rand01(); float cumProb = 0; for (int i = 0; i < (int) nodes[tFront].size(); i++) { cumProb += normProbs[tFront][i]; if (cumProb > r*probTot || i+1 == (int) nodes[tFront].size()) { // sample a reference haplotype for each parental path in the sampled DipTree node for (int h = 0; h < 2; h++) { int t = tFront; // current position in DipTree int ind = i; // index into stored DipTree nodes at t int tStart = tFront; // start of last copied haplotype segment (for now, set to tFront) // set ret[s].haps[h].tMask{Fwd,Rev} to use when aligning parental paths to phase calls computeHetMasks(ret[s].haps[h], nodes, tCallLoc, t, ind, h, isFwd); /* traceNode(t, i); cout << "tFront = " << tFront << endl; cout << "tCallLoc: " << tCallLoc << " tStart: " << tStart << " T: " << T << endl; */ HapTreeState state; int tBit = 0; ret[s].haps[h].isEnd = false; // jump backward one copied segment at a time until we get one starting <= tCallLoc while (tStart > tCallLoc) { if (tStart == tCallLoc+1) // prev segment ends in (tCallLoc, tCallLoc+1) ret[s].haps[h].isEnd = true; while (t != tStart) // rewind DipTree from t to tStart (start of last copied segment) ind = nodes[t--][ind].from; tBit = h==0 ? nodes[t][ind].hapMat : nodes[t][ind].hapPat; // allele at tStart-1 ind = nodes[t--][ind].from; // move t back 1; now tBit is allele at t (= tStart-1) // sample previous segment; output is written to (tStart, state) hapWaves.sampleLastPrefix(tStart, state, t, nodes[t][ind].hapPathInds[h], tBit); ret[s].haps[h].tLength = t-tStart; } const HapTreeMulti &hapTree = hapHedge.getHapTreeMulti(tStart); bool tBitExtOK = hapTree.next(2*t, state, tBit); // extend state to bit=tBit @ t if (!tBitExtOK) { cerr << "Internal error in sampleRefs(): Could not extend haplotype" << endl; cerr << " tStart = " << tStart << endl; cerr << " t = " << t << endl; cerr << " tCallLoc = " << tCallLoc << endl; cerr << " tFront = " << tFront << endl; cerr << " T = " << T << endl; cerr << " tBit = " << tBit << endl; cerr << " state.seq = " << state.seq << endl; cerr << " state.node = " << state.node << endl; cerr << " state.count = " << state.count << endl; assert(tBitExtOK); // error out } // randomly sample an actual haplotype from this prefix, moving up to 10 hets ahead for (int m = 2*t+1; m < 2*T && m < 2*t+20; m++) { if (m % 2 == 1) // error bit: extend to 0-err hom region if possible hapTree.nextAtFrac(m, state, 0); else // het bit: randomly choose extension hapTree.nextAtFrac(m, state, rand01()); } /* const HapBitsT &hapBitsT = hapHedge.getHapBitsT(); int refSeq = state.seq; // refSeq's bit at tCallLoc: hapBitsT.getBit(refSeq, 2*tCallLoc) // check tStart..t of refSeq matches geno for (int m = 2*tStart+1; m <= 2*t; m += 2) assert(hapBitsT.getBit(refSeq, m)==0); */ ret[s].haps[h].refSeq = bestHaps[state.seq]; } break; } } } return ret; } } Eagle-2.4/src/DipTreePBWT.hpp000066400000000000000000000135571321437612200157410ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef DIPTREEPBWT_HPP #define DIPTREEPBWT_HPP #include #include #include #include #include "HapHedge.hpp" namespace EAGLE { struct HapPathSplit { int t; // location of most recent start = tree index (note HapPath goes to tCur >= t) float relProbLastStop; // cumP for path ending just before t, relative to // cumP = exp(cumLogP) for full HapPath ending just before tCur int hapPrefixInd; // index (in HapWaves::hapPrefixes[curMod][.]) // of the HapPrefix starting from t that ends the HapPath int hapPrefixTo[2]; // indices (in HapWaves::hapPrefixes[nextMod][.]) // of the extended HapPrefixes starting from t that have 0 (resp. 1) // at split site tCur (i.e, bit 2*tCur) and no err (i.e., 0) at 2*tCur+1 HapPathSplit(void); HapPathSplit(int _t); // split corresponding to new start at tCur=_t (i.e., root state) HapPathSplit(int _t, float relProb, int ind); }; struct HapPath { float cumLogP; // log(cumP) for this path ending just before tCur int splitListLength; HapPathSplit *splitList; // [max size = histLength] list of prev split points, probs, prefixes int to[2]; // index of extension to bit = 0 (resp. 1) at split site tCur (i.e., HapPath tCur+1) float toCumLogP[2]; // log(cumP) for extended path HapPath(void); }; struct HapPrefix { HapTreeState state; // state in tree getHapTreeMulti(split.t) //int to[2]; float toHetOnlyProb[2]; // probability of extension to bit = 0 (resp. 1) at split site tCur HapPrefix(void); HapPrefix(const HapTreeState &_state); }; struct RefHap { uint refSeq; short tLength; bool isEnd; short tMaskFwd, tMaskRev; }; struct HapPair { RefHap haps[2]; }; // history length to save for sampling ref haps (for in-sample imputation): // needs to be a few splits longer than callLength passed to sampleRefs() #define HAPWAVES_HIST 25 class HapWaves { boost::lagged_fibonacci607 rng; boost::variate_generator > rand01; const HapHedgeErr &hapHedge; const std::vector &cMcoords; const double cMexpect; const int histLength, beamWidth; const float pErr; const int maxHapPaths, maxHapPrefixes; int tCur, curMod, nextMod; int hapPathSizes[HAPWAVES_HIST]; HapPath *hapPaths[HAPWAVES_HIST]; // [max size = 2*beamWidth each] int hapPrefixSizes[HAPWAVES_HIST]; HapPrefix *hapPrefixes[HAPWAVES_HIST]; // [max size = 2*beamWidth * histLength * 2 each] public: HapWaves(const HapHedgeErr &_hapHedge, const std::vector &_cMcoords, double cMexpect, int _histLength, int _beamWidth, float _logPerr, int _tCur); ~HapWaves(void); float recombP(int tCur, int tSplit) const; // populate hapPrefixes[nextMod] // populate toCumLogP[] in hapPaths[curMod] (but don't populate hapPaths[nextMod]) void computeAllExtensions(const std::vector &nextPossibleBits); float getToCumLogProb(int ind, int nextBit) const; // look up/create extension of hapPaths[curMod][ind] in hapPaths[nextMod] // return index in hapPaths[nextMod] int extendPath(int ind, int nextBit); void advance(void); void sampleLastPrefix(int &tStart, HapTreeState &state, int t, int hapPathInd, int tBit); }; struct DipTreeNode { int from; char unequalAnc, hapMat, hapPat; uint64 histMat, histPat; float boostLogP; float logP; int numErr; int hapPathInds[2]; bool operator < (const DipTreeNode &dNode) const; }; // constraint encoding: const char OPP_CONSTRAINT = -2; // require no het err, i.e., 0|1 or 1|0 const char NO_CONSTRAINT = -1; // relative phase contraints are encoded as (dist=num_splits_to_ref_het<<1)|(rel_phase) // no hom err constraints (i.e., 0|0 at 0, 1|1 at 2) are encoded as 0 or 1 (i.e., dist=0 above) class DipTree { boost::lagged_fibonacci607 rng; boost::variate_generator > rand01; const HapHedgeErr &hapHedge; HapWaves hapWaves; const std::vector &genos; const char *constraints; const int histLength, beamWidth; const float logPerr; int tCur; const int T; std::vector < std::vector > nodes; std::vector < std::vector > normProbs; void traceNode(int t, int i); void advance(void); public: DipTree(const HapHedgeErr &_hapHedge, const std::vector &_genos, const char *_constraints, const std::vector &_cMcoords, double cMexpect, int _histLength, int _beamWidth, float _logPerr, int _tCur); // compute probability of AA at hets tCallLoc1 and tCallLoc2 float callProbAA(int tCallLoc1, int tCallLoc2, int callLength); // compute diploid dosage at tCallLoc float callDosage(int tCallLoc, int callLength); std::vector sampleRefs(int tCallLoc, int callLength, int samples, const std::vector &bestHaps, bool isFwd); }; } #endif Eagle-2.4/src/Eagle.cpp000066400000000000000000004074161321437612200147210ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "omp.h" #include #include "Types.hpp" #include "FileUtils.hpp" #include "MemoryUtils.hpp" #include "NumericUtils.hpp" #include "StringUtils.hpp" #include "Timer.hpp" #include "HapHedge.hpp" #include "Version.hpp" #include "Eagle.hpp" //#define DETAILS namespace EAGLE { using std::vector; using std::string; using std::pair; using std::make_pair; using std::cout; using std::cerr; using std::endl; using std::max; using std::min; const double MEMO_UNSET = -1000; const char noTrioInfo = '`'; const string trio1 = "\033[1;36mo\033[0m"; const string trio2 = "\033[1;31mx\033[0m"; const char IBDx2char = '_'; const char ROHchar = '='; const char wrongChar = '@'; const char conflictChar = '#'; inline uint popcount64(uint64 i) { i = i - ((i >> 1) & 0x5555555555555555); i = (i & 0x3333333333333333) + ((i >> 2) & 0x3333333333333333); i = (i + (i >> 4)) & 0xF0F0F0F0F0F0F0F; return (i * 0x101010101010101) >> 56; } void Eagle::init() { totTicks = 0; extTicks = 0; diphapTicks = 0; lshTicks = 0; lshCheckTicks = 0; dpTicks = 0; dpStaticTicks = 0; dpSwitchTicks = 0; dpUpdateTicks = 0; dpSortTicks = 0; dpUpdateCalls = 0; blipFixTicks = 0; blipPopTicks = 0; blipVoteTicks = 0; blipLshTicks = 0; maskSnps64j = ALIGNED_MALLOC_UCHARS(Mseg64*64); cMs64j = ALIGNED_MALLOC_DOUBLES(Mseg64*64+1); double cMlast = 0; for (uint64 m64 = 0; m64 < Mseg64; m64++) { for (uint64 j = 0; j < seg64cMvecs[m64].size(); j++) { maskSnps64j[m64*64+j] = 1; cMs64j[m64*64+j] = cMlast = seg64cMvecs[m64][j]; } for (uint64 j = seg64cMvecs[m64].size(); j < 64; j++) { maskSnps64j[m64*64+j] = 0; cMs64j[m64*64+j] = cMlast; } } cMs64j[Mseg64*64] = cMlast; haploBits = ALIGNED_MALLOC_UINT64S(Mseg64*2*N); haploBitsT = ALIGNED_MALLOC_UINT64S(2*N*Mseg64); segConfs = ALIGNED_MALLOC_UCHARS(2*N*Mseg64); maskIndivs = vector (N, 1); for (uint wrongBitsA = 0; wrongBitsA < (1U<>k)&1)*homErrCost + ((wrongHetBitsA>>k)&1)*hetErrCost - ((wrongHomBitsB>>k)&1)*homErrCost - ((wrongHetBitsB>>k)&1)*hetErrCost; if (cumDiff < minDiff) minDiff = cumDiff; } } } Eagle::Eagle(uint64 _N, uint64 _Mseg64, const uint64_masks *_genoBits, vector < vector > _seg64cMvecs, const AlleleFreqs *_seg64logPs, vector _invLD64j, const vector &_indivs, const vector &_snps, const string &maskFile, const vector &_isFlipped64j, double _pErr, int runStep2) : N(_N), Nref(0), Mseg64(_Mseg64), genoBits(_genoBits), seg64cMvecs(_seg64cMvecs), seg64logPs(_seg64logPs), invLD64j(_invLD64j), indivs(_indivs), snps(_snps), isFlipped64j(_isFlipped64j), logPerr(log10(_pErr)) { init(); if (runStep2) { phaseConfs = ALIGNED_MALLOC_UCHARS(2*N*Mseg64*64); phaseConfs2 = ALIGNED_MALLOC_UCHARS(2*N*Mseg64*64); tmpHaploBitsT = NULL; } else { phaseConfs = phaseConfs2 = NULL; tmpHaploBitsT = ALIGNED_MALLOC_UINT64S(2*N*Mseg64); memset(tmpHaploBitsT, 0, 2*N*Mseg64*sizeof(tmpHaploBitsT[0])); } if (!maskFile.empty()) { int masked = 0; vector < pair > maskFidIids = FileUtils::readFidIids(maskFile); std::set < pair < string, string> > maskSet(maskFidIids.begin(), maskFidIids.end()); for (uint64 n = 0; n < N; n++) if (maskSet.count(make_pair(indivs[n].famID, indivs[n].indivID))) { maskIndivs[n] = 0; masked++; } cout << "Number of indivs masked: " << masked << endl; } } // constructor for ref-mode Eagle::Eagle(uint64 _Nref, uint64 _Ntarget, uint64 _Mseg64, const uint64_masks *_genoBits, vector < vector > _seg64cMvecs, double _pErr) : N(_Nref+_Ntarget), Nref(_Nref), Mseg64(_Mseg64), genoBits(_genoBits), seg64cMvecs(_seg64cMvecs), logPerr(log10(_pErr)) { init(); isFlipped64j = vector (Mseg64*64); // no flipping in ref mode phaseConfs = phaseConfs2 = NULL; tmpHaploBitsT = ALIGNED_MALLOC_UINT64S(2*(N-Nref)*Mseg64); memset(segConfs, 0, 2*N*Mseg64*sizeof(segConfs[0])); for (uint64 nRef = 0; nRef < Nref; nRef++) for (uint64 m64 = 0; m64 < Mseg64; m64++) { // copy ref haploBits stored in genoBits haploBits[m64*2*N + 2*nRef] = genoBits[m64*N + nRef].is0; haploBits[m64*2*N + 2*nRef+1] = genoBits[m64*N + nRef].is2; for (uint64 nHap = 2*nRef; nHap <= 2*nRef+1; nHap++) haploBitsT[nHap*Mseg64 + m64] = haploBits[m64*2*N + nHap]; } } void Eagle::reallocLRPtoPBWT(void) { // non-ref mode transition: LRP iters 1-2 -> PBWT iters 3+ assert(phaseConfs != NULL); ALIGNED_FREE(phaseConfs2); phaseConfs2 = NULL; ALIGNED_FREE(phaseConfs); phaseConfs = NULL; assert(tmpHaploBitsT == NULL); tmpHaploBitsT = ALIGNED_MALLOC_UINT64S(2*N*Mseg64); } Eagle::~Eagle() { ALIGNED_FREE(segConfs); ALIGNED_FREE(haploBitsT); ALIGNED_FREE(haploBits); if (phaseConfs != NULL) { ALIGNED_FREE(phaseConfs2); ALIGNED_FREE(phaseConfs); } if (tmpHaploBitsT != NULL) { ALIGNED_FREE(tmpHaploBitsT); // allocated only in ref-mode } ALIGNED_FREE(cMs64j); ALIGNED_FREE(maskSnps64j); } inline uint getNonMissingGeno(const uint64_masks &bits, uint64 j) { if (bits.is0 & (1ULL< fail break; uint64 missMask = bits0.is9 | bits1.is9; for (uint64 j = jStart; j != jEnd; j += inc) { uint geno1 = bgetGeno0123(bits1, j); double logBFj = 0; if (!(missMask & (1ULL< maxLogBF) { maxLogBF = curLogBF; if (inc == 1) match.m64jEnd = m64*64+j; else match.m64jStart = m64*64+j; } } } match.logBF += maxLogBF; } double minLogBF = 0, curLogBF = 0; for (uint64 m64j = match.m64jStart; m64j <= match.m64jEnd; m64j++) { curLogBF += workLogBF[m64j]; if (curLogBF < minLogBF) { minLogBF = curLogBF; match.m64jStart = m64j+1; while (!maskSnps64j[match.m64jStart]) match.m64jStart++; } } match.logBF -= minLogBF; //match.logBF -= log10(snpsChecked); match.cMlenInit = cMs64j[match.m64jEnd] - cMs64j[match.m64jStart]; return match; } void Eagle::trim(Match &match, const Match &ref, uint64 n0, int orientation, uint64 trimStart, int inc, double workLogBF[]) const { uint64 n1 = match.n, n2 = ref.n; // find IBDx2; store IBDx2 status in workLogBF (0 or 1) to compute probabilities accordingly double IBDx2logBF = 0; uint64 IBDx2start = trimStart; for (uint64 m64j = trimStart; m64j+1!=match.m64jStart && m64j!=match.m64jEnd+1; m64j += inc) workLogBF[m64j] = 0; // initialize workLogBF to 0 (not IBDx2) in *MATCH* (n1) // check for IBDx2 in *REF* (n2) uint64 m64jLast; // last SNP to check: go beyond end of match to ensure detection of ref IBDx2 if (inc == 1) m64jLast = min(match.m64jEnd + 50ULL, Mseg64*64-1); else m64jLast = max((int) match.m64jStart - 50, 0); for (uint64 m64j = trimStart; m64j!=m64jLast+inc; m64j += inc) { uint g0 = getGeno0123(m64j, n0); uint g2 = getGeno0123(m64j, n2); bool mismatch = false; if (g0 != 3 && g2 != 3) { if (g0 == g2) IBDx2logBF += seg64logPs[m64j].cond[g2][g0] * invLD64j[m64j]; else mismatch = true; } if (mismatch || m64j==m64jLast) { // end of IBDx2 segment if (IBDx2logBF < -1) { // 10:1 IBDx2 #ifdef VERBOSE printf("IBDx2 detected in %d: %.1f-%.1f (%d SNPs)\n", (int) n2, cMs64j[IBDx2start], cMs64j[m64j], (int) (m64j-IBDx2start)); #endif for (uint64 m64j2 = IBDx2start; m64j2 != m64j; m64j2 += inc) workLogBF[m64j2] = 1; } IBDx2logBF = 0; // reset IBDx2start = m64j+inc; } } double maxLogBF = 0, curLogBF = 0; uint64 m64jBest = trimStart; for (uint64 m64j = trimStart; m64j+1!=match.m64jStart && m64j!=match.m64jEnd+1; m64j += inc) { double logBF = 0; uint g0 = getGeno0123(m64j, n0); uint g1 = getGeno0123(m64j, n1); uint g2 = getGeno0123(m64j, n2); if (g0 != 3 && g1 != 3) { uint g0eff = g0; if (g0 == 1 && ref.m64jStart <= m64j && m64j <= ref.m64jEnd && g2 != 3) { // n0 het and n2 (ref) match info available if (g2 != 1) { // n2 hom if (orientation == 1) g0eff = g2; // treat g0 as n2 hom else g0eff = 2-g2; // treat g0 as opp n2 hom } else if (workLogBF[m64j] == 0) { // n0 and n2 both hets and not IBDx2 if (orientation == 1) g0eff = 4; // same orientation as het-het => p(hap=1) = 1-p else g0eff = 5; // opp orientation to het-het => p(hap=1) = p } } double logP_geno1_null = seg64logPs[m64j].cond[g1][3]; double logP_geno1_duo = seg64logPs[m64j].cond[g1][g0eff]; logBF = min(max((logP_geno1_duo - logP_geno1_null) * invLD64j[m64j], logPerr), -logPerr); } curLogBF += logBF; if (curLogBF > maxLogBF) { maxLogBF = curLogBF; m64jBest = m64j; } workLogBF[m64j] = curLogBF; } uint64 m64jTrim = m64jBest; if (inc == 1) match.m64jEnd = m64jTrim; else match.m64jStart = m64jTrim; // conservative trimming: backtrack to 10x higher prob uint m64jTrimCons = trimStart; for (uint64 m64j = trimStart; m64j != m64jBest; m64j += inc) if (workLogBF[m64j] < maxLogBF - log10(10)) m64jTrimCons = m64j; if (inc == 1) match.m64jEndCons = std::min(match.m64jEndCons, m64jTrimCons); else match.m64jStartCons = std::max(match.m64jStartCons, m64jTrimCons); } vector searchSigns(const vector &matches, const vector < vector > &sameEdges, const vector < vector > &oppEdges, const vector &kept) { // process left to right so that when sign choice is arbitrary, adjacent matches have same sign uint V = matches.size(); vector signs(V); vector < pair > order(V); for (uint v = 0; v < V; v++) order[v] = make_pair(matches[v].m64jStart, v); sort(order.begin(), order.end()); uint lastEnd = 0; int lastSign = 1; // sign of farthest-right match seen so far std::queue q; for (uint i = 0; i < V; i++) { uint v = order[i].second; if (!kept[v]) continue; // not used if (signs[v]) continue; // already visited signs[v] = lastSign; q.push(v); while (!q.empty()) { uint u = q.front(); q.pop(); for (uint i = 0; i < sameEdges[u].size(); i++) { uint w = sameEdges[u][i]; if (!kept[w]) continue; if (signs[w]) { if (signs[w] != signs[u]) return vector (); } else { signs[w] = signs[u]; q.push(w); if (matches[w].m64jEnd > lastEnd) { lastEnd = matches[w].m64jEnd; lastSign = signs[w]; } } } for (uint i = 0; i < oppEdges[u].size(); i++) { uint w = oppEdges[u][i]; if (!kept[w]) continue; if (signs[w]) { if (signs[w] == signs[u]) return vector (); } else { signs[w] = -signs[u]; q.push(w); if (matches[w].m64jEnd > lastEnd) { lastEnd = matches[w].m64jEnd; lastSign = signs[w]; } } } } } return signs; } void updateVote(int &votesCur, int votesThresh, int vote) { if (abs(votesCur) >= votesThresh) return; votesCur += vote; } void Eagle::computePhaseConfs(uint64 n0, const vector &matches, const vector &signs, bool cons) { vector < vector > votes(2, vector (Mseg64*64)); vector votesThresh(Mseg64*64); const int votesMax = 1000000; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) { if (maskSnps64j[m64j]) { votesThresh[m64j] = // 2 / log10((1-p)/p) = number of votes needed to get >100:1 odds (int) (2 / fabs(seg64logPs[m64j].cond[0][4] - seg64logPs[m64j].cond[0][5])) + 1; if (!(votesThresh[m64j] < votesMax)) votesThresh[m64j] = votesMax; uint g0 = getGeno0123(m64j, n0); if (g0 == 0) { votes[0][m64j] = votes[1][m64j] = -votesMax; } else if (g0 == 2) { votes[0][m64j] = votes[1][m64j] = votesMax; } else if (g0 == 3) { votes[0][m64j] = votes[1][m64j] = -1; } // missing: default P(1) = p } } vector isIBDx2(Mseg64*64); for (uint i = 0; i < matches.size(); i++) { if (!signs[i]) continue; uint64 start, end; if (cons) { start = std::max(matches[i].m64jStartCons, matches[i].m64jStart); end = std::min(matches[i].m64jEndCons, matches[i].m64jEnd); } else { start = matches[i].m64jStart; end = matches[i].m64jEnd; } #ifdef VERBOSE printf("match %d (%.1f-%.1f)\n", (int) i, cMs64j[start], cMs64j[end]); #endif // find IBDx2 regions vector < pair > IBDx2regions; uint64 m64jFirst = max((int) start - 50, 0); // go beyond ends to detect overhanging IBDx2 uint64 m64jLast = min(end + 50ULL, Mseg64*64-1); double IBDx2logBF = 0; uint64 IBDx2start = m64jFirst; for (uint64 m64j = m64jFirst; m64j <= m64jLast; m64j++) { uint g0 = getGeno0123(m64j, n0); uint g1 = getGeno0123(m64j, matches[i].n); bool mismatch = false; if (g0 != 3 && g1 != 3) { if (g0 == g1) IBDx2logBF += seg64logPs[m64j].cond[g1][g0] * invLD64j[m64j]; else mismatch = true; } if (mismatch || m64j==m64jLast) { // end of IBDx2 segment if (IBDx2logBF < -1) { // 10:1 IBDx2 IBDx2regions.push_back(make_pair(IBDx2start, m64j)); #ifdef VERBOSE printf("IBDx2 detected in %d: %.1f-%.1f (%d SNPs)\n", (int) matches[i].n, cMs64j[IBDx2start], cMs64j[m64j], (int) (m64j-IBDx2start)); #endif } IBDx2logBF = 0; // reset IBDx2start = m64j+1; } } for (uint r = 0; r < IBDx2regions.size(); r++) // set IBDx2 region flags memset(&isIBDx2[IBDx2regions[r].first], 1, IBDx2regions[r].second-IBDx2regions[r].first); // accumulate votes for (uint64 m64j = start; m64j <= end; m64j++) { if (!maskSnps64j[m64j]) continue; uint g0 = getGeno0123(m64j, n0); uint g1 = getGeno0123(m64j, matches[i].n); int vote = 0; if (g1 == 0 || g1 == 2) // n1 hom: IBDx2 status irrelevant; phase determined (votesMax) vote = (g1-1)*votesMax*2; // super strong vote (overrides any previous small votes) else if (g1 == 1 && !isIBDx2[m64j]) // n1 het and not IBDx2; weak phase info vote = 1; if (vote) { int q = (signs[i] == 1); updateVote(votes[q][m64j], votesThresh[m64j], vote); if (g0 == 1) // n0 het: pass info to opp chromosome updateVote(votes[!q][m64j], votesThresh[m64j], -vote); } } for (uint r = 0; r < IBDx2regions.size(); r++) // unset IBDx2 region flags memset(&isIBDx2[IBDx2regions[r].first], 0, IBDx2regions[r].second-IBDx2regions[r].first); } // fast rng: last 16 bits of Marsaglia's MWC uint w = 521288629; if (phaseConfs != NULL) { // need to make hard calls here for (uint i = 0; i < (n0 & 0xff); i++) w=18000*(w&65535)+(w>>16); } for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) { if (maskSnps64j[m64j]) { for (uint64 q = 0; q <= 1; q++) { double phaseConf; if (votes[q][m64j] >= votesMax) phaseConf = 1; else if (votes[q][m64j] <= -votesMax) phaseConf = 0; else { double OR = pow(10.0, fabs(seg64logPs[m64j].cond[0][4] - seg64logPs[m64j].cond[0][5]) * votes[q][m64j]); phaseConf = OR / (1 + OR); } if (phaseConfs != NULL) phaseConfs[(2*n0+q)*Mseg64*64 + m64j] = (uchar) (phaseConf * 255); else { uchar uPhaseConf = (uchar) (phaseConf * 255); if (uPhaseConf == (uchar) 255 || ((w=18000*(w&65535)+(w>>16))&255) < uPhaseConf) tmpHaploBitsT[(2*n0+q)*Mseg64 + (m64j/64)] |= 1ULL<<(m64j&63); } } } else { if (phaseConfs != NULL) phaseConfs[2*n0*Mseg64*64 + m64j] = phaseConfs[(2*n0+1)*Mseg64*64 + m64j] = 0; } } } vector Eagle::trioRelPhase(uint64 n0, uint64 nF1, uint64 nF2) const { bool isParent = false; if (((int) nF1) < 0) { // nF1 is the child; n0 is a parent isParent = true; nF1 = -nF1; } vector trioPhaseVec; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) { if (!maskSnps64j[m64j]) continue; uint64 m64cur = m64j/64; uint64 j = m64j&63; const uint64_masks &bits0 = genoBits[m64cur*N + n0]; if ((bits0.is0|bits0.is2|bits0.is9)&(1ULL< unknown; +/-1 => pat/mat if (trioPhase == 0) continue; } vector trioRelPhaseVec(trioPhaseVec.size()-1); for (uint i = 1; i < trioPhaseVec.size(); i++) trioRelPhaseVec[i-1] = (trioPhaseVec[i-1]==0 || trioPhaseVec[i]==0) ? -1 : (trioPhaseVec[i-1]==trioPhaseVec[i] ? 0 : 1); // -1 => unknown; 0 => same; 1 => opp return trioRelPhaseVec; } void Eagle::checkPhase(uint64 n0, uint64 nF1, uint64 nF2, double thresh) const { cout << "checking at thresh=" << thresh << ": "; double lastPhased = cMs64j[0]; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) { if (!maskSnps64j[m64j]) continue; uint64 m64cur = m64j/64; uint64 j = m64j&63; const uint64_masks &bits0 = genoBits[m64cur*N + n0]; if ((bits0.is0|bits0.is2)&(1ULL< Eagle::checkPhaseConfsPhase(uint64 n0, uint64 nF1, uint64 nF2) const { vector ret; int lastPhased64j = -1; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) { if (!maskSnps64j[m64j]) continue; uint64 m64cur = m64j/64; uint64 j = m64j&63; const uint64_masks &bits0 = genoBits[m64cur*N + n0]; if ((bits0.is0|bits0.is2|bits0.is9)&(1ULL<= 128; bool phase = hapBit == (trioPhase == 1); if (lastPhased64j != -1 && ret.back() != phase) printf(" %.2f", (cMs64j[lastPhased64j] + cMs64j[m64j]) / 2); lastPhased64j = m64j; ret.push_back(phase); } cout << endl; return ret; } void Eagle::checkHapPhase(uint64 n0, uint64 nF1, uint64 nF2, const uint64 curHaploBitsT[], uint64 m64, uint64 side, vector < vector > votes) const { if ((int) nF1 == -1) return; for (uint64 m64j = (m64-side)*64; m64j < (m64+side+1)*64; m64j++) { if (!maskSnps64j[m64j]) continue; uint64 m64cur = m64j/64; uint64 j = m64j&63; const uint64_masks &bits0 = genoBits[m64cur*N + n0]; if ((bits0.is0|bits0.is2|bits0.is9)&(1ULL<>j)&1) == (trioPhase == 1)) //if (((haploBitsT[n1hap*Mseg64 + m64cur]>>j)&1) == (trioPhase == 1)) if (((curHaploBitsT[m64cur]>>j)&1) == (trioPhase == 1)) cout << trio1; else cout << trio2; if (!votes.empty()) cout << "[" << votes[j][(curHaploBitsT[m64cur]>>j)&1] << "|" << votes[j][!((curHaploBitsT[m64cur]>>j)&1)] << ";" << votes[j][((curHaploBitsT[m64cur]>>j)&1)+2] << "|" << votes[j][!((curHaploBitsT[m64cur]>>j)&1)+2] << "]"; } cout << endl; } vector Eagle::checkHapPhase1(uint64 n0, uint64 nF1, uint64 nF2, uint64 n1hap, uint64 m64start, uint64 m64end, int sign) const { vector ret; if ((int) nF1 == -1) return ret; cout << "n1hap = " << n1hap << "; m64 = [" << m64start << "," << m64end << "): "; for (uint64 m64j = m64start*64; m64j < m64end*64; m64j++) { if (m64j != m64start*64 && (m64j&63)==0) cout << "|"; if (!maskSnps64j[m64j]) continue; uint64 m64cur = m64j/64; uint64 j = m64j&63; const uint64_masks &bits0 = genoBits[m64cur*N + n0]; if ((bits0.is0|bits0.is2|bits0.is9)&(1ULL<>j)&1) == (trioPhase == sign)) { cout << trio1; ret.push_back(0); } else { cout << trio2; ret.push_back(1); } } cout << endl; return ret; } vector Eagle::checkHapPhase1j(uint64 n0, uint64 nF1, uint64 nF2, uint64 n1hap, uint64 m64jStart, uint64 m64jEnd, int sign) const { vector ret; if ((int) nF1 == -1) return ret; //cout << "n1hap = " << n1hap << "; m64 = [" << m64start << "," << m64end << "): "; for (uint64 m64j = m64jStart; m64j < m64jEnd; m64j++) { if (m64j != m64jStart && (m64j&63)==0) cout << m64j/64;//"|"; if (!maskSnps64j[m64j]) continue; uint64 m64cur = m64j/64; uint64 j = m64j&63; const uint64_masks &bits0 = genoBits[m64cur*N + n0]; if ((bits0.is0|bits0.is2|bits0.is9)&(1ULL<>j)&1) == (trioPhase == sign)) { cout << trio1; ret.push_back(0); } else { cout << trio2; ret.push_back(1); } } //cout << endl; return ret; } vector Eagle::checkHapPhase1jCall(uint64 n0, uint64 nF1, uint64 nF2, uint64 callBitsT[], uint64 m64jStart, uint64 m64jEnd, bool print, int sign) const { vector ret; if ((int) nF1 == -1) return ret; for (uint64 m64j = m64jStart; m64j < m64jEnd; m64j++) { if (m64j != m64jStart && (m64j&63)==0) if (print) cout << m64j/64;//"|"; if (!maskSnps64j[m64j]) continue; uint64 m64cur = m64j/64; uint64 j = m64j&63; const uint64_masks &bits0 = genoBits[m64cur*N + n0]; if ((bits0.is0|bits0.is2|bits0.is9)&(1ULL<>j)&1) == (trioPhase == sign)) { if (print) cout << trio1; ret.push_back(0); } else { if (print) cout << trio2; ret.push_back(1); } } if (print) cout << endl; return ret; } int Eagle::checkHapPhase2(uint64 n0, uint64 nF1, uint64 nF2, uint64 n1hap, uint64 n2hapA, uint64 n2hapB, uint64 m64, int sign) const { vector ret; if ((int) nF1 == -1) return 0;/*ret*/; uint64 n1is1 = haploBitsT[n1hap*Mseg64 + m64]; uint64 n2is1A = haploBitsT[n2hapA*Mseg64 + m64]; uint64 n2is1B = haploBitsT[n2hapB*Mseg64 + m64]; const uint64_masks &bits0 = genoBits[m64*N + n0]; uint64 wrongHomBitsA = (bits0.is0 & (n1is1 | n2is1A)) | (bits0.is2 & ~(n1is1 & n2is1A)); uint64 wrongHetBitsA = (~(bits0.is0|bits0.is2|bits0.is9) & ~(n1is1 ^ n2is1A)); uint64 wrongHomBitsB = (bits0.is0 & (n1is1 | n2is1B)) | (bits0.is2 & ~(n1is1 & n2is1B)); uint64 wrongHetBitsB = (~(bits0.is0|bits0.is2|bits0.is9) & ~(n1is1 ^ n2is1B)); uint score = popcount64(wrongHomBitsB)*homErrCost + popcount64(wrongHetBitsB)*hetErrCost; uint minScore = score; uint64 kSwitch = 0; for (uint64 k = 0; k < 64; k++) { score += ((wrongHomBitsA>>k)&1)*homErrCost + ((wrongHetBitsA>>k)&1)*hetErrCost - ((wrongHomBitsB>>k)&1)*homErrCost - ((wrongHetBitsB>>k)&1)*hetErrCost; if (score < minScore) { minScore = score; kSwitch = k+1; } } cout << "m64 = " << m64 << ": (" << n1hap << "," << n2hapA; if (n2hapA != n2hapB) cout << "-" << n2hapB; cout << ") score = " << minScore << " "; cout << " conf = " << (int) segConfs[n1hap*Mseg64+m64] << "," << (int) segConfs[n2hapA*Mseg64+m64]; if (n2hapA != n2hapB) cout << "-" << (int) segConfs[n2hapB*Mseg64+m64]; cout << " "; for (uint64 j = 0; j < 64; j++) { uint64 m64j = m64*64+j; if (!maskSnps64j[m64j]) continue; const uint64_masks &bits0 = genoBits[m64*N + n0]; if ((bits0.is0|bits0.is2|bits0.is9)&(1ULL<>j)&1) == (trioPhase == sign)) phase = 0; else phase = 1; bool hetErr = ((haploBits[m64*2*N + n1hap]>>j)&1) == ((haploBits[m64*2*N + (j>j)&1); uchar conf1 = 0, conf2 = 0; if (hetErr) { conf1 = phaseConfs[n1hap*Mseg64*64 + m64j]; conf2 = phaseConfs[(j Eagle::checkHaploBits(uint64 n0, uint64 nF1, uint64 nF2, uint64 hapBits, uint64 m64, int pad) const { vector ret; if ((int) nF1 == -1) return ret; bool isParent = false; if (((int) nF1) < 0) { // nF1 is the child; n0 is a parent isParent = true; nF1 = -nF1; } int printed = 0; for (uint64 j = 0; j < 64; j++) { uint64 m64j = m64*64+j; if (!maskSnps64j[m64j]) continue; const uint64_masks &bits0 = genoBits[m64*N + n0]; if ((bits0.is0|bits0.is2|bits0.is9)&(1ULL<= 0) { if (((hapBits>>j)&1) == (trioPhase == 1)) cout << trio1; else cout << trio2; printed++; } ret.push_back(((hapBits>>j)&1) == (trioPhase == 1)); } while (printed < pad) { cout << " "; printed++; } return ret; } pair Eagle::phaseSegHMM(uint64 n0, uint64 n1hap, uint64 n2hapA, uint64 n2hapB, uint64 m64, uint64 &hetErrMask) const { uint64 n1is1 = haploBitsT[n1hap*Mseg64 + m64]; uint64 n2is1A = haploBitsT[n2hapA*Mseg64 + m64]; uint64 n2is1B = haploBitsT[n2hapB*Mseg64 + m64]; const uint64_masks &bits0 = genoBits[m64*N + n0]; uint64 wrongHomBitsA = (bits0.is0 & (n1is1 | n2is1A)) | (bits0.is2 & ~(n1is1 & n2is1A)); uint64 wrongHetBitsA = (~(bits0.is0|bits0.is2|bits0.is9) & ~(n1is1 ^ n2is1A)); uint64 wrongHomBitsB = (bits0.is0 & (n1is1 | n2is1B)) | (bits0.is2 & ~(n1is1 & n2is1B)); uint64 wrongHetBitsB = (~(bits0.is0|bits0.is2|bits0.is9) & ~(n1is1 ^ n2is1B)); uint score = popcount64(wrongHomBitsB)*homErrCost + popcount64(wrongHetBitsB)*hetErrCost; uint minScore = score; double cMdiffMax = m64==0 ? 0.0 : cMs64j[m64*64] - cMs64j[m64*64-1]; uint64 kSwitch = 0; uint64 kSeg = seg64cMvecs[m64].size(); for (uint64 k = 0; k < kSeg; k++) { score += ((wrongHomBitsA>>k)&1)*homErrCost + ((wrongHetBitsA>>k)&1)*hetErrCost - ((wrongHomBitsB>>k)&1)*homErrCost - ((wrongHetBitsB>>k)&1)*hetErrCost; double cMdiff = (k+1==kSeg ? cMs64j[(m64+1)*64] : cMs64j[m64*64+k+1]) - cMs64j[m64*64+k]; if (score < minScore || (score == minScore && cMdiff > cMdiffMax)) { minScore = score; cMdiffMax = cMdiff; kSwitch = k+1; } } uint64 phaseBits1 = 0, phaseBits2 = 0; hetErrMask = 0; for (uint64 j = 0; j < 64; j++) { uint64 m64j = m64*64+j; if (!maskSnps64j[m64j]) continue; const uint64_masks &bits0 = genoBits[m64*N + n0]; if (bits0.is0&(1ULL<>j)&1; uint64 phase2 = ((haploBits[m64*2*N + (j>j)&1); if (bits0.is9&(1ULL< Eagle::checkSegPhase(uint64 n0, uint64 nF1, uint64 nF2, uint64 n1hap, uint64 n2hap, int sign, uint64 m64) const { vector ret; for (uint64 j = 0; j < 64; j++) { uint64 m64j = m64*64+j; if (!maskSnps64j[m64j]) continue; const uint64_masks &bits0 = genoBits[m64*N + n0]; if ((bits0.is0|bits0.is2|bits0.is9)&(1ULL<>j)&1; if (sign == -1) hapBit1 = 1-hapBit1; int hapBit2 = (haploBits[m64*2*N + n2hap]>>j)&1; if (sign == 1) hapBit2 = 1-hapBit2; uchar conf1 = phaseConfs[n1hap*Mseg64*64 + m64j]; uchar conf2 = phaseConfs[n2hap*Mseg64*64 + m64j]; //if (hapBit1 != hapBit2) cout << "?[" << (uint) conf1 << "|" << (uint) conf2 << "]"; int hapBitFinal = hapBit1; if (!(conf1 == 0 || conf1 == 255) && (conf2 == 0 || conf2 == 255)) hapBitFinal = hapBit2; */ int hapBitFinal = (int) phaseConfs2[2*n0*Mseg64*64 + m64j] >= 128; if (hapBitFinal == (trioPhase == 1)) { cout << trio1; ret.push_back(0); } else { cout << trio2; ret.push_back(1); } } cout << endl; return ret; } void Eagle::computeSegPhaseConfs(uint64 n0, uint64 n1hap, uint64 n2hap, int sign, uint64 m64, int err) { const double maxOffsetFrac = 0.25, offsetFrac = ((n0&63)-31.5)/31.5 * maxOffsetFrac; uint64 m64jStart, m64jEnd; if (offsetFrac >= 0) { m64jStart = m64==0 ? 0 : m64*64 + (uint) (offsetFrac * seg64cMvecs[m64].size()); m64jEnd = (m64+1)*64 + (m64+1==Mseg64 ? 0 : (uint) (offsetFrac * seg64cMvecs[m64+1].size())); } else { m64jStart = m64==0 ? 0 : (m64-1)*64 + (uint) ((1+offsetFrac) * seg64cMvecs[m64-1].size()); m64jEnd = m64*64 + (m64+1==Mseg64 ? 64 : (uint) ((1+offsetFrac) * seg64cMvecs[m64].size())); } /* cout << "m64 = " << m64 << ": " << m64jStart/64 << "." << (m64jStart&63) << " - " << m64jEnd/64 << "." << (m64jEnd&63) << endl; */ int cropErr = max(err-1, 0); uchar hetConfs[2]; hetConfs[0] = (uchar) cropErr; hetConfs[1] = (uchar) (255-cropErr); for (uint64 m64j = m64jStart; m64j < m64jEnd; m64j++) { if (maskSnps64j[m64j]) { uint64 m64cur = m64j/64; uint64 j = m64j&63; uint g0 = getGeno0123(m64j, n0); if (g0 == 0) phaseConfs2[2*n0*Mseg64*64 + m64j] = phaseConfs2[(2*n0+1)*Mseg64*64 + m64j] = 0; else if (g0 == 2) phaseConfs2[2*n0*Mseg64*64 + m64j] = phaseConfs2[(2*n0+1)*Mseg64*64 + m64j] = 255; else { int hapBit1 = (haploBits[m64cur*2*N + n1hap]>>j)&1; int hapBit2 = (haploBits[m64cur*2*N + n2hap]>>j)&1; if (g0 == 1) { // het (not missing) uchar conf1 = phaseConfs[n1hap*Mseg64*64 + m64j]; uchar conf2 = phaseConfs[n2hap*Mseg64*64 + m64j]; if (!(conf1 == 0 || conf1 == 255) && (conf2 == 0 || conf2 == 255)) hapBit1 = 1-hapBit2; // only use n2hap if n1hap conf <100% and n2hap conf = 100% else hapBit2 = 1-hapBit1; // default: go with n1hap } if (sign == -1) std::swap(hapBit1, hapBit2); phaseConfs2[2*n0*Mseg64*64 + m64j] = hetConfs[hapBit1]; phaseConfs2[(2*n0+1)*Mseg64*64 + m64j] = hetConfs[hapBit2]; } } else phaseConfs2[2*n0*Mseg64*64 + m64j] = phaseConfs2[(2*n0+1)*Mseg64*64 + m64j] = 0; } } string Eagle::computePhaseString(uint64 n0, uint64 nF1, uint64 nF2, const vector &matches, const vector &signs, uint64 start, double cMend, bool cons) const { if ((int) nF1 == -1 || (int) nF2 == -1) return ""; vector starts(matches.size()), ends(matches.size()); for (uint i = 0; i < matches.size(); i++) { if (cons) { starts[i] = std::max(matches[i].m64jStartCons, matches[i].m64jStart); ends[i] = std::min(matches[i].m64jEndCons, matches[i].m64jEnd); } else { starts[i] = matches[i].m64jStart; ends[i] = matches[i].m64jEnd; } } string phase; double lastPhased = cMs64j[start], lastHet = lastPhased; int hetCount = 0, snpCount = 0; for (uint64 m64j = start; m64j < Mseg64*64 && cMs64j[m64j] < cMend; m64j++) { if (!maskSnps64j[m64j]) continue; uint64 m64cur = m64j/64; uint64 j = m64j&63; const uint64_masks &bits0 = genoBits[m64cur*N + n0]; const uint64_masks &bitsF1 = genoBits[m64cur*N + nF1]; const uint64_masks &bitsF2 = genoBits[m64cur*N + nF2]; int trioPhase = 1; // default if ((bitsF1.is0|bitsF2.is2)&(1ULL< 0.5) { char buf[20]; sprintf(buf, "[%.1fcM:%d/%d]", cM-lastPhased, hetCount, snpCount); phase += string(buf); } if (votes1&votes2) phase += conflictChar; else if (trioPhase) { if (votes1) phase += trio1; else phase += trio2; } else phase += noTrioInfo; hetCount = 0; snpCount = 0; lastPhased = cM; } else phase += '?'; lastHet = cMs64j[m64j]; hetCount++; } if (cMend >= cMs64j[Mseg64*64-1]) { double cM = cMs64j[Mseg64*64-1]; for (int tick = (int) (10*lastPhased) + 1; tick < 10*cM; tick++) { if (tick % 10 == 0) phase += (char) ('0' + (tick/10)%10); else if (lastHet <= lastPhased) phase += ROHchar; else phase += IBDx2char; } if (cM-lastPhased > 0.5) { char buf[20]; sprintf(buf, "[%.1fcM:%d/%d]", cM-lastPhased, hetCount, snpCount); phase += string(buf); } } return phase; } void Eagle::printMatch(uint64 n0, uint64 nF1, uint64 nF2, const Match &duoMatch, double memoLogBF[][4]) const { if ((int) nF1 == -1 || (int) nF2 == -1) return; uint64 n1 = duoMatch.n; uint64 x = duoMatch.m64jStart, y = duoMatch.m64jEnd; double logBF = duoMatch.logBF; int same = 0, opp = 0; string phase; double lastPhased = cMs64j[x], maxPhasedGap = 0, lastHet = cMs64j[x], maxHetGap = 0; int hetCount = 0, snpCount = 0, numErr = 0; for (uint m64j = duoMatch.m64jStart; m64j <= duoMatch.m64jEnd; m64j++) { if (!maskSnps64j[m64j]) continue; uint64 m64cur = m64j/64; uint64 j = m64j&63; const uint64_masks &bits0 = genoBits[m64cur*N + n0]; const uint64_masks &bits1 = genoBits[m64cur*N + n1]; const uint64_masks &bitsF1 = genoBits[m64cur*N + nF1]; const uint64_masks &bitsF2 = genoBits[m64cur*N + nF2]; uint64 wrongBits = (bits0.is0 & bits1.is2) | (bits0.is2 & bits1.is0); if (wrongBits&(1ULL< 0.5) { char buf[20]; sprintf(buf, "[%.1fcM:%d/%d]", cM-lastPhased, hetCount, snpCount); phase += string(buf); } if (trioPhased&(1ULL< maxPhasedGap) maxPhasedGap = cM - lastPhased; lastPhased = cM; } else snpCount++; if ((~(bits0.is0|bits0.is2|bits0.is9))&(1ULL< maxHetGap) maxHetGap = cM - lastHet; lastHet = cM; hetCount++; } } double cM = cMs64j[y]; if (cM - lastPhased > maxPhasedGap) maxPhasedGap = cM - lastPhased; lastPhased = cM; if (cM - lastHet > maxHetGap) maxHetGap = cM - lastHet; lastHet = cM; const uint WINDOW = 20; double minLogBFwindow = 0, minLoc = 0; for (uint64 wStart = x; wStart+WINDOW <= y; wStart++) { if (!maskSnps64j[wStart]) continue; double logBFwindow = 0; for (uint64 m64j = wStart; m64j < wStart+WINDOW; m64j++) { const uint64_masks &bits1 = genoBits[m64j/64*N + n1]; uint geno1 = bgetGeno0123(bits1, m64j&63); if (memoLogBF[m64j][geno1] != MEMO_UNSET) logBFwindow += memoLogBF[m64j][geno1]; } if (logBFwindow < minLogBFwindow) { minLogBFwindow = logBFwindow; minLoc = cMs64j[wStart]; } } printf("n0=%-5d n1=%-5d (%s) BF= %.1f cM= %.1f (%.1f-%.1f):", (int) n0, (int) n1, Nref==0 ? indivs[n1].indivID.c_str() : "", logBF, cMs64j[y]-cMs64j[x], cMs64j[x], cMs64j[y]); cout << " (" << numErr << " errs) "; cout << same << "|" << opp; cout << " " << phase; cout << " max gap: " << maxPhasedGap; cout << " max ROH: " << maxHetGap; printf(" min window logBF: %.1f minLoc: %.1fcM", minLogBFwindow, minLoc); cout << endl; } void Eagle::checkTrioErrorRate(uint64 n0, uint64 nF1, uint64 nF2) const { if ((int) nF1 == -1) return; int numOppHom1 = 0, numOppHom2 = 0, numWrongHet = 0, snpCount = 0; for (uint m64j = 0; m64j < Mseg64*64; m64j++) { if (!maskSnps64j[m64j]) continue; snpCount++; uint64 m64cur = m64j/64; uint64 j = m64j&63; const uint64_masks &bits0 = genoBits[m64cur*N + n0]; const uint64_masks &bitsF1 = genoBits[m64cur*N + nF1]; const uint64_masks &bitsF2 = genoBits[m64cur*N + nF2]; uint64 oppHom1 = (bits0.is0 & bitsF1.is2) | (bits0.is2 & bitsF1.is0); uint64 oppHom2 = (bits0.is0 & bitsF2.is2) | (bits0.is2 & bitsF2.is0); uint64 wrongHet = ~(bits0.is0|bits0.is2|bits0.is9) & ((bitsF1.is0&bitsF2.is0) | (bitsF1.is2&bitsF2.is2)); if (oppHom1&(1ULL< topInds[2], vector topIndsLens[2], uint K) const { /* for (uint e = 0; e < 2; e++) { topInds[e] = vector (Mseg64 * K); topIndsLens[e] = vector (Mseg64); } uint *runStarts[2][2]; // [even/odd][max err]; lengths are N for (uint p = 0; p < 2; p++) for (uint e = 0; e < 2; e++) runStarts[p][e] = ALIGNED_MALLOC_UINTS(N); uint *runStartFreqs[2][2]; // [even/odd][max err]; lengths are Mseg64+1 (b/c m64+1 can go over) for (uint p = 0; p < 2; p++) for (uint e = 0; e < 2; e++) runStartFreqs[p][e] = ALIGNED_MALLOC_UINTS(Mseg64+1); // initialize "prev" p=1 for (uint e = 0; e < 2; e++) { const uint p = 1; memset(runStarts[p][e], 0, N*sizeof(runStarts[p][e][0])); // all runs start at 0 runStartFreqs[p][e][0] = N; memset(&runStartFreqs[p][e][1], 0, Mseg64*sizeof(runStarts[p][e][1])); } for (uint64 m64 = 0; m64 < Mseg64; m64++) { // initialize cur [p=(m64&1)] arrays const uint p = m64&1; for (uint e = 0; e < 2; e++) { memcpy(runStarts[p][e], runStarts[!p][e], N*sizeof(runStarts[p][e][0])); memset(runStartFreqs[p][e], 0, (Mseg64+1)*sizeof(runStartFreqs[p][e][0])); } uint64_masks bits0 = genoBits[m64*N + n0]; for (uint64 n1 = 0; n1 < N; n1++) { const uint64_masks &bits1 = genoBits[m64*N + n1]; uint64 wrongBits = (bits0.is0 & bits1.is2) | (bits0.is2 & bits1.is0); // update cur runStarts based on bit matches if (wrongBits) { if (wrongBits & (wrongBits-1)) // 2+ wrong => fail; move both starts forward runStarts[p][0][n1] = runStarts[p][1][n1] = m64+1; else { // 1 wrong => move 1-err start to 0-err start; fail 0-err runStarts[p][1][n1] = runStarts[p][0][n1]; runStarts[p][0][n1] = m64+1; } } // compute cur runStartFreqs based on (updated) cur runStarts for (uint e = 0; e < 2; e++) runStartFreqs[p][e][runStarts[p][e][n1]]++; } for (uint e = 0; e < 2; e++) for (uint s64 = 0; s64 <= m64; s64++) if ((runStartFreqs[p][e][s64] >= K && m64+1 == Mseg64) || // reached end (runStartFreqs[p][e][s64] < K && runStartFreqs[!p][e][s64] >= K)) { // all n1 s.t. runStarts[p][e][n1] == s64 are in top K starting from s64 // some n1 s.t. runStarts[!p][e][n1] == s64 are in top K starting from s64 uint allPos = 0, somePos = runStartFreqs[p][e][s64]; uint *topIndsChunk = &topInds[e][s64*K]; for (uint64 n1 = 0; n1 < N; n1++) { if (allPos < K && runStarts[p][e][n1] == s64) topIndsChunk[allPos++] = n1; else if (somePos < K && runStarts[!p][e][n1] == s64) topIndsChunk[somePos++] = n1; } topIndsLens[e][s64] = min(somePos, K); } } for (uint p = 0; p < 2; p++) for (uint e = 0; e < 2; e++) ALIGNED_FREE(runStartFreqs[p][e]); for (uint p = 0; p < 2; p++) for (uint e = 0; e < 2; e++) ALIGNED_FREE(runStarts[p][e]); */ for (uint e = 0; e < 2; e++) { topInds[e] = vector (Mseg64 * K); topIndsLens[e] = vector (Mseg64); } uint *runStarts[2]; // [even/odd]; lengths are N for (uint p = 0; p < 2; p++) runStarts[p] = ALIGNED_MALLOC_UINTS(N); uint *runStartFreqs[2]; // [even/odd]; lengths are Mseg64+1 (b/c m64+1 can go over) for (uint p = 0; p < 2; p++) runStartFreqs[p] = ALIGNED_MALLOC_UINTS(Mseg64+1); // initialize "prev" p=1 { const uint p = 1; memset(runStarts[p], 0, N*sizeof(runStarts[p][0])); // all runs start at 0 runStartFreqs[p][0] = N; memset(&runStartFreqs[p][1], 0, Mseg64*sizeof(runStarts[p][1])); } for (uint64 m64 = 0; m64 < Mseg64; m64++) { // initialize cur [p=(m64&1)] arrays const uint p = m64&1; { memcpy(runStarts[p], runStarts[!p], N*sizeof(runStarts[p][0])); memset(runStartFreqs[p], 0, (Mseg64+1)*sizeof(runStartFreqs[p][0])); } uint64_masks bits0 = genoBits[m64*N + n0]; for (uint64 n1 = 0; n1 < N; n1++) { const uint64_masks &bits1 = genoBits[m64*N + n1]; uint64 wrongBits = (bits0.is0 & bits1.is2) | (bits0.is2 & bits1.is0); // update cur runStarts based on bit matches if (wrongBits) { runStarts[p][n1] = m64+1; } // compute cur runStartFreqs based on (updated) cur runStarts runStartFreqs[p][runStarts[p][n1]]++; } for (uint s64 = 0; s64 <= m64; s64++) if ((runStartFreqs[p][s64] >= K && m64+1 == Mseg64) || // reached end (runStartFreqs[p][s64] < K && runStartFreqs[!p][s64] >= K)) { // all n1 s.t. runStarts[p][n1] == s64 are in top K starting from s64 // some n1 s.t. runStarts[!p][n1] == s64 are in top K starting from s64 uint allPos = 0, somePos = runStartFreqs[p][s64]; uint *topIndsChunk = &topInds[1][s64*K]; for (uint64 n1 = 0; n1 < N; n1++) { if (allPos < K && runStarts[p][n1] == s64) topIndsChunk[allPos++] = n1; else if (somePos < K && runStarts[!p][n1] == s64) topIndsChunk[somePos++] = n1; } topIndsLens[1][s64] = min(somePos, K); } } for (uint p = 0; p < 2; p++) ALIGNED_FREE(runStartFreqs[p]); for (uint p = 0; p < 2; p++) ALIGNED_FREE(runStarts[p]); } void Eagle::findLongDipHap(uint64 n0, vector topInds[2], vector topIndsLens[2], uint K, uint errStart=1) const { uint64 Nhaps = 2*(Nref==0 ? N : Nref); for (uint e = 0; e < 2; e++) { topInds[e] = vector (Mseg64 * K); topIndsLens[e] = vector (Mseg64); } uint *runStarts[2][2]; // [even/odd][max err]; lengths are Nhaps for (uint p = 0; p < 2; p++) for (uint e = 0; e < 2; e++) runStarts[p][e] = ALIGNED_MALLOC_UINTS(Nhaps); uint *runStartFreqs[2][2]; // [even/odd][max err]; lengths are Mseg64+1 (b/c m64+1 can go over) for (uint p = 0; p < 2; p++) for (uint e = 0; e < 2; e++) runStartFreqs[p][e] = ALIGNED_MALLOC_UINTS(Mseg64+1); // initialize "prev" p=1 for (uint e = 0; e < 2; e++) { const uint p = 1; memset(runStarts[p][e], 0, Nhaps*sizeof(runStarts[p][e][0])); // all runs start at 0 runStartFreqs[p][e][0] = Nhaps; memset(&runStartFreqs[p][e][1], 0, Mseg64*sizeof(runStarts[p][e][1])); } for (uint64 m64 = 0; m64 < Mseg64; m64++) { // initialize cur [p=(m64&1)] arrays const uint p = m64&1; for (uint e = 0; e < 2; e++) { memcpy(runStarts[p][e], runStarts[!p][e], Nhaps*sizeof(runStarts[p][e][0])); memset(runStartFreqs[p][e], 0, (Mseg64+1)*sizeof(runStartFreqs[p][e][0])); } uint64_masks bits0 = genoBits[m64*N + n0]; //uint *runStarts_p_0 = runStarts[p][0], *runStarts_p_1 = runStarts[p][1]; //uint *runStartFreqs_p_0 = runStartFreqs[p][0], *runStartFreqs_p_1 = runStartFreqs[p][1]; for (uint64 n1 = 0; n1 < Nhaps; n1++) { uint64 is1 = haploBits[m64*2*N + n1]; uint64 wrongBits = (bits0.is0 & is1) | (bits0.is2 & ~is1); // update cur runStarts based on bit matches if (wrongBits) { if (wrongBits & (wrongBits-1)) // 2+ wrong => fail; move both starts forward runStarts[p][0][n1] = runStarts[p][1][n1] = m64+1; else { // 1 wrong => move 1-err start to 0-err start; fail 0-err runStarts[p][1][n1] = runStarts[p][0][n1]; runStarts[p][0][n1] = m64+1; } } // compute cur runStartFreqs based on (updated) cur runStarts for (uint e = errStart; e < 2; e++) runStartFreqs[p][e][runStarts[p][e][n1]]++; /* if (wrongBits) { if (wrongBits & (wrongBits-1)) // 2+ wrong => fail; move both starts forward runStarts_p_0[n1] = runStarts_p_1[n1] = m64+1; else { // 1 wrong => move 1-err start to 0-err start; fail 0-err runStarts_p_1[n1] = runStarts_p_0[n1]; runStarts_p_0[n1] = m64+1; } } runStartFreqs_p_0[runStarts_p_0[n1]]++; runStartFreqs_p_1[runStarts_p_1[n1]]++; */ } for (uint e = errStart; e < 2; e++) for (uint s64 = 0; s64 <= m64; s64++) if ((runStartFreqs[p][e][s64] >= K && m64+1 == Mseg64) || // reached end (runStartFreqs[p][e][s64] < K && runStartFreqs[!p][e][s64] >= K)) { // all n1 s.t. runStarts[p][e][n1] == s64 are in top K starting from s64 // some n1 s.t. runStarts[!p][e][n1] == s64 are in top K starting from s64 uint allPos = 0, somePos = runStartFreqs[p][e][s64]; uint *topIndsChunk = &topInds[e][s64*K]; for (uint64 n1 = 0; n1 < Nhaps; n1++) { if (allPos < K && runStarts[p][e][n1] == s64) topIndsChunk[allPos++] = n1; else if (somePos < K && runStarts[!p][e][n1] == s64) topIndsChunk[somePos++] = n1; } topIndsLens[e][s64] = min(somePos, K); } } for (uint p = 0; p < 2; p++) for (uint e = 0; e < 2; e++) ALIGNED_FREE(runStartFreqs[p][e]); for (uint p = 0; p < 2; p++) for (uint e = 0; e < 2; e++) ALIGNED_FREE(runStarts[p][e]); } void Eagle::randomlyPhaseTmpHaploBitsT(uint64 n0) { // fast rng: last 16 bits of Marsaglia's MWC uint w = 521288629; for (uint i = 0; i < (n0 & 0xff); i++) w=18000*(w&65535)+(w>>16); uint64 n1 = (n0+1) % N; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) if (maskSnps64j[m64j]) { uint g = getGeno0123(m64j, n0); if (g == 3) g = getGeno0123(m64j, n1); // if missing, try filling with geno of next sample if (g == 3) g = 1; // if still missing, set to het if (g == 0) // nothing to do; tmpHaploBitsT is already cleared in init() ; else if (g == 2) { // set bit in both parental haplotypes for (uint64 q = 0; q <= 1ULL; q++) tmpHaploBitsT[(2*n0+q)*Mseg64 + (m64j/64)] |= 1ULL<<(m64j&63); } else { // set bit in random parental haplotype uint64 q = (w=18000*(w&65535)+(w>>16))&1; tmpHaploBitsT[(2*n0+q)*Mseg64 + (m64j/64)] |= 1ULL<<(m64j&63); } } } pair > Eagle::findLongDipMatches(uint64 n0, uint64 nF1, uint64 nF2) { if (!maskIndivs[n0]) return make_pair(0.0, vector ()); vector topInds[2]; // [max err]; lengths are Mseg64 * K vector topIndsLens[2]; // [max err]; lengths are Mseg64 const uint K = 10; Timer timer; findLongHalfIBD(n0, topInds, topIndsLens, K); double halfIBDtime = timer.update_time(); const double duoMatchThresh = log10(N*10), longMatchMin = 4.0; /***** COMPUTE BAYES FACTORS FOR LONG HALF-IBD REGIONS TO SELECT LONG MATCHES *****/ vector cumTopMatches; vector longMatches; double *workLogBF = ALIGNED_MALLOC_DOUBLES(Mseg64*64); double (*memoLogBF)[4] = (double (*)[4]) ALIGNED_MALLOC(Mseg64*64*4*sizeof(double)); // initialize memo lookup table of logBFs (n1 given n0) for (uint m64j = 0; m64j < Mseg64*64; m64j++) for (uint g = 0; g < 4; g++) memoLogBF[m64j][g] = MEMO_UNSET; for (uint64 m64 = 0; m64 < Mseg64; m64++) { std::set n1s; n1s.insert(n0); // delete previous matches that have ended: sort by greaterEnd and erase range at end sort(cumTopMatches.begin(), cumTopMatches.end(), Match::greaterEnd); for (uint k = 0; k < cumTopMatches.size(); k++) { if (m64 >= cumTopMatches[k].m64jEnd/64) { cumTopMatches.resize(k); break; } else n1s.insert(cumTopMatches[k].n); } // incorporate new matches for (uint e = 0; e < 2; e++) { for (uint k = 0; k < topIndsLens[e][m64]; k++) { uint n1 = topInds[e][m64*K + k]; if (maskIndivs[n1] && !n1s.count(n1)) { n1s.insert(n1); Match duoMatch = computeDuoLogBF(memoLogBF, workLogBF, n0, n1, m64); assert(maskSnps64j[duoMatch.m64jStart]); assert(maskSnps64j[duoMatch.m64jEnd]); if (duoMatch.logBF > duoMatchThresh && duoMatch.cMlenInit >= longMatchMin) { longMatches.push_back(duoMatch); #ifdef VERBOSE printMatch(n0, nF1, nF2, duoMatch, memoLogBF); #endif //retractMatch(n0, duoMatch, memoLogBF); cumTopMatches.push_back(duoMatch); } } } } } #ifdef VERBOSE cout << "num longMatches: " << longMatches.size() << endl; #endif /***** TRIM MATCHES UNTIL CONSISTENT; DETERMINE SAME/OPP ORIENTATION OF PAIRS *****/ const double longMatchMinTrim = 3.0, minSameOppDiff = 0.5, minMatchLenDiff = 0.5; sort(longMatches.begin(), longMatches.end(), Match::greaterLen); vector < vector > sameEdges(longMatches.size()), oppEdges(longMatches.size()); for (uint i = 0; i < longMatches.size(); i++) for (uint j = 0; j < i; j++) { // trim against previous (longer) matches double iLen = cMs64j[longMatches[i].m64jEnd] - cMs64j[longMatches[i].m64jStart]; double jLen = cMs64j[longMatches[j].m64jEnd] - cMs64j[longMatches[j].m64jStart]; // check if too short (after previous trimming) if (iLen < longMatchMinTrim || jLen < longMatchMinTrim) continue; Match &d1 = longMatches[iLen longestOpp + minSameOppDiff || (longestSame == fullOverlap && longestSame > longestOpp)) { sameEdges[i].push_back(j); sameEdges[j].push_back(i); orientation = 1; trimStart = (sameStart+sameEnd)/2; } else if (longestOpp > longestSame + minSameOppDiff || (longestOpp == fullOverlap && longestOpp > longestSame)) { oppEdges[i].push_back(j); oppEdges[j].push_back(i); orientation = -1; trimStart = (oppStart+oppEnd)/2; } if (orientation != 0) { // clearly same or opp // left end if (cMs64j[d1.m64jStart] < cMs64j[d2.m64jStart] - minMatchLenDiff) // d1 extends further trim(d2, d1, n0, orientation, trimStart, -1, workLogBF); // => trim d2 else trim(d1, d2, n0, orientation, trimStart, -1, workLogBF); // right end if (cMs64j[d1.m64jEnd] > cMs64j[d2.m64jEnd] + minMatchLenDiff) // d1 extends further trim(d2, d1, n0, orientation, trimStart, 1, workLogBF); // => trim d2 else trim(d1, d2, n0, orientation, trimStart, 1, workLogBF); #ifdef VERBOSE printf(" --> %.1f (%.1f-%.1f) --> %.1f (%.1f-%.1f)\n", cMs64j[d1.m64jEnd]-cMs64j[d1.m64jStart], cMs64j[d1.m64jStart], cMs64j[d1.m64jEnd], cMs64j[d2.m64jEnd]-cMs64j[d2.m64jStart], cMs64j[d2.m64jStart], cMs64j[d2.m64jEnd]); #endif } else { // can't determine same vs. opp => chop shorter so that matches no longer overlap if (d1.m64jStart < d2.m64jStart) d1.m64jEnd = d2.m64jStart-1; else d1.m64jStart = min(d2.m64jEnd+1ULL, Mseg64*64-1); #ifdef VERBOSE printf(" trimmed first to cM= %.1f (%.1f-%.1f)\n", cMs64j[d1.m64jEnd]-cMs64j[d1.m64jStart], cMs64j[d1.m64jStart], cMs64j[d1.m64jEnd]); #endif } } /***** REDUCE TO SET OF TRIMMED MATCHES WITH CONSISTENT SIGNS *****/ vector kept(longMatches.size()), checked(longMatches.size()); for (uint t = 0; t < longMatches.size(); t++) { // find longest remaining trimmed match uint i = 0; double longest = 0; for (uint iTest = 0; iTest < longMatches.size(); iTest++) if (!checked[iTest]) { const Match &d1 = longMatches[iTest]; if (cMs64j[d1.m64jEnd]-cMs64j[d1.m64jStart] > longest) { longest = cMs64j[d1.m64jEnd]-cMs64j[d1.m64jStart]; i = iTest; } } checked[i] = true; if (longest < longMatchMinTrim) break; if (longMatches[i].n == nF1 || longMatches[i].n == nF2) continue; kept[i] = true; #ifdef VERBOSE const Match &d1 = longMatches[i]; printf("cM= %.1f (%.1f-%.1f)\n", cMs64j[d1.m64jEnd]-cMs64j[d1.m64jStart], cMs64j[d1.m64jStart], cMs64j[d1.m64jEnd]); #endif vector signs = searchSigns(longMatches, sameEdges, oppEdges, kept); if (signs.empty()) { // inconsistent signs kept[i] = false; #ifdef VERBOSE cout << " WARNING: sign inconsistency: eliminating" << endl; #endif } } // compute final signs vector signs = searchSigns(longMatches, sameEdges, oppEdges, kept); #ifdef VERBOSE for (uint i = 0; i < longMatches.size(); i++) if (kept[i]) { const Match &d1 = longMatches[i]; printf("cM= %.1f (%.1f-%.1f): ", vector curMatch(1, d1); vector curSign(1, signs[i]); cMs64j[d1.m64jEnd]-cMs64j[d1.m64jStart], cMs64j[d1.m64jStart], cMs64j[d1.m64jEnd]); cout << computePhaseString(n0, nF1, nF2, curMatch, curSign, d1.m64jStart, cMs64j[d1.m64jEnd]+1e-9, false) << endl; cout << computePhaseString(n0, nF1, nF2, curMatch, curSign, d1.m64jStart, cMs64j[d1.m64jEnd]+1e-9, true) << endl; } cout << endl << endl << "phase: " << computePhaseString(n0, nF1, nF2, longMatches, signs, 0, 1e100, false) << endl; cout << endl << endl << "phase: " << computePhaseString(n0, nF1, nF2, longMatches, signs, 0, 1e100, true) << endl; #endif computePhaseConfs(n0, longMatches, signs, true); if ((int) nF1 != -1 && (int) nF2 != -1) { checkPhase(n0, nF1, nF2, 0.1); checkPhase(n0, nF1, nF2, 0.5); } ALIGNED_FREE(workLogBF); ALIGNED_FREE(memoLogBF); // record longest match length per seg64 for output vector cMs(Mseg64); bool cons = true; for (uint i = 0; i < longMatches.size(); i++) { if (!signs[i]) continue; uint64 start, end; if (cons) { start = std::max(longMatches[i].m64jStartCons, longMatches[i].m64jStart); end = std::min(longMatches[i].m64jEndCons, longMatches[i].m64jEnd); } else { start = longMatches[i].m64jStart; end = longMatches[i].m64jEnd; } for (uint64 m64 = (start+63)/64; m64 < end/64; m64++) cMs[m64] = std::max(cMs[m64], cMs64j[end]-cMs64j[start]); } return make_pair(halfIBDtime, cMs); } int Eagle::numDipHapWrongBits(uint64 m64, uint64 n0, uint64 n1hap) const { uint64 is1 = haploBits[m64*2*N + n1hap]; const uint64_masks &bits0 = genoBits[m64*N + n0]; uint64 wrongBits = (bits0.is0 & is1) | (bits0.is2 & ~is1); return popcount64(wrongBits); } int Eagle::firstDipHapGoodBit(uint64 m64, uint64 n0, uint64 n1hap) const { uint64 is1 = haploBits[m64*2*N + n1hap]; const uint64_masks &bits0 = genoBits[m64*N + n0]; uint64 wrongBits = (bits0.is0 & is1) | (bits0.is2 & ~is1); return wrongBits ? 64 - __builtin_clzll(wrongBits) : 0; // MSB } int Eagle::firstDipHapWrongBit(uint64 m64, uint64 n0, uint64 n1hap) const { if (m64 >= Mseg64) return 0; uint64 is1 = haploBits[m64*2*N + n1hap]; const uint64_masks &bits0 = genoBits[m64*N + n0]; uint64 wrongBits = (bits0.is0 & is1) | (bits0.is2 & ~is1); return popcount64((wrongBits & ~(wrongBits-1))-1); // LSB } struct DipHapSeg { uint n, start, end; DipHapSeg(uint _n, uint _start, uint _end) : n(_n), start(_start), end(_end) {} bool operator < (const DipHapSeg &seg2) const { return end-start > seg2.end-seg2.start || (end-start == seg2.end-seg2.start && n < seg2.n); } }; struct DipHapSegFarther { bool operator() (const DipHapSeg &seg1, const DipHapSeg &seg2) const { return seg1.end > seg2.end || (seg1.end == seg2.end && seg1.n < seg2.n); } }; int Eagle::countSE(const vector &phaseVec) { int ans = 0; for (uint h = 1; h < phaseVec.size(); h++) ans += (phaseVec[h] != phaseVec[h-1]); return ans; } int Eagle::countMajorSE(const vector &phaseVec) { vector phaseVec7; for (uint h7 = 0; h7+7 < phaseVec.size(); h7 += 7) { int votes = 0; for (uint h = h7; h < h7+7; h++) votes += phaseVec[h]; phaseVec7.push_back(votes >= 4); } return countSE(phaseVec7); } double Eagle::findLongHapMatches(uint64 n0, uint64 nF1, uint64 nF2, int iter) { if (!maskIndivs[n0]) return 0; if (Mseg64 < 3U) { cerr << "Too few SNP segments for analysis" << endl; exit(1); } uint seed = n0; // for rand_r() vector topInds[2]; // [max err]; lengths are Mseg64 * K vector topIndsLens[2]; // [max err]; lengths are Mseg64 const uint K = 20; Timer timer; findLongDipHap(n0, topInds, topIndsLens, K); double hapTime = timer.update_time(); /* // VISUALIZE RESULTS for (uint64 m64 = 0; m64 < Mseg64; m64++) { cout << "m64 = " << m64 << endl; int m64xMin = std::max(0, (int) m64-5); int m64xMax = std::min(m64+11, Mseg64); for (int m64x = m64xMin; m64x < m64xMax; m64x++) { int numSnps = 0; for (int j = 0; j < 64; j++) numSnps += maskSnps64j[m64x*64+j]; printf("%2d ", numSnps); } cout << endl; for (uint e = 0; e < 2; e++) { cout << "e = " << e << endl; for (uint k = 0; k < topIndsLens[e][m64]; k++) { uint64 n1hap = topInds[e][m64*K + k]; for (int m64x = m64xMin; m64x < m64xMax; m64x++) { printf("%2d ", numDipHapWrongBits(m64x, n0, n1hap)); } cout << " (" << n1hap << ")" << endl; } } } */ const int maxWrongBits = 3; std::set longDipHapSegs[Mseg64]; const uint maxSegs = (iter == 2 ? 10 : 20); // TODO: increase accuracy with 20? vector lastEnd64(2*N); for (uint64 m64 = 0; m64 < Mseg64; m64++) { //if ((int) nF1 != -1) cout << "m64 = " << m64 << endl; for (uint e = 0; e < 2; e++) { //if ((int) nF1 != -1) cout << "e = " << e << endl; for (uint k = 0; k < topIndsLens[e][m64]; k++) { uint64 n1hap = topInds[e][m64*K + k]; if (!maskIndivs[n1hap/2]) continue; if (n1hap/2 == n0) continue; if (lastEnd64[n1hap] > m64) continue; // find start uint segStart = m64; while ((int) segStart >= 0 && numDipHapWrongBits(segStart, n0, n1hap) <= maxWrongBits) segStart--; segStart++; // find end uint segEnd = m64; while (segEnd < Mseg64 && numDipHapWrongBits(segEnd, n0, n1hap) <= maxWrongBits) segEnd++; //checkHapPhase1(n0, nF1, nF2, n1hap, segStart, segEnd); lastEnd64[n1hap] = segEnd; for (uint64 m64x = segStart; m64x < segEnd; m64x++) { longDipHapSegs[m64x].insert(DipHapSeg(n1hap, segStart, segEnd)); if (longDipHapSegs[m64x].size() > maxSegs) longDipHapSegs[m64x].erase(--longDipHapSegs[m64x].end()); } } } } /* for (uint64 m64 = 0; m64 < Mseg64; m64++) { cout << "m64 = " << m64 << endl; for (std::set ::iterator it = longDipHapSegs[m64].begin(); it != longDipHapSegs[m64].end(); it++) { printf("%2d: %2d-%2d (%d)\n", it->end-it->start, it->start, it->end, it->n); } } */ uint64 curHaploBitsT[Mseg64]; const uint64 side = 1; //const uint numHapHaps = 5; vector errBests(Mseg64); vector < pair > n12hapBests(Mseg64); for (uint64 m64 = 0+side; m64+side < Mseg64; m64++) { /* if ((int) nF1 != -1) { cout << "m64 = " << m64 << endl; for (uint i = 0; i < numHapHaps; i++) printf(" "); } checkHapPhase(n0, nF1, nF2, haploBitsT + 2*n0*Mseg64, m64, side); */ vector < pair > bestHitPairs; uint minWrongBits = 99; for (std::set ::iterator it = longDipHapSegs[m64].begin(); it != longDipHapSegs[m64].end(); it++) { // for each dip-hap long match uint64 n1hap = it->n; // ---------- SLOW ---------- /* std::set < pair > wrongBitsHaps; uint worstInSet = 1<<30; for (uint64 n2hap = 0; n2hap < 2*N; n2hap++) { if (!maskIndivs[n2hap/2]) continue; if (n2hap/2 == n0) continue; if (n2hap/2 == n1hap/2) continue; // opp haps of same indiv uint numWrongBits = 0; for (uint64 m64x = m64-side; m64x <= m64+side; m64x++) { uint64 n1is1 = haploBits[m64x*2*N + n1hap]; uint64 n2is1 = haploBits[m64x*2*N + n2hap]; const uint64_masks &bits0 = genoBits[m64x*N + n0]; uint64 wrongBits = (bits0.is0 & (n1is1 | n2is1)) | (bits0.is2 & ~(n1is1 & n2is1)) | (~(bits0.is0|bits0.is2|bits0.is9) & ~(n1is1 ^ n2is1)); numWrongBits += popcount64(wrongBits); } if (numWrongBits < worstInSet) { wrongBitsHaps.insert(make_pair(numWrongBits, n2hap)); if (wrongBitsHaps.size() > numHapHaps) { wrongBitsHaps.erase(--wrongBitsHaps.end()); worstInSet = (--wrongBitsHaps.end())->first; } } } for (std::set < pair >::iterator itH = wrongBitsHaps.begin(); itH != wrongBitsHaps.end(); itH++) printf("%2d ", itH->first); //printf("%2d (%d)\n", itH->first, itH->second); */ // ---------- FAST ---------- if ((int) nF1 != -1) printf("| "); for (uint64 m64x = m64-side; m64x <= m64+side; m64x++) { curHaploBitsT[m64x] = 0; for (uint64 j = 0; j < 64; j++) { uint64 m64j = m64x*64+j, bit = 0; if (maskSnps64j[m64j]) { uint g0 = getGeno0123(m64j, n0); if (g0 == 0 || g0 == 3) bit = 0; else if (g0 == 2) bit = 1; else bit = 1-((haploBitsT[n1hap*Mseg64 + m64x]>>j)&1); } curHaploBitsT[m64x] |= bit<second*/n1hap*Mseg64, m64, side); // n1hap is better! } } if (bestHitPairs.empty()) { // keep current phasing errBests[m64] = 99; n12hapBests[m64] = make_pair((uint) n0*2, (uint) n0*2+1); } else { errBests[m64] = minWrongBits; n12hapBests[m64] = bestHitPairs[rand_r(&seed) % bestHitPairs.size()]; } } if ((int) nF1 != -1) cout << endl << "2nd-iter phase:" << endl; int sign = 1; vector signs(Mseg64); uint64 prevInd = side; vector phaseVec; for (uint64 m64 = 0; m64 < Mseg64; m64++) { uint64 curInd = min(max(m64, side), Mseg64-1-side); /*int minWrongBits = 99; for (int diff = - (int) side; diff <= (int) side; diff++) { uint64 m64d = m64+diff; if (m64d >= Mseg64) continue; uint64 n1is1 = haploBitsT[n12hapBests[m64d].first*Mseg64 + m64]; uint64 n2is1 = haploBitsT[n12hapBests[m64d].second*Mseg64 + m64]; const uint64_masks &bits0 = genoBits[m64*N + n0]; uint64 wrongBits = (bits0.is0 & (n1is1 | n2is1)) | (bits0.is2 & ~(n1is1 & n2is1)) | (~(bits0.is0|bits0.is2|bits0.is9) & ~(n1is1 ^ n2is1)); int numWrongBits = popcount64(wrongBits); if (numWrongBits < minWrongBits) { minWrongBits = numWrongBits; curInd = m64d; } } */ // best of 3 neighbors doesn't help? vector < pair > offsetMults; if (m64 > side && m64 < Mseg64-side) { // update sign uint64 n1prev = n12hapBests[prevInd].first, n2prev = n12hapBests[prevInd].second; uint64 n1cur = n12hapBests[curInd].first, n2cur = n12hapBests[curInd].second; for (uint64 m64j = (m64-side)*64; m64j < (m64+side)*64; m64j++) { uint h1prev = (haploBitsT[n1prev*Mseg64 + (m64j/64)]>>(m64j&63))&1; uint h2prev = (haploBitsT[n2prev*Mseg64 + (m64j/64)]>>(m64j&63))&1; uint h1cur = (haploBitsT[n1cur*Mseg64 + (m64j/64)]>>(m64j&63))&1; uint h2cur = (haploBitsT[n2cur*Mseg64 + (m64j/64)]>>(m64j&63))&1; if (h1prev + h2prev == 1 && h1cur + h2cur == 1) { int offset = abs((int) (m64j - m64*64)); offsetMults.push_back(make_pair(offset, h1prev == h1cur ? 1 : -1)); } } } if (!offsetMults.empty()) { sort(offsetMults.begin(), offsetMults.end()); int totVotes = min((int) offsetMults.size(), 5), sameVotes = 0; for (int k = 0; k < totVotes; k++) if (offsetMults[k].second == 1) sameVotes++; if (sameVotes < (totVotes+1)/2) sign *= -1; // swap sign } signs[m64] = sign; uint64 n1hap = n12hapBests[curInd].first, n2hap = n12hapBests[curInd].second; computeSegPhaseConfs(n0, n1hap, n2hap, sign, m64, errBests[curInd]); prevInd = curInd; } if ((int) nF1 != -1) { for (uint64 m64 = 0; m64 < Mseg64; m64++) { uint64 curInd = min(max(m64, side), Mseg64-1-side); char usedInd = ' '; if (curInd > m64) usedInd = 'v'; else if (curInd < m64) usedInd = '^'; uint64 n1hap = n12hapBests[curInd].first, n2hap = n12hapBests[curInd].second; int sign = signs[m64]; printf("m64 = %2d err: %2d %c (%6d,%6d) ", (int) m64, (int) errBests[curInd], usedInd, (int) (sign==1 ? n1hap : n2hap), (int) (sign==1 ? n2hap : n1hap)); //cout << closestOffset << endl; vector phaseSeg = checkSegPhase(n0, nF1, nF2, n1hap, n2hap, sign, m64); phaseVec.insert(phaseVec.end(), phaseSeg.begin(), phaseSeg.end()); } printf("# major SE: %2d # tot SE: %2d / %d\n", countMajorSE(phaseVec), countSE(phaseVec), (int) phaseVec.size()-1); fflush(stdout); } /* for (uint64 n1hap = 2*n0; n1hap <= 2*n0+1; n1hap++) { cout << "n0 = " << n0 << "; n1hap = " << n1hap << ": "; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) cout << (int) phaseConfs2[n1hap*Mseg64*64 + m64j] << " "; cout << endl; } */ return hapTime; } inline uint64 pairToULL(pair p) { return ((uint64) p.first<<32ULL)|p.second; } inline pair ullToPair(uint64 ull) { return make_pair((uint) (ull>>32ULL), (uint) ull); } bool Eagle::updateHelper(std::unordered_map &dpTab, uint &dpBestScore, pair cur, pair next, uint score) const { #ifdef RDTSC_TIMING uint64 tscStart = Timer::rdtsc(); #endif /* ---- SLOW ---- if (dpTab.find(pairToULL(next)) == dpTab.end() || dpTab[pairToULL(next)].score > score) dpTab[pairToULL(next)] = DPState(score, cur); */ if (score > dpBestScore + 2*switchCost) return false; DPState &nextState = dpTab[pairToULL(next)]; if (nextState.score == 0 || nextState.score > score) { nextState.score = score; nextState.from = cur; } if (score < dpBestScore) dpBestScore = score; #ifdef RDTSC_TIMING dpUpdateTicks += Timer::rdtsc() - tscStart; dpUpdateCalls++; #endif return true; } uint Eagle::computeStaticScore(uint n0, uint n1hap, uint n2hap, uint64 m64) const { #ifdef RDTSC_TIMING uint64 tscStart = Timer::rdtsc(); #endif uint64 n1is1 = haploBitsT[n1hap*Mseg64 + m64]; uint64 n2is1 = haploBitsT[n2hap*Mseg64 + m64]; const uint64_masks &bits0 = genoBits[m64*N + n0]; uint64 wrongHomBits = (bits0.is0 & (n1is1 | n2is1)) | (bits0.is2 & ~(n1is1 & n2is1)); uint64 wrongHetBits = (~(bits0.is0|bits0.is2|bits0.is9) & ~(n1is1 ^ n2is1)); uint score = popcount64(wrongHomBits)*homErrCost + popcount64(wrongHetBits)*hetErrCost + segConfs[n1hap*Mseg64+m64] / 5 + segConfs[n2hap*Mseg64+m64] / 5; #ifdef RDTSC_TIMING dpStaticTicks += Timer::rdtsc() - tscStart; #endif return score; } uint Eagle::computeSwitchScore(uint n0, uint n1hap, uint n2hapA, uint n2hapB, uint64 m64) const { #ifdef RDTSC_TIMING uint64 tscStart = Timer::rdtsc(); #endif uint64 n1is1 = haploBitsT[n1hap*Mseg64 + m64]; uint64 n2is1A = haploBitsT[n2hapA*Mseg64 + m64]; uint64 n2is1B = haploBitsT[n2hapB*Mseg64 + m64]; const uint64_masks &bits0 = genoBits[m64*N + n0]; uint64 wrongHomBitsA = (bits0.is0 & (n1is1 | n2is1A)) | (bits0.is2 & ~(n1is1 & n2is1A)); uint64 wrongHetBitsA = (~(bits0.is0|bits0.is2|bits0.is9) & ~(n1is1 ^ n2is1A)); uint64 wrongHomBitsB = (bits0.is0 & (n1is1 | n2is1B)) | (bits0.is2 & ~(n1is1 & n2is1B)); uint64 wrongHetBitsB = (~(bits0.is0|bits0.is2|bits0.is9) & ~(n1is1 ^ n2is1B)); /* ---- SLOW ---- uint score = popcount64(wrongHomBitsB)*homErrCost + popcount64(wrongHetBitsB)*hetErrCost; uint minScore = score; for (uint64 k = 0; k < 64; k++) { score += ((wrongHomBitsA>>k)&1)*homErrCost + ((wrongHetBitsA>>k)&1)*hetErrCost - ((wrongHomBitsB>>k)&1)*homErrCost - ((wrongHetBitsB>>k)&1)*hetErrCost; if (score < minScore) minScore = score; } assert(score == popcount64(wrongHomBitsA)*homErrCost + popcount64(wrongHetBitsA)*hetErrCost); */ uint64 wrongBitsA = wrongHomBitsA | wrongHetBitsA; uint64 wrongBitsB = wrongHomBitsB | wrongHetBitsB; uint64 hetBits = ~(bits0.is0|bits0.is2|bits0.is9); uint mask = (1U<>b))&mask)<<(switchScoreLutBits+switchScoreLutBits)) | ((((uint) (wrongBitsB>>b))&mask)<>b))&mask)); bestScore = min(bestScore, curScore + switchScoreLut[lutInd][0]); curScore += switchScoreLut[lutInd][1]; } curScore = bestScore + segConfs[n1hap*Mseg64+m64] / 5 + segConfs[n2hapA*Mseg64+m64] / 5 + segConfs[n2hapB*Mseg64+m64] / 5; // additional penalty for errors in (n1hap,n2hapB) at end of m64 curScore += ((wrongBitsB & 0xf000000000000000) != 0) + ((wrongBitsB & 0xff00000000000000) != 0) + ((wrongBitsB & 0xffff000000000000) != 0); if (m64+1 < Mseg64) { // additional penalty for errors in (n1hap,n2hapB) at start of m64+1 n1is1 = haploBitsT[n1hap*Mseg64 + m64+1]; n2is1B = haploBitsT[n2hapB*Mseg64 + m64+1]; const uint64_masks &bits0next = genoBits[(m64+1)*N + n0]; wrongBitsB = (bits0next.is0 & (n1is1 | n2is1B)) | (bits0next.is2 & ~(n1is1 & n2is1B)) | (~(bits0next.is0|bits0next.is2|bits0next.is9) & ~(n1is1 ^ n2is1B)); curScore += ((wrongBitsB & 0xf) != 0) + ((wrongBitsB & 0xff) != 0) + ((wrongBitsB & 0xffff) != 0); } #ifdef RDTSC_TIMING dpSwitchTicks += Timer::rdtsc() - tscStart; #endif return curScore; } void Eagle::updateTable(std::unordered_map dpTable[], uint dpBestScores[], uint64 m64, uint64 dist, uint n0, uint n1hapA, uint n2hapA, uint n1hapB, uint n2hapB, uint score) const { if (n1hapB/2 == n2hapB/2) return; // disallow copying both haps from an indiv if ((n1hapA == n1hapB && n2hapA == n2hapB) || (n1hapA != n1hapB && n2hapA != n2hapB)) score += computeStaticScore(n0, n1hapB, n2hapB, m64); else { if (n1hapA == n1hapB) score += computeSwitchScore(n0, n1hapA, n2hapA, n2hapB, m64); else /* (n2hapA == n2hapB) */ score += computeSwitchScore(n0, n2hapA, n1hapA, n1hapB, m64); } if (!updateHelper(dpTable[m64], dpBestScores[m64], make_pair(n1hapA, n2hapA), make_pair(n1hapB, n2hapB), score)) return; for (uint64 m64x = m64+1; m64x < m64+dist && m64x < Mseg64; m64x++) { score += computeStaticScore(n0, n1hapB, n2hapB, m64x); if (!updateHelper(dpTable[m64x], dpBestScores[m64x], make_pair(n1hapB, n2hapB), make_pair(n1hapB, n2hapB), score)) return; } } void updateErrHits(vector &hitVec, uint64 &bestErrLoc, uint64 errLoc, uint n2hap) { if (errLoc > bestErrLoc) { bestErrLoc = errLoc; hitVec.resize(1, n2hap); } else if (errLoc == bestErrLoc) hitVec.push_back(n2hap); } void Eagle::safeInsert(std::set &refHapSet, uint n1hap, uint n0) const { if (!maskIndivs[n1hap/2]) return; if (n1hap/2 == n0) return; refHapSet.insert(n1hap); } vector < pair > Eagle::findGoodSegs(uint64 n0, uint64 nF1, uint64 nF2, uint64 n1hap) const { vector < pair > goodSegs; uint64 firstGood = 0; for (uint64 m64 = 0; m64 < Mseg64; m64++) { uint64_masks bits0 = genoBits[m64*N + n0]; uint64_masks bitsF1 = genoBits[m64*N + nF1]; uint64_masks bitsF2 = genoBits[m64*N + nF2]; uint64 is0 = bits0.is0 | (~(bits0.is0|bits0.is2|bits0.is9) & ((bitsF1.is0 & ~bitsF2.is0) | (~bitsF1.is2 & bitsF2.is2))); uint64 is2 = bits0.is2 | (~(bits0.is0|bits0.is2|bits0.is9) & ((bitsF1.is2 & ~bitsF2.is2) | (~bitsF1.is0 & bitsF2.is0))); uint64 is1 = haploBits[m64*2*N + n1hap]; uint64 wrongBits = (is0 & is1) | (is2 & ~is1); if (wrongBits) { uint64 firstWrong = m64*64 + popcount64((wrongBits & ~(wrongBits-1))-1); if (firstWrong - firstGood >= 64) goodSegs.push_back(make_pair(firstGood, firstWrong)); firstGood = m64*64 + (wrongBits ? 64 - __builtin_clzll(wrongBits) : 0); } } goodSegs.push_back(make_pair(firstGood, Mseg64*64)); return goodSegs; } void Eagle::updateFarHaps(vector < pair > &farHaps, uint n1hap, uint m64jStart, uint m64jEnd) const { const double cMminLen = 1.0; if (cMs64j[m64jEnd] - cMs64j[m64jStart] < cMminLen) return; //cout << m64jStart/64 << "." << (m64jStart&63) << "-" << m64jEnd/64 << "." << (m64jEnd&63) << " "; if (m64jEnd > farHaps[m64jStart].first) { farHaps[m64jStart].first = m64jEnd; farHaps[m64jStart].second = n1hap; } } double Eagle::runHMM(uint64 n0, uint64 nF1, uint64 nF2, int iter, uint beamWidth, uint maxHapStates) { if (!maskIndivs[n0]) return 0; if (Mseg64 < 3U) { cerr << "Too few SNP segments for analysis" << endl; exit(1); } if (Mseg64 > 50000U) { cerr << "Too many SNP segments for analysis: " << Mseg64 << " (max = 50000)" << endl; exit(1); } uint seed = n0; // for rand_r() /***** FIND LONGEST DIP-HAP MATCHES *****/ #ifdef RDTSC_TIMING uint64 tscStart = Timer::rdtsc(); #endif vector topInds[2]; // [max err]; lengths are Mseg64 * K vector topIndsLens[2]; // [max err]; lengths are Mseg64 const uint K = 100; Timer timer; findLongDipHap(n0, topInds, topIndsLens, K, iter >= 4 ? 0 : 1); double hapTime = timer.update_time(); #ifdef RDTSC_TIMING diphapTicks += Timer::rdtsc() - tscStart; #endif /* // VISUALIZE RESULTS for (uint64 m64 = 0; m64 < Mseg64; m64++) { cout << "m64 = " << m64 << endl; int m64xMin = std::max(0, (int) m64-5); int m64xMax = std::min(m64+11, Mseg64); for (int m64x = m64xMin; m64x < m64xMax; m64x++) { int numSnps = 0; for (int j = 0; j < 64; j++) numSnps += maskSnps64j[m64x*64+j]; printf("%2d ", numSnps); } cout << endl; for (uint e = 0; e < 2; e++) { cout << "e = " << e << endl; for (uint k = 0; k < topIndsLens[e][m64]; k++) { uint64 n1hap = topInds[e][m64*K + k]; for (int m64x = m64xMin; m64x < m64xMax; m64x++) { printf("%2d ", numDipHapWrongBits(m64x, n0, n1hap)); } cout << " (" << n1hap << ")" << endl; } } } */ /***** EXTEND DIP-HAP MATCHES TO OBTAIN LONGEST MATCHES COVERING EACH SEG *****/ #ifdef RDTSC_TIMING uint64 tscExtStart = Timer::rdtsc(); #endif const int maxWrongBits = 1; std::set longDipHapSegsForward[Mseg64]; const uint maxSegs = std::max(50U, maxHapStates/4); vector lastEnd64(2*N); for (uint64 m64 = 0; m64 < Mseg64; m64++) { #ifdef DETAILS if ((int) nF1 != -1) cout << "m64 = " << m64 << endl; #endif for (uint e = 0; e < 2; e++) { #ifdef DETAILS if ((int) nF1 != -1) cout << "e = " << e << endl; #endif for (uint k = 0; k < topIndsLens[e][m64]; k++) { uint64 n1hap = topInds[e][m64*K + k]; if (!maskIndivs[n1hap/2]) continue; if (n1hap/2 == n0) continue; if (lastEnd64[n1hap] > m64) continue; // find start uint segStart = m64; while ((int) segStart >= 0 && numDipHapWrongBits(segStart, n0, n1hap) <= maxWrongBits) segStart--; if ((int) segStart < 0) segStart = 0; //segStart++; NEW: start one chunk before! uint segStart64j = segStart*64 + firstDipHapGoodBit(segStart, n0, n1hap); // find end uint segEnd = m64+1; while (segEnd < Mseg64 && numDipHapWrongBits(segEnd, n0, n1hap) <= maxWrongBits) segEnd++; uint segEnd64j = segEnd*64 + firstDipHapWrongBit(segEnd, n0, n1hap); #ifdef DETAILS checkHapPhase1(n0, nF1, nF2, n1hap, segStart, segEnd); #endif lastEnd64[n1hap] = segEnd; for (uint64 m64x = segStart; m64x+1 /* extend forward */ < segEnd; m64x++) { longDipHapSegsForward[m64x].insert(DipHapSeg(n1hap, segStart64j, segEnd64j)); if (longDipHapSegsForward[m64x].size() > maxSegs) longDipHapSegsForward[m64x].erase(--longDipHapSegsForward[m64x].end()); } } } } #ifdef RDTSC_TIMING extTicks += Timer::rdtsc() - tscExtStart; #endif /***** COMPILE SET OF REFERENCE HAPLOTYPES FOR EACH TRANSITIONS AT EACH SEG *****/ std::set refHapSets[Mseg64]; vector refHapVecs[Mseg64]; vector < pair > refHapOppPairs[Mseg64]; const uint numTopShort = maxHapStates/4, numTopLong = maxHapStates/4, minRefHaps = maxHapStates/4; const uint64 side = 1; uint64 curHaploBitsT[Mseg64]; for (uint64 m64 = 0; m64 < Mseg64; m64++) { uint cumTop = 0; // dip-hap hits starting at m64 and m64+1 for (uint64 m64x = m64; m64x < m64+2 && m64x < Mseg64; m64x++) for (uint e = 1; e != -1U; e--) { cumTop += numTopShort / 4; for (uint k = 0; k < topIndsLens[e][m64] && refHapSets[m64].size() < cumTop; k++) { uint n1hap = topInds[e][m64*K + k]; if (segConfs[n1hap*Mseg64+m64] < 5 && (m64+1==Mseg64 || segConfs[n1hap*Mseg64+m64+1] < 5)) safeInsert(refHapSets[m64], n1hap, n0); } } // long dip hap covering m64, m64+1 cumTop += numTopLong; for (std::set ::iterator it = longDipHapSegsForward[m64].begin(); it != longDipHapSegsForward[m64].end() && refHapSets[m64].size() < cumTop; it++) { uint n1hap = it->n; if (segConfs[n1hap*Mseg64+m64] < 5 && (m64+1==Mseg64 || segConfs[n1hap*Mseg64+m64+1] < 5)) safeInsert(refHapSets[m64], n1hap, n0); } #ifdef DETAILS cout << "m64 = " << m64 << ": " << refHapSets[m64].size() << endl; #endif /***** AUGMENT REFERENCE HAPLOTYPE SET WITH COMPLEMENTS *****/ vector refHapVec(refHapSets[m64].begin(), refHapSets[m64].end()); if (m64+1 >= side && m64+1+side < Mseg64) { // look up m64+1 in LSH for (uint k1 = 0; k1 < refHapVec.size(); k1++) { uint64 n1hap = refHapVec[k1]; // require no err on right part of m64 uint64 m64errMaskMax = 1ULL<<((uint64) rand_r(&seed)&63); for (uint64 m64x = m64+1-side; m64x <= m64+1+side; m64x++) { curHaploBitsT[m64x] = 0; for (uint64 j = 0; j < 64; j++) { uint64 m64j = m64x*64+j, bit = 0; if (maskSnps64j[m64j]) { uint g0 = getGeno0123(m64j, n0); if (g0 == 0 || g0 == 3) bit = 0; else if (g0 == 2) bit = 1; else bit = 1-((haploBitsT[n1hap*Mseg64 + m64x]>>j)&1); } curHaploBitsT[m64x] |= bit< hits[3]; // n2haps with 1st err at [1]: m64+1; [2]: m64+2 (allow 1@m64+1) vector bestErrLocs(3); // farthest error locations seen for (uint h = 0; h < hashLookups[m64+1].size(); h++) { // for each hashing uint numHits; #ifdef RDTSC_TIMING uint64 tscLshStart = Timer::rdtsc(); #endif const uint *lenHapInds = hashLookups[m64+1][h].query(computeHash(curHaploBitsT, hashBits[m64+1][h])); #ifdef RDTSC_TIMING lshTicks += Timer::rdtsc() - tscLshStart; uint64 tscLshCheckStart = Timer::rdtsc(); #endif if (lenHapInds == NULL) numHits = 0; else numHits = lenHapInds[0]; for (uint k = 1; k <= numHits; k++) { uint64 n2hap = lenHapInds[k]; if (!maskIndivs[n2hap/2]) continue; if (n2hap/2 == n0) continue; if (n2hap/2 == n1hap/2) continue; // opp haps of same indiv int errFail = 0, err1 = 0; // err1: 1 err in m64+1 uint64 err1Loc = 0, err2Loc = 0; for (uint64 m64x = m64; m64x <= m64+2; m64x++) { uint64 n1is1 = haploBitsT[n1hap*Mseg64 + m64x]; uint64 n2is1 = haploBitsT[n2hap*Mseg64 + m64x]; const uint64_masks &bits0 = genoBits[m64x*N + n0]; uint64 wrongBits = (bits0.is0 & (n1is1 | n2is1)) | (bits0.is2 & ~(n1is1 & n2is1)) | (~(bits0.is0|bits0.is2|bits0.is9) & ~(n1is1 ^ n2is1)); if (m64x == m64) { if (wrongBits >= m64errMaskMax) { // not perfect in right part of m64 errFail = 2; // fail break; } } else if (m64x == m64+1) { if (wrongBits & (wrongBits-1)) { // 2+ err errFail = 1; // fail err1Loc = (wrongBits & ~(wrongBits-1))-1; // LSB-1: big is good break; } else if (wrongBits != 0) err1 = 1; } else { err2Loc = (wrongBits & ~(wrongBits-1))-1; // LSB-1: big is good } } if (!errFail) { // did not fail if (err2Loc != 0) err2Loc -= err1; // slightly worse to have 1 error in m64+1 updateErrHits(hits[2], bestErrLocs[2], err2Loc, n2hap); } else if (errFail == 1) updateErrHits(hits[1], bestErrLocs[1], err1Loc, n2hap); } #ifdef RDTSC_TIMING lshCheckTicks += Timer::rdtsc() - tscLshCheckStart; #endif if (bestErrLocs[2] == -1ULL) break; // early exit if perfect match found } //checkHapPhase1(n0, nF1, nF2, refHapVec[k1], m64, min(m64+3, Mseg64)); uint64 n2hap = -1ULL; for (int xLoc = 2; xLoc >= 0; xLoc--) if (!hits[xLoc].empty()) { n2hap = hits[xLoc][rand_r(&seed) % hits[xLoc].size()]; //cout << "2." << popcount64(bestErrLocs[2]) << ": "; break; } if (n2hap != -1ULL) { #ifdef DETAILS checkHapPhase1(n0, nF1, nF2, n2hap, m64, min(m64+3, Mseg64)); #endif safeInsert(refHapSets[m64], n2hap, n0); refHapOppPairs[m64].push_back(make_pair((uint) n1hap, (uint) n2hap)); } } } // make sure at least some ref haps are chosen: relax earlier conf filter for (std::set ::iterator it = longDipHapSegsForward[m64].begin(); it != longDipHapSegsForward[m64].end() && refHapSets[m64].size() < minRefHaps/2; it++) safeInsert(refHapSets[m64], it->n, n0); for (uint64 m64x = m64; m64x < m64+2 && m64x < Mseg64; m64x++) for (uint e = 0; e < 2; e++) for (uint k = 0; k < topIndsLens[e][m64] && refHapSets[m64].size() < minRefHaps; k++) safeInsert(refHapSets[m64], topInds[e][m64*K + k], n0); refHapVecs[m64] = vector (refHapSets[m64].begin(), refHapSets[m64].end()); //cout << "m64 = " << m64 << ": " << refHapSets[m64].size() << endl; } #ifdef DETAILS // TEMPORARY: CHECKING TRIO HAP - REF HAP MATCHES std::set longTrioHapHapSegsForward[2][Mseg64]; uint longestTrioHaps[2][Mseg64]; memset(&longestTrioHaps[0][0], 0, 2*Mseg64*sizeof(longestTrioHaps[0][0])); for (int p = 0; p < 2; p++) { cout << "Checking trio hap - ref hap matches" << endl; for (uint64 n1hap = 0; n1hap < 2*N; n1hap++) { if (n1hap % 10000 == 0) cout << "at " << n1hap << endl; if (!maskIndivs[n1hap/2]) continue; if (n1hap/2 == n0) continue; vector < pair > goodSegs = findGoodSegs(n0, p==0?nF1:nF2, p==0?nF2:nF1, n1hap); for (uint s = 0; s < goodSegs.size(); s++) for (uint64 m64x = (goodSegs[s].first + 32) / 64; m64x < (goodSegs[s].second + 32) / 64; m64x++) { if (goodSegs[s].second - goodSegs[s].first > longestTrioHaps[p][m64x]) { longTrioHapHapSegsForward[p][m64x].insert(DipHapSeg(n1hap, goodSegs[s].first, goodSegs[s].second)); if (longTrioHapHapSegsForward[p][m64x].size() > 10) { longTrioHapHapSegsForward[p][m64x].erase(--longTrioHapHapSegsForward[p][m64x].end()); longestTrioHaps[p][m64x] = ((--longTrioHapHapSegsForward[p][m64x].end())->end) - ((--longTrioHapHapSegsForward[p][m64x].end())->start); } } } } } #endif /***** RUN HMM (BEAM SEARCH) *****/ std::unordered_map dpTable[Mseg64]; uint dpBestScores[Mseg64]; for (uint64 m64 = 0; m64 < Mseg64; m64++) dpBestScores[m64] = 1<<30; pair finalHapPairs[Mseg64]; vector bestPathScores(Mseg64); #ifdef RDTSC_TIMING uint64 tscDpStart = Timer::rdtsc(); #endif for (uint64 m64 = 0; m64 <= Mseg64; m64++) { // find best from prev #ifdef RDTSC_TIMING uint64 tscDpSortStart = Timer::rdtsc(); #endif vector curStates; if (m64 == 0) curStates.push_back(DPState(0, make_pair(-1U, -1U))); if (m64 > 0) { uint maxDiffScore = 2*switchCost; uint bestScore = dpBestScores[m64-1]; // prune best states to beamWidth (via bucket sort) vector < vector > curStateBuckets(maxDiffScore+1); for (std::unordered_map ::iterator it = dpTable[m64-1].begin(); it != dpTable[m64-1].end(); it++) if (it->second.score <= bestScore + maxDiffScore) curStateBuckets[it->second.score - bestScore].push_back(it->first); for (uint dScore = 0; dScore <= maxDiffScore && curStates.size() < beamWidth; dScore++) { //if (curStates.size() + curStateBuckets[dScore].size() > beamWidth) //sort(curStateBuckets[dScore].begin(), curStateBuckets[dScore].end()); for (uint k = 0; k < curStateBuckets[dScore].size() && curStates.size() < beamWidth; k++) curStates.push_back(DPState(bestScore+dScore, ullToPair(curStateBuckets[dScore][k]))); } /* ---- SLOW ---- for (std::unordered_map ::iterator it = dpTable[m64-1].begin(); it != dpTable[m64-1].end(); it++) if (it->second.score <= bestScore + maxDiffScore) curStates.push_back(DPState(it->second.score, ullToPair(it->first))); // .from = prev sort(curStates.begin(), curStates.end()); */ } #ifdef RDTSC_TIMING dpSortTicks += Timer::rdtsc() - tscDpSortStart; #endif if (m64 < Mseg64) { const vector &refHapVec = refHapVecs[m64]; uint Kref = refHapVec.size(); // iterate through best in beam if (m64 > 0) { for (uint s = 0; s < curStates.size() && s < beamWidth; s++) { uint n1hap = curStates[s].from.first, n2hap = curStates[s].from.second; uint score = curStates[s].score; // continue updateTable(dpTable, dpBestScores, m64, 1, n0, n1hap, n2hap, n1hap, n2hap, score); } for (uint s = 0; s < curStates.size() && s < beamWidth; s++) { uint n1hap = curStates[s].from.first, n2hap = curStates[s].from.second; uint score = curStates[s].score; // switch n1hap or n2hap for (uint k = 0; k < Kref; k++) { updateTable(dpTable, dpBestScores, m64, 3, n0, n1hap, n2hap, refHapVec[k], n2hap, score+switchCost); updateTable(dpTable, dpBestScores, m64, 3, n0, n1hap, n2hap, n1hap, refHapVec[k], score+switchCost); } } } // clean start (from curStates[0]) if (m64 == 0) { for (uint k1 = 0; k1 < Kref; k1++) for (uint k2 = k1+1; k2 < Kref; k2++) updateTable(dpTable, dpBestScores, m64, 3, n0, curStates[0].from.first, curStates[0].from.second, refHapVec[k1], refHapVec[k2], curStates[0].score+2*switchCost); } else { // only try clean start from opp pairs for (uint k12 = 0; k12 < refHapOppPairs[m64].size(); k12++) updateTable(dpTable, dpBestScores, m64, 3, n0, curStates[0].from.first, curStates[0].from.second, refHapOppPairs[m64][k12].first, refHapOppPairs[m64][k12].second, curStates[0].score+3*switchCost); } } else { // finished; backtrack through DP table finalHapPairs[Mseg64-1] = curStates[0].from; bestPathScores[Mseg64-1] = curStates[0].score; for (int m64x = Mseg64-2; m64x >= 0; m64x--) { finalHapPairs[m64x] = dpTable[m64x+1][pairToULL(finalHapPairs[m64x+1])].from; //cout << "m64 = " << m64x << ": n1hap = " << finalHapPairs[m64x].first << ", n2hap = " << finalHapPairs[m64x].second << " score = " << dpTable[m64x+1][pairToULL(finalHapPairs[m64x+1])].score << endl; bestPathScores[m64x] = dpTable[m64x+1][pairToULL(finalHapPairs[m64x+1])].score; } } } #ifdef RDTSC_TIMING dpTicks += Timer::rdtsc() - tscDpStart; #endif /***** FIND TRANSITIONS WITHIN 64-SNP CHUNKS *****/ uint64 hmmHaploBitsT[2][Mseg64], fixHaploBitsT[2][Mseg64], hetErrMasks[Mseg64], uncertainMasks[Mseg64]; vector phaseVec; vector n1haps, n2haps, n3haps, signs; for (uint64 m64 = 0; m64 < Mseg64; m64++) { uint64 n1hap, n2hap, n3hap; int sign; if (m64 == 0) { n1hap = finalHapPairs[m64].first; n2hap = n3hap = finalHapPairs[m64].second; sign = 1; } else if (finalHapPairs[m64].first == finalHapPairs[m64-1].first) { n1hap = finalHapPairs[m64].first; n2hap = finalHapPairs[m64-1].second; n3hap = finalHapPairs[m64].second; sign = 1; } else if (finalHapPairs[m64].second == finalHapPairs[m64-1].second) { n1hap = finalHapPairs[m64].second; n2hap = finalHapPairs[m64-1].first; n3hap = finalHapPairs[m64].first; sign = -1; } else { // restart n1hap = finalHapPairs[m64].first; n2hap = n3hap = finalHapPairs[m64].second; sign = 1; } n1haps.push_back(n1hap); n2haps.push_back(n2hap); n3haps.push_back(n3hap); signs.push_back(sign); pair phaseBits = phaseSegHMM(n0, n1hap, n2hap, n3hap, m64, hetErrMasks[m64]); hmmHaploBitsT[0][m64] = phaseBits.first; hmmHaploBitsT[1][m64] = phaseBits.second; if (sign == -1) std::swap(hmmHaploBitsT[0][m64], hmmHaploBitsT[1][m64]); //checkHapPhase(n0, nF1, nF2, hmmHaploBitsT[0], m64, 0); //vector phaseSeg = checkHapPhase2(n0, nF1, nF2, n1hap, n2hap, n3hap, m64, sign); //cout << endl; //phaseVec.insert(phaseVec.end(), phaseSeg.begin(), phaseSeg.end()); } /***** DETECT AND FIX BLIPS BASED ON HAPLOTYPE FREQUENCIES *****/ for (uint64 m64 = 0; m64 < Mseg64; m64++) { #ifdef RDTSC_TIMING uint64 tscBlipFixStart = Timer::rdtsc(); #endif vector < vector > votes(64, vector (4)); uint64 m64mid = min(max(m64, side), Mseg64-1-side); std::unordered_set seen; //cout << "m64 = " << m64 << endl; for (int opp = 0; opp < 2; opp++) for (uint h = 0; h < min((uint) hashLookups[m64mid].size(), 10U); h++) { // for each hash uint numHits; #ifdef RDTSC_TIMING uint64 tscBlipLshStart = Timer::rdtsc(); #endif const uint *lenHapInds = hashLookups[m64mid][h].query(computeHash(hmmHaploBitsT[opp], hashBits[m64mid][h])); #ifdef RDTSC_TIMING blipLshTicks += Timer::rdtsc() - tscBlipLshStart; #endif if (lenHapInds == NULL) numHits = 0; else numHits = lenHapInds[0]; for (uint k = 1; k <= min(numHits, 25U); k++) { uint64 nXhap = lenHapInds[k]; if (!maskIndivs[nXhap/2]) continue; if (nXhap/2 == n0) continue; if (seen.count(nXhap)) continue; seen.insert(nXhap); #ifdef RDTSC_TIMING uint64 tscBlipPopStart = Timer::rdtsc(); #endif int errs = 0; for (uint64 m64x = m64mid-side; m64x <= m64mid+side; m64x++) { const uint64_masks &bits0 = genoBits[m64x*N + n0]; errs += popcount64((hmmHaploBitsT[opp][m64x] ^ haploBitsT[nXhap*Mseg64+m64x]) & ~bits0.is9); } #ifdef RDTSC_TIMING blipPopTicks += Timer::rdtsc() - tscBlipPopStart; uint64 tscBlipVoteStart = Timer::rdtsc(); #endif if (errs <= 2) { //checkHapPhase(n0, nF1, nF2, haploBitsT + nXhap*Mseg64, m64mid, side); for (uint64 j = 0; j < 64; j++) votes[j][(((haploBitsT[nXhap*Mseg64+m64]>>j)&1)^opp) + 2*opp]++; } #ifdef RDTSC_TIMING blipVoteTicks += Timer::rdtsc() - tscBlipVoteStart; #endif } } fixHaploBitsT[0][m64] = hmmHaploBitsT[0][m64]; fixHaploBitsT[1][m64] = hmmHaploBitsT[1][m64]; const uint64_masks &bits0 = genoBits[m64*N + n0]; for (uint64 j = 0; j < 64; j++) { if ((bits0.is0|bits0.is2|bits0.is9)&(1ULL< relVoteDiff) { fixHaploBitsT[0][m64] &= ~(1ULL< "; checkHapPhase(n0, nF1, nF2, fixHaploBitsT[0], m64, 0); } cout << " "; checkHapPhase(n0, nF1, nF2, hmmHaploBitsT[0], m64, 0, votes); } */ } // set phaseConfs2: 0|255 unless hetErr or flip or miss; 1|254 at those sites uchar *phaseConfsHap0, *phaseConfsHap1; if (Nref) { // allocate temp arrays for phaseConfs2 haplotype confidences phaseConfsHap0 = ALIGNED_MALLOC_UCHARS(Mseg64*64); phaseConfsHap1 = ALIGNED_MALLOC_UCHARS(Mseg64*64); } else { phaseConfsHap0 = phaseConfs2 + 2*n0*Mseg64*64; phaseConfsHap1 = phaseConfs2 + (2*n0+1)*Mseg64*64; } uchar hapConfs[2][2]; hapConfs[0][0] = 0; hapConfs[0][1] = 255; // [0][*]: not uncertain hapConfs[1][0] = 1; hapConfs[1][1] = 254; // [1][*]: uncertain for (uint64 m64 = 0; m64 < Mseg64; m64++) { uncertainMasks[m64] = hetErrMasks[m64] | (fixHaploBitsT[0][m64] ^ hmmHaploBitsT[0][m64]) | genoBits[m64*N + n0].is9; for (uint64 j = 0; j < 64; j++) { uint64 m64j = m64*64 + j; bool uncertain = (uncertainMasks[m64]>>j)&1; phaseConfsHap0[m64j] = hapConfs[uncertain][(fixHaploBitsT[0][m64]>>j)&1]; phaseConfsHap1[m64j] = hapConfs[uncertain][(fixHaploBitsT[1][m64]>>j)&1]; } } #ifdef CHECK_TRUE_DIP_HAP /***** CHECK TRUE BEST DIP-HAP: ARE THEY RESPECTED BY FINAL PHASE? *****/ cout << "CHECK TRUE BEST DIP-HAP: ARE THEY RESPECTED BY FINAL PHASE?" << endl; std::set segsOutput; for (uint64 m64 = 0; m64 < Mseg64; m64++) for (int p = 0; p < 2; p++) { //cout << "m64 = " << m64 << " true longest cover, parent " << p+1 << endl; for (std::set ::iterator it = longTrioHapHapSegsForward[p][m64].begin(); it != longTrioHapHapSegsForward[p][m64].end(); it++) { if (!segsOutput.count(*it)) { segsOutput.insert(*it); /* cout << "n1hap = " << it->n << "; m64 = [" << it->start/64 << "." << (it->start&63) << "," << it->end/64 << "." << (it->end&63) << "): "; cout << ((std::find(refHapVecs[m64].begin(), refHapVecs[m64].end(), it->n) != refHapVecs[m64].end()) ? "YES" : "\033[1;33mNO\033[0m") << endl;//" "; */ //checkHapPhase1j(n0, nF1, nF2, it->n, it->start, it->end); cout << endl; vector ret = checkHapPhase1jCall(n0, nF1, nF2, fixHaploBitsT[p], it->start, it->end, false); if (find(ret.begin(), ret.end(), 0) != ret.end() && find(ret.begin(), ret.end(), 1) != ret.end()) checkHapPhase1jCall(n0, nF1, nF2, fixHaploBitsT[p], it->start, it->end, true); } break; } } #endif /***** POST-PROCESS: FIND LONG DIP-HAP MATCHES ALMOST CONSISTENT WITH PHASING *****/ vector < pair > farHaps(Mseg64*64); for (uint64 m64 = 0; m64 < Mseg64; m64++) { //cout << "m64 = " << m64 << ":" << endl; for (uint e = 0; e < 2; e++) { //cout << "e = " << e << ":" << endl; for (uint k = 0; k < topIndsLens[e][m64] && k < 10U /*TODO*/; k++) { uint64 n1hap = topInds[e][m64*K + k]; // TODO: save this info from earlier if (!maskIndivs[n1hap/2]) continue; if (n1hap/2 == n0) continue; // find start uint segStart = m64; while ((int) segStart >= 0 && numDipHapWrongBits(segStart, n0, n1hap) <= maxWrongBits) segStart--; if ((int) segStart < 0) segStart = 0; uint segStart64j = segStart*64 + firstDipHapGoodBit(segStart, n0, n1hap); // find end uint segEnd = m64+1; while (segEnd < Mseg64 && numDipHapWrongBits(segEnd, n0, n1hap) <= maxWrongBits) segEnd++; uint segEnd64j = segEnd*64 + firstDipHapWrongBit(segEnd, n0, n1hap); vector err64j(1, segStart64j); bool foundHet = false, prevPhase = false; for (uint64 m64j = segStart64j; m64j < segEnd64j; m64j++) if (maskSnps64j[m64j]) { uint64 m64 = m64j/64, j = m64j&63; uint g0 = getGeno0123(m64j, n0); // TODO: speed up bool relPhase = ((haploBitsT[n1hap*Mseg64+m64] ^ fixHaploBitsT[0][m64])>>j)&1; if (g0 == 1) { if (!foundHet) foundHet = true; else if (relPhase != prevPhase) err64j.push_back(m64j); prevPhase = relPhase; } else if (g0 == 0 || g0 == 2) { if (relPhase) { // dip-hap err err64j.push_back(m64j); err64j.push_back(m64j); } } } err64j.push_back(segEnd64j); /* // output post-process debug info cout << "true: "; checkHapPhase1j(n0, nF1, nF2, n1hap, segStart64j, segEnd64j); cout << endl; cout << "call: "; checkHapPhase1jCall(n0, nF1, nF2, fixHaploBitsT[0], segStart64j, segEnd64j, true); cout << "err vs. call:"; for (uint i = 0; i < err64j.size(); i++) { cout << " " << err64j[i]/64 << "." << (err64j[i]&63); printf("(%.2f)", cMs64j[err64j[i]]); } cout << endl; */ const double cMconsecMin = 1.5, cMendMin = 1.5; uint iStart = 0; for (uint i = 1; i < err64j.size(); i++) { double cMseg = cMs64j[err64j[i]] - cMs64j[err64j[i-1]]; if (i == iStart+1) { // piece ending at err64j[i] is first in new chunk if (cMseg < cMendMin) // no good; can't start yet iStart = i; } else { double cMprev = cMs64j[err64j[i-1]] - cMs64j[err64j[i-2]]; if (cMprev < cMconsecMin && cMseg < cMconsecMin) { // consec short => split // deal with chunk that just ended at either err64j[i-2] or err64j[i-1] if (cMprev < cMendMin) // last is too short updateFarHaps(farHaps, n1hap, err64j[iStart], err64j[i-2]); else updateFarHaps(farHaps, n1hap, err64j[iStart], err64j[i-1]); // deal with beginning of next chunk if (cMseg < cMendMin) iStart = i; else iStart = i-1; } } if (i+1 == err64j.size()) { if (cMseg < cMendMin) updateFarHaps(farHaps, n1hap, err64j[iStart], err64j[i-1]); else updateFarHaps(farHaps, n1hap, err64j[iStart], err64j[i]); } } //cout << endl; } } } uint farEnd = 0; vector hapSegs; for (uint64 segStart64j = 0; segStart64j < Mseg64*64; segStart64j++) if (farHaps[segStart64j].first > farEnd) { farEnd = farHaps[segStart64j].first; hapSegs.push_back(DipHapSeg(farHaps[segStart64j].second, segStart64j, farEnd)); } std::set postSwitches; for (uint i = 0; i < hapSegs.size(); i++) { uint64 n1hap = hapSegs[i].n, segStart64j = hapSegs[i].start, segEnd64j = hapSegs[i].end; uint64 useStart64j = (i==0 || hapSegs[i-1].end < segStart64j) ? segStart64j : (hapSegs[i-1].end + segStart64j)/2; uint64 useEnd64j = (i+1==hapSegs.size() || segEnd64j < hapSegs[i+1].start) ? segEnd64j : (segEnd64j + hapSegs[i+1].start)/2; /* // output post-process debug info double cMstart = cMs64j[segStart64j], cMend = cMs64j[segEnd64j]; if ((int) nF1 != -1) { updateFarHaps(farHaps, n1hap, segStart64j, segEnd64j); // just to print cout << endl; cout << "true: "; checkHapPhase1j(n0, nF1, nF2, n1hap, segStart64j, segEnd64j); cout << endl; cout << "call: "; checkHapPhase1jCall(n0, nF1, nF2, fixHaploBitsT[0], segStart64j, segEnd64j, true); printf("%.2f-%.2f cM; ", cMstart, cMend); cout << "use " << useStart64j/64 << "." << (useStart64j&63) << "-" << useEnd64j/64 << "." << (useEnd64j&63) << endl; } */ vector numSinceSwitches; vector switchLocs; bool foundHet = false, prevPhase = false; int numSinceSwitch = 0; for (uint64 m64j = segStart64j; m64j < segEnd64j; m64j++) if (maskSnps64j[m64j]) { uint64 m64 = m64j/64, j = m64j&63; uint g0 = getGeno0123(m64j, n0); // TODO: speed up if (g0 == 1) { numSinceSwitch++; bool relPhase = ((haploBitsT[n1hap*Mseg64+m64] ^ fixHaploBitsT[0][m64])>>j)&1; if (!foundHet) foundHet = true; else if (relPhase != prevPhase) { numSinceSwitches.push_back(numSinceSwitch); switchLocs.push_back(m64j); numSinceSwitch = 0; } prevPhase = relPhase; } } numSinceSwitches.push_back(numSinceSwitch); for (uint s = 0; s < switchLocs.size(); s++) if (numSinceSwitches[s] > 2 && numSinceSwitches[s+1] > 2 && useStart64j <= switchLocs[s] && switchLocs[s] < useEnd64j) { uint64 m64j = switchLocs[s]; /* output post-process debug info if ((int) nF1 != -1) { cout << "SUGGEST SWITCH: " << m64j/64 << "." << (m64j&63); printf("(%.2f; split %.2f=%.2f+%.2f)", cMs64j[m64j], cMend-cMstart, cMs64j[m64j]-cMstart, cMend-cMs64j[m64j]); } */ postSwitches.insert(m64j); } } // apply switches int sign = 1; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) { uint64 m64 = m64j/64, j = m64j&63; if (postSwitches.count(m64j)) sign = -sign; if (sign == -1) { uint64 tmp = (fixHaploBitsT[0][m64] ^ fixHaploBitsT[1][m64]) & (1ULL<= 128; hapBits[1] = (int) phaseConfsHap1[m64j] >= 128; for (uint64 h = 0; h <= 1ULL; h++) { uint64 nTargetHap = 2*(n0-Nref) + h; tmpHaploBitsT[nTargetHap*Mseg64 + (m64j/64)] |= hapBits[h]<<(m64j&63); } } ALIGNED_FREE(phaseConfsHap1); ALIGNED_FREE(phaseConfsHap0); } if ((int) nF1 != -1) { // final output cout << "3rd-iter phase:" << endl; for (uint64 m64 = 0; m64 < Mseg64; m64++) { /* checkHaploBits(n0, nF1, nF2, hmmHaploBitsT[0][m64], m64); if (fixHaploBitsT[0][m64] != hmmHaploBitsT[0][m64]) { cout << " -> "; checkHaploBits(n0, nF1, nF2, fixHaploBitsT[0][m64], m64); } */ vector phaseSeg = checkHaploBits(n0, nF1, nF2, fixHaploBitsT[0][m64], m64, -1); //cout << endl; phaseVec.insert(phaseVec.end(), phaseSeg.begin(), phaseSeg.end()); } printf("# major SE: %2d # tot SE: %2d / %d\n", countMajorSE(phaseVec), countSE(phaseVec), (int) phaseVec.size()-1); fflush(stdout); } #ifdef RDTSC_TIMING totTicks += Timer::rdtsc() - tscStart; #endif return hapTime; } void Eagle::writePhaseConfs(const string &tmpPhaseFile) const { FILE *fout = fopen(tmpPhaseFile.c_str(), "wb"); fwrite(phaseConfs, 1, 2*N*Mseg64*64, fout); fclose(fout); } void Eagle::readPhaseConfs(const string &tmpPhaseFile) { FILE *fout = fopen(tmpPhaseFile.c_str(), "rb"); fread(phaseConfs, 1, 2*N*Mseg64*64, fout); fclose(fout); } void Eagle::cpPhaseConfs(uint64 n0start, uint64 n0end) { memcpy(phaseConfs + 2*n0start*Mseg64*64, phaseConfs2 + 2*n0start*Mseg64*64, 2*(n0end-n0start)*Mseg64*64); } void Eagle::cpTmpHaploBitsT(uint64 n0start, uint64 n0end) { memcpy(haploBitsT + 2*n0start*Mseg64, tmpHaploBitsT + 2*n0start*Mseg64, 2*(n0end-n0start)*Mseg64 * sizeof(haploBitsT[0])); for (uint64 nHap = 2*n0start; nHap < 2*n0end; nHap++) for (uint64 m64 = 0; m64 < Mseg64; m64++) haploBits[m64*2*N + nHap] = haploBitsT[nHap*Mseg64 + m64]; } void Eagle::outputSE(const vector &children, const vector &nF1s, const vector &nF2s, int step) const { if (children.empty()) return; vector majorSEs, totSEs; vector majorSErates, totSErates; for (uint att = 0; att < children.size(); att++) { printf("Switch error locations (step %d):", step); vector phaseVec = checkPhaseConfsPhase(children[att], nF1s[att], nF2s[att]); majorSEs.push_back(countMajorSE(phaseVec)); totSEs.push_back(countSE(phaseVec)); majorSErates.push_back(majorSEs.back() * 100.0 / (phaseVec.size()-1)); totSErates.push_back(totSEs.back() * 100.0 / (phaseVec.size()-1)); printf("# major SE: %2d # tot SE: %2d / %d (step %d)\n", majorSEs.back(), totSEs.back(), (int) phaseVec.size()-1, step); } sort(majorSEs.begin(), majorSEs.end()); sort(totSEs.begin(), totSEs.end()); int useTrios = 70; printf("%d-trio avg # major SE: %.2f avg # tot SE: %.2f (step %d)\n", useTrios, std::accumulate(majorSEs.begin(), majorSEs.begin()+useTrios, 0) / (double) useTrios, std::accumulate(totSEs.begin(), totSEs.begin()+useTrios, 0) / (double) useTrios, step); sort(majorSErates.begin(), majorSErates.end()); sort(totSErates.begin(), totSErates.end()); printf("median major SE rate: %.2f%% median tot SE rate: %.2f%% (step %d)\n", majorSErates[(nF1s.size()-1)/2], totSErates[(nF1s.size()-1)/2], step); fflush(stdout); } void Eagle::writeHapsGzSample(const string &prefix) const { FileUtils::AutoGzOfstream hapsGzOut; hapsGzOut.openOrExit(prefix + ".haps.gz"); uint64 m = 0; // index in snps vector for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) { if (!maskSnps64j[m64j]) continue; hapsGzOut << snps[m].chrom << " " << snps[m].ID << " " << snps[m].physpos << " " << snps[m].allele1 << " " << snps[m].allele2; for (uint64 n0 = 0; n0 < N; n0++) { int hapBit1, hapBit2; if (phaseConfs != NULL) { hapBit1 = (int) phaseConfs[2*n0*Mseg64*64 + m64j] < 128; hapBit2 = (int) phaseConfs[(2*n0+1)*Mseg64*64 + m64j] < 128; } else { hapBit1 = !((haploBits[(m64j/64)*2*N + 2*n0]>>(m64j&63))&1); hapBit2 = !((haploBits[(m64j/64)*2*N + 2*n0+1]>>(m64j&63))&1); } if (isFlipped64j[m64j]) { hapBit1 = !hapBit1; hapBit2 = !hapBit2; } hapsGzOut << " " << hapBit1 << " " << hapBit2; } hapsGzOut << endl; m++; } hapsGzOut.close(); FileUtils::AutoGzOfstream sampleOut; sampleOut.openOrExit(prefix + ".sample"); sampleOut << std::setprecision(3); sampleOut << "ID_1 ID_2 missing" << endl; sampleOut << "0 0 0" << endl; for (uint64 n0 = 0; n0 < N; n0++) { /* int ctrMiss = 0, ctrTot = 0; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) if (maskSnps64j[m64j]) { ctrTot++; ctrMiss += getGeno0123(m64j, n0)==3; } */ double missing = 0;//ctrMiss / (double) ctrTot; sampleOut << indivs[n0].famID << " " << indivs[n0].indivID << " " << missing << endl; } sampleOut.close(); } void bcf_hdr_append_eagle_version(bcf_hdr_t *hdr, int argc, char **argv) { kstring_t str = {0,0,0}; const char cmd[] = "eagle"; ksprintf(&str,"##%sVersion=%s+htslib-%s\n", cmd, EAGLE_VERSION, hts_version()); bcf_hdr_append(hdr,str.s); str.l = 0; ksprintf(&str,"##%sCommand=%s", cmd, "eagle"); int i; for (i=1; i &isTmpPhased, const string &outFile, int chromX, double bpStart, double bpEnd, const string &writeMode, bool noImpMissing, bool keepMissingPloidyX, int argc, char **argv) const { htsFile *htsTmp = hts_open(tmpFile.c_str(), "r"); if (htsTmp == NULL) { cerr << "ERROR: Could not open temporary file " << tmpFile << endl; exit(1); } htsFile *out = hts_open(outFile.c_str(), writeMode.c_str()); if (out == NULL) { cerr << "ERROR: Could not write to file " << outFile << endl; exit(1); } bcf_hdr_t *hdr = bcf_hdr_read(htsTmp); bcf_hdr_append_eagle_version(hdr, argc, argv); bcf_hdr_write(out, hdr); bcf1_t *rec = bcf_init1(); int mtgt_gt = 0, *tgt_gt = NULL; uint64 m64j = 0; // SNP index; update to correspond to current record vector mostRecentPloidy(N-Nref, 2); int tmpLineNum = -1; // index in tmp file (corresponding to isTmpPhased) while (bcf_read(htsTmp, hdr, rec) >= 0) { tmpLineNum++; if (!isTmpPhased[tmpLineNum]) { // site was not phased; remove phase information and output int bp = rec->pos+1; if (bpStart <= bp && bp <= bpEnd) { // check if within output region int ntgt_gt = bcf_get_genotypes(hdr, rec, &tgt_gt, &mtgt_gt); for (int k = 0; k < ntgt_gt; k++) if (tgt_gt[k] != bcf_int32_vector_end && !bcf_gt_is_missing(tgt_gt[k])) { int idx = bcf_gt_allele(tgt_gt[k]); // allele index tgt_gt[k] = bcf_gt_unphased(idx); // convert allele index to bcf value (unphased) } bcf_update_genotypes(hdr, rec, tgt_gt, ntgt_gt); bcf_write(out, hdr, rec); } continue; } int chrom = StringUtils::bcfNameToChrom(bcf_hdr_id2name(hdr, rec->rid), 1, chromX); int ntgt_gt = bcf_get_genotypes(hdr, rec, &tgt_gt, &mtgt_gt); int bp = rec->pos+1; if (bpStart <= bp && bp <= bpEnd) { // check if within output region if (bcf_hdr_nsamples(hdr) == ntgt_gt) { // site is all-haploid bcf_write(out, hdr, rec); } else { for (int i = 0; i < (int) (N-Nref); i++) { int ploidy = 2; int *ptr = tgt_gt + i*ploidy; // --keepMissingPloidyX: assume missing genotypes in target VCF have correct ploidy if (chrom == chromX && keepMissingPloidyX && bcf_gt_is_missing(ptr[0])) mostRecentPloidy[i] = (ptr[1] == bcf_int32_vector_end ? 1 : 2); if (chrom != chromX || (bcf_gt_is_missing(ptr[0]) && mostRecentPloidy[i] == 2) || ptr[1] != bcf_int32_vector_end) { // diploid... be careful about missing '.' mostRecentPloidy[i] = 2; bool missing = false; int minIdx = 1000, maxIdx = 0; for (int j = 0; j < ploidy; j++) { if ( bcf_gt_is_missing(ptr[j]) ) { // missing allele missing = true; } else { int idx = bcf_gt_allele(ptr[j]); // allele index minIdx = std::min(minIdx, idx); maxIdx = std::max(maxIdx, idx); } } if (!missing && minIdx == maxIdx) { // hom => same allele ptr[0] = ptr[1] = bcf_gt_phased(minIdx); } else if (!missing && minIdx > 0) { // ALT1/ALT2 het => don't phase ptr[0] = ptr[1] = bcf_gt_missing; } else { // REF/ALT* het => phase as called by Eagle if (missing && noImpMissing) { // don't call alleles ptr[0] = ptr[1] = bcf_gt_missing; } else { for (int j = 0; j < ploidy; j++) { uint64 nTargetHap = 2*i + j; int altIdx = missing ? 1 : maxIdx; int hapBit = (tmpHaploBitsT[nTargetHap*Mseg64+(m64j/64)]>>(m64j&63))&1; if (isFlipped64j[m64j]) hapBit = !hapBit; int idx = hapBit ? altIdx : 0; ptr[j] = bcf_gt_phased(idx); // convert allele index to bcf value (phased) } } } } else { // haploid mostRecentPloidy[i] = 1; if ( bcf_gt_is_missing(ptr[0]) && !noImpMissing ) { // missing allele int j = 0; uint64 nTargetHap = 2*i + j; int altIdx = 1; int hapBit = (tmpHaploBitsT[nTargetHap*Mseg64+(m64j/64)]>>(m64j&63))&1; if (isFlipped64j[m64j]) hapBit = !hapBit; int idx = hapBit ? altIdx : 0; ptr[j] = bcf_gt_phased(idx); // convert allele index to bcf value (phased) } } } bcf_update_genotypes(hdr, rec, tgt_gt, ntgt_gt); bcf_write(out, hdr, rec); } } m64j++; if (m64j != Mseg64*64 && (m64j&63) == seg64cMvecs[m64j/64].size()) m64j = (m64j + 64ULL) & ~63ULL; // move to next segment } assert(m64j == Mseg64*64); free(tgt_gt); bcf_destroy(rec); bcf_hdr_destroy(hdr); hts_close(out); hts_close(htsTmp); remove(tmpFile.c_str()); } // write phased output in non-ref mode // differences from the above (ref-mode) are as follows: // - does not take noImpMissing arg // - checks chrom // - does not increment m64j outside the bpStart-bpEnd region // - does not delete tmpFile (now vcfFile with original input) void Eagle::writeVcfNonRef(const string &vcfFile, const string &outFile, int inputChrom, int chromX, double bpStart, double bpEnd, const string &writeMode, bool keepMissingPloidyX, int argc, char **argv) const { htsFile *htsIn = hts_open(vcfFile.c_str(), "r"); htsFile *out = hts_open(outFile.c_str(), writeMode.c_str()); bcf_hdr_t *hdr = bcf_hdr_read(htsIn); bcf_hdr_append_eagle_version(hdr, argc, argv); bcf_hdr_write(out, hdr); bcf1_t *rec = bcf_init1(); int mtgt_gt = 0, *tgt_gt = NULL; uint64 m64j = 0; // SNP index; update to correspond to current record vector mostRecentPloidy(N-Nref, 2); while (bcf_read(htsIn, hdr, rec) >= 0) { // check CHROM int chrom = StringUtils::bcfNameToChrom(bcf_hdr_id2name(hdr, rec->rid), 1, chromX); if (inputChrom != 0) { if (chrom != inputChrom) { continue; } } int bp = rec->pos+1; if (bpStart <= bp && bp <= bpEnd) { // check if within output region int ntgt_gt = bcf_get_genotypes(hdr, rec, &tgt_gt, &mtgt_gt); for (int i = 0; i < (int) (N-Nref); i++) { int ploidy = 2; int *ptr = tgt_gt + i*ploidy; // --keepMissingPloidyX: assume missing genotypes in target VCF have correct ploidy if (chrom == chromX && keepMissingPloidyX && bcf_gt_is_missing(ptr[0])) mostRecentPloidy[i] = (ptr[1] == bcf_int32_vector_end ? 1 : 2); if (chrom != chromX || (bcf_gt_is_missing(ptr[0]) && mostRecentPloidy[i] == 2) || ptr[1] != bcf_int32_vector_end) { // diploid... be careful about missing '.' mostRecentPloidy[i] = 2; bool missing = false; int minIdx = 1000, maxIdx = 0; // (shouldn't matter; SNPs should be biallelic) for (int j = 0; j < ploidy; j++) { if ( bcf_gt_is_missing(ptr[j]) ) { // missing allele missing = true; } else { int idx = bcf_gt_allele(ptr[j]); // allele index minIdx = std::min(minIdx, idx); maxIdx = std::max(maxIdx, idx); } } if (!missing && minIdx == maxIdx) { // hom => same allele ptr[0] = ptr[1] = bcf_gt_phased(minIdx); } else if (!missing && minIdx > 0) { // ALT1/ALT2 het => don't phase (shouldn't happen) ptr[0] = ptr[1] = bcf_gt_missing; } else { // REF/ALT* het => phase as called by Eagle for (int j = 0; j < ploidy; j++) { uint64 nTargetHap = 2*i + j; int altIdx = missing ? 1 : maxIdx; int hapBit = (tmpHaploBitsT[nTargetHap*Mseg64+(m64j/64)]>>(m64j&63))&1; if (isFlipped64j[m64j]) hapBit = !hapBit; int idx = hapBit ? altIdx : 0; ptr[j] = bcf_gt_phased(idx); // convert allele index to bcf value (phased) } } } else { // haploid mostRecentPloidy[i] = 1; if ( bcf_gt_is_missing(ptr[0]) ) { // missing allele int j = 0; uint64 nTargetHap = 2*i + j; int altIdx = 1; int hapBit = (tmpHaploBitsT[nTargetHap*Mseg64+(m64j/64)]>>(m64j&63))&1; if (isFlipped64j[m64j]) hapBit = !hapBit; int idx = hapBit ? altIdx : 0; ptr[j] = bcf_gt_phased(idx); // convert allele index to bcf value (phased) } } } bcf_update_genotypes(hdr, rec, tgt_gt, ntgt_gt); bcf_write(out, hdr, rec); m64j++; if ((m64j&63) == seg64cMvecs[m64j/64].size()) m64j = (m64j + 64ULL) & ~63ULL; // move to next segment } } assert(m64j == Mseg64*64); free(tgt_gt); bcf_destroy(rec); bcf_hdr_destroy(hdr); hts_close(out); hts_close(htsIn); } void Eagle::makeHardCalls(uint64 n0start, uint64 n0end, uint seed) { // fast rng: last 16 bits of Marsaglia's MWC uint w = 521288629; for (uint i = 0; i < seed % 12345; i++) w=18000*(w&65535)+(w>>16); //memset(haploBits, 0, 2*N*Mseg64*sizeof(haploBits[0])); memset(segConfs + 2*n0start*Mseg64, 0, 2*(n0end-n0start)*Mseg64*sizeof(segConfs[0])); for (uint64 nHap = 2*n0start; nHap < 2*n0end; nHap++) for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) { if ((m64j&63)==0) haploBits[(m64j/64)*2*N + nHap] = 0; uchar phaseConf = phaseConfs[nHap*Mseg64*64 + m64j]; segConfs[nHap*Mseg64+m64j/64] = max(segConfs[nHap*Mseg64+m64j/64], min(phaseConf, (uchar) (255-phaseConf))); if (phaseConf == (uchar) 255 || ((w=18000*(w&65535)+(w>>16))&255) < phaseConf) haploBits[(m64j/64)*2*N + nHap] |= 1ULL<<(m64j&63); if ((m64j&63)==63) haploBitsT[nHap*Mseg64 + (m64j/64)] = haploBits[(m64j/64)*2*N + nHap]; } } uint Eagle::computeHash(const uint64 *curHaploBitsT, const uint64 *curHashBits, uint B) const { uint hash = 0; for (uint b = 0; b < B; b++) hash |= ((curHaploBitsT[curHashBits[b]>>6]>>(curHashBits[b]&63))&1)< &curHashBits) const { return computeHash(curHaploBitsT, &curHashBits[0], curHashBits.size()); } double Eagle::computeLogHetP(uint64 m64j) const { assert(Nref!=0); // only call this function when in ref-mode int sumHaps = 0; for (uint64 nHap = 0; nHap < 2*Nref; nHap++) sumHaps += (haploBits[(m64j/64)*2*N + nHap]>>(m64j&63))&1; double p = sumHaps / (2.0 * Nref); p = std::min(p, 1-p); return log10(p); } void Eagle::initRefIter(int refIter) { uint64 Ntarget = N - Nref; if (refIter > 1) { // copy tmpHaploBitsT from previous iter -> haploBits, haploBitsT memcpy(haploBitsT + 2*Nref*Mseg64, tmpHaploBitsT, 2*Ntarget*Mseg64*sizeof(tmpHaploBitsT[0])); for (uint64 nHap = 2*Nref; nHap < 2*N; nHap++) // copy transpose for (uint64 m64 = 0; m64 < Mseg64; m64++) haploBits[m64*2*N + nHap] = haploBitsT[nHap*Mseg64 + m64]; } // clear tmpHaploBitsT (temp storage of phased target haplotypes) memset(tmpHaploBitsT, 0, 2*Ntarget*Mseg64*sizeof(tmpHaploBitsT[0])); } // input arg iter = non-ref mode iter (ref mode iter 1 = non-ref mode iter 3) void Eagle::buildHashTables(int iter, int batch, int seed) { std::srand(1000000*seed + 1000*iter + batch); // seed random_shuffle const uint maxValuesPerKey = 99; const uint baseLSH = 10, bonusLSH = iter > 2 ? 4 : 0; const uint numLSH = baseLSH + bonusLSH; const uint maxBits = 32; const double minLogHetP = log10(0.02); hashLookups = vector < vector > (Mseg64, vector (numLSH)); hashBits = vector < vector < vector > > (Mseg64, vector < vector > (numLSH)); const double reduction = (iter == 2 ? 0 : 0.05); const uint64 side = 1; for (uint64 m64 = 0+side; m64+side < Mseg64; m64++) { for (uint h = 0; h < numLSH; h++) { vector m64js; if (h < baseLSH) { // standard hash regions: 3x down to 2x m64 for (uint64 m64j = (uint64) ((m64-side+reduction*h)*64); m64j < (uint64) ((m64+side+1-reduction*h)*64); m64j++) if (maskSnps64j[m64j] && (Nref==0 ? seg64logPs[m64j].cond[1][3] : computeLogHetP(m64j)) > minLogHetP) m64js.push_back(m64j); } else { // small hash regions int offStart = 0, offEnd = 0; switch (h-baseLSH) { case 0: offStart = -32; offEnd = 32; break; case 1: offStart = 0; offEnd = 64; break; case 2: offStart = -32; offEnd = 0; break; case 3: offStart = 0; offEnd = 32; break; } for (uint64 m64j = (uint64) (m64*64 + offStart); m64j < (uint64) (m64*64 + offEnd); m64j++) if (maskSnps64j[m64j]) m64js.push_back(m64j); } if (m64js.empty()) for (uint64 m64j = (m64-side)*64; m64j < (m64+side+1)*64; m64j++) if (maskSnps64j[m64j]) m64js.push_back(m64j); uint bitsInHash = (h < baseLSH ? maxBits-h : 24); // randomly select SNPs m64j to use in hash uint m64jInd = m64js.size(); for (uint b = 0; b < bitsInHash; b++) { // choose next SNP (in random order); if at end, reshuffle if (m64jInd == m64js.size()) { std::random_shuffle(m64js.begin(), m64js.end()); m64jInd = 0; } hashBits[m64][h].push_back(m64js[m64jInd++]); } } } uint64 nRefHaps = 2*((Nref!=0 && iter==3) ? Nref : N); // ref-mode iter 1 -> iter 3 vector < vector > keyVecs(omp_get_max_threads(), vector (nRefHaps)); #pragma omp parallel for for (uint64 m64 = 0+side; m64 < Mseg64-side; m64++) { cout << "." << std::flush; for (uint h = 0; h < numLSH; h++) { // compute hashes vector &keyVec = keyVecs[omp_get_thread_num()]; for (uint64 nHap = 0; nHap < nRefHaps; nHap++) // in ref-mode, only use ref keyVec[nHap] = maskIndivs[nHap/2] ? computeHash(haploBitsT + nHap*Mseg64, &hashBits[m64][h][0], hashBits[m64][h].size()) : -1U; hashLookups[m64][h].init(keyVec, maxValuesPerKey); } } } const uint64 *Eagle::getHaploBitsT(void) const { return haploBitsT; } uint64 Eagle::getNlib(int iter) const { return ((Nref!=0 && iter==3) ? Nref : N); } uint64 Eagle::getMseg64(void) const { return Mseg64; } const uchar *Eagle::getMaskSnps64j(void) const { return maskSnps64j; } double Eagle::computeHetRate(void) const { uint64 homCtr = 0, totCtr = 0; for (uint64 m64 = 0; m64 < Mseg64; m64++) for (uint64 n = Nref; n < N; n++) { // ref genoBits aren't initialized! const uint64_masks &bits = genoBits[m64*N + n]; homCtr += popcount64(bits.is0 | bits.is2); totCtr += popcount64(~bits.is9); } return 1 - homCtr / (double) totCtr; } } Eagle-2.4/src/Eagle.hpp000066400000000000000000000254751321437612200147270ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef EAGLE_HPP #define EAGLE_HPP //#define RDTSC_TIMING #include #include #include #include #include "Types.hpp" #include "GenoData.hpp" #include "HapHedge.hpp" #include "StaticMultimap.hpp" namespace EAGLE { struct Match { uint n, m64jStart, m64jEnd, m64jStartCons, m64jEndCons; // [m64jStart..m64jEnd] double logBF, cMlenInit; bool operator < (const Match &m2) const { return logBF > m2.logBF; } Match() : n(0), m64jStart(0), m64jEnd(0), m64jStartCons(0), m64jEndCons(1<<30), logBF(0) {} Match(uint _n, uint _m64jStart, uint _m64jEnd, double _logBF) : n(_n), m64jStart(_m64jStart), m64jEnd(_m64jEnd), m64jStartCons(0), m64jEndCons(1<<30), logBF(_logBF) {} static bool greaterEnd(const Match &m1, const Match &m2) { return m1.m64jEnd > m2.m64jEnd || (m1.m64jEnd == m2.m64jEnd && m1.logBF > m2.logBF); } static bool greaterLen(const Match &m1, const Match &m2) { return m1.cMlenInit > m2.cMlenInit || (m1.cMlenInit == m2.cMlenInit && m1.logBF > m2.logBF); } }; struct DPState { uint score; std::pair from; DPState() : score(0), from(std::make_pair(0U, 0U)) {} DPState(uint _score, std::pair _from) : score(_score), from(_from) {} bool operator < (const DPState &state2) const { return score < state2.score || (score==state2.score && from < state2.from); } }; class Eagle { public: mutable uint64 totTicks, extTicks, diphapTicks, lshTicks, lshCheckTicks, dpTicks, dpStaticTicks, dpSwitchTicks, dpSortTicks, dpUpdateTicks, dpUpdateCalls, blipFixTicks, blipPopTicks, blipVoteTicks, blipLshTicks; private: static const uint homErrCost = 1, hetErrCost = 2, switchCost = 3; static const uint switchScoreLutBits = 5; char switchScoreLut[1<<(3*switchScoreLutBits)][2]; const uint64 N, Nref; // Nref = 0 if not in ref-mode const uint64 Mseg64; // number of <=64-SNP chunks const uint64_masks *genoBits; // [[MATRIX]]: M64 x N (is0 and is2 64-bit masks) const std::vector > seg64cMvecs; uchar *maskSnps64j; // M64x64 binary vector indicating SNPs to use double *cMs64j; // M64x64+1 cM coordinates uchar *phaseConfs, *phaseConfs2; // [[MATRIX]]: 2N x M64x64 uint64 *haploBits; // [[MATRIX]]: M64 x 2N (is1 for hard calls) uint64 *haploBitsT; // [[MATRIX]]: 2N x M64 (is1 for hard calls) uint64 *tmpHaploBitsT; // [[MATRIX]]: 2Ntarget x M64 (temp storage for target haps in ref-mode) uchar *segConfs; // [[MATRIX]]: 2N x M64 std::vector < std::vector > hashLookups; std::vector < std::vector < std::vector > > hashBits; const AlleleFreqs *seg64logPs; const std::vector invLD64j; // M64x64 LD-based weights for evaluating match evidence const std::vector indivs; const std::vector snps; // M-vector std::vector maskIndivs; // N-vector: 0 to ignore indivs (e.g., relatives) std::vector isFlipped64j; // in non-ref mode, SNPs are internally flipped to 0=A2=major const double logPerr; // genotype error rate void init(void); uint getGeno0123(uint64 m64j, uint64 n) const; void retractMatch(uint n0, Match &match, double memoLogBF[][4]) const; Match computeDuoLogBF(double memoLogBF[][4], double workLogBF[], uint64 n0, uint64 n1, uint64 m64cur) const; void trim(Match &match, const Match &ref, uint64 n0, int orientation, uint64 trimStart, int inc, double workLogBF[]) const; std::string computePhaseString(uint64 n0, uint64 nF1, uint64 nF2, const std::vector &matches, const std::vector &signs, uint64 start, double cMend, bool cons) const; void printMatch(uint64 n0, uint64 nF1, uint64 nF2, const Match &duoMatch, double memoLogBF[][4]) const; void findLongHalfIBD(uint64 n0, std::vector topInds[2], std::vector topIndsLens[2], uint K) const; std::vector findMinErrDipHap(uint64 n0, uint K, bool useTargetHaps) const; void findLongDipHap(uint64 n0, std::vector topInds[2], std::vector topIndsLens[2], uint K, uint errStart) const; void computePhaseConfs(uint64 n0, const std::vector &matches, const std::vector &signs, bool cons); std::vector trioRelPhase(uint64 n0, uint64 nF1, uint64 nF2) const; void checkPhase(uint64 n0, uint64 nF1, uint64 nF2, double thresh) const; std::vector checkPhaseConfsPhase(uint64 n0, uint64 nF1, uint64 nF2) const; void checkHapPhase(uint64 n0, uint64 nF1, uint64 nF2, const uint64 curHaploBitsT[], uint64 m64, uint64 side, std::vector < std::vector > votes=std::vector < std::vector > ()) const; std::vector checkHapPhase1(uint64 n0, uint64 nF1, uint64 nF2, uint64 n1hap, uint64 m64start, uint64 m64end, int sign=1) const; std::vector checkHapPhase1j(uint64 n0, uint64 nF1, uint64 nF2, uint64 n1hap, uint64 m64jStart, uint64 m64jEnd, int sign=1) const; std::vector checkHapPhase1jCall(uint64 n0, uint64 nF1, uint64 nF2, uint64 callBitsT[], uint64 m64jStart, uint64 m64jEnd, bool print, int sign=1) const; int checkHapPhase2(uint64 n0, uint64 nF1, uint64 nF2, uint64 n1hap, uint64 n2hap, uint64 n3hap, uint64 m64, int sign) const; std::vector checkHaploBits(uint64 n0, uint64 nF1, uint64 nF2, uint64 hapBits, uint64 m64, int pad=0) const; std::pair phaseSegHMM(uint64 n0, uint64 n1hap, uint64 n2hap, uint64 n3hap, uint64 m64, uint64 &hetErrMask) const; std::vector checkSegPhase(uint64 n0, uint64 nF1, uint64 nF2, uint64 n1hap, uint64 n2hap, int sign, uint64 m64) const; void computeSegPhaseConfs(uint64 n0, uint64 n1hap, uint64 n2hap, int sign, uint64 m64, int err); int numDipHapWrongBits(uint64 m64, uint64 n0, uint64 n1hap) const; int firstDipHapGoodBit(uint64 m64, uint64 n0, uint64 n1hap) const; int firstDipHapWrongBit(uint64 m64, uint64 n0, uint64 n1hap) const; uint computeHash(const uint64 *curHaploBitsT, const uint64 *curHashBits, uint B) const; uint computeHash(const uint64 *curHaploBitsT, const std::vector &curHashBits) const; bool updateHelper(std::unordered_map &dpTab, uint &dpBestScore, std::pair cur, std::pair next, uint score) const; uint computeStaticScore(uint n0, uint n1hap, uint n2hap, uint64 m64) const; uint computeSwitchScore(uint n0, uint n1hap, uint n2hapA, uint n2hapB, uint64 m64) const; void updateTable(std::unordered_map dpTable[], uint dpBestScores[], uint64 m64, uint64 dist, uint n0, uint n1hapA, uint n2hapA, uint n1hapB, uint n2hapB, uint score) const; void safeInsert(std::set &refHapSet, uint n1hap, uint n0) const; std::vector < std::pair > findGoodSegs(uint64 n0, uint64 nF1, uint64 nF2, uint64 n1hap) const; void updateFarHaps(std::vector < std::pair > &farHaps, uint n1hap, uint m64jStart, uint m64jEnd) const; double computeLogHetP(uint64 m64j) const; public: Eagle(uint64 _N, uint64 _Mseg64, const uint64_masks *_genoBits, std::vector < std::vector > _seg64cMvecs, const AlleleFreqs *_seg64freqs, std::vector _invLD64j, const std::vector &_indivs, const std::vector &_snps, const std::string &maskFile, const std::vector &isFlipped64j, double _pErr, int runStep2); // constructor for ref-mode Eagle(uint64 _Nref, uint64 _Ntarget, uint64 _Mseg64, const uint64_masks *_genoBits, std::vector < std::vector > _seg64cMvecs, double _pErr); void reallocLRPtoPBWT(void); ~Eagle(); void checkTrioErrorRate(uint64 n0, uint64 nF1, uint64 nF2) const; void randomlyPhaseTmpHaploBitsT(uint64 n0); std::pair > findLongDipMatches(uint64 n0, uint64 nF1, uint64 nF2); double findLongHapMatches(uint64 n0, uint64 nF1, uint64 nF2, int iter); double runHMM(uint64 n0, uint64 nF1, uint64 nF2, int iter, uint beamWidth, uint maxHapStates); std::vector computeRefIsMono(const std::vector &bestHaps) const; float runPBWT(uint64 n0, uint64 nF1, uint64 nF2, int Kpbwt, double cMexpect, double histFactor, bool runReverse, bool useTargetHaps, bool impMissing, bool isChrX); float runPBWT(uint64 n0, uint64 nF1, uint64 nF2, int Kpbwt, double cMexpect, double histFactor, bool runReverse, bool useTargetHaps, bool impMissing, int usePS, const std::vector < std::pair > &conPS, bool isChrX); void imputeMissing(const HapHedge &hapHedge, uint64 n0); void writePhaseConfs(const std::string &tmpPhaseFile) const; void readPhaseConfs(const std::string &tmpPhaseFile); void cpPhaseConfs(uint64 n0start, uint64 n0end); void cpTmpHaploBitsT(uint64 n0start, uint64 n0end); void outputSE(const std::vector &children, const std::vector &nF1s, const std::vector &nF2s, int step) const; void writeHapsGzSample(const std::string &prefix) const; void writeVcf(const std::string &tmpFile, const std::vector &isTmpPhased, const std::string &outFile, int chromX, double bpStart, double bpEnd, const std::string &writeMode, bool noImpMissing, bool keepMissingPloidyX, int argc, char**argv) const; void writeVcfNonRef(const std::string &vcfFile, const std::string &outFile, int inputChrom, int chromX, double bpStart, double bpEnd, const std::string &writeMode, bool keepMissingPloidyX, int argc, char **argv) const; void makeHardCalls(uint64 n0start, uint64 n0end, uint seed); void initRefIter(int refIter); void buildHashTables(int iter, int batch, int seed); const uint64 *getHaploBitsT(void) const; uint64 getNlib(int iter) const; uint64 getMseg64(void) const; const uchar *getMaskSnps64j(void) const; double computeHetRate(void) const; static int countSE(const std::vector &phaseVec); static int countMajorSE(const std::vector &phaseVec); }; } #endif Eagle-2.4/src/EagleImpMiss.cpp000066400000000000000000000225351321437612200162160ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include "HapHedge.hpp" #include "MemoryUtils.hpp" #include "NumericUtils.hpp" #include "Eagle.hpp" namespace EAGLE { using std::cout; using std::endl; using std::vector; using std::string; #define HAP_BEAM_WIDTH 16 struct ProbMaskBundle { float logTotProb; int numTop; float probs[HAP_BEAM_WIDTH]; uint64 masks[HAP_BEAM_WIDTH]; }; struct MultMaskState { float mult; // 1/Nhaps * pErr^numErrs uint64 mask; HapTreeState state; char rmActive[2]; inline int count(void) const { return state.count - rmActive[0] - rmActive[1]; } inline float multCount(void) const { if (mult == 0) return 0; else return mult * count(); } bool operator < (const MultMaskState &mms) const { return multCount() > mms.multCount(); } }; void advance(const HapTree &hapTree, const uchar rmHaps[], const uchar hap[], const uchar missing[], MultMaskState states[HAP_BEAM_WIDTH], int m, float pErr) { MultMaskState nextStates[2*HAP_BEAM_WIDTH]; int numNext = 0; // impose pruning thresh (TODO: test) const float minP = states[0].multCount() * pErr * pErr; for (int k = 0; k < HAP_BEAM_WIDTH && states[k].multCount() > minP; k++) for (int b = 0; b < 2; b++) { HapTreeState nextState = states[k].state; if (hapTree.next(m, nextState, b)) { if (missing[m]) { nextStates[numNext].mult = states[k].mult; nextStates[numNext].mask = (states[k].mask<<1)|b; } else { nextStates[numNext].mult = states[k].mult * (b==hap[m] ? 1 : pErr); nextStates[numNext].mask = states[k].mask; } nextStates[numNext].state = nextState; nextStates[numNext].rmActive[0] = states[k].rmActive[0] && ((rmHaps[m]&1)==b); nextStates[numNext].rmActive[1] = states[k].rmActive[1] && ((rmHaps[m]>>1)==b); numNext++; } } std::sort(nextStates, nextStates + numNext); memcpy(states, nextStates, std::min(numNext, HAP_BEAM_WIDTH) * sizeof(states[0])); // copy best if (numNext < HAP_BEAM_WIDTH) states[numNext].mult = 0; } string logProbToStr(float f) { f /= log(10); char buf[100]; sprintf(buf, "%.2fe%d", pow(10, f - floor(f)), (int) floor(f)); return buf; } // rmHaps: 2-bit phased genotypes for haplotype pair to ignore... or NULL if none (ref mode) // recombLogPs[T+1]: [0,T] = 0; [1..T-1] = logP for recomb in (t-0.5,t+0.5) void impMissing(const HapHedge &hapHedge, const uchar *rmHaps, uchar hap[], const uchar missing[], const float recombLogPs[], float pErr) { const int maxExt = 500; const int M = hapHedge.getM(); const int skip = hapHedge.getSkip(); const int T = hapHedge.getNumTrees(); const int dtMax = maxExt / skip; ProbMaskBundle *topPrefixes = (ProbMaskBundle *) calloc(T * dtMax, sizeof(topPrefixes[0])); // calloc => numTop initialized to 0 vector fwdLogProbs(T+1, -1000000), bwdLogProbs(T+1, -1000000); fwdLogProbs[0] = 0; bwdLogProbs[T] = 0; MultMaskState states[HAP_BEAM_WIDTH]; // compute haplotype prefix beams; compute fwdLogProbs for (int t = 0; t < T; t++) { const HapTree &hapTree = hapHedge.getHapTree(t); states[0].mask = 0; states[0].state = hapTree.getRootState(); if (rmHaps == NULL) { states[0].mult = hapTree.getInvNhaps(); states[0].rmActive[0] = states[0].rmActive[1] = 0; } else { states[0].mult = 1 / (1/hapTree.getInvNhaps()-2); // removing 2 haps states[0].rmActive[0] = states[0].rmActive[1] = 1; } for (int k = 1; k < HAP_BEAM_WIDTH; k++) states[k].mult = 0; int m = t*skip; int dtMiss = 0; for (int dt = 0; dt 64) break; // impose pruning threshold (TODO: test) float dtPrevBestProb = (dt==0 ? 0 : topPrefixes[t*dtMax + (dt-1)].probs[0]); float minP = dtPrevBestProb * pErr * pErr * expf(recombLogPs[t+dt]); // rel to previous float totProb = 0; ProbMaskBundle &bundle = topPrefixes[t*dtMax + dt]; bundle.numTop = 0; //cout << "t = " << t << ", dt = " << dt << ":" << endl; for (int k = 0; k < HAP_BEAM_WIDTH && states[k].multCount() > minP; k++) { float prob = states[k].multCount(); totProb += prob; bundle.numTop++; bundle.probs[k] = prob; bundle.masks[k] = states[k].mask; //cout << " prob = " << prob << ", mask = " << states[k].mask << endl; } if (bundle.numTop == 0) break; bundle.logTotProb = logf(totProb); // compute fwdLogProbs NumericUtils::logSumExp(fwdLogProbs[t+dt+1], fwdLogProbs[t] + bundle.logTotProb + recombLogPs[t+dt+1]); //cout << endl; } //cout << endl; } // count missing sites int numMiss = 0; vector tMiss; for (int t = 0; t < T; t++) { tMiss.push_back(numMiss); int m = t*skip; int mEnd = std::min(m + skip, M); for (; m < mEnd; m++) if (missing[m]) numMiss++; } // initialize log probs for missing sites float allLogProb01s[numMiss][2]; for (int i = 0; i < numMiss; i++) for (int b = 0; b < 2; b++) allLogProb01s[i][b] = -1000000; // compute bwdLogProbs; compute log probs at missing sites (using saved haplotype prefix beams) for (int t = T-1; t >= 0; t--) { int m = t*skip; int dtMiss = 0; for (int dt = 0; dt>(dtMiss-1-i))&1] += bundle.probs[k]; for (int i = 0; i < dtMiss; i++) for (int b = 0; b < 2; b++) if (prob01s[i][b] != 0) NumericUtils::logSumExp(allLogProb01s[tMiss[t]+i][b], fwdLogProbs[t] + logf(prob01s[i][b]) + bwdLogProbs[t+dt+1]); } } // impute missing sites numMiss = 0; for (int m = 0; m < M; m++) if (missing[m]) { hap[m] = (allLogProb01s[numMiss][1] > allLogProb01s[numMiss][0]); numMiss++; } /* for (int t = 0; t <= T; t++) cout << "fwdProbs[" << t << "]: " << logProbToStr(fwdLogProbs[t]) << endl; for (int t = 0; t <= T; t++) cout << "bwdProbs[" << t << "]: " << logProbToStr(bwdLogProbs[t]) << endl; for (int i = 0; i < numMiss; i++) { cout << "missing site " << i << ":"; for (int b = 0; b < 2; b++) cout << " " << logProbToStr(allLogProb01s[i][b]); cout << endl; } */ free(topPrefixes); } void Eagle::imputeMissing(const HapHedge &hapHedge, uint64 n0) { int M = hapHedge.getM(), skip = hapHedge.getSkip(), T = hapHedge.getNumTrees(); const HapBitsT &hapBitsT = hapHedge.getHapBitsT(); uchar *rmHaps = NULL; if (2*n0 < (uint64) hapBitsT.getNhaps()) { // set rmHaps rmHaps = ALIGNED_MALLOC_UCHARS(M * sizeof(rmHaps[0])); for (int m = 0; m < M; m++) rmHaps[m] = hapBitsT.getBit(2*n0, m) | (hapBitsT.getBit(2*n0+1, m)<<1); } vector missing(M); int m = 0; vector cMtreeStarts; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) if (maskSnps64j[m64j]) { if (m % skip == 0) cMtreeStarts.push_back(cMs64j[m64j]); missing[m++] = (genoBits[m64j/64 * N + n0].is9>>(m64j&63))&1; } cMtreeStarts.push_back(cMs64j[Mseg64*64]); vector recombLogPs(T+1); const double cMswitch = 2.0; for (int t = 1; t < T; t++) { double cMdelta = (cMtreeStarts[t+1] - cMtreeStarts[t-1]) / 2; recombLogPs[t] = log(std::max(1 - exp(-cMdelta / cMswitch), 1e-6)); //cout << exp(recombLogPs[t]) << " " << std::flush; } //cout << endl; for (uint64 nHap = 2*(n0-Nref); nHap <= 2*(n0-Nref)+1; nHap++) { vector hap(M); m = 0; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) if (maskSnps64j[m64j]) hap[m++] = (tmpHaploBitsT[nHap*Mseg64 + m64j/64]>>(m64j&63))&1; impMissing(hapHedge, rmHaps, &hap[0], &missing[0], &recombLogPs[0], pow(10.0, logPerr)); m = 0; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) if (maskSnps64j[m64j]) { uint64 bit = 1ULL<<(m64j&63); if (hap[m]) tmpHaploBitsT[nHap*Mseg64 + m64j/64] |= bit; else tmpHaploBitsT[nHap*Mseg64 + m64j/64] &= ~bit; m++; } } if (rmHaps != NULL) ALIGNED_FREE(rmHaps); } } Eagle-2.4/src/EagleMain.cpp000066400000000000000000000606001321437612200155140ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include "omp.h" #include #include "Eagle.hpp" #include "EagleParams.hpp" #include "GenoData.hpp" #include "HapHedge.hpp" #include "SyncedVcfData.hpp" #include "Timer.hpp" #include "StringUtils.hpp" #include "Version.hpp" using namespace EAGLE; using namespace std; //#define LOCAL_TEST //#define OLD_IMP_MISSING void adjustHistFactor(double &histFactor, double hetRate, double snpRate) { if (histFactor == 0) { if (snpRate * hetRate == 0) histFactor = 1; else { // compute how far (in cM) default 100 hets will typically span double cMdefaultHist = 100 / snpRate / hetRate; printf("Typical span of default 100-het history length: %.2f cM\n", cMdefaultHist); const double cMminHist = 1.0; histFactor = max(1.0, min(20.0, cMminHist / cMdefaultHist)); printf("Setting --histFactor=%.2f\n", histFactor); if (histFactor != 1) printf("Typical span of %d-het history length: %.2f cM\n", (int) (100*histFactor), cMdefaultHist*histFactor); cout << flush; } } } void phaseWithRef(EagleParams ¶ms, Timer &timer, double t0, int argc, char **argv) { string tmpFile = params.outPrefix + ".unphased." + params.vcfOutSuffix; string outFile = params.outPrefix + "." + params.vcfOutSuffix; vector < vector < pair > > conPSall; double snpRate; vector isTmpPhased; SyncedVcfData vcfData(params.vcfRef, params.vcfTarget, params.vcfExclude, params.allowRefAltSwap, params.chrom, params.chromX, params.bpStart-params.bpFlanking, params.bpEnd+params.bpFlanking, params.geneticMapFile, params.cMmax==0 ? 1 : params.cMmax, tmpFile, params.vcfWriteMode, params.usePS, conPSall, snpRate, params.outputUnphased, isTmpPhased); cout << endl << "Time for reading input: " << timer.update_time() << " sec" << endl << endl; Eagle eagle(vcfData.getNref(), vcfData.getNtarget(), vcfData.getMseg64(), vcfData.getGenoBits(), vcfData.getSeg64cMvecs(), params.pErr); double hetRate = eagle.computeHetRate(); cout << "Fraction of heterozygous genotypes: " << hetRate << endl; if (params.usePBWT) adjustHistFactor(params.histFactor, hetRate, snpRate); uint64 Nref = vcfData.getNref(), Ntarget = vcfData.getNtarget(); int iters = params.pbwtIters; if (params.noImpMissing) iters = 1; if (iters == 0) { if (Ntarget < Nref/2) iters = 1; else if (Ntarget < 2*Nref) iters = 2; else iters = 3; cout << endl << "Auto-selecting number of phasing iterations: setting --pbwtIters to " << iters << endl << endl; } cout << endl << "BEGINNING PHASING" << endl; vector confs(Ntarget); for (int iter = 1; iter <= iters; iter++) { double t23 = timer.get_time(); timer.update_time(); double timeMN2 = 0, timeImpMissing = 0; cout << endl << "PHASING ITER " << iter << " OF " << iters << endl << endl; eagle.initRefIter(iter); if (params.usePBWT) { // run PBWT algorithm HapBitsT *hapBitsTptr = NULL; HapHedge *hapHedgePtr = NULL; #ifdef OLD_IMP_MISSING if (!params.noImpMissing) { cout << "Making HapHedge" << endl; hapBitsTptr = new HapBitsT(eagle.getHaploBitsT(), 2*eagle.getNlib(2+iter), eagle.getMseg64(), eagle.getMaskSnps64j()); int skip = 25; hapHedgePtr = new HapHedge(*hapBitsTptr, skip); cout << "Built PBWT on " << hapBitsTptr->getNhaps() << " haplotypes" << endl; cout << "Time for HapHedge: " << timer.update_time() << endl; } #endif cout << endl << "Phasing target samples" << endl; int numPhased = 0; const int dots = 80; #pragma omp parallel for reduction(+:timeImpMissing) schedule(dynamic, 4) for (uint i = Nref; i < Nref+Ntarget; i++) { int nF1 = -1, nF2 = -1; if (params.trioCheck) { if ((i-Nref)%3 == 0) { // child nF1 = i+1; nF2 = i+2; } else if ((i-Nref)%3 == 1) { // parent 1 nF1 = -(i-1); nF2 = i+1; } else { // parent 2 nF1 = -(i-2); nF2 = i-1; } } confs[i-Nref] = eagle.runPBWT (i, nF1, nF2, params.Kpbwt/(iter1, !params.noImpMissing, params.usePS, conPSall[i-Nref], params.chrom==params.chromX); #ifdef OLD_IMP_MISSING if (!params.noImpMissing) { Timer tim; eagle.imputeMissing(*hapHedgePtr, i); timeImpMissing += tim.update_time(); } #endif #pragma omp critical(NUM_PHASED) { numPhased++; int newDots = numPhased * dots / Ntarget - (numPhased-1) * dots / Ntarget; if (newDots) cout << string(newDots, '.') << flush; } } #ifdef OLD_IMP_MISSING if (!params.noImpMissing) { delete hapHedgePtr; delete hapBitsTptr; } #endif } else { // run LRP algorithm cout << "Building hash tables" << endl; eagle.buildHashTables(2+iter, 0, params.seed); // in ref mode, first iter is 3 cout << " (time: " << timer.update_time() << ")" << endl; cout << endl << "Phasing target samples" << endl; #pragma omp parallel for reduction(+:timeMN2) schedule(dynamic, 4) for (uint i = Nref; i < Nref+Ntarget; i++) timeMN2 += eagle.runHMM(i, -1, -1, 3, params.beamWidth4, params.maxHapStates); } cout << endl << "Time for phasing iter " << iter << ": " << (timer.get_time()-t23) << endl; if (!params.usePBWT) cout << "Time for phasing iter " << iter << " MN^2: " << timeMN2 / params.numThreads << endl; #ifdef OLD_IMP_MISSING else if (!params.noImpMissing) cout << "Time for phasing iter " << iter << " impMissing: " << timeImpMissing / params.numThreads << endl; #endif } /***** FINAL OUTPUT *****/ timer.update_time(); cout << "Writing " << params.vcfOutSuffix << " output to " << outFile << endl; eagle.writeVcf(tmpFile, isTmpPhased, outFile, params.chromX, params.bpStart, params.bpEnd, params.vcfWriteMode, params.noImpMissing, params.keepMissingPloidyX, argc, argv); cout << "Time for writing output: " << timer.update_time() << endl; cout << "Total elapsed time for analysis = " << (timer.get_time()-t0) << " sec" << endl; cout << endl; cout << "Mean phase confidence of each target individual:" << endl; cout << "ID" << "\t" << "PHASE_CONFIDENCE" << endl; for (uint i = Nref; i < Nref+Ntarget; i++) { cout << vcfData.getTargetID(i-Nref) << "\t" << confs[i-Nref] << endl; } } int main(int argc, char *argv[]) { Timer timer; double t0 = timer.get_time(); cout << " +-----------------------------+" << endl; cout << " | |" << endl; cout << " | Eagle v"; printf("%-19s|\n", EAGLE_VERSION); cout << " | "; printf("%-26s|\n", EAGLE_VERSION_DATE); cout << " | Po-Ru Loh |" << endl; cout << " | |" << endl; cout << " +-----------------------------+" << endl; cout << endl; cout << "Copyright (C) 2015-2017 Harvard University." << endl; cout << "Distributed under the GNU GPLv3+ open source license." << endl << endl; //cout << "Boost version: " << BOOST_LIB_VERSION << endl; //cout << endl; printf("Command line options:\n\n"); printf("%s ", argv[0]); for (int i = 1; i < argc; i++) { if (strlen(argv[i]) >= 2 && argv[i][0] == '-' && argv[i][1] == '-') printf("\\\n "); bool hasSpace = false; for (uint j = 0; j < strlen(argv[i]); j++) if (isspace(argv[i][j])) hasSpace = true; if (hasSpace) { if (argv[i][0] == '-') { bool foundEquals = false; for (uint j = 0; j < strlen(argv[i]); j++) { printf("%c", argv[i][j]); if (argv[i][j] == '=' && !foundEquals) { printf("\""); foundEquals = true; } } printf("\" "); } else printf("\"%s\" ", argv[i]); } else printf("%s ", argv[i]); } cout << endl << endl; EagleParams params; if (!params.processCommandLineArgs(argc, argv)) { cerr << "Aborting due to error processing command line arguments" << endl; exit(1); } cout << "Setting number of threads to " << params.numThreads << endl; omp_set_num_threads(params.numThreads); if (!params.vcfRef.empty()) { // use reference haplotypes phaseWithRef(params, timer, t0, argc, argv); return 0; } cout << endl << "=== Reading genotype data ===" << endl << endl; GenoData genoData; if (!params.vcfFile.empty()) genoData.initVcf(params.vcfFile, params.chrom, params.chromX, params.bpStart, params.bpEnd, params.geneticMapFile, params.noMapCheck, params.cMmax); else genoData.initBed(params.famFile, params.bimFile, params.bedFile, params.chrom, params.bpStart, params.bpEnd, params.geneticMapFile, params.excludeFiles, params.removeFiles, params.maxMissingPerSnp, params.maxMissingPerIndiv, params.noMapCheck, params.cMmax); if (!params.usePBWT) { // Eagle v1 algorithm params.pbwtOnly = false; // should already be false params.runStep2 = 1; } else { // PBWT algorithm // if SNP density is >1000 SNPs/Mb, don't run Steps 1+2 (even if --pbwtOnly is not set) int bpSpan = genoData.getSnps().back().physpos - genoData.getSnps()[0].physpos; double snpsPerMb = genoData.getSnps().size() / (bpSpan*1e-6); if (snpsPerMb > 1000) params.pbwtOnly = true; if (genoData.getN() > 200000U) params.pbwtOnly = true; if (params.pbwtOnly) params.runStep2 = 0; // if --runStep2 hasn't yet been set, SNP density must be low; run Step 2 unless too few chunks if (params.runStep2 != 0 && params.runStep2 != 1) params.runStep2 = (genoData.getMseg64() >= 3U); // can't run Step 2 with < 3 SNP segments } vector invLD64j; if (!params.pbwtOnly) invLD64j = genoData.computeInvLD64j(1000); Eagle eagle(genoData.getN(), genoData.getMseg64(), genoData.getGenoBits(), genoData.getSeg64cMvecs(), genoData.getSeg64logPs(), invLD64j, genoData.getIndivs(), genoData.getSnps(), params.maskFile, genoData.getIsFlipped64j(), params.pErr, params.runStep2); double hetRate = eagle.computeHetRate(); cout << "Fraction of heterozygous genotypes: " << hetRate << endl; if (params.usePBWT) adjustHistFactor(params.histFactor, hetRate, genoData.computeSnpRate()); map > trioIIDs; vector children, nF1s, nF2s; uint N = genoData.getN(); double timeMN2 = 0; #ifdef LOCAL_TEST { ifstream //finTrios("/groups/price/poru/HSPH_SVN/data/GERA/phasing/eur.CEU_gt_0.9.trios_indep.fam"); finTrios("/groups/price/UKBiobank/download/ukb4777_trios.fam"); if (finTrios) { string FID, IID, s1, s2, s3, s4; while (finTrios >> FID >> IID >> s1 >> s2 >> s3 >> s4) trioIIDs[IID] = make_pair(s1, s2); for (uint i = 0; i < N; i++) { int nF1 = -1, nF2 = -1; if (trioIIDs.find(genoData.getIndiv(i).indivID) == trioIIDs.end()) continue; pair parents = trioIIDs[genoData.getIndiv(i).indivID]; for (uint iF = 0; iF < N; iF++) if (genoData.getIndiv(iF).indivID == parents.first || genoData.getIndiv(iF).indivID == parents.second) { if (nF1 == -1) nF1 = iF; else nF2 = iF; } if (nF1 != -1 && nF2 != -1) { children.push_back(i); nF1s.push_back(nF1); nF2s.push_back(nF2); } } cout << "Identified " << children.size() << " trio children" << endl; } } #endif if (params.iter == 0) { if (params.outPrefix == "") { cerr << "ERROR: --outPrefix must be specified" << endl; exit(1); } /***** RUN STEP 1 *****/ if (!params.pbwtOnly) { cout << endl << "BEGINNING STEP 1" << endl << endl; double t1 = timer.get_time(); timer.update_time(); timeMN2 = 0; for (uint att = 0; att < min(9U, (uint) children.size()); att++) // run on trio children eagle.findLongDipMatches(children[att], nF1s[att], nF2s[att]); #pragma omp parallel for reduction(+:timeMN2) schedule(dynamic, 4) for (uint i = 0; i < N; i++) { //cout << StringUtils::itos(i)+"\n" << flush; timeMN2 += eagle.findLongDipMatches(i, -1, -1).first; //cout << StringUtils::itos(-i)+"\n" << flush; } if (!params.tmpPhaseConfsPrefix.empty()) eagle.writePhaseConfs(params.tmpPhaseConfsPrefix+".step1.bin"); cout << "Time for step 1: " << (timer.get_time()-t1) << endl; cout << "Time for step 1 MN^2: " << timeMN2 / params.numThreads << endl; eagle.outputSE(children, nF1s, nF2s, 1); } else { // use PBWT only => phase randomly cout << endl << "SKIPPED STEP 1" << endl; #pragma omp parallel for reduction(+:timeMN2) schedule(dynamic, 4) for (uint i = 0; i < N; i++) eagle.randomlyPhaseTmpHaploBitsT(i); } if (params.runStep2) { // running step 2 => Step 1 phase confs were saved to phaseConfs cout << endl << "Making hard calls" << flush; timer.update_time(); eagle.makeHardCalls(0, N, params.seed); cout << " (time: " << timer.update_time() << ")" << endl << endl; } else { // not running Step 2 => Step 1 phase calls were saved to tmpHaploBitsT eagle.cpTmpHaploBitsT(0, N); } /***** RUN STEPS 2-4 (STEP 4 = STEP 3a in paper) *****/ for (int step = 2; step <= (params.usePBWT ? (1+params.runStep2) : 4); step++) { cout << endl << "BEGINNING STEP " << step << endl << endl; double t23 = timer.get_time(); timer.update_time(); timeMN2 = 0; const uint64 numBatches = step == 2 ? 1 : 10; const uint64 runBatches = step <= 3 ? numBatches : (uint64) (numBatches * params.fracStep4); for (uint64 b = 1; b <= runBatches; b++) { cout << "BATCH " << b << " OF " << runBatches << endl; cout << "Building hash tables" << endl; eagle.buildHashTables(step, b, params.seed); cout << " (time: " << timer.update_time() << ")" << endl; if (b == 1) for (uint att = 0; att < min(9U, (uint) children.size()); att++) // run on trio children step == 2 ? eagle.findLongHapMatches(children[att], nF1s[att], nF2s[att], step) : eagle.runHMM(children[att], nF1s[att], nF2s[att], step, step==3 ? params.beamWidth3 : params.beamWidth4, params.maxHapStates); uint iStart = (b-1)*N/numBatches, iEnd = b*N/numBatches; cout << endl << "Phasing samples " << (iStart+1) << "-" << iEnd << endl; #pragma omp parallel for reduction(+:timeMN2) schedule(dynamic, 4) for (uint i = iStart; i < iEnd; i++) { //if (step == 3) cout << StringUtils::itos(i)+"\n" << flush; timeMN2 += step == 2 ? eagle.findLongHapMatches(i, -1, -1, step) : eagle.runHMM(i, -1, -1, step, step==3 ? params.beamWidth3 : params.beamWidth4, params.maxHapStates); //if (step == 3) cout << StringUtils::itos(-i)+"\n" << flush; } eagle.cpPhaseConfs(iStart, iEnd); cout << "Time for phasing batch: " << timer.update_time() << endl; cout << endl << "Making hard calls" << flush; eagle.makeHardCalls(iStart, iEnd, params.seed + step); cout << " (time: " << timer.update_time() << ")" << endl << endl; } if (!params.tmpPhaseConfsPrefix.empty()) eagle.writePhaseConfs(params.tmpPhaseConfsPrefix+".step"+StringUtils::itos(step)+".bin"); cout << "Time for step " << step << ": " << (timer.get_time()-t23) << endl; cout << "Time for step " << step << " MN^2: " << timeMN2 / params.numThreads << endl; eagle.outputSE(children, nF1s, nF2s, step); } if (params.usePBWT) { // run PBWT iters if (!params.runStep2) // didn't run Step 2 => didn't allocate phaseConfs cout << endl << "SKIPPED STEP 2" << endl; else // ran Step 2 => allocated phaseConfs; didn't allocate tmpHaploBitsT eagle.reallocLRPtoPBWT(); cout << endl << endl << "BEGINNING STEP 3 (PBWT ITERS)" << endl << endl; int iters = params.pbwtIters; if (iters == 0) { iters = 2 + params.pbwtOnly; cout << "Auto-selecting number of PBWT iterations: setting --pbwtIters to " << iters << endl << endl; } for (int iter = 1; iter <= iters; iter++) { cout << endl << "BEGINNING PBWT ITER " << iter << endl << endl; double t23 = timer.get_time(); timer.update_time(); double timeImpMissing = 0; int skip = 16; int Kpbwt = params.Kpbwt; bool runReverse = true; if (iter < iters) { // run rougher computation Kpbwt >>= (iters-iter); skip *= 2; runReverse = false; } const uint64 numBatches = 10; for (uint64 b = 1; b <= numBatches; b++) { cout << "BATCH " << b << " OF " << numBatches << endl; #ifdef OLD_IMP_MISSING cout << endl << "Making HapHedge" << endl; HapBitsT hapBitsT(eagle.getHaploBitsT(), 2*eagle.getNlib(2+iter), eagle.getMseg64(), eagle.getMaskSnps64j()); HapHedge hapHedge(hapBitsT, skip); cout << "Built PBWT on " << hapBitsT.getNhaps() << " haplotypes" << endl; cout << "Time for HapHedge: " << timer.update_time() << endl; #endif if (b == 1) for (uint att = 0; att < min(9U, (uint) children.size()); att++) // run on trios eagle.runPBWT(children[att], nF1s[att], nF2s[att], Kpbwt, params.expectIBDcM, params.histFactor, runReverse, true, false, params.chrom==params.chromX); uint iStart = (b-1)*N/numBatches, iEnd = b*N/numBatches; cout << endl << "Phasing samples " << (iStart+1) << "-" << iEnd << endl; #pragma omp parallel for reduction(+:timeImpMissing) schedule(dynamic, 4) for (uint i = iStart; i < iEnd; i++) { eagle.runPBWT(i, -1, -1, Kpbwt, params.expectIBDcM, params.histFactor, runReverse, true, true, params.chrom==params.chromX); #ifdef OLD_IMP_MISSING Timer tim; eagle.imputeMissing(hapHedge, i); timeImpMissing += tim.update_time(); #endif } eagle.cpTmpHaploBitsT(iStart, iEnd); cout << "Time for phasing batch: " << timer.update_time() << endl << endl; } cout << "Time for PBWT iter " << iter << ": " << (timer.get_time()-t23) << endl; #ifdef OLD_IMP_MISSING cout << "Time for PBWT iter " << iter << " impMissing: " << timeImpMissing / params.numThreads << endl; #endif //eagle.outputSE(children, nF1s, nF2s, step); // currently requires phaseConfs } } /***** FINAL OUTPUT *****/ if (!params.vcfFile.empty()) { string outFile = params.outPrefix + "." + params.vcfOutSuffix; cout << "Writing " << params.vcfOutSuffix << " output to " << outFile << endl; eagle.writeVcfNonRef(params.vcfFile, outFile, params.chrom, params.chromX, params.bpStart, params.bpEnd, params.vcfWriteMode, params.keepMissingPloidyX, argc, argv); } else { cout << "Writing .haps.gz and .sample output" << endl; timer.update_time(); eagle.writeHapsGzSample(params.outPrefix); } cout << "Time for writing output: " << timer.update_time() << endl; } else if (params.iter == 1) { // PERFORM 1ST-ITER PHASING FOR A SMALL SUBSET ONLY (FOR TESTING) double t1 = timer.get_time(); timer.update_time(); timeMN2 = 0; map longestFreqs; int tot = 0; int att = 0, maxAtt = 10; for (uint i = 0; i < N; i++) { int nF1 = -1, nF2 = -1; if (trioIIDs.find(genoData.getIndiv(i).indivID) == trioIIDs.end()) continue; cout << "Testing n0 = " << i << ": " << genoData.getIndiv(i).famID << " " << genoData.getIndiv(i).indivID << endl; pair parents = trioIIDs[genoData.getIndiv(i).indivID]; for (uint iF = 0; iF < N; iF++) if (genoData.getIndiv(iF).indivID == parents.first || genoData.getIndiv(iF).indivID == parents.second) { cout << "Parent n1: " << iF << endl; if (nF1 == -1) nF1 = iF; else nF2 = iF; } eagle.checkTrioErrorRate(i, nF1, nF2); pair > ret = eagle.findLongDipMatches(i, nF1, nF2); timeMN2 += ret.first; for (uint j = 0; j < ret.second.size(); j++) { longestFreqs[(int) ret.second[j]]++; tot++; } att++; if (att == maxAtt) break; } int cum = 0; for (map ::iterator it = longestFreqs.begin(); it != longestFreqs.end(); it++) { cum += it->second; cout << it->first << " cM: " << it->second << " cum: " << (double) cum/tot << endl; } cout << "Time for step 1: " << (timer.get_time()-t1) << endl; cout << "Time for step 1 MN^2: " << timeMN2 / params.numThreads << endl; } else { // iter > 1 (FOR TESTING) cout << "Reading phase confidences" << endl; eagle.readPhaseConfs(/*"test_UKBiobank/eagle_305_chr10_small_iter2_bsub.tmpPhaseConfs.bin"*/params.tmpPhaseConfsPrefix+".step"+StringUtils::itos(params.iter-1)+".bin"); timer.update_time(); cout << "Making hard calls" << endl; eagle.makeHardCalls(0, N, params.seed); cout << "Time for hard calls: " << timer.update_time() << endl; /* global PBWT cout << "Making forward HapHedge" << endl; HapBitsT hapBitsFwdT(eagle.getHaploBitsT(), 2*eagle.getNlib(params.iter), eagle.getMseg64(), eagle.getMaskSnps64j()); int skip = 1; HapHedge hapHedgeFwd(hapBitsFwdT, skip); cout << "Making backward HapHedge" << endl; HapBitsT hapBitsBwdT(hapBitsFwdT, -1); HapHedge hapHedgeBwd(hapBitsBwdT, skip); cout << "Time for HapHedge: " << timer.update_time() << endl; */ #define USE_PBWT #ifndef USE_PBWT cout << "Building hash tables" << endl; eagle.buildHashTables(params.iter, 1, params.seed); cout << endl << "Time for hash tables: " << timer.update_time() << endl; #else eagle.reallocLRPtoPBWT(); #endif int att = 0, maxAtt = N; for (uint i = 0; i < N; i++) { int nF1 = -1, nF2 = -1; if (trioIIDs.find(genoData.getIndiv(i).indivID) == trioIIDs.end()) continue; cout << "Testing n0 = " << i << ": " << genoData.getIndiv(i).famID << " " << genoData.getIndiv(i).indivID << endl; pair parents = trioIIDs[genoData.getIndiv(i).indivID]; for (uint iF = 0; iF < N; iF++) if (genoData.getIndiv(iF).indivID == parents.first || genoData.getIndiv(iF).indivID == parents.second) { cout << "Parent n1: " << iF << endl; if (nF1 == -1) nF1 = iF; else nF2 = iF; } eagle.checkTrioErrorRate(i, nF1, nF2); #ifdef USE_PBWT eagle.runPBWT(i, nF1, nF2, params.Kpbwt, params.expectIBDcM, params.histFactor, true, false, !params.noImpMissing, params.chrom==params.chromX); #else timeMN2 += params.iter == 2 ? eagle.findLongHapMatches(i, nF1, nF2, params.iter) : eagle.runHMM(i, nF1, nF2, params.iter, params.iter==3 ? params.beamWidth3 : params.beamWidth4, params.maxHapStates/*, &hapHedgeFwd, &hapHedgeBwd*/); #endif att++; if (att == maxAtt) break; } cout << "Time for step minus init: " << timer.update_time() << endl; cout << "Time for MN^2: " << timeMN2 / (params.iter == 0 ? params.numThreads : 1) << endl; #ifdef RDTSC_TIMING printf("%.1f%% of time in dip-hap\n", 100*eagle.diphapTicks / (double) eagle.totTicks); printf("%.1f%% of time in ext\n", 100*eagle.extTicks / (double) eagle.totTicks); printf("%.1f%% of time in LSH\n", 100*eagle.lshTicks / (double) eagle.totTicks); printf("%.1f%% of time in LSH hit checks\n", 100*eagle.lshCheckTicks / (double) eagle.totTicks); printf("%.1f%% of time in DP\n", 100*eagle.dpTicks / (double) eagle.totTicks); printf(" rel %.1f%% in sort\n", 100*eagle.dpSortTicks / (double) eagle.dpTicks); printf(" rel %.1f%% in update\n", 100*eagle.dpUpdateTicks / (double) eagle.dpTicks); printf(" rel %.1f%% in computeStatic\n", 100*eagle.dpStaticTicks / (double) eagle.dpTicks); printf(" rel %.1f%% in computeSwitch\n", 100*eagle.dpSwitchTicks / (double) eagle.dpTicks); printf("%.1f%% of time in blip fix\n", 100*eagle.blipFixTicks / (double) eagle.totTicks); printf(" rel %.1f%% in LSH\n", 100*eagle.blipLshTicks / (double) eagle.blipFixTicks); printf(" rel %.1f%% in popcount\n", 100*eagle.blipPopTicks / (double) eagle.blipFixTicks); printf(" rel %.1f%% in vote update\n", 100*eagle.blipVoteTicks / (double) eagle.blipFixTicks); cout << "Number of update calls: " << eagle.dpUpdateCalls << endl; #endif } cout << "Total elapsed time for analysis = " << (timer.get_time()-t0) << " sec" << endl; } Eagle-2.4/src/EaglePBWT.cpp000066400000000000000000000712571321437612200154160ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include "DipTreePBWT.hpp" #include "HapHedge.hpp" #include "NumericUtils.hpp" #include "Timer.hpp" #include "Types.hpp" #include "Eagle.hpp" namespace EAGLE { using std::vector; using std::cout; using std::endl; struct ProbInd { float prob; int ind1, ind2; ProbInd(float _prob=0, int _ind1=0, int _ind2=0) : prob(_prob), ind1(_ind1), ind2(_ind2) {} bool operator < (const ProbInd &pi) const { return std::min(prob, 1-prob) < std::min(pi.prob, 1-pi.prob); } }; inline int popcount64_012(uint64 i) { if (i == 0) return 0; else if ((i & (i-1ULL)) == 0) return 1; else return 2; } vector Eagle::findMinErrDipHap(uint64 n0, uint K, bool useTargetHaps) const { uint64 Nhaps = 2*((Nref==0 || useTargetHaps) ? N : Nref); if (K > Nhaps) K = Nhaps; vector bestHaps; bestHaps.reserve(K); if (K == Nhaps) { for (uint64 nHap = 0; nHap < Nhaps; nHap++) if (nHap/2 != n0) bestHaps.push_back(nHap); } else { vector < pair > hapErrInds(Nhaps); vector genoBitsT(Mseg64); for (uint64 m64 = 0; m64 < Mseg64; m64++) genoBitsT[m64] = genoBits[m64*N + n0]; for (uint64 nHap = 0; nHap < Nhaps; nHap++) { uint numErrs = (nHap/2 == n0 ? 1000000 : 0); for (uint64 m64 = 0; m64 < Mseg64; m64++) { uint64 is1 = haploBitsT[nHap*Mseg64 + m64]; uint64 wrongBits = (genoBitsT[m64].is0 & is1) | (genoBitsT[m64].is2 & ~is1); numErrs += popcount64_012(wrongBits); } hapErrInds[nHap].first = numErrs; hapErrInds[nHap].second = nHap; } std::sort(hapErrInds.begin(), hapErrInds.end()); for (uint k = 0; k < K; k++) if (hapErrInds[k].second/2 != n0) bestHaps.push_back(hapErrInds[k].second); } return bestHaps; } vector Eagle::computeRefIsMono(const vector &bestHaps) const { vector refIsMono(Mseg64*64, true); vector anyIs0(Mseg64), anyIs1(Mseg64); for (uint i = 0; i < bestHaps.size(); i++) { uint64 nHap = bestHaps[i]; for (uint64 m64 = 0; m64 < Mseg64; m64++) { uint64 is1 = haploBitsT[nHap*Mseg64 + m64]; anyIs0[m64] |= ~is1; anyIs1[m64] |= is1; } } for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) { if (maskSnps64j[m64j]) { uint64 m64 = m64j/64, j = m64j&63; refIsMono[m64j] = !((anyIs0[m64]>>j)&1) || !((anyIs1[m64]>>j)&1); } } return refIsMono; } float Eagle::runPBWT(uint64 n0, uint64 nF1, uint64 nF2, int Kpbwt, double cMexpect, double histFactor, bool runReverse, bool useTargetHaps, bool impMissing, bool isChrX) { vector < pair > noConPS; return runPBWT(n0, nF1, nF2, Kpbwt, cMexpect, histFactor, runReverse, useTargetHaps, impMissing, 0, noConPS, isChrX); } float Eagle::runPBWT(uint64 n0, uint64 nF1, uint64 nF2, int Kpbwt, double cMexpect, double histFactor, bool runReverse, bool useTargetHaps, bool impMissing, int usePS, const vector < pair > &conPS, bool isChrX) { Timer timer; vector m64jInds(Mseg64*64+1); const int SPEED_FACTOR = 1; const float lnPerr = logf(powf(10.0f, logPerr)); const int CALL_LENGTH_FACTOR = 1; bool print = (int) nF1 != -1; /***** SELECT BEST REFERENCE HAPLOTYPES *****/ if (print) cout << "selecting " << Kpbwt << " ref haps... " << std::flush; vector bestHaps = findMinErrDipHap(n0, Kpbwt, useTargetHaps); // find sites at which only one allele is represented in bestHaps => can't be used as split vector refIsMono = computeRefIsMono(bestHaps); // size = Mseg64*64 if (print) cout << " done " << timer.update_time() << endl; /***** PROCESS TARGET GENOTYPES *****/ // create vectors of genos, genoBits, and hets vector genos64j(Mseg64*64); vector hets64j, refMonoHets64j; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) { genos64j[m64j] = getGeno0123(m64j, n0); if (maskSnps64j[m64j] && genos64j[m64j]==1) { if (!refIsMono[m64j]) hets64j.push_back(m64j); else refMonoHets64j.push_back(m64j); } } vector tgtGenoBits(Mseg64); for (uint64 m64 = 0; m64 < Mseg64; m64++) tgtGenoBits[m64] = genoBits[m64*N + n0]; vector pbwtBitsFine(Mseg64); float conf = 0; // find split sites (for PBWT HapTree starts): hets and occasionally inter-het sites vector < pair > tCallLocs; vector tHomLocs; vector splits64j; const double cMmaxSplit = 0.5; if (!hets64j.empty()) { splits64j.push_back(hets64j[0]); for (uint64 h = 1; h < hets64j.size(); h++) { int lastCallLoc = splits64j.size(); // old het ind + 1: tree indices are split indices + 1 for (uint64 m64j = hets64j[h-1]+1; m64j <= hets64j[h]; m64j++) if (maskSnps64j[m64j] && !refIsMono[m64j] && genos64j[m64j] <= 2) if (m64j == hets64j[h] || cMs64j[m64j] > cMs64j[splits64j.back()] + cMmaxSplit) { splits64j.push_back(m64j); if (m64j < hets64j[h]) tHomLocs.push_back(splits64j.size()); // hom ind + 1 } int nextCallLoc = splits64j.size(); // new het ind + 1 tCallLocs.push_back(make_pair(lastCallLoc, nextCallLoc)); } } else { // all hom or missing or mono in ref; put in splits as necessary for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) if (maskSnps64j[m64j] && !refIsMono[m64j] && genos64j[m64j] <= 2) if (splits64j.empty() || cMs64j[m64j] > cMs64j[splits64j.back()] + cMmaxSplit) { splits64j.push_back(m64j); tHomLocs.push_back(splits64j.size()); // hom ind + 1 } } if (print) { cout << "num hets (poly in best haps): " << hets64j.size(); cout << " num hets (mono in best haps): " << refMonoHets64j.size(); cout << " num splits: " << splits64j.size() << endl; } // allocate storage for reference haplotype samples (to use for impMissing and singleton hets) const int samples = 10; vector < vector > refSamples[2]; refSamples[0].resize(splits64j.size()+1); refSamples[1].resize(splits64j.size()+1); // store which inter-split chunks contain at least one missing site vector tHasMissing(splits64j.size()+1); // "missing" = missing or singleton het for (int t = 0; t <= (int) splits64j.size(); t++) { uint64 m64jPrev = t==0 ? -1ULL : splits64j[t-1]; uint64 m64jNext = t==(int) splits64j.size() ? Mseg64*64 : splits64j[t]; for (uint64 m64j = m64jPrev+1; m64j < m64jNext; m64j++) if (maskSnps64j[m64j] && ((genos64j[m64j] == 3 && impMissing) || // missing (genos64j[m64j] == 1 && refIsMono[m64j]))) // singleton het tHasMissing[t] = true; } // create vector of genos at split sites (padded on left and right to match hapBitsT) vector splitGenos; splitGenos.push_back(0); // pad on left with 0 (to match hapBitsT) for (uint64 s = 0; s < splits64j.size(); s++) splitGenos.push_back(genos64j[splits64j[s]]); splitGenos.push_back(0); // pad on right with 0 (to match hapBitsT) // check for 0 or 1 het (warn) if (!isChrX && hets64j.size() <= 1) { cerr << "WARNING: Sample " << n0-Nref+1 << " (1-indexed) has a het count of " << hets64j.size() << endl; } // compute recombination probabilities vector cMcoords(splits64j.size()+2); for (uint64 s = 0; s <= splits64j.size(); s++) { uint64 splitStart = (s == 0 ? 0 : splits64j[s-1]); uint64 splitStop = (s == splits64j.size() ? Mseg64*64 : splits64j[s]); cMcoords[s] = cMs64j[splitStart]; cMcoords[s+1] = cMs64j[splitStop]; int homs = 0; for (uint64 m64j = splitStart+1; m64j < splitStop; m64j++) if (genos64j[m64j] == 0 || genos64j[m64j] == 2) homs++; } /**** BUILD PBWT DATA STRUCTURE *****/ // create HapBitsT encoding of ref hets and hom errs if (print) cout << "making HapBitsT... " << std::flush; HapBitsT hapBitsT(haploBitsT, Mseg64, splits64j, splitGenos, tgtGenoBits, bestHaps); if (print) cout << " done " << timer.update_time() << endl; // create HapHedge PBWT data structure if (print) cout << "making HapHedge... " << std::flush; HapHedgeErr *hapHedgePtr = new HapHedgeErr(hapBitsT); if (print) cout << " done " << timer.update_time() << endl; //hapHedgePtr->printTree(0); /***** RUN COARSE (UNCONSTRAINED) DIPTREE SEARCH *****/ // initialize DipTree object if (print) cout << "making DipTree (unconstr)... " << std::flush; vector constraints(splitGenos.size(), NO_CONSTRAINT); vector splitInds(Mseg64*64+1); // index map for FORMAT:PS constraints if (usePS) { // populate splitInds: 1-based indices t=1..T-2 in splits64j[t-1] of 1-based SNPs m+1 for (uint64 m64j = 0, m = 0, t = 0; m64j < Mseg64*64; m64j++) if (maskSnps64j[m64j]) { m++; m64jInds[m] = m64j; if (t < splits64j.size() && splits64j[t]==m64j) { t++; splitInds[m] = t; } else splitInds[m] = 0; } // set constraints for fast search for (uint c = 0; c < conPS.size(); c++) if (splitInds[conPS[c].first] && splitInds[abs(conPS[c].second)]) constraints[splitInds[conPS[c].first]] = ((splitInds[conPS[c].first]-splitInds[abs(conPS[c].second)])<<1)|(conPS[c].second<0); } const int histLengthFast = 30*histFactor, pbwtBeamWidthFast = 30/SPEED_FACTOR; DipTree dipTreeFast(*hapHedgePtr, splitGenos, &constraints[0], cMcoords, cMexpect, histLengthFast, pbwtBeamWidthFast, lnPerr, 0); if (print) cout << " done " << timer.update_time() << endl; // explore search space; make phase calls if (print) cout << "making phase calls (uncon)... " << std::flush; const int callLengthFast = 10*CALL_LENGTH_FACTOR; const float minFix = 0.5f, maxFix = 0.9f, fixThresh = 0.01f; vector probInds; vector pbwtBitsFast(Mseg64); uint64 lastBit = 0; for (uint64 i = 0; i < tCallLocs.size(); i++) { float probAA = dipTreeFast.callProbAA(tCallLocs[i].first, tCallLocs[i].second, callLengthFast); ProbInd probInd(probAA, tCallLocs[i].first, tCallLocs[i].second); if (probAA < 0.5f) lastBit = !lastBit; uint64 m64j = hets64j[i+1]; pbwtBitsFast[m64j/64] |= lastBit<<(m64j&63); if (i > 0) { // try calling rel phase vs. 2 hets back (in case prev het is err) float probAA2 = dipTreeFast.callProbAA(tCallLocs[i-1].first, tCallLocs[i].second, callLengthFast); ProbInd probInd2(probAA2, tCallLocs[i-1].first, tCallLocs[i].second); if (probInd2 < probInd) probInd = probInd2; } probInds.push_back(probInd); } int T = splitGenos.size(); // splits64j.size()+2; tree indices are split indices + 1 vector revConstraints(T, NO_CONSTRAINT); // set relative phase constraints for most confident hets std::sort(probInds.begin(), probInds.end()); //float fracFixed = 0; for (int f = 0; f < minFix*probInds.size() || (f < maxFix*probInds.size() && (probInds[f].prob < fixThresh || probInds[f].prob > 1-fixThresh)) || (f < (int) probInds.size() && (probInds[f].prob==0 || probInds[f].prob==1)); f++) { //fracFixed = (f+1.0f) / probInds.size(); constraints[probInds[f].ind2] = // het constraint: fix relative phase of ind2 wrt ind1 revConstraints[T-1-probInds[f].ind1] = ((probInds[f].ind2 - probInds[f].ind1)<<1) | (probInds[f].prob < 0.5f); if (constraints[probInds[f].ind1] == NO_CONSTRAINT) constraints[probInds[f].ind1] = OPP_CONSTRAINT; // set to -2 = "start of het block" revConstraints[T-1-probInds[f].ind2] = OPP_CONSTRAINT; } // make hom dosage calls (and divide by 2 to sort properly: uncertainty = dist from 0 or 1) probInds.clear(); for (uint64 i = 0; i < tHomLocs.size(); i++) probInds.push_back(ProbInd(dipTreeFast.callDosage(tHomLocs[i], callLengthFast) / 2, tHomLocs[i])); std::sort(probInds.begin(), probInds.end()); for (int f = 0; f < minFix*probInds.size() || (f < maxFix*probInds.size() && (probInds[f].prob < fixThresh || probInds[f].prob > 1-fixThresh)) || (f < (int) probInds.size() && (probInds[f].prob==0 || probInds[f].prob==1)); f++) constraints[probInds[f].ind1] = revConstraints[T-1-probInds[f].ind1] = (probInds[f].prob >= 0.5f); // hom constraint: no err allowed if (print) cout << " done " << timer.update_time() << endl; //cout << "frac fixed: " << fracFixed << endl; // set constraints for fine search if (usePS == 2) { for (uint c = 0; c < conPS.size(); c++) if (splitInds[conPS[c].first] && splitInds[abs(conPS[c].second)]) constraints[splitInds[conPS[c].first]] = revConstraints[T-1-splitInds[abs(conPS[c].second)]] = ((splitInds[conPS[c].first]-splitInds[abs(conPS[c].second)])<<1)|(conPS[c].second<0); } /***** RUN FINE (CONSTRAINED) DIPTREE SEARCH *****/ // initialize DipTree object if (print) cout << "making DipTree (constrained)..." << std::flush; const int histLengthFine = 100*histFactor, pbwtBeamWidthFine = 50/SPEED_FACTOR; DipTree dipTreeFine(*hapHedgePtr, splitGenos, &constraints[0], cMcoords, cMexpect, histLengthFine, pbwtBeamWidthFine, lnPerr, 0); if (print) cout << " done " << timer.update_time() << endl; // explore search space; make phase calls if (print) cout << "making phase calls (constr)... " << std::flush; const int callLengthFine = 20*CALL_LENGTH_FACTOR; const int callLengthSample = 20; // sample refs (BEFORE callProbAA: sampleRefs needs recent history that gets overwritten) for (int t = 0; t < T-1; t++) if (tHasMissing[t]) refSamples[0][t] = dipTreeFine.sampleRefs(t, callLengthSample, samples, bestHaps, true); vector probAAsCur; lastBit = 0; for (uint64 i = 0; i < tCallLocs.size(); i++) { float probAA = dipTreeFine.callProbAA(tCallLocs[i].first, tCallLocs[i].second, callLengthFine); probAAsCur.push_back(probAA); conf += std::max(probAA, 1-probAA); if (probAA < 0.5f) lastBit = !lastBit; uint64 m64j = hets64j[i+1]; pbwtBitsFine[m64j/64] |= lastBit<<(m64j&63); } conf /= tCallLocs.size(); if (print) cout << " done " << timer.update_time() << endl; delete hapHedgePtr; if (runReverse) { // create HapBitsT encoding of ref hets and hom errs if (print) cout << "making revHapBitsT... " << std::flush; HapBitsT revHapBitsT(hapBitsT, -2); if (print) cout << " done " << timer.update_time() << endl; // create HapHedge PBWT data structure if (print) cout << "making revHapHedge... " << std::flush; HapHedgeErr revHapHedge(revHapBitsT); if (print) cout << " done " << timer.update_time() << endl; vector revSplitGenos(splitGenos); std::reverse(revSplitGenos.begin(), revSplitGenos.end()); vector revcMcoords(T); for (int t = 0; t < T; t++) revcMcoords[t] = cMcoords[T-1] - cMcoords[T-1-t]; // initialize DipTree object if (print) cout << "making revDipTree (constr)... " << std::flush; DipTree revDipTreeFine(revHapHedge, revSplitGenos, &revConstraints[0], revcMcoords, cMexpect, histLengthFine, pbwtBeamWidthFine, lnPerr, 0); if (print) cout << " done " << timer.update_time() << endl; // explore search space; make phase calls if (print) cout << "making rev phase calls (con)..." << std::flush; // sample refs (BEFORE callProbAA: sampleRefs needs recent history that gets overwritten) for (int t = T-2; t >= 0; t--) if (tHasMissing[t]) refSamples[1][t] = revDipTreeFine.sampleRefs(T-2-t, callLengthSample, samples, bestHaps, false); vector revPbwtBitsFine(Mseg64); lastBit = 0; for (int i = tCallLocs.size()-1; i >= 0; i--) { float probAA = revDipTreeFine.callProbAA(T-1-tCallLocs[i].second, T-1-tCallLocs[i].first, callLengthFine); if (probAA + probAAsCur[i] < 1) lastBit = !lastBit; uint64 m64j = hets64j[i]; revPbwtBitsFine[m64j/64] |= lastBit<<(m64j&63); } if (print) cout << " done " << timer.update_time() << endl; pbwtBitsFine = revPbwtBitsFine; } // trio analysis output if (print) { /* for (uint64 m64 = 0; m64 < Mseg64; m64++) { checkHaploBits(n0, nF1, nF2, pbwtBitsFast[m64], m64, 25); checkHaploBits(n0, nF1, nF2, pbwtBitsFine[m64], m64, 25); cout << endl; } */ vector phaseVec; for (uint64 m64 = 0; m64 < Mseg64; m64++) { vector phaseSeg = checkHaploBits(n0, nF1, nF2, pbwtBitsFast[m64], m64, -1); phaseVec.insert(phaseVec.end(), phaseSeg.begin(), phaseSeg.end()); } printf("FAST# major SE: %2d # tot SE: %2d / %d\n", countMajorSE(phaseVec), countSE(phaseVec), (int) phaseVec.size()-1); phaseVec.clear(); for (uint64 m64 = 0; m64 < Mseg64; m64++) { vector phaseSeg = checkHaploBits(n0, nF1, nF2, pbwtBitsFine[m64], m64, -1); phaseVec.insert(phaseVec.end(), phaseSeg.begin(), phaseSeg.end()); } printf("FINE# major SE: %2d # tot SE: %2d / %d\n", countMajorSE(phaseVec), countSE(phaseVec), (int) phaseVec.size()-1); // check accuracy of fast calls vector trioRelPhaseVec = trioRelPhase(n0, nF1, nF2); const int NUM_CALL_LENGTHS = 2; int callLengths[NUM_CALL_LENGTHS] = {10, 20/*, 50, 100*/}; for (int l = 0; l < NUM_CALL_LENGTHS; l++) { cout << "callLength = " << callLengths[l] << endl; vector probAAs; for (uint64 i = 0; i < tCallLocs.size(); i++) probAAs.push_back(dipTreeFast.callProbAA(tCallLocs[i].first, tCallLocs[i].second, callLengths[l])); vector < vector > probCorFastSlow; for (uint i = 0; i < probAAs.size(); i++) if (trioRelPhaseVec[i] >= 0) { vector tmp(4); tmp[0] = std::min(probAAs[i], 1-probAAs[i]); tmp[1] = (probAAs[i] > 0.5f) == !trioRelPhaseVec[i]; tmp[2] = (probAAsCur[i] > 0.5f) == !trioRelPhaseVec[i]; probCorFastSlow.push_back(tmp); } std::sort(probCorFastSlow.begin(), probCorFastSlow.end()); const int NUM_PCTS = 7; int pcts[NUM_PCTS] = {50, 80, 90, 95, 98, 99, 100}; for (int p = 0; p < NUM_PCTS; p++) { int pct = pcts[p]; uint iCut = probCorFastSlow.size()*pct/100; int numErrs = 0, numErrsCur = 0; for (uint i = 0; i < iCut; i++) { if (probCorFastSlow[i][1] == 0) numErrs++; if (probCorFastSlow[i][2] == 0) numErrsCur++; } printf(" len=%d,cut=%d%%: p opp = %f, %d errs, %d cur / %d calls\n", callLengths[l], pct, probCorFastSlow[iCut-1][0], numErrs, numErrsCur, iCut); } } } // write phase calls uint64 nTargetHap = 2*(n0-Nref); uint64 nTargetOpp = 2*(n0-Nref) + 1; for (uint64 m64 = 0; m64 < Mseg64; m64++) { tmpHaploBitsT[nTargetHap*Mseg64 + m64] = pbwtBitsFine[m64]; tmpHaploBitsT[nTargetOpp*Mseg64 + m64] = ~pbwtBitsFine[m64]; } // set hom bits for (uint64 m64 = 0; m64 < Mseg64; m64++) { for (uint64 j = 0; j < 64ULL; j++) { uint64 m64j = m64*64+j; if (maskSnps64j[m64j]) { if (genos64j[m64j] == 0) { tmpHaploBitsT[nTargetHap*Mseg64 + m64] &= ~(1ULL< miss64j; for (uint64 m64j = m64jPrev+1; m64j < m64jNext; m64j++) if (maskSnps64j[m64j] && genos64j[m64j] == 3 && impMissing) // missing miss64j.push_back(m64j); // orient each hap pair wrt called phase if (!hets64j.empty()) for (int fb = 0; fb < 2; fb++) { for (int s = 0; s < samples; s++) { double cMmid; if (t==0) cMmid = cMs64j[splits64j[t]]; else if (t==(int) splits64j.size()) cMmid = cMs64j[splits64j[t-1]]; else cMmid = (cMs64j[splits64j[t-1]] + cMs64j[splits64j[t]]) / 2; vector < pair > cMdistSigns; for (int i = 15; i >= 0; i--) if ((((refSamples[fb][t][s].haps[0].tMaskRev ^ refSamples[fb][t][s].haps[1].tMaskRev)>>i)&1) && splitGenos[t-i]==1) { uint64 m64j = splits64j[t-i-1]; cMdistSigns.push_back(make_pair(fabs(cMs64j[m64j]-cMmid), ((refSamples[fb][t][s].haps[0].tMaskRev>>i)&1) == ((pbwtBitsFine[m64j/64]>>(m64j&63))&1))); } for (int i = 0; i < 16; i++) if ((((refSamples[fb][t][s].haps[0].tMaskFwd ^ refSamples[fb][t][s].haps[1].tMaskFwd)>>i)&1) && splitGenos[t+i+1]==1) { uint64 m64j = splits64j[t+i]; cMdistSigns.push_back(make_pair(fabs(cMs64j[m64j]-cMmid), ((refSamples[fb][t][s].haps[0].tMaskFwd>>i)&1) == ((pbwtBitsFine[m64j/64]>>(m64j&63))&1))); } if (!cMdistSigns.empty()) { sort(cMdistSigns.begin(), cMdistSigns.end()); if (!cMdistSigns[0].second) std::swap(refSamples[fb][t][s].haps[0], refSamples[fb][t][s].haps[1]); } } } // for each haplotype in turn, call missing sites (and save mean hap length) double hMeanLens[2]; for (int h = 0; h < 2; h++) { vector endRefs[2]; vector nonEndRefs[2], nonEndLens[2]; // split sampled haplotypes into buckets: those that end in (t,t+1) and those that don't for (int fb = 0; fb < 2; fb++) for (int s = 0; s < samples; s++) { if (refSamples[fb][t][s].haps[h].isEnd) endRefs[fb].push_back(refSamples[fb][t][s].haps[h].refSeq); else { nonEndRefs[fb].push_back(refSamples[fb][t][s].haps[h].refSeq); nonEndLens[fb].push_back(refSamples[fb][t][s].haps[h].tLength); } } // initialize allele dosages int nMiss = miss64j.size(); struct DosePair { double d[2]; }; vector alleleDoses(nMiss); for (int m = 0; m < nMiss; m++) alleleDoses[m].d[0] = alleleDoses[m].d[1] = 0; // process non-ends: call using longer of fwd, rev ref samples double meanLens[2] = {0, 0}; for (int fb = 0; fb < 2; fb++) if (!nonEndLens[fb].empty()) meanLens[fb] = std::accumulate(nonEndLens[fb].begin(), nonEndLens[fb].end(), 0) / (double) nonEndLens[fb].size(); int fbLong = meanLens[0] > meanLens[1] ? 0 : 1; for (uint k = 0; k < nonEndRefs[fbLong].size(); k++) { int refSeq = nonEndRefs[fbLong][k]; for (int m = 0; m < nMiss; m++) alleleDoses[m].d[(haploBitsT[refSeq*Mseg64+miss64j[m]/64]>>(miss64j[m]&63))&1] += 1; } // compute mean lengths including ends=0 for phasing singletons later for (int fb = 0; fb < 2; fb++) meanLens[fb] = std::accumulate(nonEndLens[fb].begin(), nonEndLens[fb].end(), 0) / (double) samples; hMeanLens[h] = std::max(meanLens[0], meanLens[1]); // set to max of fwd, rev // process ends: find most likely recombination points at which fwd and rev haps meet if (!endRefs[0].empty() && !endRefs[1].empty()) { for (uint k = 0; k < endRefs[0].size() && k < endRefs[1].size(); k++) { int refSeqFwd = endRefs[0][k], refSeqRev = endRefs[1][k]; int errFwd = 0, errRev = 0; for (uint64 m64j = m64jPrev+1; m64j < m64jNext; m64j++) { if ((genos64j[m64j] == 0 || genos64j[m64j] == 2) && (((haploBitsT[refSeqRev*Mseg64+m64j/64]>>(m64j&63))&1) != genos64j[m64j]/2)) errRev++; } // find recombination points that minimize errors (usually 0 errors) int minErr = 1<<30; vector cMdiffs; vector revStarts; for (uint64 m64j = m64jPrev; m64j == m64jPrev || m64j < m64jNext; m64j++) { if (m64j != m64jPrev) { // update err counts if ((genos64j[m64j] == 0 || genos64j[m64j] == 2) && (((haploBitsT[refSeqFwd*Mseg64+m64j/64]>>(m64j&63))&1) != genos64j[m64j]/2)) errFwd++; if ((genos64j[m64j] == 0 || genos64j[m64j] == 2) && (((haploBitsT[refSeqRev*Mseg64+m64j/64]>>(m64j&63))&1) != genos64j[m64j]/2)) errRev--; } // rev starts at m64j+1 double cMdiff = cMs64j[m64j+1] - (m64j==-1ULL ? 0 : cMs64j[m64j]) + 1e-9; if (errFwd+errRev < minErr) { minErr = errFwd+errRev; cMdiffs.clear(); revStarts.clear(); } if (errFwd+errRev == minErr) { cMdiffs.push_back(cMdiff); revStarts.push_back(m64j+1); } } // augment dosages proportionally to cMdiffs (btwn consecutive SNPs) at recomb points double cMtot = std::accumulate(cMdiffs.begin(), cMdiffs.end(), 0.0); for (int m = 0; m < nMiss; m++) { double cMcum = 0; for (uint x = 0; x < revStarts.size(); x++) { if (miss64j[m] < revStarts[x]) cMcum += cMdiffs[x]; else break; } alleleDoses[m].d[(haploBitsT[refSeqFwd*Mseg64+miss64j[m]/64]>>(miss64j[m]&63))&1] += cMcum / cMtot; alleleDoses[m].d[(haploBitsT[refSeqRev*Mseg64+miss64j[m]/64]>>(miss64j[m]&63))&1] += 1 - cMcum / cMtot; } } } // make final calls for (int m = 0; m < nMiss; m++) { uint64 m64 = miss64j[m]/64, j = miss64j[m]&63; if (alleleDoses[m].d[0] >= alleleDoses[m].d[1]) tmpHaploBitsT[(nTargetHap+h)*Mseg64 + m64] &= ~(1ULL<= 0; i--) { if ((((refSamples[fb][t][s].haps[h].tMaskRev ^ refSamples[fb][t][s].haps[1-h].tMaskRev)>>i)&1) && splitGenos[t-i]==1) { uint64 m64j = splits64j[t-i-1]; cout << (((refSamples[fb][t][s].haps[h].tMaskRev>>i)&1) == ((pbwtBitsFine[m64j/64]>>(m64j&63))&1) ? "+" : "-"); } else cout << "."; } cout << "|"; for (int i = 0; i < 16; i++) { if ((((refSamples[fb][t][s].haps[h].tMaskFwd ^ refSamples[fb][t][s].haps[1-h].tMaskFwd)>>i)&1) && splitGenos[t+i+1]==1) { uint64 m64j = splits64j[t+i]; cout << (((refSamples[fb][t][s].haps[h].tMaskFwd>>i)&1) == ((pbwtBitsFine[m64j/64]>>(m64j&63))&1) ? "+" : "-"); } else cout << "."; } cout << " "; } cout << endl; } } } */ if (print && usePS) { int correct = 0; for (uint c = 0; c < conPS.size(); c++) { int m1 = conPS[c].first, m2 = abs(conPS[c].second), isOpp = conPS[c].second<0; uint m64j1 = m64jInds[m1], m64j2 = m64jInds[m2]; assert(genos64j[m64j1]==1 && genos64j[m64j2]==1); correct += (uint) isOpp == (((pbwtBitsFine[m64j1/64]>>(m64j1&63))&1) ^ ((pbwtBitsFine[m64j2/64]>>(m64j2&63))&1)); } cout << "constraints respected: " << correct << " / " << conPS.size() << endl; } return conf; } } Eagle-2.4/src/EagleParams.cpp000066400000000000000000000371741321437612200160650ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include #include "StringUtils.hpp" #include "FileUtils.hpp" #include "EagleParams.hpp" #include namespace EAGLE { using std::vector; using std::string; using std::cout; using std::cerr; using std::endl; // populates members; error-checks bool EagleParams::processCommandLineArgs(int argc, char *argv[]) { vector removeFileTemplates, excludeFileTemplates; string chromStr; // allow "X" namespace po = boost::program_options; po::options_description commonOptions; commonOptions.add_options() ("geneticMapFile", po::value(&geneticMapFile)->required(), "HapMap genetic map provided with download: tables/genetic_map_hg##.txt.gz") // "chr pos rate(cM/Mb) map(cM)" ("outPrefix", po::value(&outPrefix)->required(), "prefix for output files") ("numThreads", po::value(&numThreads)->default_value(1), "number of computational threads") ; po::options_description nonRefMode ("Input options for phasing without a reference"); nonRefMode.add_options() // genotype data parameters ("bfile", po::value(), "prefix of PLINK .fam, .bim, .bed files") ("bfilegz", po::value(), "prefix of PLINK .fam.gz, .bim.gz, .bed.gz files") ("fam", po::value(&famFile), "PLINK .fam file (note: file names ending in .gz are auto-decompressed)") ("bim", po::value(&bimFile), "PLINK .bim file") ("bed", po::value(&bedFile), "PLINK .bed file") ("vcf", po::value(&vcfFile), "[compressed] VCF/BCF file containing input genotypes") ("remove", po::value< vector >(&removeFileTemplates), "file(s) listing individuals to ignore (no header; FID IID must be first two columns)") ("exclude", po::value< vector >(&excludeFileTemplates), "file(s) listing SNPs to ignore (no header; SNP ID must be first column)") ("maxMissingPerSnp", po::value(&maxMissingPerSnp)->default_value(0.1, "0.1"), "QC filter: max missing rate per SNP") ("maxMissingPerIndiv", po::value(&maxMissingPerIndiv)->default_value(0.1, "0.1"), "QC filter: max missing rate per person") ; po::options_description refMode ("Input/output options for phasing using a reference panel"); refMode.add_options() ("vcfRef", po::value(&vcfRef), "tabix-indexed [compressed] VCF/BCF file for reference haplotypes") ("vcfTarget", po::value(&vcfTarget), "tabix-indexed [compressed] VCF/BCF file for target genotypes") ("vcfOutFormat", po::value(&vcfOutFormat)->default_value("."), "b|u|z|v: compressed BCF (b), uncomp BCF (u), compressed VCF (z), uncomp VCF (v)") ("noImpMissing", "disable imputation of missing target genotypes (. or ./.)") ("allowRefAltSwap", "allow swapping of REF/ALT in target vs. ref VCF") ("outputUnphased", "output unphased sites (target-only, multi-allelic, etc.)") ("keepMissingPloidyX", "assume missing genotypes have correct ploidy (.=haploid, ./.=diploid)") ("vcfExclude", po::value(&vcfExclude), "tabix-indexed [compressed] VCF/BCF file containing variants to exclude from phasing") ; po::options_description bothModes("Region selection options"); bothModes.add_options() ("chrom", po::value(&chromStr)->default_value("0"), "chromosome to analyze (if input has many)") ("bpStart", po::value(&bpStart)->default_value(0), "minimum base pair position to analyze") ("bpEnd", po::value(&bpEnd)->default_value(1e9, "1e9"), "maximum base pair position to analyze") ("bpFlanking", po::value(&bpFlanking)->default_value(0), "(ref-mode only) flanking region to use during phasing but discard in output") ; po::options_description algOptions("Algorithm options"); algOptions.add_options() ("Kpbwt", po::value(&Kpbwt)->default_value(10000), "number of conditioning haplotypes") // TODO: throw error if set in --v1 mode ("pbwtIters", po::value(&pbwtIters)->default_value(0), "number of PBWT phasing iterations (0=auto)") ("expectIBDcM", po::value(&expectIBDcM)->default_value(2, "2.0"), "expected length of haplotype copying (cM)") ("histFactor", po::value(&histFactor)->default_value(0, "0"), "history length multiplier (0=auto)") ("genoErrProb", po::value(&pErr)->default_value(0.003, "0.003"), "estimated genotype error probability") ("pbwtOnly", "in non-ref mode, use only PBWT iters (automatic for sequence data)") ("v1", "use Eagle1 phasing algorithm (instead of default Eagle2 algorithm)") ; po::options_description hidden("Hidden options"); hidden.add_options() ("help,h", "print help message with typical options") // experimental options ("usePS", po::value(&usePS)->default_value(0), "use FORMAT:PS phase constraints in target VCF: 1=soft, 2=harder") ("runStep2", po::value(&runStep2)->default_value(-1), "enable/disable Step 2 of non-ref algorithm (-1=auto)") ("chromX", po::value(&chromX)->default_value(23), "maximum chromosome number (chrX)") // Eagle1 advanced options ("v1fast", "Eagle1 fast mode: --maxBlockLen=0.3, --maxStatePairsStep4=100, --fracStep4=0.5") ("maxBlockLen", po::value(&cMmax)->default_value(0), "max length (in cM units) of a SNP block; increase to trade accuracy for speed (0=auto)") ("maxStatePairsStep3", po::value(&beamWidth3)->default_value(100), "maximum state pairs per position in dynamic programming (HMM-like) search (step 3)") ("maxStatePairsStep4", po::value(&beamWidth4)->default_value(200), "maximum state pairs per position in dynamic programming (HMM-like) search (step 4)") ("fracStep4", po::value(&fracStep4)->default_value(1), "fraction of samples to re-phase in 4th step") ("seed", po::value(&seed)->default_value(0), "random seed (ignored in ref-mode)") // error-checking ("noMapCheck", "disable automatic check of genetic map scale") // testing options ("iter", po::value(&iter)->default_value(0), "iter to run") ("maskFile", po::value(&maskFile), "indivs to mask (e.g., relatives)") ("tmpPhaseConfsPrefix", po::value(&tmpPhaseConfsPrefix), "prefix for tmp files of phase confidences") ("maxHapStates", po::value(&maxHapStates)->default_value(80), "maximum copying haplotype states per position in dynamic programming search") ("trioCheck", "flag to output trio check; assumes target samples are in child,mat,pat order") ; po::options_description visible("Options"); visible.add(commonOptions).add(nonRefMode).add(refMode).add(bothModes).add(algOptions); po::options_description all("All options"); all.add(commonOptions).add(nonRefMode).add(refMode).add(bothModes).add(algOptions).add(hidden); all.add_options() ("bad-args", po::value< vector >(), "bad args") ; po::positional_options_description positional_desc; positional_desc.add("bad-args", -1); // for error-checking command line po::variables_map vm; po::command_line_parser cmd_line(argc, argv); cmd_line.options(all); cmd_line.style(po::command_line_style::default_style ^ po::command_line_style::allow_guessing); cmd_line.positional(positional_desc); try { po::store(cmd_line.run(), vm); if (vm.count("help")) { cout << endl; cout << visible << endl; exit(0); } po::notify(vm); // throws an error if there are any problems usePBWT = !vm.count("v1"); pbwtOnly = vm.count("pbwtOnly"); if (pbwtOnly && !usePBWT) { cerr << "ERROR: --pbwtOnly cannot be specified if using the --v1 algorithm" << endl; return false; } trioCheck = vm.count("trioCheck"); if (vm.count("bfile") + vm.count("bfilegz") + (vm.count("fam") || vm.count("bim") || vm.count("bed")) + vm.count("vcf") + (vm.count("vcfRef") || vm.count("vcfTarget")) != 1) { cerr << "ERROR: Use exactly one of the --bfile, --bfilegz, --fam,bim,bed, --vcf, or" << endl << " --vcfRef,vcfTarget input formats" << endl; return false; } if (vm.count("vcf") + vm.count("vcfRef") + vm.count("vcfTarget") == 0 && vcfOutFormat != ".") { cerr << "ERROR: --vcfOutFormat can only be used with vcf input" << endl; return false; } if (vm.count("bfile")) { string bfile = vm["bfile"].as(); famFile = bfile + ".fam"; bimFile = bfile + ".bim"; bedFile = bfile + ".bed"; } if (vm.count("bfilegz")) { string bfile = vm["bfilegz"].as(); famFile = bfile + ".fam.gz"; bimFile = bfile + ".bim.gz"; bedFile = bfile + ".bed.gz"; } if (vm.count("bad-args")) { cerr << "ERROR: Unknown options:"; vector bad_args = vm["bad-args"].as< vector >(); for (uint i = 0; i < bad_args.size(); i++) cerr << " " << bad_args[i]; cerr << endl; return false; } noMapCheck = vm.count("noMapCheck"); noImpMissing = vm.count("noImpMissing"); allowRefAltSwap = vm.count("allowRefAltSwap"); outputUnphased = vm.count("outputUnphased"); keepMissingPloidyX = vm.count("keepMissingPloidyX"); if (vm.count("vcfRef") || vm.count("vcfTarget") || vm.count("vcf")) { // VCF mode if (vm.count("vcf")) { // non-ref mode if (noImpMissing) { cerr << "ERROR: --noImpMissing is only supported in ref-mode" << endl; return false; } if (bpFlanking != 0) { cerr << "ERROR: --bpFlanking is only supported in ref-mode" << endl; return false; } } else { // ref-mode if (vcfRef.empty()) { cerr << "ERROR: --vcfRef must be specified in reference-based phasing mode" << endl; return false; } if (vcfTarget.empty()) { cerr << "ERROR: --vcfTarget must be specified in reference-based phasing mode" << endl; return false; } if (pbwtIters > 1 && noImpMissing) { cerr << "ERROR: --pbwtIters cannot be greater than 1 if --noImpMissing is set" << endl; return false; } if (vcfRef.substr(vcfRef.length()-4) != string(".bcf")) { cerr << "WARNING: --vcfRef does not end in '.bcf'; BCF input is fastest" << endl; } } // vcf input checks for both ref and non-ref mode if (geneticMapFile == "USE_BIM") { cerr << "ERROR: --geneticMapFile must be specified when using VCF/BCF input" << endl; return false; } if (!removeFileTemplates.empty() || !excludeFileTemplates.empty() || maxMissingPerSnp != 0.1 || maxMissingPerIndiv != 0.1) { cerr << "ERROR: --remove, --exclude, --maxMissingPerSnp, --maxMissingPerIndiv" << " are not supported for VCF/BCF input or in reference mode" << endl; return false; } if (vcfOutFormat == "b") { vcfOutSuffix = "bcf"; vcfWriteMode = "wb"; } else if (vcfOutFormat == "u") { vcfOutSuffix = "bcf"; vcfWriteMode = "wbu"; } else if (vcfOutFormat == "z" || vcfOutFormat == ".") { vcfOutSuffix = "vcf.gz"; vcfWriteMode = "wz"; } else if (vcfOutFormat == "v") { vcfOutSuffix = "vcf"; vcfWriteMode = "w"; } else { cerr << "ERROR: --vcfOutFormat must be one of {b,u,z,v}" << endl; return false; } if (bpFlanking < 0) { cerr << "ERROR: --bpFlanking cannot be negative" << endl; return false; } } else { // non-ref mode if (famFile.empty()) { cerr << "ERROR: fam file must be specified either using --fam or --bfile" << endl; return false; } if (bimFile.empty()) { cerr << "ERROR: bim file must be specified either using --bim or --bfile" << endl; return false; } if (bedFile.empty()) { cerr << "ERROR: bed file must be specified either using --bed or --bfile" << endl; return false; } if (noImpMissing) { cerr << "ERROR: --noImpMissing is only supported in ref-mode" << endl; return false; } if (bpFlanking != 0) { cerr << "ERROR: --bpFlanking is only supported in ref-mode" << endl; return false; } } removeFiles = StringUtils::expandRangeTemplates(removeFileTemplates); excludeFiles = StringUtils::expandRangeTemplates(excludeFileTemplates); if (!(0 <= maxMissingPerSnp && maxMissingPerSnp <= 1)) { cerr << "ERROR: --maxMissingPerSnp must be between 0 and 1" << endl; return false; } if (!(0 <= maxMissingPerIndiv && maxMissingPerIndiv <= 1)) { cerr << "ERROR: --maxMissingPerIndiv must be between 0 and 1" << endl; return false; } chrom = StringUtils::bcfNameToChrom(chromStr.c_str(), 0, chromX); // checks for range if (pbwtIters < 0 || pbwtIters > 10) { cerr << "ERROR: --pbwtIters must be either 0=auto or <=10" << endl; return false; } // check advanced options if (vm.count("v1fast")) { cMmax = 0.5; beamWidth3 = 100; beamWidth4 = 100; fracStep4 = 0.5; } if ((cMmax != 0 && cMmax < 0.1) || cMmax > 1.0) { cerr << "ERROR: --maxBlockLen must be 0=auto or between 0.1 and 1 cM" << endl; return false; } if (beamWidth3 < 10 || beamWidth3 > 1000) { cerr << "ERROR: --maxStatePairsStep3 must be between 10 and 1000" << endl; return false; } if (beamWidth4 < 10 || beamWidth4 > 1000) { cerr << "ERROR: --maxStatePairsStep4 must be between 10 and 1000" << endl; return false; } if (maxHapStates < 40 || maxHapStates > 1000) { cerr << "ERROR: --maxHapStates must be between 40 and 1000" << endl; return false; } if (fracStep4 < 0.0 || fracStep4 > 1.0) { cerr << "ERROR: --fracStep4 must be between 0.0 and 1.0" << endl; return false; } if (pErr < 1e-6 || pErr > 0.1) { cerr << "ERROR: --genoErrProb must be between 0.000001 and 0.1" << endl; return false; } // check that all files specified are readable/writeable FileUtils::requireEmptyOrReadable(famFile); FileUtils::requireEmptyOrReadable(bimFile); FileUtils::requireEmptyOrReadable(bedFile); FileUtils::requireEmptyOrReadable(vcfRef); FileUtils::requireEmptyOrReadable(vcfTarget); FileUtils::requireEmptyOrReadable(vcfExclude); if (geneticMapFile != "USE_BIM") { vector reqHeader; reqHeader.push_back("chr"); reqHeader.push_back("position"); reqHeader.push_back("COMBINED_rate(cM/Mb)"); reqHeader.push_back("Genetic_Map(cM)"); if (FileUtils::parseHeader(geneticMapFile, " \t") != reqHeader) { cerr << "ERROR: --geneticMapFile must have four columns with names:" << endl << " chr position COMBINED_rate(cM/Mb) Genetic_Map(cM)" << endl; return false; } } FileUtils::requireEachEmptyOrReadable(removeFiles); FileUtils::requireEachEmptyOrReadable(excludeFiles); } catch (po::error &e) { cerr << "ERROR: " << e.what() << endl << endl; cerr << visible << endl; return false; } return true; } } Eagle-2.4/src/EagleParams.hpp000066400000000000000000000052361321437612200160640ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef EAGLEPARAMS_HPP #define EAGLEPARAMS_HPP #include #include #include "Types.hpp" namespace EAGLE { class EagleParams { public: // main input files std::string famFile, bimFile, bedFile, vcfFile, vcfRef, vcfTarget, vcfExclude; int chrom, chromX; // optional reference map file for filling in genpos std::string geneticMapFile; std::vector removeFiles; // list(s) of indivs to remove std::vector excludeFiles; // list(s) of SNPs to exclude double bpStart, bpEnd, bpFlanking; std::string outPrefix; // .haps.gz .sample std::string vcfOutFormat, vcfOutSuffix, vcfWriteMode; // outFormat b|u|z|v -> outSuffix bcf|bcf|vcf.gz|vcf, writeMode wb|wbu|wz|w bool noImpMissing; bool outputUnphased; // output unphased sites (target-only, multi-allelic, etc.) bool keepMissingPloidyX; // assume missing genotypes in VCF have correct ploidy (.=haploid, ./.=diploid) int usePS; // use FORMAT:PS phase constraints: 1=soft, 2=harder bool allowRefAltSwap; // in reference-based phasing mode bool usePBWT; bool pbwtOnly; // in non-ref mode, don't run Steps 1 or 2 int runStep2; // in non-ref mode, do/don't run Step 2 int pbwtIters; double expectIBDcM; // expected length of an IBD segment (for transition probabilities) double histFactor; // history length multiplier // QC params double maxMissingPerSnp, maxMissingPerIndiv; int numThreads; double cMmax; int beamWidth3, beamWidth4; int maxHapStates; double fracStep4; double pErr; uint seed; bool noMapCheck; int Kpbwt; // testing int iter; std::string tmpPhaseConfsPrefix; std::string maskFile; // list of indivs to mask (e.g., relatives) bool trioCheck; // populates members; error-checks bool processCommandLineArgs(int argc, char *argv[]); }; } #endif Eagle-2.4/src/FileUtils.cpp000066400000000000000000000137161321437612200156000ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include "StringUtils.hpp" #include "FileUtils.hpp" #include "Types.hpp" #include #include namespace FileUtils { using std::string; using std::vector; using std::cerr; using std::endl; void openOrExit(std::ifstream &stream, const string &file, std::ios_base::openmode mode) { stream.open(file.c_str(), mode); if (!stream) { cerr << "ERROR: Unable to open file: " << file << endl; exit(1); } } void openWritingOrExit(std::ofstream &stream, const string &file, std::ios_base::openmode mode) { stream.open(file.c_str(), mode); if (!stream) { cerr << "ERROR: Unable to open file for writing: " << file << endl; exit(1); } } void requireEmptyOrReadable(const std::string &file) { if (file.empty()) return; std::ifstream fin; fin.open(file.c_str()); if (!fin) { cerr << "ERROR: Unable to open file: " << file << endl; exit(1); } fin.close(); } void requireEachEmptyOrReadable(const std::vector &fileList) { for (uint i = 0; i < fileList.size(); i++) requireEmptyOrReadable(fileList[i]); } void requireEmptyOrWriteable(const std::string &file) { if (file.empty()) return; std::ofstream fout; fout.open(file.c_str(), std::ios::out|std::ios::app); if (!fout) { cerr << "ERROR: Output file is not writeable: " << file << endl; exit(1); } fout.close(); } vector parseHeader(const string &fileName, const string &delimiters) { AutoGzIfstream fin; fin.openOrExit(fileName); string header; getline(fin, header); vector split = StringUtils::tokenizeMultipleDelimiters(header, delimiters); fin.close(); return split; } int lookupColumnInd(const string &fileName, const string &delimiters, const string &columnName) { vector headers = parseHeader(fileName, delimiters); int columnInd = -1; for (uint c = 0; c < headers.size(); c++) if (headers[c] == columnName) columnInd = c; // first column is snp ID, treated separately if (columnInd == -1) { cerr << "WARNING: Column " << columnName << " not found in headers of " << fileName << endl; //exit(1); } return columnInd; } double readDoubleNanInf(std::istream &stream) { string str; stream >> str; double x; sscanf(str.c_str(), "%lf", &x); return x; } vector < std::pair > readFidIids(const string &file) { vector < std::pair > ret; AutoGzIfstream fin; fin.openOrExit(file); string FID, IID, line; while (fin >> FID >> IID) { if (FID.empty() || IID.empty()) { cerr << "ERROR: In file " << file << endl; cerr << " unable to read FID and IID; check format" << endl; exit(1); } ret.push_back(make_pair(FID, IID)); getline(fin, line); } fin.close(); return ret; } int AutoGzIfstream::lineCount(const std::string &file) { AutoGzIfstream fin; fin.openOrExit(file); int ctr = 0; string line; while (getline(fin, line)) ctr++; return ctr; } /***** AutoGzIfstream class implementation *****/ void AutoGzIfstream::openOrExit(const std::string &file, std::ios_base::openmode mode) { fin.open(file.c_str(), mode); if (!fin) { cerr << "ERROR: Unable to open file: " << file << endl; exit(1); } if ((int) file.length() > 3 && file.substr(file.length()-3) == ".gz") boost_in.push(boost::iostreams::gzip_decompressor()); boost_in.push(fin); } void AutoGzIfstream::close() { fin.close(); boost_in.reset(); } AutoGzIfstream::operator bool() const { return !boost_in.fail(); } AutoGzIfstream& AutoGzIfstream::read(char *s, std::streamsize n) { boost_in.read(s, n); return *this; } int AutoGzIfstream::get() { return boost_in.get(); } double AutoGzIfstream::readDoubleNanInf() { return FileUtils::readDoubleNanInf(boost_in); } void AutoGzIfstream::clear() { boost_in.clear(); } AutoGzIfstream& AutoGzIfstream::seekg(std::streamoff off, std::ios_base::seekdir way) { boost_in.seekg(off, way); return *this; } AutoGzIfstream& getline(AutoGzIfstream& in, std::string &s) { std::getline(in.boost_in, s); return in; } /***** AutoGzOfstream class implementation *****/ void AutoGzOfstream::openOrExit(const std::string &file, std::ios_base::openmode mode) { fout.open(file.c_str(), mode); if (!fout) { cerr << "ERROR: Unable to open file: " << file << endl; exit(1); } if ((int) file.length() > 3 && file.substr(file.length()-3) == ".gz") boost_out.push(boost::iostreams::gzip_compressor()); boost_out.push(fout); } void AutoGzOfstream::close() { boost_out.reset(); } AutoGzOfstream& AutoGzOfstream::operator << (std::ostream&(*manip)(std::ostream&)) { manip(boost_out); return *this; } void AutoGzOfstream::unsetf(std::ios_base::fmtflags mask) { boost_out.unsetf(mask); } AutoGzOfstream::operator bool() const { return !boost_out.fail(); } } Eagle-2.4/src/FileUtils.hpp000066400000000000000000000057211321437612200156020ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef FILEUTILS_HPP #define FILEUTILS_HPP #include #include #include #include "StringUtils.hpp" #include namespace FileUtils { void openOrExit(std::ifstream &stream, const std::string &file, std::ios_base::openmode mode=std::ios::in); void openWritingOrExit(std::ofstream &stream, const std::string &file, std::ios_base::openmode mode=std::ios::out); void requireEmptyOrReadable(const std::string &file); void requireEachEmptyOrReadable(const std::vector &fileList); void requireEmptyOrWriteable(const std::string &file); std::vector parseHeader(const std::string &fileName, const std::string &delimiters); int lookupColumnInd(const std::string &fileName, const std::string &delimiters, const std::string &columnName); double readDoubleNanInf(std::istream &stream); std::vector < std::pair > readFidIids(const std::string &file); class AutoGzIfstream { boost::iostreams::filtering_istream boost_in; std::ifstream fin; public: static int lineCount(const std::string &file); void openOrExit(const std::string &file, std::ios_base::openmode mode=std::ios::in); void close(); template AutoGzIfstream& operator >> (T &x) { boost_in >> x; return *this; } operator bool() const; AutoGzIfstream& read(char *s, std::streamsize n); int get(); double readDoubleNanInf(); void clear(); AutoGzIfstream& seekg(std::streamoff off, std::ios_base::seekdir way); friend AutoGzIfstream& getline(AutoGzIfstream& in, std::string &s); }; AutoGzIfstream& getline(AutoGzIfstream& in, std::string &s); class AutoGzOfstream { boost::iostreams::filtering_ostream boost_out; std::ofstream fout; public: void openOrExit(const std::string &file, std::ios_base::openmode mode=std::ios::out); void close(); template AutoGzOfstream& operator << (const T &x) { boost_out << x; return *this; } AutoGzOfstream& operator << (std::ostream&(*manip)(std::ostream&)); void unsetf(std::ios_base::fmtflags); operator bool() const; }; } #endif Eagle-2.4/src/GenoData.cpp000066400000000000000000000734471321437612200153710ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "Types.hpp" #include "FileUtils.hpp" #include "MemoryUtils.hpp" #include "MapInterpolater.hpp" #include "LapackConst.hpp" #include "GenoData.hpp" namespace EAGLE { using std::vector; using std::string; using std::cout; using std::cerr; using std::endl; using FileUtils::getline; int GenoData::plinkChromCode(const string &chrom) { if (isdigit(chrom[0])) return atoi(chrom.c_str()); if (chrom == "X") return 23; if (chrom == "Y") return 24; if (chrom == "XY") return 25; if (chrom == "MT") return 26; return -1; } // set indivsPreQC, NpreQC // return bedIndivRemoved vector GenoData::processIndivs(const string &famFile, const vector &removeFiles) { std::map FID_IID_to_ind; string line; vector bedIndivs; cout << "Reading fam file: " << famFile << endl; FileUtils::AutoGzIfstream fin; fin.openOrExit(famFile); while (getline(fin, line)) { std::istringstream iss(line); IndivInfoX indiv; if (!(iss >> indiv.famID >> indiv.indivID >> indiv.paternalID >> indiv.maternalID >> indiv.sex >> indiv.pheno)) { cerr << "ERROR: Incorrectly formatted fam file: " << famFile << endl; cerr << "Line " << bedIndivs.size()+1 << ":" << endl; cerr << line << endl; cerr << "Unable to input 6 values (4 string, 1 int, 1 double)" << endl; exit(1); } string combined_ID = indiv.famID + " " + indiv.indivID; if (FID_IID_to_ind.find(combined_ID) != FID_IID_to_ind.end()) { cerr << "ERROR: Duplicate individual in fam file at line " << bedIndivs.size()+1 << endl; exit(1); } FID_IID_to_ind[combined_ID] = bedIndivs.size(); bedIndivs.push_back(indiv); } fin.close(); uint64 Nbed = bedIndivs.size(); cout << "Total indivs in PLINK data: Nbed = " << Nbed << endl; // process individuals to remove vector bedIndivRemoved(Nbed); for (uint f = 0; f < removeFiles.size(); f++) { const string &removeFile = removeFiles[f]; cout << "Reading remove file (indivs to remove): " << removeFile << endl; fin.openOrExit(removeFile); int lineCtr = 0; int numRemoved = 0; int numAbsent = 0; while (getline(fin, line)) { lineCtr++; std::istringstream iss(line); string FID, IID; if (!(iss >> FID >> IID)) { cerr << "ERROR: Incorrectly formatted remove file: " << removeFile << endl; cerr << "Line " << lineCtr << ":" << endl; cerr << line << endl; cerr << "Unable to input FID and IID" << endl; exit(1); } string combined_ID = FID + " " + IID; if (FID_IID_to_ind.find(combined_ID) == FID_IID_to_ind.end()) { if (numAbsent < 5) cerr << "WARNING: Unable to find individual to remove: " << combined_ID << endl; numAbsent++; } else if (!bedIndivRemoved[FID_IID_to_ind[combined_ID]]) { bedIndivRemoved[FID_IID_to_ind[combined_ID]] = true; numRemoved++; } } fin.close(); cout << "Removed " << numRemoved << " individual(s)" << endl; if (numAbsent) cerr << "WARNING: " << numAbsent << " individual(s) not found in data set" << endl; } for (uint64 nbed = 0; nbed < Nbed; nbed++) if (!bedIndivRemoved[nbed]) indivsPreQC.push_back(bedIndivs[nbed]); NpreQC = indivsPreQC.size(); cout << "Total indivs stored in memory: NpreQC = " << NpreQC << endl; return bedIndivRemoved; } vector GenoData::readBimFile(const string &bimFile) { vector ret; string line; FileUtils::AutoGzIfstream fin; fin.openOrExit(bimFile); int numOutOfOrder = 0; while (getline(fin, line)) { std::istringstream iss(line); SnpInfoX snp; string chrom_str; if (!(iss >> chrom_str >> snp.ID >> snp.genpos >> snp.physpos >> snp.allele1 >> snp.allele2)) { cerr << "ERROR: Incorrectly formatted bim file: " << bimFile << endl; cerr << "Line " << ret.size()+1 << ":" << endl; cerr << line << endl; cerr << "Unable to input 6 values (2 string, 1 double, 1 int, 2 string)" << endl; exit(1); } snp.chrom = plinkChromCode(chrom_str); if (snp.chrom == -1) { cerr << "ERROR: Unknown chromosome code in bim file: " << bimFile << endl; cerr << "Line " << ret.size()+1 << ":" << endl; cerr << line << endl; exit(1); } if (!ret.empty() && (snp.chrom < ret.back().chrom || (snp.chrom == ret.back().chrom && (snp.physpos <= ret.back().physpos || snp.genpos < ret.back().genpos)))) { if (numOutOfOrder < 5) { cerr << "WARNING: Out-of-order snp in bim file: " << bimFile << endl; cerr << "Line " << ret.size()+1 << ":" << endl; cerr << line << endl; } numOutOfOrder++; //exit(1); } ret.push_back(snp); } if (numOutOfOrder) cerr << "WARNING: Total number of out-of-order snps in bim file: " << numOutOfOrder << endl; fin.close(); // TODO: exit with error or sort SNPs? return ret; } // set snpsPreQC, MpreQC // return bedSnpExcluded vector GenoData::processSnps(const string &bimFile, int chrom, double bpStart, double bpEnd, const vector &excludeFiles) { FileUtils::AutoGzIfstream fin; string line; // read bim file cout << "Reading bim file: " << bimFile << endl; vector bedSnps = readBimFile(bimFile); uint64 Mbed = bedSnps.size(); cout << "Total snps in PLINK data: Mbed = " << Mbed << endl; vector bedSnpExcluded(Mbed); if (chrom == 0) { if (bedSnps[0].chrom != bedSnps.back().chrom) { cerr << "ERROR: Only one chromosome may be analyzed at a time; use --chrom" << endl; exit(1); } else chrom = bedSnps[0].chrom; } uint64 MbedOnChrom = 0; for (uint64 mbed = 0; mbed < Mbed; mbed++) { if (bedSnps[mbed].chrom != chrom || bedSnps[mbed].physpos < bpStart || bedSnps[mbed].physpos > bpEnd) bedSnpExcluded[mbed] = true; else MbedOnChrom++; } if (MbedOnChrom < Mbed) { cout << "Restricting to " << MbedOnChrom << " SNPs on chrom " << chrom << " in region [bpStart,bpEnd] = [" << bpStart << "," << bpEnd << "]" << endl; } // create dictionary rsID -> index in full bed snp list std::map rsID_to_ind; for (uint64 mbed = 0; mbed < Mbed; mbed++) { if (rsID_to_ind.find(bedSnps[mbed].ID) != rsID_to_ind.end()) { cerr << "WARNING: Duplicate snp ID " << bedSnps[mbed].ID << " -- masking duplicate" << endl; bedSnpExcluded[mbed] = true; } else rsID_to_ind[bedSnps[mbed].ID] = mbed; } // TODO: also limit SNP density (e.g., Omni 2.5M) and/or MAF? // process snps to exclude for (uint f = 0; f < excludeFiles.size(); f++) { const string &excludeFile = excludeFiles[f]; cout << "Reading exclude file (SNPs to exclude): " << excludeFile << endl; fin.openOrExit(excludeFile); int numExcluded = 0; int numAbsent = 0; while (getline(fin, line)) { std::istringstream iss(line); string rsID; iss >> rsID; if (rsID_to_ind.find(rsID) == rsID_to_ind.end()) { if (numAbsent < 5) cerr << "WARNING: Unable to find SNP to exclude: " << rsID << endl; numAbsent++; } else if (!bedSnpExcluded[rsID_to_ind[rsID]]) { bedSnpExcluded[rsID_to_ind[rsID]] = true; numExcluded++; } } fin.close(); cout << "Excluded " << numExcluded << " SNP(s)" << endl; if (numAbsent) cerr << "WARNING: " << numAbsent << " SNP(s) not found in data set" << endl; } for (uint64 mbed = 0; mbed < Mbed; mbed++) if (!bedSnpExcluded[mbed]) snpsPreQC.push_back(bedSnps[mbed]); MpreQC = snpsPreQC.size(); cout << "Total SNPs stored in memory: MpreQC = " << MpreQC << endl; return bedSnpExcluded; } void GenoData::processMap(vector &snpsVec, const string &geneticMapFile, bool noMapCheck) { // fill in map if external file provided if (geneticMapFile != "USE_BIM") { cout << "Filling in genetic map coordinates using reference file:" << endl; cout << " " << geneticMapFile << endl; Genetics::MapInterpolater mapInterpolater(geneticMapFile); for (uint64 m = 0; m < snpsVec.size(); m++) snpsVec[m].genpos = mapInterpolater.interp(snpsVec[m].chrom, snpsVec[m].physpos); } else { // check map and rescale if in cM units: calculate d(genpos)/d(physpos) double scale = (snpsVec.back().genpos - snpsVec[0].genpos) / (snpsVec.back().physpos - snpsVec[0].physpos); if (0.5e-6 < scale && scale < 3e-6) { cerr << "WARNING: Genetic map appears to be in cM units; rescaling by 0.01" << endl; for (uint64 m = 0; m < snpsVec.size(); m++) snpsVec[m].genpos *= 0.01; } else if (!(0.5e-8 < scale && scale < 3e-8)) { if (noMapCheck) { cerr << "WARNING: Genetic map appears wrong based on overall cM/Mb" << endl; cerr << " Proceeding anyway because --noMapCheck is set" << endl; } else { cerr << "ERROR: Genetic map appears wrong based on overall cM/Mb" << endl; cerr << " To proceed anyway, set --noMapCheck" << endl; exit(1); } } } } inline double log10safe(double x) { return x > 0 ? log10(x) : -1000; } void GenoData::buildGenoBits(uchar *genosPreQC, const vector &genos2bit, double cMmax) { const uint segMin = 16; vector preQCsnpInds; vector cMvec; for (uint64 m = 0; m < MpreQC; m++) if (snpsPreQC[m].passQC) { if (preQCsnpInds.size() == 64 || (preQCsnpInds.size() >= segMin && snpsPreQC[m].genpos > snpsPreQC[preQCsnpInds[0]].genpos + cMmax/100)) { seg64preQCsnpInds.push_back(preQCsnpInds); seg64cMvecs.push_back(cMvec); preQCsnpInds.clear(); cMvec.clear(); } preQCsnpInds.push_back(m); cMvec.push_back(100 * snpsPreQC[m].genpos); } seg64preQCsnpInds.push_back(preQCsnpInds); seg64cMvecs.push_back(cMvec); Mseg64 = seg64preQCsnpInds.size(); cout << "Number of <=(64-SNP, " << cMmax << "cM) segments: " << Mseg64 << endl; cout << "Average # SNPs per segment: " << M / Mseg64 << endl; isFlipped64j = vector (Mseg64*64); genoBits = ALIGNED_MALLOC_UINT64_MASKS(Mseg64 * N); memset(genoBits, 0, Mseg64 * N * sizeof(genoBits[0])); seg64logPs = (AlleleFreqs *) ALIGNED_MALLOC(Mseg64*64 * sizeof(AlleleFreqs)); for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) for (uint g1 = 0; g1 <= 2; g1++) for (uint g0 = 0; g0 <= 3; g0++) seg64logPs[m64j].cond[g1][g0] = NAN; for (uint64 m64 = 0; m64 < Mseg64; m64++) { for (uint64 j = 0; j < seg64preQCsnpInds[m64].size(); j++) { uint64 m = seg64preQCsnpInds[m64][j]; // m, n indices are preQC int genoCounts[3]; genoCounts[0] = genoCounts[1] = genoCounts[2] = 0; for (uint64 n = 0; n < NpreQC; n++) if (indivsPreQC.empty() || indivsPreQC[n].passQC) { uchar geno = genosPreQC != NULL ? genosPreQC[m * NpreQC + n] : (genos2bit[2*(m * NpreQC + n)] + 2*genos2bit[2*(m * NpreQC + n)+1]); if (geno <= 2) genoCounts[geno]++; } uchar is0geno = 0, is2geno = 2; if (genoCounts[2] > genoCounts[0]) { isFlipped64j[m64*64+j] = true; is0geno = 2; is2geno = 0; std::swap(genoCounts[0], genoCounts[2]); } uint64 nPostQC = 0; for (uint64 n = 0; n < NpreQC; n++) if (indivsPreQC.empty() || indivsPreQC[n].passQC) { uchar geno = genosPreQC != NULL ? genosPreQC[m * NpreQC + n] : (genos2bit[2*(m * NpreQC + n)] + 2*genos2bit[2*(m * NpreQC + n)+1]); genoBits[m64 * N + nPostQC].is0 |= ((uint64) (geno == is0geno))< 2))< p(hap=1) = 1-p af.cond[2][4] = log10safe((1-p) * p2 / (p1half + p2)); af.cond[1][4] = log10safe((1-p) * p1half / (p1half + p2) + p * p1half / (p0 + p1half)); af.cond[0][4] = log10safe(p * p0 / (p0 + p1half)); // opp orientation to het-het => p(hap=1) = p af.cond[2][5] = log10safe(p * p2 / (p1half + p2)); af.cond[1][5] = log10safe(p * p1half / (p1half + p2) + (1-p) * p1half / (p0 + p1half)); af.cond[0][5] = log10safe((1-p) * p0 / (p0 + p1half)); if (p > 0.55) { cerr << "INTERNAL ERROR: Minor/major allele coding bug" << endl; exit(1); } } for (uint64 n = 0; n < N; n++) for (uint64 j = seg64preQCsnpInds[m64].size(); j < 64; j++) genoBits[m64*N+n].is9 |= 1ULL< &indivInds) const { uint64 m64 = m64j/64, j = m64j&63, jBit = 1ULL< GenoData::computeInvLD64j(uint64 NsubMax) const { uint64 Mchr = Mseg64*64; vector chipLDscores(Mchr, 1.0); uint64 step = std::max(N / NsubMax, 1ULL); vector indivInds; for (uint64 n = 0; n < N && indivInds.size() < NsubMax; n += step) indivInds.push_back(n); uint64 Nsub = indivInds.size(); cout << "Estimating LD scores using " << Nsub << " indivs" << endl; // allocate memory uchar *chrMaskSnps = ALIGNED_MALLOC_UCHARS(Mchr); memset(chrMaskSnps, 0, Mchr * sizeof(chrMaskSnps[0])); float *chrNormalizedGenos = ALIGNED_MALLOC_FLOATS(Mchr * Nsub); memset(chrNormalizedGenos, 0, Mchr * Nsub * sizeof(chrNormalizedGenos[0])); const int mBlock = 64; float *dotProds = ALIGNED_MALLOC_FLOATS(Mchr * mBlock); // fill and normalize genotypes for (uint64 mchr = 0; mchr < Mchr; mchr++) { if ((mchr&63) < seg64cMvecs[mchr/64].size()) chrMaskSnps[mchr] = fillSnpSubRowNorm1(chrNormalizedGenos + mchr*Nsub, mchr, indivInds); else chipLDscores[mchr] = 0; } uint64 mchrWindowStart = 0; for (uint64 mchr0 = 0; mchr0 < Mchr; mchr0 += mBlock) { // sgemm to compute r2s uint64 mBlockCrop = std::min(Mchr, mchr0+mBlock) - mchr0; while ((mchrWindowStart&63) >= seg64cMvecs[mchrWindowStart/64].size() || seg64cMvecs[mchrWindowStart/64][mchrWindowStart&63] + 1 < seg64cMvecs[mchr0/64][mchr0&63]) mchrWindowStart++; uint64 prevWindowSize = mchr0+mBlockCrop-1 - mchrWindowStart; // [mchrWindowStart..mchr0+mBlockCrop-1) x [mchr0..mchr0+mBlockCrop) { char TRANSA_ = 'T'; char TRANSB_ = 'N'; int M_ = prevWindowSize; int N_ = mBlockCrop; int K_ = Nsub; float ALPHA_ = 1; float *A_ = chrNormalizedGenos + mchrWindowStart*Nsub; int LDA_ = Nsub; float *B_ = chrNormalizedGenos + mchr0*Nsub; int LDB_ = Nsub; float BETA_ = 0; float *C_ = dotProds; int LDC_ = prevWindowSize; SGEMM_MACRO(&TRANSA_, &TRANSB_, &M_, &N_, &K_, &ALPHA_, A_, &LDA_, B_, &LDB_, &BETA_, C_, &LDC_); } for (uint64 mPlus = 0; mPlus < mBlockCrop; mPlus++) { uint64 m = mchr0 + mPlus; if (!chrMaskSnps[m]) continue; for (uint64 mPlus2 = 0; mchrWindowStart+mPlus2 < mchr0+mPlus; mPlus2++) { uint64 m2 = mchrWindowStart + mPlus2; if (!chrMaskSnps[m2]) continue; float adjR2 = dotProdToAdjR2(dotProds[mPlus2 + mPlus*prevWindowSize], Nsub); chipLDscores[m] += adjR2; chipLDscores[m2] += adjR2; } } } ALIGNED_FREE(dotProds); ALIGNED_FREE(chrNormalizedGenos); ALIGNED_FREE(chrMaskSnps); for (uint mchr = 0; mchr < Mchr; mchr++) chipLDscores[mchr] = 1/chipLDscores[mchr]; return chipLDscores; // reciprocals taken above } void GenoData::printRange(void) const { int physRange = snps.back().physpos - snps[0].physpos; double cMrange = 100*(snps.back().genpos - snps[0].genpos); cout << "Physical distance range: " << physRange << " base pairs" << endl; cout << "Genetic distance range: " << cMrange << " cM" << endl; cout << "Average # SNPs per cM: " << (int) (M/cMrange+0.5) << endl; if (physRange == 0 || cMrange == 0) { cerr << "ERROR: Physical and genetic distance ranges must be positive" << endl; cerr << " First SNP: chr=" << snps[0].chrom << " pos=" << snps[0].physpos << " cM=" << 100*snps[0].genpos << endl; cerr << " Last SNP: chr=" << snps.back().chrom << " pos=" << snps.back().physpos << " cM=" << 100*snps.back().genpos << endl; exit(1); } } double GenoData::computeSnpRate(void) const { double cMrange = 100*(snps.back().genpos - snps[0].genpos); return M/cMrange; } /** * reads indiv info from fam file, snp info from bim file * allocates memory, reads genotypes, and does QC */ void GenoData::initBed(const string &famFile, const string &bimFile, const string &bedFile, int chrom, double bpStart, double bpEnd, const string &geneticMapFile, const vector &excludeFiles, const vector &removeFiles, double maxMissingPerSnp, double maxMissingPerIndiv, bool noMapCheck, double cMmax) { // indivsPreQC (without --remove indivs) vector bedIndivRemoved = processIndivs(famFile, removeFiles); // snpsPreQC (restricted to chrom:bpStart-bpEnd and without --exclude snps) vector bedSnpExcluded = processSnps(bimFile, chrom, bpStart, bpEnd, excludeFiles); processMap(snpsPreQC, geneticMapFile, noMapCheck); // modify snpsPreQC // allocate genotypes cout << "Allocating " << MpreQC << " x " << NpreQC << " bytes to temporarily store genotypes" << endl; uchar *genosPreQC = ALIGNED_MALLOC_UCHARS(MpreQC * NpreQC); // temporary cout << "Reading genotypes and performing QC filtering on snps and indivs..." << endl; // open bed file const uint64 Nbed = bedIndivRemoved.size(), Mbed = bedSnpExcluded.size(); cout << "Reading bed file: " << bedFile << endl; cout << " Expecting " << Mbed * ((Nbed+3)>>2) << " (+3) bytes for " << Nbed << " indivs, " << Mbed << " snps" << endl; FileUtils::AutoGzIfstream fin; fin.openOrExit(bedFile, std::ios::in | std::ios::binary); uchar header[3]; fin.read((char *) header, 3); if (!fin || header[0] != 0x6c || header[1] != 0x1b || header[2] != 0x01) { cerr << "ERROR: Incorrect first three bytes of bed file: " << bedFile << endl; exit(1); } // read genos + QC snps (and record indiv miss rates) vector numMissingPerIndiv(NpreQC); uchar *bedLineIn = ALIGNED_MALLOC_UCHARS((Nbed+3)>>2); int numSnpsFailedQC = 0; uint64 m = 0; for (uint64 mbed = 0; mbed < Mbed; mbed++) { uchar *genoLine = genosPreQC + m*NpreQC; readBedLine(fin, bedLineIn, genoLine, bedIndivRemoved, !bedSnpExcluded[mbed]); if (!bedSnpExcluded[mbed]) { snpsPreQC[m].MAF = computeMAF(genoLine, NpreQC); snpsPreQC[m].miss = computeSnpMissing(genoLine, NpreQC); snpsPreQC[m].passQC = snpsPreQC[m].miss <= maxMissingPerSnp; if (snpsPreQC[m].passQC) { for (uint64 n = 0; n < NpreQC; n++) numMissingPerIndiv[n] += genoLine[n] == 9; } else { if (numSnpsFailedQC < 5) cout << "Filtering snp " << snpsPreQC[m].ID << ": " << snpsPreQC[m].miss << " missing" << endl; numSnpsFailedQC++; } m++; } } ALIGNED_FREE(bedLineIn); if (numSnpsFailedQC) cout << "Filtered " << numSnpsFailedQC << " SNPs with > " << maxMissingPerSnp << " missing" << endl; if (!fin || fin.get() != EOF) { cerr << "ERROR: Wrong file size or reading error for bed file: " << bedFile << endl; exit(1); } fin.close(); // select subset of snps passing QC for (uint64 m = 0; m < MpreQC; m++) if (snpsPreQC[m].passQC) snps.push_back(snpsPreQC[m]); M = snps.size(); // QC indivs for missingness int numIndivsFailedQC = 0; for (uint64 n = 0; n < NpreQC; n++) { indivsPreQC[n].miss = numMissingPerIndiv[n] / (double) M; indivsPreQC[n].passQC = indivsPreQC[n].miss <= maxMissingPerIndiv; if (!indivsPreQC[n].passQC) { if (numIndivsFailedQC < 5) cout << "Filtering indiv " << indivsPreQC[n].famID << " " << indivsPreQC[n].indivID << ": " << numMissingPerIndiv[n] << "/" << M << " missing" << endl; numIndivsFailedQC++; } } if (numIndivsFailedQC) cout << "Filtered " << numIndivsFailedQC << " indivs with > " << maxMissingPerIndiv << " missing" << endl; // select subset of indivs passing QC for (uint64 n = 0; n < NpreQC; n++) if (indivsPreQC[n].passQC) indivs.push_back(indivsPreQC[n]); N = indivs.size(); cout << endl; cout << "Total post-QC indivs: N = " << N << endl; cout << "Total post-QC SNPs: M = " << M << endl; cout << "MAF spectrum: " << endl; const double mafBounds6[7] = {0, 0.05, 0.1, 0.2, 0.3, 0.4, 0.500001}; vector mafBinCounts(6); for (uint64 m = 0; m < M; m++) for (int b = 0; b < 6; b++) if (mafBounds6[b] <= snps[m].MAF && snps[m].MAF < mafBounds6[b+1]) mafBinCounts[b]++; for (int b = 0; b < 6; b++) printf(" %2.0f-%2.0f%%: %7d\n", 100*mafBounds6[b], 100*mafBounds6[b+1], mafBinCounts[b]); printRange(); if (cMmax == 0) { cMmax = std::min(1.0, std::max(N / 1e5, 0.25)); cout << "Auto-selecting --maxBlockLen: " << cMmax << " cM" << endl; } vector nullVec; buildGenoBits(genosPreQC, nullVec, cMmax); ALIGNED_FREE(genosPreQC); } /** * reads genotypes from VCF/BCF file * does not save indiv info (will be reread from VCF during output) * only saves chrom, physpos, genpos in snp info (rest will be reread from VCF during output) * allocates memory, reads genotypes, and restricts to region if specified; does not do QC */ void GenoData::initVcf(const string &vcfFile, const int inputChrom, const int chromX, double bpStart, double bpEnd, const string &geneticMapFile, bool noMapCheck, double cMmax) { htsFile *fin = hts_open(vcfFile.c_str(), "r"); if (fin == NULL) { cerr << "ERROR: Could not open " << vcfFile << " for reading" << endl; exit(1); } bcf_hdr_t *hdr = bcf_hdr_read(fin); bcf1_t *rec = bcf_init1(); int mgt = 0, *gt = NULL; NpreQC = bcf_hdr_nsamples(hdr); cout << "Reading genotypes for N = " << NpreQC << " samples" << endl; vector genos2bit; int wantChrom = inputChrom; // might be 0; if so, update // read genos; save chrom and physpos for each SNP while (bcf_read(fin, hdr, rec) >= 0) { // check CHROM int chrom = StringUtils::bcfNameToChrom(bcf_hdr_id2name(hdr, rec->rid), 1, chromX); if (wantChrom == 0) wantChrom = chrom; // if --chrom was not specified, set to first if (chrom != wantChrom) { // only allow multi-chrom file if --chrom has been specified if (inputChrom == 0) { cerr << "ERROR: File contains data for >1 chromosome; specify one with --chrom" << endl; exit(1); } else continue; } // check if POS is within selected region int bp = rec->pos+1; if (!(bpStart <= bp && bp <= bpEnd)) continue; // check for multi-allelics (TODO: ignore with warning and don't phase in output) if (rec->n_allele > 2) { cerr << "ERROR: Multi-allelic site found (i.e., ALT contains multiple alleles)" << endl; cerr << " Either drop or split (bcftools norm -m) multi-allelic variants" << endl; exit(1); } // add chrom and bp to SNP list SnpInfoX snp; snp.chrom = chrom; snp.physpos = bp; snpsPreQC.push_back(snp); // read genotypes int ngt = bcf_get_genotypes(hdr, rec, >, &mgt); if (ngt != 2 * (int) NpreQC) { cerr << "ERROR: Samples are not diploid" << endl; exit(1); } for (int i = 0; i < (int) NpreQC; i++) { int ploidy = 2; int *ptr = gt + i*ploidy; uchar geno = 0; bool missing = false; for (int j = 0; j < ploidy; j++) { if ( ptr[j]==bcf_int32_vector_end ) { if (j == 0) { cerr << "ERROR: ptr[0]==bcf_int32_vector_end... zero ploidy?" << endl; exit(1); } else { // 2nd of ploidy==2 genotypes is set to bcf_int32_vector_end => haploid if ( missing ) continue; // missing diploid genotype can be written in VCF as "." else if (wantChrom == chromX) // X chromosome => haploid ok geno *= 2; // encode as diploid homozygote else { cerr << "ERROR: Haploid genotype found" << endl; exit(1); } } } else { if ( bcf_gt_is_missing(ptr[j]) ) // missing allele missing = true; else geno += bcf_gt_allele(ptr[j]); // 0=REF, 1=ALT (multi-allelics prohibited) } } if (missing) geno = 3; genos2bit.push_back(geno&1); genos2bit.push_back(geno>>1); } } free(gt); bcf_destroy(rec); bcf_hdr_destroy(hdr); hts_close(fin); cout << "Read M = " << snpsPreQC.size() << " variants" << endl; processMap(snpsPreQC, geneticMapFile, noMapCheck); // modify snpsPreQC // don't perform QC; use all SNPs MpreQC = snpsPreQC.size(); for (uint64 m = 0; m < MpreQC; m++) snpsPreQC[m].passQC = true; snps = snpsPreQC; M = snps.size(); // don't perform QC; use all samples N = NpreQC; printRange(); if (cMmax == 0) { cMmax = std::min(1.0, std::max(N / 1e5, 0.25)); cout << "Auto-selecting --maxBlockLen: " << cMmax << " cM" << endl; } buildGenoBits(NULL, genos2bit, cMmax); } GenoData::~GenoData() { ALIGNED_FREE(seg64logPs); ALIGNED_FREE(genoBits); } /** * assumes Nbed = bedIndivRemoved.size() * reads (Nbed+3)>>2 bytes into bedLineIn * stores sum(!bedIndivRemoved) bytes into genoLine if loadGenoLine == true */ void GenoData::readBedLine(FileUtils::AutoGzIfstream &fin, uchar bedLineIn[], uchar genoLine[], vector &bedIndivRemoved, bool storeGenoLine) { uint64 Nbed = bedIndivRemoved.size(); fin.read((char *) bedLineIn, (Nbed+3)>>2); if (storeGenoLine) { const uchar bedToGeno[4] = {2, 9, 1, 0}; uint64 n = 0; for (uint64 nbed = 0; nbed < Nbed; nbed++) if (!bedIndivRemoved[nbed]) genoLine[n++] = bedToGeno[(bedLineIn[nbed>>2]>>((nbed&3)<<1))&3]; } } double GenoData::computeAlleleFreq(const uchar genoLine[], uint64 genoN) { double sum = 0; int num = 0; for (uint64 n = 0; n < genoN; n++) if (genoLine[n] != 9) { sum += genoLine[n]; num++; } return 0.5 * sum / num; } double GenoData::computeMAF(const uchar genoLine[], uint64 genoN) { double alleleFreq = computeAlleleFreq(genoLine, genoN); return std::min(alleleFreq, 1.0-alleleFreq); } double GenoData::computeSnpMissing(const uchar genoLine[], uint64 genoN) { double sum = 0; int num = 0; for (uint64 n = 0; n < genoN; n++) { sum += (genoLine[n] == 9); num++; } return sum / num; } const vector &GenoData::getSnps(void) const { return snps; } uint64 GenoData::getN(void) const { return N; } uint64 GenoData::getMseg64(void) const { return Mseg64; } const uint64_masks *GenoData::getGenoBits(void) const { return genoBits; } vector > GenoData::getSeg64cMvecs(void) const { return seg64cMvecs; } const AlleleFreqs *GenoData::getSeg64logPs(void) const { return seg64logPs; } IndivInfoX GenoData::getIndiv(uint64 n) const { return indivs[n]; } const vector &GenoData::getIndivs(void) const { return indivs; } const vector &GenoData::getIsFlipped64j(void) const { return isFlipped64j; } }; Eagle-2.4/src/GenoData.hpp000066400000000000000000000120611321437612200153570ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef GENODATA_HPP #define GENODATA_HPP #include #include #include #include #include "Types.hpp" #include "FileUtils.hpp" namespace EAGLE { struct SnpInfoX { int chrom; std::string ID; double genpos; // Morgans int physpos; std::string allele1, allele2; double MAF; // note: MAFs are computed on preQC indivs double miss; bool passQC; }; struct IndivInfoX { std::string famID; std::string indivID; std::string paternalID; std::string maternalID; int sex; // (1=male; 2=female; other=unknown) double pheno; double miss; bool passQC; }; struct AlleleFreqs { double cond[3][6]; /* double dip[3]; double hap[2]; */ }; class GenoData : boost::noncopyable { private: uint64 NpreQC, MpreQC; // # of indivs/snps in fam/bim file not in --remove/exclude file(s) uint64 N, M; // post-QC std::vector indivsPreQC, indivs; // [VECTOR]: NpreQC, N std::vector snpsPreQC, snps; // [VECTOR]: MpreQC, M uint64 Mseg64; // number of <=64-SNP chunks uint64_masks *genoBits; // [[MATRIX]]: M64 x N (is0, is2, is9 64-bit masks; 3 bits/base) std::vector > seg64cMvecs; std::vector > seg64preQCsnpInds; AlleleFreqs *seg64logPs; std::vector isFlipped64j; std::vector processIndivs(const std::string &famFile, const std::vector &removeFiles); std::vector processSnps(const std::string &bimFile, int chrom, double bpStart, double bpEnd, const std::vector &excludeFiles); void processMap(std::vector &snpsVec, const std::string &geneticMapFile, bool noMapCheck); void buildGenoBits(uchar *genosPreQC, const std::vector &genos2bit, double cMmax); bool fillSnpSubRowNorm1(float x[], uint64 m64j, const std::vector &indivInds) const; public: /** * reads indiv info from fam file, snp info from bim file * allocates memory, reads genotypes, and does QC * assumes numbers of bim and bed files match */ void initBed(const std::string &famFile, const std::string &bimFile, const std::string &bedFile, int chrom, double bpStart, double bpEnd, const std::string &geneticMapFile, const std::vector &excludeFiles, const std::vector &removeFiles, double maxMissingPerSnp, double maxMissingPerIndiv, bool noMapCheck, double cMmax); /** * reads genotypes from VCF/BCF file * does not save indiv info (will be reread from VCF during output) * only saves chrom, physpos, genpos in snp info (rest will be reread from VCF during output) * allocates memory, reads genotypes, and restricts to region if specified; does not do QC */ void initVcf(const std::string &vcfFile, const int inputChrom, const int chromX, double bpStart, double bpEnd, const std::string &geneticMapFile, bool noMapCheck, double cMmax); void printRange(void) const; ~GenoData(); static int plinkChromCode(const std::string &chrom); static std::vector readBimFile(const std::string &bimFile); /** * assumes Nbed = bedIndivRemoved.size() * reads (Nbed+3)>>2 bytes into bedLineIn * stores sum(!bedIndivRemoved) bytes into genoLine if storeGenoLine == true */ static void readBedLine(FileUtils::AutoGzIfstream &fin, uchar bedLineIn[], uchar genoLine[], std::vector &bedIndivRemoved, bool storeGenoLine); static double computeAlleleFreq(const uchar genoLine[], uint64 genoN); static double computeMAF(const uchar genoLine[], uint64 genoN); static double computeSnpMissing(const uchar genoLine[], uint64 genoN); const std::vector &getSnps(void) const; uint64 getN(void) const; uint64 getMseg64(void) const; const uint64_masks *getGenoBits(void) const; std::vector > getSeg64cMvecs(void) const; const AlleleFreqs *getSeg64logPs(void) const; IndivInfoX getIndiv(uint64 n) const; std::vector computeInvLD64j(uint64 NsubMax) const; const std::vector &getIndivs(void) const; const std::vector &getIsFlipped64j(void) const; double computeSnpRate(void) const; }; } #endif Eagle-2.4/src/HapHedge.cpp000066400000000000000000000477441321437612200153550ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include #include #include "MemoryUtils.hpp" #include "Types.hpp" #include "HapHedge.hpp" namespace EAGLE { using std::vector; using std::string; using std::cout; using std::endl; void HapBitsT::setBit(uint64 n, uint64 m) { haploBitsT[n*M64 + (m>>6)] |= 1ULL<<(m&63); } #ifdef TEST_VS HapBitsT::HapBitsT(const vector &_hapBitsVS) : hapBitsVS(_hapBitsVS), Nhaps(hapBitsVS.size()), M(hapBitsVS[0].length()) {} int HapBitsT::getBit(uint64 n, uint64 m) const { return hapBitsVS[n][m]-'0'; } HapBitsT::~HapBitsT(void) { } #else HapBitsT::HapBitsT(const uint64 *_haploBitsT, uint64 _Nhaps, uint64 Mseg64, const uchar maskSnps64j[]) { Nhaps = _Nhaps; M = 0; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) if (maskSnps64j[m64j]) M++; M64 = (M+63)/64; haploBitsT = ALIGNED_MALLOC_UINT64S(Nhaps * M64); memset(haploBitsT, 0, Nhaps * M64 * sizeof(haploBitsT[0])); for (uint64 n = 0; n < Nhaps; n++) { uint64 mCur = 0; for (uint64 m64j = 0; m64j < Mseg64*64; m64j++) if (maskSnps64j[m64j]) { if ((_haploBitsT[n*Mseg64 + (m64j>>6)]>>(m64j&63))&1) setBit(n, mCur); mCur++; } } } inline int popcount64_01(uint64 i) { return i!=0; } inline int popcount64_012(uint64 i) { if (i == 0) return 0; else if ((i & (i-1ULL)) == 0) return 1; else return 2; } HapBitsT::HapBitsT(const uint64 *inBitsT, uint64 Mseg64, const vector &splits64j, const vector &splitGenos, const vector &tgtGenoBits, const vector &bestHaps) { Nhaps = bestHaps.size(); M = 2*(splits64j.size()+2); M64 = (M+63)/64; haploBitsT = ALIGNED_MALLOC_UINT64S(Nhaps * M64); memset(haploBitsT, 0, Nhaps * M64 * sizeof(haploBitsT[0])); for (uint k = 0; k < bestHaps.size(); k++) { uint64 n = bestHaps[k]; if (k+1>6); m64 <= (homStop>>6); m64++) { uint64 mask = -1ULL; if (m64 == (homStart>>6)) mask &= (-1ULL>>(homStart&63))<<(homStart&63); if (m64 == (homStop>>6)) mask &= (-1ULL>>(63-(homStop&63))); numErrsA += popcount64_01(mask&((tgtGenoBits[m64].is0 & inBitsT[n*Mseg64 + m64]) | (tgtGenoBits[m64].is2 & ~inBitsT[n*Mseg64 + m64]))); numErrsB += popcount64_01(mask&((tgtGenoBits[m64].is0 & inBitsT[(n+1)*Mseg64 + m64]) | (tgtGenoBits[m64].is2 & ~inBitsT[(n+1)*Mseg64 + m64]))); if (numErrsA && numErrsB) break; } if (numErrsA) setBit(k, 2*h+1); if (numErrsB) setBit(k+1, 2*h+1); // set bits at split int splitA = 0, splitB = 0, splitGeno = 0; if (h < splits64j.size()) { splitA = (inBitsT[n*Mseg64 + (splits64j[h]>>6)]>>(splits64j[h]&63))&1; splitB = (inBitsT[(n+1)*Mseg64 + (splits64j[h]>>6)]>>(splits64j[h]&63))&1; splitGeno = splitGenos[h]; if (splitA) setBit(k, 2*(h+1)); if (splitB) setBit(k+1, 2*(h+1)); } // check for double-IBD if (numErrsA || numErrsB || splitA+splitB != splitGeno || h==splits64j.size()) { if (h > hLastDiff+20) { for (uint h2 = hLastDiff+1; h2 < h; h2++) { setBit(k, 2*h2+1); setBit(k+1, 2*h2+1); } } else if (h > hLastDiff+10) { uint64 kMask = hLastErrA >= hLastErrB ? k : k+1; for (uint h2 = hLastDiff+1; h2 < h; h2++) setBit(kMask, 2*h2+1); } hLastDiff = h; } if (numErrsA) hLastErrA = h; if (numErrsB) hLastErrB = h; } k++; } else { // process lone reference haplotype for (uint64 h = 0; h <= splits64j.size(); h++) { // set hom uint64 homStart = (h == 0 ? 0 : splits64j[h-1]+1); uint64 homStop = (h == splits64j.size() ? Mseg64*64 : std::max(splits64j[h], 1ULL)) - 1; int numErrs = 0; for (uint64 m64 = (homStart>>6); m64 <= (homStop>>6); m64++) { uint64 mask = -1ULL; if (m64 == (homStart>>6)) mask &= (-1ULL>>(homStart&63))<<(homStart&63); if (m64 == (homStop>>6)) mask &= (-1ULL>>(63-(homStop&63))); numErrs += popcount64_01(mask&((tgtGenoBits[m64].is0 & inBitsT[n*Mseg64 + m64]) | (tgtGenoBits[m64].is2 & ~inBitsT[n*Mseg64 + m64]))); if (numErrs) break; } if (numErrs) setBit(k, 2*h+1); // set bit at split if (h < splits64j.size() && ((inBitsT[n*Mseg64+(splits64j[h]>>6)]>>(splits64j[h]&63))&1)) setBit(k, 2*(h+1)); } } } } const unsigned char flipByte[] = { 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC, 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6, 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9, 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3, 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF }; uint64 reverse64(uint64 v) { return ((uint64) flipByte[v & 0xff] << 56ULL) | ((uint64) flipByte[(v >> 8) & 0xff] << 48ULL) | ((uint64) flipByte[(v >> 16) & 0xff] << 40ULL) | ((uint64) flipByte[(v >> 24) & 0xff] << 32ULL) | ((uint64) flipByte[(v >> 32) & 0xff] << 24ULL) | ((uint64) flipByte[(v >> 40) & 0xff] << 16ULL) | ((uint64) flipByte[(v >> 48) & 0xff] << 8ULL) | flipByte[v >> 56]; } HapBitsT::HapBitsT(const HapBitsT &hapBitsFwdT, int dir) : Nhaps(hapBitsFwdT.getNhaps()), M(hapBitsFwdT.getM()), M64((M+63)/64) { assert(dir<0); // reverse existing HapBitsT haploBitsT = ALIGNED_MALLOC_UINT64S(Nhaps * M64); memset(haploBitsT, 0, Nhaps * M64 * sizeof(haploBitsT[0])); if (dir == -1) { // simple reversal for (uint64 n = 0; n < Nhaps; n++) for (uint64 m = 0; m < M; m++) if (hapBitsFwdT.getBit(n, m)) setBit(n, M-1-m); } else { // repad 0 xyz 0 0 -> 0 zyx 0 0 uint64 Mtrim = M-1, Mtrim64 = (Mtrim+63)/64, offset = Mtrim&63; for (uint64 n = 0; n < Nhaps; n++) { /* for (uint64 m = 1; m < M-2; m++) if (hapBitsFwdT.getBit(n, m)) setBit(n, M-2-m); */ for (uint64 m64 = 0; m64 < Mtrim64; m64++) { uint64 fwdBits = offset==0 ? hapBitsFwdT.getBits64(n, Mtrim64-1-m64) : ((m64>offset) : 0) | (hapBitsFwdT.getBits64(n, Mtrim64-1-m64)<<(64-offset))); //assert(haploBitsT[n * M64 + m64] == reverse64(fwdBits)); haploBitsT[n * M64 + m64] = reverse64(fwdBits); } } } } int HapBitsT::getBit(uint64 n, uint64 m) const { return (haploBitsT[n*M64 + (m>>6)]>>(m&63))&1; } uint64 HapBitsT::getBits64(uint64 n, uint64 m64) const { return haploBitsT[n*M64 + m64]; } HapBitsT::~HapBitsT(void) { ALIGNED_FREE(haploBitsT); } #endif int HapBitsT::getNhaps(void) const { return Nhaps; } int HapBitsT::getM(void) const { return M; } int d, a, count, up, left, right; WorkTreeNode::WorkTreeNode(int _d, int _a, int _count, int _up, int _left, int _right) : d(_d), a(_a), count(_count), up(_up), left(_left), right(_right) {} void dfsPreOrder(WorkTreeNode workNodes[], HapTreeNode *nodes, int &pos, int cur) { if (cur == -1) return; nodes[pos].mSplit = workNodes[cur].d; int left = workNodes[cur].left; nodes[pos].count0 = 1 + (left==-1 ? 0 : workNodes[left].count); nodes[pos].seq1 = workNodes[cur].a; pos++; dfsPreOrder(workNodes, nodes, pos, workNodes[cur].left); dfsPreOrder(workNodes, nodes, pos, workNodes[cur].right); } void dfsPreOrderMulti(WorkTreeNode workNodes[], HapTreeMultiNode *nodes, int &pos, int cur) { if (cur == -1) return; int curPos = pos; nodes[curPos].mSplit = workNodes[cur].d; nodes[curPos].count0 = workNodes[cur].count; nodes[curPos].node0 = curPos+1; nodes[curPos].seq1 = workNodes[cur].a; pos++; dfsPreOrderMulti(workNodes, nodes, pos, workNodes[cur].left); if (pos == curPos+1) { // no next node 0 nodes[curPos].node0 = -1; /* MEMORY-SAVING ALTERNATIVE: use 1 bit (sign of state.count) to encode next node nodes[curPos].count0 = -nodes[curPos].count0; */ } nodes[curPos].node1 = pos; dfsPreOrderMulti(workNodes, nodes, pos, workNodes[cur].right); if (pos == nodes[curPos].node1) // no next node 1 nodes[curPos].node1 = -1; } HapTree::HapTree(const HapBitsT &_hapBitsT, int a[], int d[]) : hapBitsT(_hapBitsT), Nhaps(hapBitsT.getNhaps()), invNhaps(1.0f/Nhaps) { seq0 = a[0]; nodes = (HapTreeNode *) ALIGNED_MALLOC((Nhaps-1) * sizeof(nodes[0])); WorkTreeNode *workNodes = (WorkTreeNode *) ALIGNED_MALLOC(Nhaps * sizeof(workNodes[0])); // perform in-order traversal workNodes[0] = WorkTreeNode(-1, a[0], 0, -1, -1, -1); for (int n = 1; n < Nhaps; n++) { if (d[n] >= d[n-1]) { workNodes[n] = WorkTreeNode(d[n], a[n], 1, n-1, -1, -1); workNodes[n-1].right = n; } else { int cur = n-1, up = workNodes[cur].up; while (d[n] < workNodes[up].d) { workNodes[up].count += workNodes[cur].count; cur = up; up = workNodes[cur].up; } workNodes[n] = WorkTreeNode(d[n], a[n], workNodes[cur].count+1, up, cur, -1); workNodes[cur].up = n; workNodes[up].right = n; } } int cur = Nhaps-1, up = workNodes[cur].up; while (up != -1) { workNodes[up].count += workNodes[cur].count; cur = up; up = workNodes[cur].up; } // perform pre-order traversal int pos = 0; dfsPreOrder(workNodes, nodes, pos, workNodes[0].right); ALIGNED_FREE(workNodes); } HapTree::~HapTree(void) { ALIGNED_FREE(nodes); } float HapTree::getInvNhaps(void) const { return invNhaps; } HapTreeState HapTree::getRootState(void) const { HapTreeState h; h.seq = seq0; h.node = 0; h.count = Nhaps; return h; } bool HapTree::next(int m, HapTreeState &state, int nextBit) const { if (state.count == 1 || nodes[state.node].mSplit > m) { return hapBitsT.getBit(state.seq, m) == nextBit; } else { if (nextBit == 0) { state.count = nodes[state.node++].count0; } else { state.seq = nodes[state.node].seq1; int c0 = nodes[state.node].count0; state.node += c0; state.count -= c0; } return true; } } HapTreeMulti::HapTreeMulti(const HapBitsT &_hapBitsT, SortDiv ad[], int M, WorkTreeNode workNodes[]) : hapBitsT(_hapBitsT), Nhaps(hapBitsT.getNhaps()), invNhaps(1.0f/Nhaps) { // perform in-order traversal workNodes[0] = WorkTreeNode(-1, ad[0].a, 0, -1, -1, -1); int n = 0, nextMult = 1, uniqHaps = Nhaps; for (int nHap = 1; nHap < Nhaps; nHap++) { if (ad[nHap].d == M) { // sequence is identical to previous; merge nextMult++; uniqHaps--; } else { n++; if (ad[nHap].d >= workNodes[n-1].d) { workNodes[n] = WorkTreeNode(ad[nHap].d, ad[nHap].a, nextMult, n-1, -1, -1); workNodes[n-1].right = n; } else { int cur = n-1, up = workNodes[cur].up; int leftCount = nextMult; while (ad[nHap].d < workNodes[up].d) { leftCount += workNodes[cur].count; cur = up; up = workNodes[cur].up; } leftCount += workNodes[cur].count; workNodes[n] = WorkTreeNode(ad[nHap].d, ad[nHap].a, leftCount, up, cur, -1); workNodes[cur].up = n; workNodes[up].right = n; } nextMult = 1; } } nodes = (HapTreeMultiNode *) ALIGNED_MALLOC((uniqHaps-1) * sizeof(nodes[0])); rootState.seq = ad[0].a; rootState.node = workNodes[0].right==-1?-1:0; rootState.count = Nhaps; int pos = 0; dfsPreOrderMulti(workNodes, nodes, pos, workNodes[0].right); } HapTreeMulti::~HapTreeMulti(void) { ALIGNED_FREE(nodes); } float HapTreeMulti::getInvNhaps(void) const { return invNhaps; } HapTreeState HapTreeMulti::getRootState(void) const { return rootState; } bool HapTreeMulti::next(int m, HapTreeState &state, int nextBit) const { if (state.node == -1 || nodes[state.node].mSplit > m) { return hapBitsT.getBit(state.seq, m) == nextBit; } else { if (nextBit == 0) { state.count = nodes[state.node].count0; state.node = nodes[state.node].node0; /* MEMORY-SAVING ALTERNATIVE: use 1 bit (sign of state.count) to encode next node if (state.count > 0) state.node++; else { state.node = -1; state.count = -state.count; } */ } else { state.count -= nodes[state.node].count0; /* MEMORY-SAVING ALTERNATIVE: use 1 bit (sign of state.count) to encode next node state.count -= abs(nodes[state.node].count0); */ state.seq = nodes[state.node].seq1; state.node = nodes[state.node].node1; // update last: overwrites state.node! } return true; } } void HapTreeMulti::nextAtFrac(int m, HapTreeState &state, double nextFrac) const { // see above for MEMORY-SAVING ALTERNATIVES if (state.node == -1 || nodes[state.node].mSplit > m) { return; } else { if (nodes[state.node].count0 >= nextFrac * state.count) { // nextBit = 0 state.count = nodes[state.node].count0; state.node = nodes[state.node].node0; } else { state.count -= nodes[state.node].count0; state.seq = nodes[state.node].seq1; state.node = nodes[state.node].node1; // update last: overwrites state.node! } } } // for debugging void HapTreeMulti::dfsPrint(string curPrefix, int m, int M, const HapTreeState &state) const { if (m > M) return; cout << "m = " << m << ", prefix = " << curPrefix << ": count = " << state.count << endl; for (int b = 0; b < 2; b++) { HapTreeState nextState = state; if (next(m, nextState, b)) dfsPrint(curPrefix + (char) ('0'+b), m+1, M, nextState); } } HapHedge::HapHedge(const HapBitsT &_hapBitsT, int _skip/*, const vector &treeStarts*/) : hapBitsT(_hapBitsT), skip(_skip), T((hapBitsT.getM()+skip-1) / skip) { treePtrs = new HapTree *[T]; int N = hapBitsT.getNhaps(), M = hapBitsT.getM(); // initialize work arrays int *a1 = new int[N], *d1 = new int[N], *a = new int[N], *b = new int[N], *d = new int[N], *e = new int[N]; for (int n = 0; n < N; n++) { a1[n] = n; d1[n] = M; } for (int m = M-1; m >= 0; m--) { // compute sort order and divergence array int u = 0, v = 0, p = m, q = m; for (int n = 0; n < N; n++) { if (d1[n] < p) p = d1[n]; if (d1[n] < q) q = d1[n]; if (hapBitsT.getBit(a1[n], m) == 0) { a[u] = a1[n]; d[u] = p; u++; p = M; } else { b[v] = a1[n]; e[v] = q; v++; q = M; } } memcpy(a1, a, u * sizeof(a1[0])); memcpy(a1+u, b, v * sizeof(a1[0])); memcpy(d1, d, u * sizeof(d1[0])); memcpy(d1+u, e, v * sizeof(d1[0])); // perform pre-order traversal and store to HapTree if (m % skip == 0) { treePtrs[m/skip] = new HapTree(hapBitsT, a1, d1); } } delete[] a1; delete[] d1; delete[] a; delete[] b; delete[] d; delete[] e; } HapHedge::~HapHedge(void) { for (int t = 0; t < T; t++) delete treePtrs[t]; delete[] treePtrs; } const HapTree &HapHedge::getHapTree(int t) const { return *treePtrs[t]; }; int HapHedge::getM(void) const { return hapBitsT.getM(); } int HapHedge::getSkip(void) const { return skip; } int HapHedge::getNumTrees(void) const { return T; } const HapBitsT &HapHedge::getHapBitsT(void) const { return hapBitsT; } HapHedgeErr::HapHedgeErr(const HapBitsT &_hapBitsT) : hapBitsT(_hapBitsT), T((hapBitsT.getM()+1) / 2) { treePtrs = new HapTreeMulti *[T]; int N = hapBitsT.getNhaps(), M = hapBitsT.getM(); // initialize work arrays SortDiv *ad = new SortDiv[N+1], *ad1 = new SortDiv[N+1]; // N+1 for convenience below WorkTreeNode *workNodes = (WorkTreeNode *) ALIGNED_MALLOC(N * sizeof(workNodes[0])); for (int n = 0; n <= N; n++) { // N+1 for convenience below ad[n].a = n; ad[n].d = M; } uint64 *curBits64 = new uint64[N]; uchar *curBits8 = new uchar[N]; // N-byte buffer hopefully fits in L1 cache for random access for (int m = M-1; m >= 0; m--) { if (m == M-1 || (m&63) == 63) { // move current 64-bit m-block for each sample to curBits64 for (int n = 0; n < N; n++) curBits64[n] = hapBitsT.getBits64(n, m>>6); } //uint64 curBit64 = 1ULL<<(m&63); if (m == M-1 || (m&7) == 7) { // move current 8-bit m-block for each sample to curBits8 uint64 shift = (m&63)&~7; for (int n = 0; n < N; n++) curBits8[n] = (uchar) (curBits64[n]>>shift); } uchar curBit8 = 1<<(m&7); // compute sort order and divergence array int u = 0, v = 0, p = m, q = m; if (m % 2 != 1) { for (int n = 0; n < N; n++) { int a_n = ad[n].a; if (/*curBits64[a_n] & curBit64*/curBits8[a_n] & curBit8) { ad1[v].a = a_n; ad1[v].d = q; v++; q = ad[n+1].d; if (q < p) p = q; } else { ad[u].a = a_n; ad[u].d = p; u++; p = ad[n+1].d; if (p < q) q = p; } } } else { for (int n = 0; n < N; n++) { int a_n = ad[n].a; if (/*curBits64[a_n] & curBit64*/curBits8[a_n] & curBit8) { ad1[v].a = a_n; ad1[v].d = M; v++; q = ad[n+1].d; if (q < p) p = q; } else { ad[u].a = a_n; ad[u].d = p; u++; p = ad[n+1].d; if (p < q) q = p; } } ad1[0].d = m; } memcpy(ad+u, ad1, v * sizeof(ad[0])); // perform pre-order traversal and store to HapTree if (m % 2 == 0) treePtrs[m/2] = new HapTreeMulti(hapBitsT, ad, M, workNodes); } delete[] curBits8; delete[] curBits64; ALIGNED_FREE(workNodes); delete[] ad1; delete[] ad; } HapHedgeErr::~HapHedgeErr(void) { for (int t = 0; t < T; t++) delete treePtrs[t]; delete[] treePtrs; } const HapTreeMulti &HapHedgeErr::getHapTreeMulti(int t) const { return *treePtrs[t]; }; int HapHedgeErr::getNumTrees(void) const { return T; } const HapBitsT &HapHedgeErr::getHapBitsT() const { return hapBitsT; } // for debugging void HapHedgeErr::printTree(int t) const { treePtrs[t]->dfsPrint("", 2*t, 2*T, treePtrs[t]->getRootState()); } } Eagle-2.4/src/HapHedge.hpp000066400000000000000000000076521321437612200153540ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef HAPHEDGE_HPP #define HAPHEDGE_HPP #include #include "Types.hpp" using namespace std; namespace EAGLE { struct HapTreeState { int seq, node, count; }; struct SortDiv { int a, d; }; class HapBitsT { #ifdef TEST_VS const std::vector &hapBitsVS; #endif uint64 *haploBitsT; uint64 Nhaps, M, M64; void setBit(uint64 n, uint64 m); public: #ifdef TEST_VS HapBitsT(const std::vector &_hapBitsVS); #else HapBitsT(const uint64 *_haploBitsT, uint64 _Nhaps, uint64 Mseg64, const uchar maskSnps64j[]); HapBitsT(const uint64 *inBitsT, uint64 Mseg64, const std::vector &splits64j, const std::vector &splitGenos, const std::vector &tgtGenoBits, const std::vector &bestHaps); HapBitsT(const HapBitsT &hapBitsFwdT, int dir); // reverse constructor (dir must equal -1) uint64 getBits64(uint64 n, uint64 m64) const; #endif ~HapBitsT(void); int getBit(uint64 n, uint64 m) const; int getNhaps(void) const; int getM(void) const; }; struct HapTreeNode { int mSplit, count0, seq1; }; struct HapTreeMultiNode { int mSplit, count0, node0, seq1, node1; // MEMORY-SAVING ALTERNATIVE: use 1 bit (sign of state.count) vs. node0 to encode next node }; struct WorkTreeNode { int d, a, count, up, left, right; WorkTreeNode(int _d, int _a, int _count, int _up, int _left, int _right); }; class HapTree { const HapBitsT &hapBitsT; const int Nhaps; float invNhaps; int seq0; // lexicographically first ref seq HapTreeNode *nodes; // [Nhaps-1] public: HapTree(const HapBitsT &_hapBitsT, int a[], int d[]); ~HapTree(void); float getInvNhaps(void) const; HapTreeState getRootState(void) const; bool next(int m, HapTreeState &state, int nextBit) const; }; class HapTreeMulti { const HapBitsT &hapBitsT; const int Nhaps; float invNhaps; HapTreeState rootState; HapTreeMultiNode *nodes; // [Nhaps-1] public: HapTreeMulti(const HapBitsT &_hapBitsT, SortDiv ad[], int M, WorkTreeNode workNodes[]); ~HapTreeMulti(void); float getInvNhaps(void) const; HapTreeState getRootState(void) const; bool next(int m, HapTreeState &state, int nextBit) const; void nextAtFrac(int m, HapTreeState &state, double nextFrac) const; void dfsPrint(std::string curPrefix, int m, int M, const HapTreeState &state) const; }; class HapHedge { const HapBitsT &hapBitsT; const int skip, T; HapTree **treePtrs; public: HapHedge(const HapBitsT &_hapBitsT, int skip/*, const std::vector &treeStarts*/); ~HapHedge(void); const HapTree &getHapTree(int t) const; int getM(void) const; int getSkip(void) const; int getNumTrees(void) const; const HapBitsT &getHapBitsT(void) const; }; class HapHedgeErr { const HapBitsT &hapBitsT; const int T; HapTreeMulti **treePtrs; public: HapHedgeErr(const HapBitsT &_hapBitsT); ~HapHedgeErr(void); const HapTreeMulti &getHapTreeMulti(int t) const; int getNumTrees(void) const; const HapBitsT &getHapBitsT() const; void printTree(int t) const; }; } #endif Eagle-2.4/src/LapackConst.hpp000066400000000000000000000050301321437612200160750ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef LAPACKCONST_HPP #define LAPACKCONST_HPP #ifdef USE_MKL #include "mkl.h" #define DGER_MACRO dger #define DGEMV_MACRO dgemv #define DGEMM_MACRO dgemm #define SGEMM_MACRO sgemm #define DGELS_MACRO dgels #define DGESVD_MACRO dgesvd #else extern "C" int dgesvd_(char *jobu, char *jobvt, int *m, int *n, double *a, int *lda, double *s, double *u, int *ldu, double *vt, int *ldvt, double *work, int *lwork, int *info); extern "C" int dgemv_(char *TRANS, int *M, int *N, double *ALPHA, double *A, int *LDA, const double *X, int *INCX, double *BETA, double *Y, int *INCY); extern "C" int dger_(int *M, int *N, double *ALPHA, double *X, int *INCX, const double *Y, int *INCY, double *A, int *LDA); extern "C" int dgemm_(char *TRANSA, char *TRANSB, int *M, int *N, int *K, double *ALPHA, const double *A, int *LDA, const double *B, int *LDB, double *BETA, double *C, int *LDC); extern "C" int sgemm_(char *TRANSA, char *TRANSB, int *M, int *N, int *K, float *ALPHA, const float *A, int *LDA, const float *B, int *LDB, float *BETA, float *C, int *LDC); extern "C" int dgels_(char *TRANS, int *M, int *N, int *NRHS, double *A, int *LDA, double *B, int *LDB, double *WORK, int *LWORK, int *INFO); #define DGER_MACRO dger_ #define DGEMV_MACRO dgemv_ #define DGEMM_MACRO dgemm_ #define SGEMM_MACRO sgemm_ #define DGELS_MACRO dgels_ #define DGESVD_MACRO dgesvd_ #endif /* namespace LapackConst { #ifndef USE_MKL #ifdef USE_MKL inline CBLAS_TRANSPOSE lapackTransToMKL(char trans) { return (trans=='N'||trans=='n') ? CblasNoTrans : CblasTrans; } #endif void dgemm_wrap(char TRANSA, char TRANSB, int M, int N, int K, double ALPHA, const double *A, int LDA, const double *B, int LDB, double BETA, double *C, int LDC); } */ #endif Eagle-2.4/src/Makefile000066400000000000000000000053761321437612200146370ustar00rootroot00000000000000# build options: # 1. cmd line: linking = dynamic (default), static-except-glibc (recommended release), static # 2. cmd line: debug = false (default => -O2), true (-g) ### modify these paths to local BLAS, Boost and htslib install directories LBLAS = -lopenblas # alternatively -llapack (just need sgemm_) BLAS_DIR = /opt/openblas/0.2.14/lib BOOST_INSTALL_DIR = /home/pl88/boost_1_58_0/install HTSLIB_DIR = /groups/price/poru/external_software/htslib/htslib-1.4 ### NOTE: to reduce dependencies from htslib, configure htslib with: ./configure --disable-bz2 --disable-lzma --disable-plugins --disable-libcurl --disable-gcs --disable-s3 ### these paths are used only for static linking ZLIB_STATIC_DIR = /opt/zlib-1.2.8/lib # probably unnecessary on most systems GLIBC_STATIC_DIR = /home/pl88/glibc-static/usr/lib64 ifeq ($(strip ${linking}),) linking = dynamic endif CC = g++ ifeq (${debug},true) CFLAGS += -g else CFLAGS += -O2 endif ifeq (${prof},true) CFLAGS += -g -pg LFLAGS += -pg endif CFLAGS += -std=c++0x -msse -msse2 -fopenmp -Wall LFLAGS += -fopenmp # add BLAS lib path ifneq ($(strip ${BLAS_DIR}),) LPATHS += -L${BLAS_DIR} ifeq (${linking},dynamic) LPATHS += -Wl,-rpath,${BLAS_DIR} endif endif # add Boost include and lib paths ifneq ($(strip ${BOOST_INSTALL_DIR}),) CPATHS += -I${BOOST_INSTALL_DIR}/include LPATHS += -L${BOOST_INSTALL_DIR}/lib ifeq (${linking},dynamic) LPATHS += -Wl,-rpath,${BOOST_INSTALL_DIR}/lib endif endif # add htslib include and lib paths ifneq ($(strip ${HTSLIB_DIR}),) CPATHS += -I${HTSLIB_DIR} LPATHS += -L${HTSLIB_DIR} ifeq (${linking},dynamic) LPATHS += -Wl,-rpath,${HTSLIB_DIR} endif endif # add zlib.a path for static linking on Orchestra ifneq ($(strip ${ZLIB_STATIC_DIR}),) ifneq (${linking},dynamic) LPATHS += -L${ZLIB_STATIC_DIR} endif endif # add flags for static linking; build LAPACK/MKL component of link line ifeq (${linking},static) LFLAGS += -static LPATHS += -L${GLIBC_STATIC_DIR} -L${ZLIB_STATIC_DIR} else ifeq (${linking},static-except-glibc) LFLAGS += -static-libgcc -static-libstdc++ LPATHS += -L${ZLIB_STATIC_DIR} endif # build link line (minus flags) LLIBS = -lhts -lboost_program_options -lboost_iostreams -lz ${LBLAS} ifeq (${linking},static-except-glibc) L = ${LPATHS} -Wl,-Bstatic ${LLIBS} -Wl,-Bdynamic -lpthread -lm else L = ${LPATHS} ${LLIBS} -lpthread -lm endif T = eagle O = DipTreePBWT.o Eagle.o EagleImpMiss.o EagleParams.o EaglePBWT.o FileUtils.o GenoData.o HapHedge.o MapInterpolater.o MemoryUtils.o NumericUtils.o StaticMultimap.o StringUtils.o SyncedVcfData.o Timer.o OMAIN = EagleMain.o $O .PHONY: clean $T: ${OMAIN} ${CC} ${LFLAGS} -o $T ${OMAIN} $L %.o: %.cpp ${CC} ${CFLAGS} ${CPATHS} -o $@ -c $< EagleMain.o: Version.hpp Eagle.o: Version.hpp all: $T clean: rm -f *.o rm -f $T Eagle-2.4/src/MapInterpolater.cpp000066400000000000000000000066631321437612200170110ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include "MapInterpolater.hpp" #include "FileUtils.hpp" namespace Genetics { using std::vector; using std::string; using std::pair; using std::make_pair; using std::map; using std::cout; using std::cerr; using std::endl; using FileUtils::getline; const string MapInterpolater::MAP_FILE_HEADER = "chr position COMBINED_rate(cM/Mb) Genetic_Map(cM)"; MapInterpolater::MapInterpolater(const string &geneticMapFile) { if (geneticMapFile.empty()) return; chrBpToRateGen[make_pair(0, 0)] = make_pair(0.0, 0.0); // sentinel at beginning string line; FileUtils::AutoGzIfstream fin; fin.openOrExit(geneticMapFile); getline(fin, line); if (line != MAP_FILE_HEADER) { cerr << "ERROR: Wrong format of reference map " << geneticMapFile << endl; cerr << " Expecting header: " << MAP_FILE_HEADER << endl; exit(1); } int chr0 = 0, bp0 = 0; double gen0 = 0; int chr, bp; double rate, gen; while (fin >> chr >> bp >> rate >> gen) { if (chr == chr0) { if (gen, pair >::const_iterator ubIter = chrBpToRateGen.upper_bound(make_pair(chr, bp)); // map record > (chr, bp) if (ubIter == chrBpToRateGen.end()) { cerr << "ERROR: Chromosome " << chr << " is not in genetic map" << endl; exit(1); } int ubChr = ubIter->first.first; int ubBp = ubIter->first.second; double ubRate = ubIter->second.first; double ubGen = ubIter->second.second; if (chr == ubChr) return 0.01 * (ubGen + 1e-6 * ubRate * (bp-ubBp)); // interpolate interval else return 0.01 * (--ubIter)->second.second; // end of previous chromosome } } Eagle-2.4/src/MapInterpolater.hpp000066400000000000000000000025461321437612200170120ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef MAPINTERPOLATER_HPP #define MAPINTERPOLATER_HPP #include #include #include namespace Genetics { class MapInterpolater { std::map < std::pair , std::pair > chrBpToRateGen; static const std::string MAP_FILE_HEADER; public: // input file format: chr position COMBINED_rate(cM/Mb) Genetic_Map(cM) // (Oxford map format preceded by chr column) MapInterpolater(const std::string &geneticMapFile); // returns interpolated genetic position in Morgans double interp(int chr, int bp) const; }; } #endif Eagle-2.4/src/MemoryUtils.cpp000066400000000000000000000025671321437612200161730ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include "MemoryUtils.hpp" #include "Types.hpp" void *ALIGNED_MALLOC(uint64 size) { #ifdef USE_MKL_MALLOC void *p = mkl_malloc(size, MEM_ALIGNMENT); #else void *p = _mm_malloc(size, MEM_ALIGNMENT); #endif // TODO: change to assert() or dispense with altogether and change ALIGNED_MALLOC to macro? if (p == NULL) { std::cerr << "ERROR: Failed to allocate " << size << " bytes" << std::endl; exit(1); } else if ((uint64) p & 0xf) { std::cerr << "ERROR: Memory alignment of " << size << " bytes failed" << std::endl; exit(1); } return p; } Eagle-2.4/src/MemoryUtils.hpp000066400000000000000000000033751321437612200161760ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef MEMORYUTILS_HPP #define MEMORYUTILS_HPP #include "Types.hpp" #define MEM_ALIGNMENT 64 //#define ALIGNED_MALLOC(size) mkl_malloc(size, MEM_ALIGNMENT) //#define ALIGNED_MALLOC(size) _mm_malloc(size, MEM_ALIGNMENT) void *ALIGNED_MALLOC(uint64 size); #ifdef USE_MKL_MALLOC #include #define ALIGNED_FREE mkl_free #else #include #define ALIGNED_FREE _mm_free #endif #define ALIGNED_MALLOC_DOUBLES(numDoubles) (double *) ALIGNED_MALLOC((numDoubles)*sizeof(double)) #define ALIGNED_MALLOC_FLOATS(numFloats) (float *) ALIGNED_MALLOC((numFloats)*sizeof(float)) #define ALIGNED_MALLOC_UCHARS(numUchars) (uchar *) ALIGNED_MALLOC((numUchars)*sizeof(uchar)) #define ALIGNED_MALLOC_UINTS(numUints) (uint *) ALIGNED_MALLOC((numUints)*sizeof(uint)) #define ALIGNED_MALLOC_UINT64S(numUint64s) (uint64 *) ALIGNED_MALLOC((numUint64s)*sizeof(uint64)) #define ALIGNED_MALLOC_UINT64_MASKS(numUint64_masks) (uint64_masks *) ALIGNED_MALLOC((numUint64_masks)*sizeof(uint64_masks)) #endif Eagle-2.4/src/NumericUtils.cpp000066400000000000000000000066721321437612200163260ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include "NumericUtils.hpp" namespace NumericUtils { double sum(const double x[], uint64 N) { double ans = 0; for (uint64 n = 0; n < N; n++) ans += x[n]; return ans; } double mean(const std::vector &x) { uint64 N = x.size(); return sum(&x[0], N) / N; } // takes into account that some 0 values may indicate missing/ignored: divide out by Nused, not N double mean(const double x[], uint64 N, uint64 Nused) { return sum(x, N) / Nused; } // regress y on x, assuming both have been 0-centered (so 0-filled missing values ok) double regCoeff(const double y[], const double x[], uint64 N) { /* WRONG! if not mean-centered already, need to mask missing indivs in loop double xbar = mean(x, N, Nused); double ybar = mean(y, N, Nused); cout << "xbar: " << xbar << " ybar: " << ybar << endl; double numer = 0, denom = 0; for (uint64 n = 0; n < N; n++) { numer += (x[n]-xbar) * (y[n]-ybar); denom += sq(x[n]-xbar); } */ double numer = 0, denom = 0; for (uint64 n = 0; n < N; n++) { numer += x[n] * y[n]; denom += sq(x[n]); } return numer / denom; } double dot(const double x[], const double y[], uint64 N) { double ans = 0; for (uint64 n = 0; n < N; n++) ans += x[n] * y[n]; return ans; } double norm2(const double x[], uint64 N) { double ans = 0; for (uint64 n = 0; n < N; n++) ans += sq(x[n]); return ans; } void normalize(double x[], uint64 N) { double scale = 1.0 / sqrt(norm2(x, N)); for (uint64 n = 0; n < N; n++) x[n] *= scale; } std::pair meanStdDev(const double x[], uint64 N) { double mu = 0, s2 = 0; for (uint64 n = 0; n < N; n++) mu += x[n]; mu /= N; for (uint64 n = 0; n < N; n++) s2 += sq(x[n]-mu); s2 /= (N-1); return std::make_pair(mu, sqrt(s2)); } std::pair meanStdErr(const double x[], uint64 N) { std::pair ret = meanStdDev(x, N); ret.second /= sqrt((double) N); return ret; } std::pair meanStdDev(const std::vector &x) { return meanStdDev(&x[0], x.size()); } std::pair meanStdErr(const std::vector &x) { return meanStdErr(&x[0], x.size()); } void logSumExp(float &x, float y) { float big, diff; if (x > y) { big = x; diff = y-x; } else { big = y; diff = x-y; } if (diff < -10) x = big; // a < 1e-4 * b => ignore a else if (diff < -5) x = big + expf(diff); // a < 1e-2 * b => use 1st-order Taylor expansion else x = big + logf(1.0f + expf(diff)); } } Eagle-2.4/src/NumericUtils.hpp000066400000000000000000000035141321437612200163230ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef NUMERICUTILS_HPP #define NUMERICUTILS_HPP #include #include #include #include "Types.hpp" namespace NumericUtils { inline double sq(double x) { return x*x; } double sum(const double x[], uint64 N); double mean(const std::vector &x); // takes into account that some 0 values may indicate missing/ignored: divide out by Nused, not N double mean(const double x[], uint64 N, uint64 Nused); // regress y on x, assuming both have been 0-centered (so 0-filled missing values ok) double regCoeff(const double y[], const double x[], uint64 N); double dot(const double x[], const double y[], uint64 N); double norm2(const double x[], uint64 N); void normalize(double x[], uint64 N); void logSumExp(float &x, float y); std::pair meanStdDev(const double x[], uint64 N); std::pair meanStdErr(const double x[], uint64 N); std::pair meanStdDev(const std::vector &x); std::pair meanStdErr(const std::vector &x); } #endif Eagle-2.4/src/StaticMultimap.cpp000066400000000000000000000074421321437612200166370ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include "MemoryUtils.hpp" #include "Types.hpp" #include "StaticMultimap.hpp" namespace EAGLE { using std::vector; using std::map; using std::min; using std::swap; uint randMWC(uint &z, uint &w, uint mod) { z=36969*(z&65535)+(z>>16); w=18000*(w&65535)+(w>>16); return ((z<<16)+w) % mod; } StaticMultimap::StaticMultimap() : initialized(false) {} // for value=[0..len(keyVec)), keyVec[value] = key // ignore if key == -1 // only store up to maxValuesPerKey (if more values, choose randomly) StaticMultimap::StaticMultimap(const vector &keyVec, uint maxValuesPerKey) { init(keyVec, maxValuesPerKey); } void StaticMultimap::init(const vector &keyVec, uint maxValuesPerKey) { // populate tmp map: non-ignored key -> indices i with keyVec[i]=key map < uint, vector > tmpMap; for (uint i = 0; i < keyVec.size(); i++) if (keyVec[i] != -1U) tmpMap[keyVec[i]].push_back(i); // iterate through tmp map to determine total number of values to keep (chop at max) nKeys = tmpMap.size(); nValues = 0; for (map < uint, vector >::iterator it = tmpMap.begin(); it != tmpMap.end(); it++) nValues += min((uint) it->second.size(), maxValuesPerKey); // allocate arrays keys = ALIGNED_MALLOC_UINTS(nKeys); startInds = ALIGNED_MALLOC_UINTS(nKeys); lenValues = ALIGNED_MALLOC_UINTS(nKeys + nValues); // initialize Marsaglia's MWC uint z = 362436069, w = 521288629; // iterate through tmp map to randomly select and store up to maxValuesPerKey uint keysPos = 0, lenValuesPos = 0; for (map < uint, vector >::iterator it = tmpMap.begin(); it != tmpMap.end(); it++) { keys[keysPos] = it->first; // store key startInds[keysPos] = lenValuesPos; // store address of record in storage array keysPos++; vector &values = it->second; if (values.size() > maxValuesPerKey) // randomly move maxValuesPerKey elements to front for (uint j = 0; j < maxValuesPerKey; j++) swap(values[j], values[j + randMWC(z, w, values.size() - j)]); uint nValuesCurKey = min((uint) values.size(), maxValuesPerKey); lenValues[lenValuesPos++] = nValuesCurKey; // store length as first entry of record for (uint j = 0; j < nValuesCurKey; j++) // store list of values lenValues[lenValuesPos++] = values[j]; } initialized = true; } StaticMultimap::~StaticMultimap() { if (initialized) { ALIGNED_FREE(lenValues); ALIGNED_FREE(startInds); ALIGNED_FREE(keys); } } // returns pointer to record: list size followed by list // returns NULL if key not found const uint *StaticMultimap::query(uint key) const { uint lo = 0, hi = nKeys; // condition: keys[lo] <= key < keys[hi] (hi = nKeys ok) while (lo+1. */ #ifndef STATICMULTIMAP_HPP #define STATICMULTIMAP_HPP #include #include "Types.hpp" namespace EAGLE { class StaticMultimap { private: uint nKeys, nValues; uint *keys; // [VECTOR]: nKeys uint *startInds; // [VECTOR]: nKeys uint *lenValues; // [VECTOR]: nKeys + nValues (each record: list size followed by list) bool initialized; public: StaticMultimap(); // for value=[0..len(keyVec)), keyVec[value] = key // ignore if key == -1 // only store up to maxValuesPerKey (if more values, choose randomly) StaticMultimap(const std::vector &keyVec, uint maxValuesPerKey); void init(const std::vector &keyVec, uint maxValuesPerKey); ~StaticMultimap(); // returns pointer to record: list size followed by list // returns NULL if key not found const uint *query(uint key) const; }; } #endif Eagle-2.4/src/StringUtils.cpp000066400000000000000000000114031321437612200161560ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "StringUtils.hpp" namespace StringUtils { using std::vector; using std::string; using std::cout; using std::cerr; using std::endl; int stoi(const string &s) { int i; if (sscanf(s.c_str(), "%d", &i) == 0) { cerr << "ERROR: Could not parse integer from string: " << s << endl; exit(1); } return i; } double stod(const string &s) { double d; sscanf(s.c_str(), "%lf", &d); return d; } string itos(int i) { std::ostringstream oss; oss << i; return oss.str(); } string findDelimiters(const string &s, const string &c) { string delims; for (uint p = 0; p < s.length(); p++) if (c.find(s[p], 0) != string::npos) delims += s[p]; return delims; } // will not return blanks vector tokenizeMultipleDelimiters(const string &s, const string &c) { uint p = 0; vector ans; string tmp; while (p < s.length()) { tmp = ""; while (p < s.length() && c.find(s[p], 0) != string::npos) p++; while (p < s.length() && c.find(s[p], 0) == string::npos) { tmp += s[p]; p++; } if (tmp != "") ans.push_back(tmp); } return ans; } void rangeErrorExit(const string &str, const string &delims) { cerr << "ERROR: Invalid delimiter sequence for specifying range: " << endl; cerr << " Template string: " << str << endl; cerr << " Delimiter sequence found: " << delims << endl; cerr << "Range in must have format {start:end} with no other " << RANGE_DELIMS << " chars" << endl; exit(1); } // basic range template: expand "{start:end}" to vector with one entry per range element // if end==start-1, will return empty vector expandRangeTemplate(const string &str) { vector ret; string delims = findDelimiters(str, RANGE_DELIMS); if (delims.empty()) ret.push_back(str); else if (delims == RANGE_DELIMS) { vector tokens = tokenizeMultipleDelimiters(str, RANGE_DELIMS); for (int i = 0; i < (int) str.size(); i++) if (str[i] == ':' && (str[i-1] == '{' || str[i+1] == '}')) rangeErrorExit(str, delims); int startInd = (str[0] != RANGE_DELIMS[0]), endInd = startInd+1; string prefix, suffix; if (str[0] != RANGE_DELIMS[0]) prefix = tokens[0]; if (str[str.length()-1] != RANGE_DELIMS[2]) suffix = tokens.back(); int start = StringUtils::stoi(tokens[startInd]), end = StringUtils::stoi(tokens[endInd]); if (start > end+1 || end > start+1000000) { cerr << "ERROR: Invalid range in template string: " << str << endl; cerr << " Start: " << start << endl; cerr << " End: " << end << endl; exit(1); } for (int i = start; i <= end; i++) ret.push_back(prefix + itos(i) + suffix); } else rangeErrorExit(str, delims); return ret; } vector expandRangeTemplates(const vector &rangeTemplates) { vector expanded; for (uint i = 0; i < rangeTemplates.size(); i++) { vector range = expandRangeTemplate(rangeTemplates[i]); expanded.insert(expanded.end(), range.begin(), range.end()); } return expanded; } int bcfNameToChrom(const char *nameBuf, int chromMin, int chromX) { int chrom; int startPos = 0; if (strlen(nameBuf)>3 && tolower(nameBuf[0])=='c' && tolower(nameBuf[1])=='h' && tolower(nameBuf[2])=='r') startPos = 3; // allow prefix "chr" if ((int) strlen(nameBuf) == startPos + 1 && toupper(nameBuf[startPos])=='X') chrom = chromX; else { sscanf(nameBuf + startPos, "%d", &chrom); if (!isdigit(nameBuf[startPos]) || !(chrom >= chromMin && chrom <= chromX)) { cerr << "ERROR: Invalid chromosome: " << nameBuf << endl; cerr << " Chromosome number must be between " << chromMin << " and --chromX (= " << chromX << ")" << endl; exit(1); } } return chrom; } } Eagle-2.4/src/StringUtils.hpp000066400000000000000000000031761321437612200161730ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef STRINGUTILS_HPP #define STRINGUTILS_HPP #include #include namespace StringUtils { const std::string RANGE_DELIMS = "{:}"; // must have 3 chars int stoi(const std::string &s); double stod(const std::string &s); std::string itos(int i); std::string findDelimiters(const std::string &s, const std::string &c); // will not return blanks std::vector tokenizeMultipleDelimiters(const std::string &s, const std::string &c); // basic range template: expand "{start:end}" to vector with one entry per range element // if end==start-1, will return empty std::vector expandRangeTemplate(const std::string &str); std::vector expandRangeTemplates(const std::vector &rangeTemplates); int bcfNameToChrom(const char *nameBuf, int chromMin, int chromX); } #endif Eagle-2.4/src/SyncedVcfData.cpp000066400000000000000000000503131321437612200163500ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "Types.hpp" #include "MemoryUtils.hpp" #include "MapInterpolater.hpp" #include "StringUtils.hpp" #include "SyncedVcfData.hpp" namespace EAGLE { using std::vector; using std::string; using std::pair; using std::make_pair; using std::cout; using std::cerr; using std::endl; void process_ref_genotypes(int nsmpl, int ngt, int32_t *gt, bool allowHaploid, bool refAltSwap, vector &hapsRef, int &numMissing, int &numUnphased, uint &w) { numMissing = numUnphased = 0; if (ngt != 2*nsmpl && !(ngt==nsmpl && allowHaploid)) { cerr << "ERROR: ref ploidy != 2 (ngt != 2*nsmpl): ngt=" << ngt << ", nsmpl=" << nsmpl << endl; exit(1); } int ploidy = ngt/nsmpl; for (int i=0; i haploid if ( missing ) continue; // missing diploid genotype can be written in VCF as "." else if (allowHaploid) { // X chromosome => haploid ok haps[j] = haps[j-1]; // encode as diploid homozygote unphased = false; } else { cerr << "ERROR: ref genotypes contain haploid sample" << endl; exit(1); } } } else { if ( bcf_gt_is_missing(ptr[j]) ) { // missing allele missing = true; } else { int idx = bcf_gt_allele(ptr[j]); // allele index haps[j] = (idx >= 1); // encode REF allele -> 0, ALT allele(s) -> 1 if ( j==1 && !bcf_gt_is_phased(ptr[j]) ) unphased = true; } } } if (ploidy==1) haps[1] = haps[0]; if (missing) { haps[0] = haps[1] = 0; // set both alleles to REF allele numMissing++; } else if (unphased) { if (haps[0] != haps[1] && ((w=18000*(w&65535)+(w>>16))&1)) std::swap(haps[0], haps[1]); // randomize phasing numUnphased++; } if (refAltSwap) { // target REF/ALT are swapped relative to reference REF/ALT haps[0] = !haps[0]; haps[1] = !haps[1]; } hapsRef.push_back(haps[0]); hapsRef.push_back(haps[1]); } } void process_target_genotypes(int nsmpl, int ngt, int32_t *gt, bool allowHaploid, vector &genosTarget, int &numMissing) { numMissing = 0; if (ngt != 2*nsmpl && !(ngt==nsmpl && allowHaploid)) { cerr << "ERROR: target ploidy != 2 (ngt != 2*nsmpl): ngt=" << ngt << ", nsmpl=" << nsmpl << endl; exit(1); } int ploidy = ngt/nsmpl; for (int i=0; i haploid if ( missing ) continue; // missing diploid genotype can be written in VCF as "." else if (allowHaploid) // X chromosome => haploid ok g *= 2; // encode as diploid homozygote else { cerr << "ERROR: target genotypes contain haploid sample" << endl; exit(1); } } } else { if ( bcf_gt_is_missing(ptr[j]) ) { // missing allele missing = true; } else { int idx = bcf_gt_allele(ptr[j]); // allele index if (idx > 1) { cerr << "ERROR: multi-allelic site found in target; should have been filtered" << endl; exit(1); } g += idx; } } } if (missing) { g = 9; numMissing++; } else if (ploidy==1) g *= 2; // encode as diploid homozygote genosTarget.push_back(g); } } // fills in chrom if chrom==0 vector < pair > SyncedVcfData::processVcfs (const string &vcfRef, const string &vcfTarget, const string &vcfExclude, bool allowRefAltSwap, int &chrom, int chromX, double bpStart, double bpEnd, vector &hapsRef, vector &genosTarget, const string &tmpFile, const string &writeMode, int usePS, vector < vector < pair > > &conPSall, bool outputUnphased, vector &isTmpPhased) { vector < pair > chrBps; bcf_srs_t *sr = bcf_sr_init(); bcf_sr_set_opt(sr, BCF_SR_PAIR_LOGIC, allowRefAltSwap ? BCF_SR_PAIR_BOTH_REF : BCF_SR_PAIR_EXACT); bcf_sr_set_opt(sr, BCF_SR_REQUIRE_IDX); if ( chrom!=0 ) { kstring_t str = {0,0,0}; if ( chrom==chromX ) { // this is not perfect, better would be to have the chr name passed to us ksprintf(&str,"X:%d-%d,chrX:%d-%d",(uint32_t)bpStart,(uint32_t)bpEnd,(uint32_t)bpStart,(uint32_t)bpEnd); } else ksprintf(&str,"%d:%d-%d,chr%d:%d-%d",chrom,(uint32_t)bpStart,(uint32_t)bpEnd,chrom,(uint32_t)bpStart,(uint32_t)bpEnd); if ( bcf_sr_set_regions(sr, str.s, 0)!=0 ) { cerr << "ERROR: failed to initialize the region:" << str.s; exit(1); } free(str.s); } if (!bcf_sr_add_reader(sr, vcfRef.c_str())) { cerr << "ERROR: Could not open " << vcfRef << " for reading: " << bcf_sr_strerror(sr->errnum) << endl; exit(1); } if (!bcf_sr_add_reader(sr, vcfTarget.c_str())) { cerr << "ERROR: Could not open " << vcfTarget << " for reading: " << bcf_sr_strerror(sr->errnum) << endl; exit(1); } bool useExclude = !vcfExclude.empty(); if (useExclude && !bcf_sr_add_reader(sr, vcfExclude.c_str())) { cerr << "ERROR: Could not open " << vcfExclude << " for reading: " << bcf_sr_strerror(sr->errnum) << endl; exit(1); } bcf_hdr_t *ref_hdr = bcf_sr_get_header(sr, 0); bcf_hdr_t *tgt_hdr = bcf_sr_get_header(sr, 1); // Open VCF for writing, "-" stands for standard output // wbu .. uncompressed BCF // wb .. compressed BCF // wz .. compressed VCF // w .. uncompressed VCF htsFile *out = hts_open(tmpFile.c_str(), writeMode.c_str()); // Print the VCF header bcf_hdr_write(out, tgt_hdr); Nref = bcf_hdr_nsamples(ref_hdr); Ntarget = bcf_hdr_nsamples(tgt_hdr); conPSall.resize(Ntarget); std::map bpToSyncedIndex1; // bp -> 1-based index (m+1) // Read target sample IDs targetIDs.resize(Ntarget); for (uint i = 0; i < Ntarget; i++) targetIDs[i] = tgt_hdr->samples[i]; cout << endl; cout << "Reference samples: Nref = " << Nref << endl; cout << "Target samples: Ntarget = " << Ntarget << endl; M = 0; uint Mexclude = 0, MtargetOnly = 0, MrefOnly = 0, MmultiAllelicTgt = 0, MmultiAllelicRef = 0, MmonomorphicRef = 0; uint MwithMissingRef = 0, MwithUnphasedRef = 0, MnotInRegion = 0, MnotOnChrom = 0; uint MrefAltError = 0, numRefAltSwaps = 0; uint64 GmissingRef = 0, GunphasedRef = 0, GmissingTarget = 0; uint w = 521288629; // fast rng: Marsaglia's MWC int mref_gt = 0, *ref_gt = NULL; int mtgt_gt = 0, *tgt_gt = NULL; int mtgt_ps = 0, *tgt_ps = NULL; int Mps = 0; uint64 err_ps = 0, good_ps = 0; int prev_rid = -1; // chromosome BCF id and human-readable numeric id while ( bcf_sr_next_line(sr) ) { bcf1_t *ref = bcf_sr_get_line(sr, 0); bcf1_t *tgt = bcf_sr_get_line(sr, 1); if (useExclude && bcf_sr_get_line(sr, 2)) { Mexclude++; if (outputUnphased && tgt) { bcf_write(out, tgt_hdr, tgt); isTmpPhased.push_back(false); } continue; } if ( !ref ) { //fprintf(stderr, "onlyT .. %s:%d\n", bcf_seqname(tgt_hdr, tgt), tgt->pos+1); bcf_unpack(tgt, BCF_UN_STR); // unpack thru ALT if ( tgt->n_allele>1 && strcmp(tgt->d.allele[1], ".") != 0) // report if polymorphic in target MtargetOnly++; if (outputUnphased) { bcf_write(out, tgt_hdr, tgt); isTmpPhased.push_back(false); } continue; } if ( !tgt ) { //fprintf(stderr, "onlyR .. %s:%d\n", bcf_seqname(ref_hdr, ref), ref->pos+1); bcf_unpack(ref, BCF_UN_STR); // unpack thru ALT if ( ref->n_allele>1 && strcmp(ref->d.allele[1], ".") != 0) // report if polymorphic in ref MrefOnly++; continue; } //fprintf(stderr, "match .. %s:%d\n", bcf_seqname(ref_hdr, ref), ref->pos+1); // deal with multi-allelic and monomorphic markers // drop multi-allelic target markers int ntgt_gt = bcf_get_genotypes(tgt_hdr, tgt, &tgt_gt, &mtgt_gt); if (tgt->n_allele > 2) { MmultiAllelicTgt++; if (outputUnphased) { bcf_write(out, tgt_hdr, tgt); isTmpPhased.push_back(false); } continue; } // drop monomorphic reference markers if (ref->n_allele==1) { MmonomorphicRef++; if (outputUnphased) { bcf_write(out, tgt_hdr, tgt); isTmpPhased.push_back(false); } continue; } // preserve monomorphic markers if biallelic in the reference panel if (tgt->n_allele < 2) { bcf_update_alleles(tgt_hdr, tgt, (const char**)ref->d.allele,ref->n_allele); } // drop multi-allelic reference markers if (ref->n_allele > 2) { MmultiAllelicRef++; if (outputUnphased) { bcf_write(out, tgt_hdr, tgt); isTmpPhased.push_back(false); } continue; } // check for REF/ALT swaps bool refAltSwap = false; if (strcmp(tgt->d.allele[0], ref->d.allele[0]) == 0 && strcmp(tgt->d.allele[1], ref->d.allele[1]) == 0) { refAltSwap = false; } else if (allowRefAltSwap && bcf_is_snp(tgt) && // allow swap if --allowRefAltSwap is set strcmp(tgt->d.allele[0], ref->d.allele[1]) == 0 && strcmp(tgt->d.allele[1], ref->d.allele[0]) == 0) { refAltSwap = true; numRefAltSwaps++; } else { MrefAltError++; if (outputUnphased) { bcf_write(out, tgt_hdr, tgt); isTmpPhased.push_back(false); } continue; } // Check the chromosome: if region was requested (chrom is set), synced // reader already positioned us in the right region. Otherwise, we process // only the first chromosome in the file and quit if ( prev_rid<0 ) { prev_rid = tgt->rid; if ( !chrom ) // learn the human-readable id { chrom = StringUtils::bcfNameToChrom(bcf_hdr_id2name(tgt_hdr, tgt->rid), 1, chromX); } } if ( prev_rid!=tgt->rid ) break; M++; // SNP passes checks bpToSyncedIndex1[tgt->pos+1] = M; // TODO: be careful about duplicate bp (multiallelics?) // append chromosome number and base pair coordinate to chrBps chrBps.push_back(make_pair(chrom, tgt->pos+1)); // process reference haplotypes: append 2*Nref entries (0/1 pairs) to hapsRef[] // check for missing/unphased ref genos (missing -> REF allele; unphased -> random phase) int nref_gt = bcf_get_genotypes(ref_hdr, ref, &ref_gt, &mref_gt); int numMissing, numUnphased; process_ref_genotypes(Nref, nref_gt, ref_gt, chrom==chromX, refAltSwap, hapsRef, numMissing, numUnphased, w); if (numMissing) MwithMissingRef++; if (numUnphased) MwithUnphasedRef++; GmissingRef += numMissing; GunphasedRef += numUnphased; // process target genotypes: append Ntarget entries (0/1/2/9) to genosTarget[] process_target_genotypes(Ntarget, ntgt_gt, tgt_gt, chrom==chromX, genosTarget, numMissing); GmissingTarget += numMissing; // process target PS field if (usePS && bcf_get_format_int32(tgt_hdr, tgt, "PS", &tgt_ps, &mtgt_ps) >= 0) { Mps++; for (uint i = 0; i < Ntarget; i++) if (tgt_ps[i] != bcf_int32_missing) { std::map ::iterator it = bpToSyncedIndex1.find(abs(tgt_ps[i])); if (it == bpToSyncedIndex1.end() || genosTarget[(M-1)*Ntarget + i] != 1 || genosTarget[(it->second-1)*Ntarget + i] != 1) err_ps++; else { conPSall[i].push_back(make_pair((int) M, it->second * (tgt_ps[i]>0 ? 1 : -1))); good_ps++; } } } // print the record bcf_write(out, tgt_hdr, tgt); isTmpPhased.push_back(true); } bcf_sr_destroy(sr); hts_close(out); free(ref_gt); free(tgt_gt); cout << "SNPs to analyze: M = " << M << " SNPs in both target and reference" << endl; if (Mps) { cout << " " << Mps << " SNPs with FORMAT:PS field" << endl; cout << good_ps << " usable FORMAT:PS constraints" << endl; cout << err_ps << " unusable FORMAT:PS constraints" << endl; } if (numRefAltSwaps) cerr << "--> WARNING: REF/ALT were swapped in " << numRefAltSwaps << " of these SNPs <--" << endl; cout << endl; cout << "SNPs ignored: " << MtargetOnly << " SNPs in target but not reference" << endl; if (MtargetOnly > M/10U) cerr << " --> WARNING: Check REF/ALT agreement between target and ref? <--" << endl; cout << " " << MrefOnly << " SNPs in reference but not target" << endl; if (MnotOnChrom) cout << " " << MnotOnChrom << " SNPs not in specified chrom" << endl; if (MnotInRegion) cout << " " << MnotInRegion << " SNPs not in selected region (+ flanks)" << endl; cout << " " << MmultiAllelicTgt << " multi-allelic SNPs in target" << endl; if (MmultiAllelicRef) cout << " " << MmultiAllelicRef << " SNPs biallelic in target but multi-allelic in ref" << endl; if (MmonomorphicRef) cout << " " << MmonomorphicRef << " SNPs biallelic in target but monomorphic in ref" << endl; if (MrefAltError) cout << " " << MrefAltError << " SNPs with allele mismatches" << endl; if (Mexclude) cout << " " << Mexclude << " SNPs excluded based on --vcfExclude" << endl; cout << endl; if (MwithMissingRef) { cerr << "WARNING: Reference contains missing genotypes (set to reference allele)" << endl; cerr << " Fraction of sites with missing data: " << MwithMissingRef / (double) M << endl; cerr << " Fraction of ref genotypes missing: " << GmissingRef / (double) M / Nref << endl; } if (MwithUnphasedRef) { cerr << "WARNING: Reference contains unphased genotypes (set to random phase)" << endl; cerr << " Fraction of sites with unphased data: " << MwithUnphasedRef / (double) M << endl; cerr << " Fraction of ref genotypes unphased: " << GunphasedRef / (double) M / Nref << endl; } cout << "Missing rate in target genotypes: " << GmissingTarget / (double) M / Ntarget << endl; cout << endl; int numTmpUnphased = 0; for (uint j = 0; j < isTmpPhased.size(); j++) numTmpUnphased += !isTmpPhased[j]; if (numTmpUnphased) cout << "SNPs excluded from phasing that will be kept in output (unphased): " << numTmpUnphased << endl << endl; if (M <= 1U) { cerr << endl << "ERROR: Target and ref have too few matching SNPs (M = " << M << ")" << endl; exit(1); } return chrBps; } vector SyncedVcfData::processMap(vector < pair > &chrBps, const string &geneticMapFile) { cout << "Filling in genetic map coordinates using reference file:" << endl; cout << " " << geneticMapFile << endl; Genetics::MapInterpolater mapInterpolater(geneticMapFile); vector cMs(chrBps.size()); for (uint64 m = 0; m < chrBps.size(); m++) cMs[m] = 100 * mapInterpolater.interp(chrBps[m].first, chrBps[m].second); return cMs; } void SyncedVcfData::buildGenoBits(const vector &hapsRef, const vector &genosTarget, const vector &cMs, double cMmax) { const uint segMin = 16; vector snpInds; vector cMvec; vector < vector > seg64snpInds; for (uint64 m = 0; m < M; m++) { if (cMvec.size() == 64 || (cMvec.size() >= segMin && cMs[m] > cMvec[0] + cMmax)) { seg64snpInds.push_back(snpInds); seg64cMvecs.push_back(cMvec); snpInds.clear(); cMvec.clear(); } snpInds.push_back(m); cMvec.push_back(cMs[m]); } seg64snpInds.push_back(snpInds); seg64cMvecs.push_back(cMvec); Mseg64 = seg64snpInds.size(); cout << "Number of <=(64-SNP, " << cMmax << "cM) segments: " << Mseg64 << endl; cout << "Average # SNPs per segment: " << M / Mseg64 << endl; uint64 N = Nref + Ntarget; genoBits = ALIGNED_MALLOC_UINT64_MASKS(Mseg64 * N); memset(genoBits, 0, Mseg64 * N * sizeof(genoBits[0])); for (uint64 m64 = 0; m64 < Mseg64; m64++) { for (uint64 j = 0; j < seg64snpInds[m64].size(); j++) { uint64 m = seg64snpInds[m64][j]; for (uint64 n = 0; n < Nref; n++) { // store haploBits for ref haplotypes in genoBits bool haps0 = hapsRef[m * 2*Nref + 2*n]; bool haps1 = hapsRef[m * 2*Nref + 2*n+1]; genoBits[m64 * N + n].is0 |= ((uint64) haps0)< > > &conPSall, double &snpRate, bool outputUnphased, vector &isTmpPhased) { // perform synced read vector hapsRef; // M*2*Nref vector genosTarget; // M*Ntarget vector < pair > chrBps = processVcfs(vcfRef, vcfTarget, vcfExclude, allowRefAltSwap, chrom, chromX, bpStart, bpEnd, hapsRef, genosTarget, tmpFile, writeMode, usePS, conPSall, outputUnphased, isTmpPhased); // interpolate genetic coordinates vector cMs = processMap(chrBps, geneticMapFile); uint64 physRange = 0; double cMrange = 0; for (uint64 m = 0; m+1 < chrBps.size(); m++) if (chrBps[m+1].first == chrBps[m].first) { physRange += chrBps[m+1].second - chrBps[m].second; cMrange += cMs[m+1] - cMs[m]; } cout << "Physical distance range: " << physRange << " base pairs" << endl; cout << "Genetic distance range: " << cMrange << " cM" << endl; cout << "Average # SNPs per cM: " << (int) (M/cMrange + 0.5) << endl; snpRate = M/cMrange; if (physRange == 0 || cMrange == 0) { cerr << "ERROR: Physical and genetic distance ranges must be positive" << endl; cerr << " First SNP: chr=" << chrBps[0].first << " pos=" << chrBps[0].second << " cM=" << cMs[0] << endl; cerr << " Last SNP: chr=" << chrBps.back().first << " pos=" << chrBps.back().second << " cM=" << cMs.back() << endl; exit(1); } buildGenoBits(hapsRef, genosTarget, cMs, cMmax); } SyncedVcfData::~SyncedVcfData() { ALIGNED_FREE(genoBits); } uint64 SyncedVcfData::getNref(void) const { return Nref; } uint64 SyncedVcfData::getNtarget(void) const { return Ntarget; } uint64 SyncedVcfData::getMseg64(void) const { return Mseg64; } const uint64_masks *SyncedVcfData::getGenoBits(void) const { return genoBits; } vector > SyncedVcfData::getSeg64cMvecs(void) const { return seg64cMvecs; } const string &SyncedVcfData::getTargetID(int n) const { return targetIDs[n]; } }; Eagle-2.4/src/SyncedVcfData.hpp000066400000000000000000000062001321437612200163510ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef SYNCEDVCFDATA_HPP #define SYNCEDVCFDATA_HPP #include #include #include #include #include "Types.hpp" namespace EAGLE { class SyncedVcfData : boost::noncopyable { private: uint64 Nref, Ntarget, M; // N = Nref + Ntarget uint64 Mseg64; // number of <=64-SNP chunks uint64_masks *genoBits; // [[MATRIX]]: M64 x N (is0, is2, is9 64-bit masks; 3 bits/base) // n = [0..Nref) contain ref haploBits in is0, is2 // n = [Nref..Nref+Ntarget) contain target genoBits std::vector > seg64cMvecs; std::vector targetIDs; std::vector < std::pair > processVcfs (const std::string &vcfRef, const std::string &vcfTarget, const std::string &vcfExclude, bool allowRefAltSwap, int &chrom, int chromX, double bpStart, double bpEnd, std::vector &hapsRef, std::vector &genosTarget, const std::string &tmpFile, const std::string &writeMode, int usePS, std::vector < std::vector < std::pair > > &conPSall, bool outputUnphased, std::vector &isTmpPhased); std::vector processMap(std::vector < std::pair > &chrBps, const std::string &geneticMapFile); void buildGenoBits(const std::vector &hapsRef, const std::vector &genosTarget, const std::vector &cMs, double cMmax); public: /** * reads ref+target vcf data * writes target[isec] to tmpFile * fills in cM coordinates and seg64cMvecs, genoBits */ SyncedVcfData(const std::string &vcfRef, const std::string &vcfTarget, const std::string &vcfExclude, bool allowRefAltSwap, int &chrom, int chromX, double bpStart, double bpEnd, const std::string &geneticMapFile, double cMmax, const std::string &tmpFile, const std::string &writeMode, int usePS, std::vector < std::vector < std::pair > > &conPSall, double &snpRate, bool outputUnphased, std::vector &isTmpPhased); ~SyncedVcfData(); uint64 getNref(void) const; uint64 getNtarget(void) const; uint64 getMseg64(void) const; const uint64_masks *getGenoBits(void) const; std::vector > getSeg64cMvecs(void) const; const std::string &getTargetID(int n) const; }; } #endif Eagle-2.4/src/Timer.cpp000066400000000000000000000025531321437612200147550ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include #include "Timer.hpp" Timer::Timer(void) { update_time(); } double Timer::update_time(void) { struct timeval tv; gettimeofday(&tv, NULL); prevtime = curtime; curtime = tv.tv_sec + 1e-6 * tv.tv_usec; return curtime - prevtime; } unsigned long long Timer::rdtsc(void) { unsigned int hi, lo; __asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi)); return ((unsigned long long) lo) | (((unsigned long long) hi)<<32); } double Timer::get_time(void) { struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec + 1e-6 * tv.tv_usec; } Eagle-2.4/src/Timer.hpp000066400000000000000000000017611321437612200147620ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef TIMER_HPP #define TIMER_HPP class Timer { private: double prevtime, curtime; public: static unsigned long long rdtsc(void); Timer(void); double update_time(void); double get_time(void); }; #endif Eagle-2.4/src/Types.hpp000066400000000000000000000017521321437612200150060ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef TYPES_HPP #define TYPES_HPP typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long long uint64; typedef long long int64; struct uint64_masks { uint64 is0, is2, is9; }; #endif Eagle-2.4/src/Version.hpp000066400000000000000000000016431321437612200153260ustar00rootroot00000000000000/* This file is part of the Eagle haplotype phasing software package developed by Po-Ru Loh. Copyright (C) 2015-2016 Harvard University. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef VERSION_HPP #define VERSION_HPP const char EAGLE_VERSION[] = "2.4"; const char EAGLE_VERSION_DATE[] = "December 13, 2017"; #endif Eagle-2.4/tables/000077500000000000000000000000001321437612200136475ustar00rootroot00000000000000Eagle-2.4/tables/README.txt000066400000000000000000000003121321437612200153410ustar00rootroot00000000000000NOTE: This directory contains only a small piece of a genetic map to run the provided example. Full genetic maps can be downloaded at: http://data.broadinstitute.org/alkesgroup/Eagle/downloads/tables/ Eagle-2.4/tables/genetic_map_hg19_example.txt.gz000066400000000000000000025726251321437612200216700ustar00rootroot00000000000000,Wtˎ&˒7SP~R ZzjPOH[n/vާVane_?O?__/RH=6-YgZ_Qy4W.}\j]d΋ڥie R}ؾ՞C[OkZ>~@g[XsuAkyR]os[Ki<ɱ=gIǶ]f;ϵL_Ѹ#W i}χ3;vB}Laؒ&Vfu6^wn_-a{z=Gv#<@{QU_0[)V~a[jm mmKe6`g)j`b9Ys]M$a^{:YH߶yڤ>ŝuuMܶnUE{1B6nh^elۍ]/Ԯj95۫lp۴6sn{oA!`]K˖YBcegrq?|K$}f}i`~k Xr4k[X}ҷf|MZAmQ퇿2oZ?A>MGf 8A"}/)}H,6}KS˰uBe?ԲTvޫ|uÐx\^Y:#7CKOc*flWjۼH3' ]>[C2}/uؾޗ6EȽ훵8~ݬjU.]zf{ ž@Z=[nBڼ]{1"m4(i+H3,vw+fR m3@]g;J);Ҟ}پ>ڲO|(uE{6+b1_ڧjg9${`mq!mڷXF;RDG5QJtרT:VEoȾb&;zjc ik HiǶ UҐ۞,ĶHU!3!9J*cavq}SÌѹYՑd?h2 ikGfIXȃ\p}O~hlL'>FC(H]Ǻ үWgc 9ab=Ҳͺ!zvۋf#{QzjXO lM;8XSY 5˴dz[%5Ɗ\YެY2S_ }bؒnkmGt籯OxMZL[H'+vLRZ>r ڃGIvlǫl 1j^#]=wW#mOa[ihiq^n;F_C3 za4^5!{ JeV׻{-P3p Wb]ocmUNM!%};fmgIU3(f v263ںH;d嵘UdhOT_&- kH;80|Humoy&v8rBQm.6q70^B#' ٪o/<{6tM{1$Y쥎Ueb i/Yc@dqj/!l}lq=Gţ!rݓX `f*.٧Y|S{I4Oif6q.d:7k۫1gf!"Hszt P 5se殘XFyh6о1Kf{iz!lYg'ް}ΫH3+vr4/"AHdX6Btrg{,ߧ#s ,Xw'+n|զ/Ҷîk;&͋4D>AmhsRbz;. @a7nk6RsV"n%liTp̐\}˾vX5TbɶEi+hgfSp2>~ݎ-hfE}j*Շ2foy%c+/-/ƃB3z q]4Q[ɐ8f5l+EDߢ)d%Iٟ5v[mg4i%7gLqY"26}8/RV--g5k.m$/#K:ĻH/,`N"yTd/K+.Y/.S4b"epݖ2-4 - SU a>g*m>LOg+00ʊJΘOck15o"g+eZ0/.lV c; %ǔ?g_VV>™hā\rpUڻom78%uŮ`83AA̶ݗ9`S! *͑8sҶ#-e֯J+z(v?4N(1"IH=ސ7Is)P*݁d_~dvʁ7XԀlBa쬱9 엏1nj_}сjتjY865 -oij/4G ~v4$yFQjd^$J0QOdg'Y* g|C͑d6b/NuCx`ʎv=Vd;Dai/}s;07BJMۨŷoX v#YIe[sZ>as͉&&y{~{;@dɎiF7SzA; 0IGp1B$OdHn^Q>aY+_ĬbEUv>n7eɷg]_rRܺv7pUB\q5dZ;Y4994iz>,<2<^$z^j~^!! ofvB΋ī䀍-GEUdsM͇pRlo[gOP8@]~@NyE`snCnt[8%\@|n~nƎG%E0B~.9`4/Fa>Bf"ʒ-92W۽h(DTS k{.BGR X)'(N -uvƏrUh hGGZP i_4{۳71vW p /f INHhfNG+OH"U%"ND BFӹ%fxaTsM;;H.Λ(#~@v#{E|2&%\GR`LMWD+$[sT.O- *$; (Mǯ[`R<rAX93' -uΚ@gd!\䔳gnvyt*|B3‰9~b@.z)vNw7O_6Lw\̑R egaP24)ߕ$lm`.ۆn҅ll;IǛu+8r[9Eʋ}'H%6MnGVKu;pCx~3:|_R {?}qf ,)@*fmAAzfory5%c.wSo_C@ múI'Ld3k sK2R:k>a$CIQ+:SKhKnY5LS ^6ٹ~5H,3Ð"uV \-C5 r[Iz:ݐs;47~䴖=g uAEl8Ś,+uT!TM?hx`pUn3_~nvrD;'ZU47[y~$1ҞeUEŋ,tJ,;HH#O$3QV8>]$;U98vݿt\N7 E+d'qUޑ eLg01i2э},Vl$ xiynp$,_[r*d6ʑ&ɣ47:% ۙ"Wej\P_!Kmt@69?f)uثM_R ]נ:T~Hgp c_$S>yY;_;Ǻ}Uj2+e|tI9⏑jIJl(/nȥnh>ȑcF%Q<0$bΡM3M';:ˮ8Ht ]wȗ|mZV 5y~"0|z'~kX 6ѡ1 j{BOw="-UhDJ@{Gb:@'T-?gWr6PQ!qUё YrkIA6%2* yRW8L"gW5 Gf+%"`lVC)I/՛77@ei$QrH*Pfz\JC^~ e4 Sx*8Hzl3OE**/prlGΩD C|CGRrC>Hp!6WJ-PR'YC&ᇶtT:6rN2V# xVA\I6MowVi`و3WZqVi9ҁ ǝcjI+މea͘'>Jm7te${ WJz-6|1hKzEC &\ǵ;'B6@Ϋ%Qr%S ;hnk}H/8\ŃWB@AD%$PHKtFN }C̋J6f0 Jg\"3 1(`&ʽ?TDljQ-\Ym&)&Bv[pn;AF:&"fxwH j:t!fyst1&Z3ui-}mhIR3.NWeQŷ2=r!mU$ZD\nP ]Atˮ!<@Ur46p!y"DA>I[S lm!k*G ExCE'KD.ڪtLdIR1i j}ȠewѶ^즁#XRbímIxGMo;Np bN{ً5ҿ և(uHD-J92>@@27o#VX˹$U/r*jAvN*jN`ЀeJH /L>"Շt)A$(JI.k/P{I#i3ǑЯAL#R&7mw`;$_-G;Ζ \4P<.WENOoꪓ=s:Q}Uv!8c -:M΢J8$AAҝ+^,fDoK7"XRЄyJ+/R] IrG 3G.*e3p>AȀWȶTɈ;~gյF)}fG6iB'B#?lq1:,Hr1"MȬg8prX]zI|$yJ;ϛ5A$_OƄ) Ia!5 #)oEɞPYAJ"mr;M?KjW/%2[B9H˯ _dȊ w(6\$M.IIɐg#?>P,az;ds=)vqj{ّBESȅ(j?C_s" GN(J!&V I/].ql@㕏l $8=+˜N%I,!#up$} SB!3]48Hbņ={\% M<dk]kY(o2!mF]RRFHݿEMdrO͑XT>Ӥ!xH@؎G.g$a]9%~Ğ͢VYXQ #nn~ei\bx{`nZ`H=n7w'CY(` 3f_so:9љxvblMHE.M |l'DOHw`|ȽHw@`87I( JWf< ɩGȮk vGpE܏@QSڔ_Z I|{MOq @]Ɂ̶oy^uCZ`cFrt ~-X9%D(1GX,4WzƢJ "HQKIVz%YItJO O"M6xhzѽ=(M;NڑCÈޏC>!%TCx d(;*)>` dP[KDV"A4nvUvqi&.U:J[Ƨ-OzXjrWf?ݥНSſ0eK(g3"\sAH>x bga>l7?qu˹O*FH ːhQڇ=٠OH*Bډpg\WS B2 Cv 'ovN[ERq/3497[_EyBui,DL2#Q˃){ҭ#"m(`ibr;-Zr ̗Z^mR3~3ưȫ+HX >\PMF3ɄETY ebk@*\!s?4V4^$9)%`u:wp(|Gk>'t`X.ZÀA@n֖EV1z:s$}\* NtqO"\GHoh4Z]䘡rܪӦ3AXlHfGhֹ`K<sF#L^;@"vD96gd5 ,)ݪ *.Hcj 0HcwfCU[' RyIS#]I@FB/TDׯ验~l#$UQ t< 눊FbѺgm}AB~";Uѱ/5l \Qp'@TW#Zot2P>À$DHȉ㳍H(:kV-Br zktMJM1J"$V };p$K90`PsM C!W\B@q_FW I bT\$ZA"["#$$( 9H2LHA_g|#㼺8x7fr *2REi$C̗"3VU?O=&0;yVeDA@@EV7σ/$ѓ,4΋$=._#I@܅" Uesk:*Цqqul5Dʈ H poJ7_YEv~KSQ<ƇYctuW?it,* 5ݗUE@m\J5$FTlA$nJdi;yKԈ )-yPTBNt֛Ke ܃%OC ΢O"9/@o(Pqf$-5&œJ[?PtɡS*BU-F'€AY6^I" = M2Q?!P~A;%%~;Y A 7zUt J` 2qูFT3{ E dkqM}[JU't;XWaF$:ل:vԗA[P38 Fwŭp(/;HJH#(ךxUn(eQ0;A8ʞ&˪[|Ix ru!Ȗ).=}*NDvC{9uRp SWdz6~S$), '8zB\C}G~_+yqP;o%$is (U_B_ :tzsU8,CB5 e5N 5+V]; k,Q28J!A$'DK%vX=$82 fUhj GMiRH: RVuS@r/CH4⫇oy fV;7B?+I6Y0xIqv| RЇÔ7P5 8nZfoڻ*BDFG'WT'VaўvOLHXXgV2IYZSIWǯ#VNRoXćg؛y%\DS #yeM}>~1Ɯ9p M}dJ6\ E$'$ͷH5@Bh.>42U=~ɮk l+3И>⫉OE2إR=1 2jש#5k)?H|?^2v'#b Q"wFS:zECp&4}b~eo6~5H_Sݠf'L]ܧf*Kל^\;DƆ&?2 \:', 81$a4[`Ztc4*njQ_P"kK-0=5 YBtƣ K5ׄ dY 닙@3 Sbvo-Ŋ|%@v$m]L75>SE3B,L|FK&&7q8a7 rL]EIEAVsdO>fj(j.&Āh,#I5xaMA8WMLFOb Cro$δX""Hrb#͐ALۓtPq R#ed+!zAZ9&oVIY׍>I:$1Yb!z ݐ=g^ɒhHL^VFgPi_ɤObjQ'd3P:[c`piLTp$lp!?緈g5#L*DA@Q,ɪ2ݻMCJ#}rE!Q֐YdLZ$om:@>7 Cgo(4 D@ȶ|uAD(ߨ q@c*hɑE 3H+pm益-9%LLo>|T冄uvCۆPU׷xKKy$*@u7 5`D4?[\KR"|B(}7G @RvI ^#qN&fo;Ć,hzBrp B i(uŃ|n=9EFvQ6R8? 'E6I?bj ɤH=v_K>oY,Oil zѼ-WMG]oh9"F.#jQh p]c4QPRvr"q'{Rbjz AV c-FHJEG3RTqpfpmKF6F` Dޑ8+>O!"8rX2@3Y"iHIdc?ޡk"ބCOr L. 1EwD_Zh$]M[Apr۩AJ[ACF\NxX@Q ByOTQgEghJoS<蔜]#DŽ,&9ENndc'")$t*$.2$\G"nIT͹Xk?T``qPFSZděra"Y Q}Q7Od h_70J(-đ$(h`/qch$ӳ 䀄 TXNno<}Pulu ]:0& #38z8H*1,C*mDd^Mok2DJ9QQE9M75N1ǟHR WXlJTAK?ȌM;ڣ=nYH|>UG$ GeiѯrѱU"LeG}7r0W}OVʪOS࿎ *ATTܪ8jq@Ӌq&?(J@edcg H H8B#n>e^kjnAҖ ?qx{ ذ&q^uپ_4*:=W,|ssF#ACJQ9v$Qbi>cf ! :[j5B& }L y\]+KJǑXη. wH-ҺPAFd,i]鿍 DՋMo fY@8e6}bAqSĵP~P !5rw'[8nO ILәz9+6( BgQx_X_oȚR}VkO=Bz}pLp>݈|,/' 7E, {z#DH|: OefLQ*ܑxj] S#}Gjr1B.BJ~^ŀkݵQ9;$]ш&1Vw~d[O|'Q3gFr@I6vjt {wӿ6'(07 N^<4A>DoA Qœt9Y$dcytL8=[ܲm>skw>XtTX;1û?@iӈwP4݀I - (]<@'(^L")JWRDžk,ϗl\ȸihXUͨJM ޥd=€rEiG"BF5}c:?(5gr?NQãH U]!1Y{pӪ yx1b {CgM0a ohͣ(>v1":EnGjC  ؋ Jh:Yt N Հڇ/;}:C<*8YEHI;_FǑb'udd"kQtYҕW09TshsMO}$/w t=BBUw9FؕI)щL RSL .U0Z8FBO1plsBr$~_8e)2B+^0$fmx F]D4ztKB4W=I$@D4'3YRD Kq5*:=Kn_=13c:K:ޤGڱ9qPSN7XSh9IPTəSDU{J#:uCW'GV=$XrOkz˄$`^>D @riEy G:=Cak$PM$ $g>H r#f}FVL?OTP#r 3d0A5}JJFge:@tddU_A* U9Ż +gged+#IaXt:RӺf;83cN͐; dRb@VUwawb(?t1iO@m]P^i߇]LNFLeP{/2;tΐ[cBSBG.#e!ؕ"|@Mܷޡ^).#ס# lv5fAVi:Ψ%b%J269tԮND'}`B)py&'$*9H䋦*^OFB#H>u?~u -CzuKlѾH>(j0C{&!H$Hضأ"sV_E{kMWϣ4'"S%lzoAHԐ^$eV WGot 9rrx{C@%`:=۬o WFGʱEa E0ϯS"|l]HQj񦅔piI,sMzH %}^$*%ʀr$]ofU.V$ ibnA br3:a6}[n|q(D: )P5ŏíuH& u-= Y>N52`KR{J4ϪV?:E =F-_zܔ@܅!t %}FZ`u:X0ЄTvi0{Ȃ MNlU&āf)rFɐ.#e%+Ig$9Od {wd)Rf쐬}W E$GtY/ħH@b}']IÖ] ]A ~3ܒpT58f\A Ayzd N-~8՜r[0(VaACTV9$\"s9꽦ĭJ]D wKN{vI}V"Yj!90#69(Ķ'+E4r{rg/r^ȥ$7EA2ϸH;YDFH yUb%4X/3rvCl1I0ב疔:q2`DN3j@!r\ّ.ŷ\rt_O:I7\J!i|^f9@V@j2Kd,C+n55,ʑח_V8^|ABAS*K>)tӼ؃dzVIaҥ"X&E!Cv0j 9]6N?a>"{ ;CfBDL H`J{*8H2tGg[1 nvd(/jm@jEWrCOu~H0KqGJ&@2 lITa897${cAh(Rt1nTƏDkuۘo*$d1$?=} g 1)F"V8!դG~0!ɴ=K$Jؑ9{ ͳ֍% !zLahK"(ּ:^H%HKOu8]R]z#dRY5Qf!I=UiE`S@䍚 uf.B=N/t-կȜXVr ]b7פ9NL%|Wnh II !IHk^uTaz %UtMX]@Ua@8}*1p .WϸC"bHY%5 ƙ5v"g@Fn( ;cɽsuG!I-5De2䶺fi>y?DRGZ9ɩpf$Lrρ劲$6* ''}ȓ`6o֕$**(ۭ#p":Ӗ#٥Hj\v>2G+aH8ӎ4OQHXjP#m9?ȥ(\$ݎ$7k%$YőR;H&M=6qNg)ofE++.I0K-؝bԁ: mqkۭs!rK}Ebkܘ_s<FXD =N/XUTiZБ㸂QJ il @iD/SSȚTq|3#55@a5aMώGgg$1ڿJl='V/gl=~9p猕x>\A' !cI ":[㿘(88R7 Q@6j; /`4Fu q~SG@'YܠT6];r0_vEBJYb;2zr֩׏_;ըw \0zډ>2MF \duN>T`x*C£Ր!sBdӏ4gVِS~vrRsЧP &w U^0#~V~Hا%v1^jV:@fD6ܻ<)'bs5c5/ _j13MdN1频IKtJSP B^UdȠ0и$U>vW!В!:tߺ9L>L1e_%f1fQK:.,<$k@ o&!rD'E$'O$-&;#tBkgGEc?WkG}2WcVpiHx_|@ [P9/bh*7Xqg/ѫSD<z\u2Lgqti#IZ_[Lju$^@R0ɯQ>[/qMYa > \^@Ĕxq?P#Od *p$zpxh<a1=5 s#&}7Κ} $W9y("Z=}P;ɛH.P3h9[,Af 1>HXrr6 ;~$绠Ӕp{ e!]x}V=i@=U&~ct$xSC`|p$bp%~TZe_$%F3w{ֿ8f;lqJ L4ZcDw&QR#{ gs$c{ G/.~\ IՆ5_ ^ F8oFɑN!ЉJ} Ѥ ڢM_2hHf/L#T5[V%8D푩ȆhKp>C㎎Ҭo5"x^l4X"יKzgEɪ7T=}j' p*Hg5%$POxb|K^7:I % C Aoǻ\Iy'Gc+pe8+_=~D_ůKϷkGs ^#)x=DBVBv8KyrN!#*~I8rjBp?9G<,<¤a>ّ4IyEH1B $BJn45&pts!\pЛ~X·.?q(lt}Lu\ac8@HKJ V 4MspOzO qv$b.t4l ISHllm6{W)OxN=_ 89p )ČwE\FjL!ݢ4)rP*v,-awI0:ʾ-*,UYّ"r<^q ^l%dy0_N.MOJ=v& lY{V$v\rztr@K*Š k  R\s;wxKFqB"5qID,|K[eL8 `|i>Zѱώ$+6FP_R;Gܾ1/!@1k#f(Ox9cGXp|GZc*UU7 .93gTP!$@'GQ9RQ . uI+^F~̣=\'ou  r\sfZT2Szu8n7T)*[)%Ԧ9z}4Rq roﻄG"Ѵour;I%^"%Gő[7@F֧la\9h)ׯن$4=VCbP=y7<.Ҏ5Gpӆ>b0Ü$(VlpD̜8-qIR"F mmd r$#`93cǣ#O6)$hjmIKd煶uL9?#%}+r_@FR7i@R7@WhgNdV9?.1d0V.w 24ELG$I{6$a@^*Q+`_ K薩?ko$\ߓKKOY /Ҿ'g!#o}z kfTFCqN1 I23$e+1&'CH"Vz@2$yqBuf=B64$zWq*L l8H"T3Ҭy^N z 1T[98, y_iӃgI1[QɏG 2ZLA{q4~UȒԏKI)]u%Hxjx_3_^biOiәȆ.J%!vR [H [q+up/uTņt+H bE)8Gnd%|rb=G2h:\i.Ag~7L]N$e@yqIXBd8KyIDG!ڲzhkTVTOc/"RX"$:o- l #h|͌EfH`2ȷ$jfhbzDRF Q[\fKѯӢOjA/Wmvd}AGC";eE OPJ' uU%Al͍ʌ߶Er RO6EzZYR(%QdPp4Nw0o 5Ix*7O_wJ2uW91CpgͨCjҝuª5((&j2 @^ RZմO)ʑP-F'ʜXaFĺ#8ydG482߃*킻]I?"XȬwzd29Vi{Ϫ*wd#t H(4]{F85ltCa?Tą-h7JCW|x{0Eȓy[Rt*[CkqERd-OtAN+޾C3۶>FF1hvIߟ]2!W\鲜"v_$8HϑmD0Q5NqfTva&DH~~Fj?C ]D R J5BSC! ؋dp{8%5=B֦)(GLoRsk=?^{&(Xyʜ丢WZTIPuARʃptCњ4+-IY)AI.rj~ m]0>6߯Rפ'٘xD1ĩ:bR4{'rI qőYƬ$j 3μ`tiX$hUuRrLy!+Є9 %~d\K#̡TN.,=Y-Z:QZzXgsmUz~)h]$j]3;)@_$gh[f WYPLlM^r*u!U>MUldV2HёcP\uލe"6JՌ$c(xUP#2>ЀO~I7Y4&5_$v#d0g [rͪ wa~q/^i:nࠈ2t$s[֖@J{Ł*-q%F۱4ZoXDt܋0[I<}`A"'URsbBFڬ,v9tē6 r#@T {ё=9G_$j5 LADү#Ȍσ'q5j~}B.);G`TfN] 5w~G &cNcP+O15 iw1L߬F3ַdbQv$@ME"ª"$O0n& W;i[qIy}FHy!]x:5lRޯ[~X0d*FO:4{^ >2ƆkT9GJO=zHPD)V1;I@E(7f>]eŽJN9\>5 hR57Pڵ;(]$ъvAF|2Ѫ\f]Ӣz$E ׿94&UHHP@(o1ʑA*I5K!ޖY叮xcBqwXNt;;HJCIK|!]MIdXNl.u2A󝎉1(][>s KHP{vJU ( =L/$-QX}E֛;L _Qi2d`A쌦A%^y,[&8=$vSЦXj]3"{4JИQPub(xNCD ¶v8Cx5'$V\|ʟHM5=k y'DC: љYR=Д[pғ2R؏FA}K ;`,rl!m1ټ M;Hhe:H)ܝ6-FEWG}, a}2A!I Iuj?R WEe* $%Sҩ CETlY<*j."nx4p}h]YݑW{~$gsO ]i9>`$u}fqvE3Ke2-ъ fj}"LhF~]32( 'c2-rwxCCgA |08{n*E>z5&").(xU}bѢ+*?HICH G܄Bq[pxsb) ȸ^ۃn(91l=BHwur]_YmLޗ?S(a :yNC= 5 :ڝ 30X}&%K}2 ޔ蕹n ހVg29ut9`"7$yc4DxvߺBے&ߣ^Aσ1E}JH?bi =oس:Psqصwi¯fՒ*t3bC5]2*fOG1p|[X& Ӊajs#U囈@R=el!) qaE*f7@Tu b#Zh3;N"L-^.܍zKj KCyiІ]yL[sL T2cP!o2k~' 32-^Q{d,f3|Z.]^gnʍ׶Ĩ=j1rرsIH&>+H||R⌻Mx-Y-$M*vG$ CtXd/5Px&-6 >=B%qp&2ù3A~#}@!`.hܱ2* TE3CcNP-k 2fM5.Y]k>J( ֜/s.#S ``و qA$ 75xn<Kd8q+0yRH>gHH ypК!d֙EV|QBn0hQR^psmthq \}+'歐C5Hia:o1Mt+ 2CZ]ܹF2v 4 P{I1Mȭ:g nqM80v2POGT[RZEX UE:+u*$a.-U0r 7P9 l4P{ H0( 4:4uA!xяFR]ʯP,͋Ցċ혮ܒQ'5B?JoYlYW?aq#!AH8"#`@&"/6K> ghCB"E >\s>Bo" f.U7!JGwY%DEȞgl)~&7 '\v#ѦCzF`@‘w{=rbT\8o^4a!BG*6 $WJ9vop&ϮB`\)۸SQS*8HP5|?>\9FEoK?"^Y9@*~/#JtvCyCio\ЍDm_:CU.c>ٟOǍt`{؞ OABFuʈX1@/XpDOUܙcz4Е?BqH_ͻShHp>eYt) I(Oxҽ=JmFNɀH򍴶w͢# 'v+lDaUM)Q W!:Tfw15Ku_Եo!tw%Zw|Zn l/*̧HIl9#it;>6q!25i]*k⡺x;j9қ4Cqbߑפڛ~"HR4 `) N 6o(l[8w#TCS%E6 %-W=xtQP]lXq `T˱XLr(5Mjq*1asw(!hBݴD+"J(|O46cXE|I 6}V& X;m?_psR$S7G\F YzcwȂ3IQ֏x7LJIRH\Ȏri7mAӫRaH ^Klx2őCHx"*Bތ3/?d#cH 5/r@9BH"mM; Eל=rm_fG_1B`0pD#"n]=J_I\̀^zҡ$4!bƔ[U1l!MnVj#MhfX!:?:() s\|Dk,J9/At]пT`F-oс|sUV,^pa<8J"7~UկMC+4FҨg!V\*ڢq74p)4$w??5@-OU\ ƹ݉P|?Aa&l7%8 TeBJJ;Ȝm)LyyA*fڥH.F.bq#[6ɸg,DD5#;ĵ!UgP!>lXk.$\H(][v3 SeBNFwR\~ۄI8氤IiAPMf\&N;z \o&7]?Հ$(m(J P0t"̥'b(3!](M .i[@Io.VOT]S,hIBMPQlD*\5CnT $9HL%~}5ٳM:OӼ>m%q8d:8KtQ %@Wr%RvI?Vj28籯׼ŇE S ʃD_D $bHpZ"?5i+GAe8IHSA/LdnAɺ\Lw:Y .eFr+@rџEE/i w~ /GoC 84(Ӌ,Cd Cq\XnPSzUnu*OGYAb&83 !P k:5(a_Kh@_y. ZHL2q$3" 3?s2$Fr%'Uwgn[:6IG7lŪ) U.uu.[I[Tc,q{:'$QFA T!Jix}5"yci.ijK@niy^N)hQːH뎃Դ"ħH; n#iR[ aJ63iDGEHߎAJ c ':c11~d9Ķxr죎(E2Rv$9u$C^ _$%]^Pm}iU tDdɺ 7M?+BAH xstj2)_jΧuM&C){hq (P ɀ)CMia&lDvlEVRxDUJKd!I V\#H[8MT,5{r&Gu܋*$[RK)^n+R\%ÜI^ˏkґ*%EK"^|ou,DrAAÑI5ڃo8E љ'INB5S~%*)t*V6pm"Hj9Q;.`IU\ pS!䔊įf:IƏwoSÃN*!ȡ/ah}BBgׁm.GNÀGfd"<MYFGQiXvdSSHWRM5Ց nB7ǮqP%\h)ҾH]&N-+2e눴R:(*@Gsnչ' t+2tJA2 \^@׭@b I~FHr]M%5M"$H5rg 2\*Hq:%{[U7:⚈P4 QĆ@C' ml 7 n\YūRt,Y@b wB̒ߧ JC:Rzl$tб ])ܚD(HX 8CB >I a)BHk޻THvT}L~A>UEP@p.Q?J fڊKDGrdiۮ~49;jLkl@Z`304xHoGʡ^OZDxbuYfvb$G) i((d%7hһ"\b"F%̼[%ܑ5 \jsy\%㛍\rIgIOg[we!}srAVMWrҤM$ AF? "bp{H~hdC[r/Ies(qtI(t$( ;ok(!ɨp}PE-Iu2_9Iiԑ<9 i@~E8B9Y*sH{HB{ \Z&|$D+FN46|u~6sۅ{_bL'Қf΋%^e.R5eãv$S B$}`8RqV"ɗ{ZѨA?0`sMBw9463X+LHRnK a9qEX^%OCdI9%,iyWXWnj%5_%Qgw$cxfoo32 .sCȕ+3!$=58[2P,r) ]$ ӄ>8P{PHSO74qxH_yT|$JXoʀGѠDI{(oB$$/ahҺH\!hir:@gF׷8ZDg)T r|bB"mپ%%J0 9Q"Nֲ㪈@obO,/j@֦vak_萻riE^a$ 6%JZdUNP0BgO;K6)F"˩rr?~Iډ+XArI&5uiö5·'w#`d):CxXn&pd%)#&E|GbH]L_JvbR䢏n莄D7MO۷_etB]Rj>l G=MH^%hCoA;b;[ƱJ$E,)]{IH7]DK#ɀB 2f!$Q=Hgѥq#QdSs59$qɡlȹ?R#b2ˑ/C:7덏iI uH ׺)94(1I]HF H橔 qn}K,[zJtM!1>4 .R_#~ j!W_zKZKHaXa$m~w&$`&@:|fRDBn/E.mp\Y~,VUC‹G1R`]^qKpOt'zY9:d_W&Ante?I:BJM&nѽL^7MH7A6ߏk@< DZt]!/r$#-OȦIwב[A;:dTKrOH*"D_f6{}hyŌ$o^3 媛*,͋ K[>uSڴ;ikKRݝ|'"1hѥ I` |[9/ lq kFnRٻŏ+ =b{H#cz?!1BdP~ kR<-Wd6iqGe7%JGG}(3߰e? c~L~DvV-}NH-ty B$ώI)*R <2pt3cA$g~R +)CdEG$Y\ WW$* Sq3zmf~V$/v:n/Hzϸ&cLD dKuS&[zGˆugxt5dU[ʖΡmJGJ)T}~MuxlcU (e;] DȪ5NVx7i 1Ut8%K6np"3v\`5q`# C@JO1~d`?Kh##By*~4kA=5cs?Hŏ\=|ziaiI"OόOOIlGb' $@\@ TɩF{%Oiy`iIYq"ͪ?n2&0j:vOL |/ 1^p$j 㴥0h|G H$[HxqC N">?"E! 5q? ; .2^jH$Ϟ> U5I ;Vz( )aq:J,ц䮄Qr,3YpZ[IJLǩJ^" q,ѹ#àp1ppTEtћ# :Ζ_)Ygi>|#߆d˜Ø"|Y3 nG$H@vDH4 /Dҡ翌 l~ I3y"ס_I>*|X tG/0 {䖥Ac6D"Tة\dZ41YRp.HFK2$գ5E #[rzK#vfY\ xlnDabrެ]e\9ߓ77p8BEjP9 }֫sR}.!]䙝A_A@@}|r`>N ]JDOU(n)%֋\iy&3ԗf}<)&j 'H7b& _ghM]ԑd7 bg)4 i&̚,I3M 1qG2-k!Bˤ =&D Dtpe!'Ҁp~?*͚: 4pXy H7ztj\":ʤ$0L ='ޕݿΔyrYŨ;Z&+fB M][ROA K}J"D~f2IYJ߾ M4_gKQSSw \Rʐ:yи0q*Ú[1a"YYu Ȇ_g.<=u|e 919ԗA6yҳb@ҥjU:k H2-IPXHb|ˆ@yh, \؋\Napus&C#Y{TU5h-)UɐI ]50 *k($,|ABC#yY#[!Cofd2GN{"9R'i}N;!g3F% Im 51P*NV`+&u"(G+=}_8M@H H96Fzd]R1$oRnI?>AP$M_ɬaOBT@*V_Dlq9~_Nh|_1ڕX$Ɍ~52qn /ŲH#@B?!Ḿ_G1JHSZ:ژ쇷=C.]맃rd(@O5)hW 91ВՑpwC* G2_ tU1 a[Cg3zR4.=JxC0xWpD(@j_-wu`}9!?[>$\ ^!;EDxR]9^NDߞ B  fjB9H8tו=HŚ0Psz!sm)g'S-׮=g dw: M[5LW< /z(Auːqܧ7c]udGdtuK /32ԔF:Y4V*GiՑC璮Oh_Q_o՗+AA"t$! y6?175L1*۳o29^|#\-:%ɥArfp58TKke=d"grjKhUZpo9O>Hjn ]Qdc Epw̔0#Ejr<8c.@ߢ֪H`,n1Jhc<,l$#Bϐ#7] u&C;&Try ʼn>i=)x$ <{ Uc /5Jvc?!Q|\H ^0$D)U @35"~.7:23 iK>đÙoS6QEnzɧ(W4>۸vJck,LgU!EkyAt>I|hS$x]NHhӮC[@e.;4`4A!A8oKՉ5y$P!&©f?P'GPܞD7@*;̩@ L|!tym:Y%t m< %wI !dyJN}U5U6IY 妋y ~o wDݔ7DvBF?->Cr11#N*xjAjdDҊƶ:f_(*y@ngaFlƀa0] -AtTs$y< ʝLk/ECN 5Ñ69M5 &$\(|'nEU.fTq2Y' !H$e.\n3E1Lyм~F*_NWS$qMoJJ?-OH=ČqI3(mM7DC3.Ñ14:~!nV0 ynQl>iv( .s8Rn6Qd|KX9G?ޙ#=nR Ѭ.۽$UsT.wh5 5?tc鷯?J\ p?H 3&mo q!}RnUcrN2^%OפOxFP $>NRp;g`4f& Hup >qH$IkDCh$\>KyDU" |]$ZK%g%Ȫ-'lT_Nul,1s{L}2֑sԌqsu"zS?=a/U{iQ}Gb/wxyRU, NEf}"һ88!Ô2C2Ӧ~](&- DX}*鑴\$fƼ@$5y"HO }Mƣ[|r gsa$pd>}CSA!9>"I{W K?!=ʽM Y$SA[ocev} z'Z'j;qI)d}C}g|rSgn?_PHJhƎ!P)4#zd*ИK|o$JIJ333 9ב.y +Pj'䧜Ǟƅ @DkAf]Lz./#<~pK]-|U\S <<ir}B}zo\2rCz{H #ݗ?DFa0Y[nFX [DDK\>$ oUz /O$_:Z IIoXdD_ H0\ [7\8Χ[N|>WIk`t3GRޟe3R>C OQo.}1,O~gE$p $Bnz U5 }\n ԋdDU"W>!-}2]N 0߄zk>VEis`јﴄr -^% U6yI?I@G`I(}"rɨ/7uA# ZDwZ pۣ"b5St/˙;iPqkzG|ֳzf^Ց2e8uqdY sa 6ע|ϻf#c1'\g?^dLTG&+5P5 ,뫄Fsiyė  8|B2C7P{FQL1YACLiJ0m2G,+rQ<sSXwݧYV3NeXEp팤})@*BRv@)S7} th/\v'?F8ʹ&"ؠ~+n E>qDԖ'6 Sq㠎$bhd.B!`u'٘v 0^ CbQ 칅Ƞ3{eG\8XZh(а4IQޫfUU8I+g8XUC pڶg Asp$bǢ2 kѫQ/r[xfT9:c UHo(`oפ%_1)D;FQ+:NBt$ΈJ9(V¹$gApHlp~; HbJx1l᪢0-&:awOP}MgI3}`?!Q3I-_ gANTowz^' :d{B>ȍy^!S&IiP ,KB'XbQ. 5BM$6$d携lQkln;hYZLp6I4v`(^>~ /2؎+rҲ:k2z[ ]!>^G˟HwP R"o/r ʗPS9L>B{xo~_e':!aUHGt{H^q^3!B HO*4h(iTyh~\3s>Mq^S.mey]9RA"EZ?08. H;D IWB25G7Kk|DM/aVBN8 Izq̷|׫H%%edC/7rfr嚴9Д}~bG{U/Aq38h6ɽ\}B{d]nBxqC0}&M _0d+ rٞwrjG$O} I$ ^xF;/[wH [M{ e_&*S"ByL_ dOF\d&D2-l~ dz"K&@>- )'yh̎[I4 V"mm?FHE1ى-$=Wy!'{qm"?#;}"B\Co2^R*@&{a7ŧc{o|8Ahֵbw y4v*8ImG$.=8pvxS/n3RQokɷ沕@U ; 5W7n~<uy>#x*HxO/(y'!~|@cR>,ϒaZ9Jb@uTvsDP&@vJ6Xءkߛt>"Gm :]}!T A0j%_dD^ɖ}D>}d #'Z]1G$]^s^yrM3A'?HְMs_)#(y Tge֙P9m\_<s|oBN}\ 2g'H )H@x| Y"M0D\Lƥw=4^}ܾ(ks[cǶdkG| &?6R -^‘TyNoNBGYH+l>?zE @9 rt:M7N'-G[ºm=O7Q;( 8)Pw]RK3gۍh.ufDs+Bg͈[$KIBWDrQ-̀H=E\:>"~drH_ CI4c|[7ΗV/rB=@?d$5򐒀:P#sw]s$~.ڂmh+L #(A2'1,[9w2D5XݤQM6i>Sq- zy!A.Պ9To\#y>L=m05WR"v:ƚ( diF6,(Ոg蹭CT  dzZ ].+ؠ|H7 ;^5Ёe2 7oa H2%๤O>υ|N$4jF)IV B!OoF(Pm%=N9c1*Ů:=eH2ws*.<v<_MR݁$N&9(;YЙkaxhΪ\1G$E { JG⯔ԧK(~tՔ scip$|ѠGota)R6GNA"{\Q %"caCS lX`+3J3Dg@BLmdk5&11\>TzRr , _s)$Q⏡q|"D# 9H9]"5ITXNZ Hf-)"3M6U^YQ5 ]s[,@|%Bd=ӫTum<zgEߞֽ߁C("혏?NMt1aG#L.IүOezd~ d:kҥܥqBK(֮HWM  Z.jfJ;(Vgb6o2xh;r*JۼσS%p>)Q񾑍"i(&2)\Y>tT#bvl#].{(\D^79_mV>i^bcZ2R,l3sP\0q4~ :%,ezgrwIaN n3L;lU.9]z UU EoQNF x_=$%bR$22в{zy y@nfJ㏻"ﶠhvZb%;Kl939BndDcCy[-ո^A'm}'HPR O>i/ꦸb70!&p2rsMw'sn$c F 6{a[͉f'}R#=HF_k%sXĮ #i'uI"Y^$RvD#$^>yJT}CĞ3WW4͠(ʶljT6"Ŭ} ]󟩱ͳ='r"hmt|(Mirt ={5v4pCsH;Ƿ őxRdF'Gή&aEsBUQ>dnb)5o!!~A&6FОEhR&[a\>a@/j#0iZy&3j!HBNם yBBZI~դB PGqʘqP8HI2 H]ץFX|$=spkt{e/9ŧRA9Ԕ&sv@ǡԤN.`ȵlK dz'սHl\4;, 0xѡ(6Me^1Mnq{w{A~]^dIܮRD&rЋ5efq΅ώŤVj8A*3$x '͐;}Ʈ!}x2C\0{~u^C6$dq|iN b3UD{7&Tct B&֎նa"M1kXsM&ptأ]Ϯ*Sӏf*|8I>j5i/;E6]CG"PU#;]4ꃮ@6L> ieLjť)NrȎ} {Ʃ /Pr ml-ߌfc.XN%<7?CR-,6ƢpAܡqR3KG{O( Hz}ZvZrw/Ѫq֭rs9i$u*~sd/Ifh$YB# ᝎ7#(t7Cd5=DH^i1c:SH&\39^Ъ q-x5 GdA-FP%{ B:5:deaRYT9 8kVfJtdeίm C)1cx Lb^H YU!5,|@"ΧD= $ʢ^A!ῠCc!E =  C}̑PI| \y@&4$irBzjOen$U6-R-$'i{KQi>3zǁt"ĦJӷ c6!)߄[r3+\daōY,0+K " ֜R"H|c'"F}Hp@YF#A͐^zM S\LG^ Զ5s Ip ȃHGGϵH{65" 0s ːqg+s $%{K~" a *qzHGG\R*èZGoگ tDl`xVv'?QAr1dmRdlNb Yp4,jW&?1iLhMs9zCA1kEj !+J:)RMCBN%T\jyF5Ȃ$f%} dk-6S8fAۤ=־U]A"#U N\}>R`zFܤ(]U2,2d2'A}Z٤-$AWd2/y, D:XHY{MthB9r ׋D*RmEH:fDn; 5ފx )$@ҹͩ!Hƻd 渱1r:|t;M?9i᥈.;)?b8bH@O8bpT/>/B$bBh237H FԒpH$$?G*I\nF"'rW&Cz=R"ЁZ@yH xp$О́$h*C~uAD R#jAmH~1i}d~6y\SBW9H)S"|"'e7Jv,}-(⯒55dfV7kT QkLWgUG6_x/N}~qvP;fh1woG'h֡ƒ?yi"D RJJ$45'b[54 ӼcG"֊kNq;YR@1$Ӿ P35!`c?׌UB=Ӑ4bQ;_&njh3EO%`Ou36fVq~N]R'@Ǚ=F!$-4Cy!)9yYy2)#E.Hԁvv״Ƞ!s_GICΞH| f}vgy^<˥vcfNb~H:Z^hJۑ̸E"E4HICMY-Trz &+(QZηOSb`RER;C=d=_1!W\zoqQɰO6{Gt9*q0ϖOx_w4@pIga U\JudA3"4|Y֗#,l"t|CRBlN-rDv{hlE$eRo v0HT6gP6m 5a%_%8H~3kS_p$R-z$S7dhX K&CmB' b/if BDސ*N|oD=īXjpI 1/8& &!=P'=GRE]90fжn9H Ӝݏ6[ЁN,ݘTo|I@$ƞ[J^zHtuT@2&JȮ|YxGx=d"&ѹx|WdGBᩓ, ҐJ8@>ku`kTRzWU |&r5ͬϔ/vedS) zJScH DoL!)dwY{kN4s!i@/"ZJ$q}K 565rY|ÈjR(F3zgglI{3o\$ni%H( $ ƹF*~ 2$ROج>.~ǧ^^WG>C59@~O+_*ck"~(`.e&eLX|Ks KJoHt-P7:@e"KA"oGJKNf m}d)w| E!(UjasM:?Ԩ7M w5v/Ҍ<92pHՂ x$z;GNt5f"џ٘Cϑ c/A2$l6('3!!n,BIEN12Ǒ55BJg:hr{]IG< %0ed0BFr⊯%<(اόzt*.ӕ@hqpt"0&o{?IkĤ;/gz؆r~l0f%SZ""d?H C r`c Z$J444y&RK]$Qtq7@vfzrz:O3Yrj!aPpZSz UxSRPktGZ}T`E0vI&g+}rd +YkTX%7XW/]CbN5|ENn8$-"p`WѨkuć@ni9@|dru,gazD[" 5Ѥ2uGu$L"q$}̌ zv͙$_zLYTgEӯ|m:4cm -8_Ir75zz亘"1u/~R+8+$T\)~T|X@`wLz᫰*}2@ n.e' 664axgҳ !OWx |{!u<QNmri"ϯ/k@o$H_>8)U{LEg.ҠY\H K^E~M>\*,9h_ (s۬D&/:_KlJctj?ʒ ! Θd櫠 n#Ɲ v`VEJ*|;8|cΑu%9Z^I-$ƼŔj|(0`xyq BCj"M=váy8<-Vi{eOH *'&qhî>F%{_fXh3 W[; YmμIJqt Sm-̯۔ѶMSBi hZu$^ EƛFHCu>. Iz!KkI!\F')M$(WlIG2S{$:H^3ųLbc-骃Th]s'ͳD㮽riDvdY:q4>t6 E0.$>y0Ho盦qƇж $ΣD LieI%ed'GS 0aIHʲ͍xNGE[lu} =^Vp:cw^$AL6e,͛Oŭcz"i_yY-NA*@4JgIpT0 9"9J5]*Tdڈ%RU'ri\m լI bB؀]IHD8؞Rvu5 J s$7"݆  Yn>Lj5\\}8ch_ՇЩԟCCpc7ΰp, D#յ~GgEKϐQ/tjuhe9Bt~M+b: "O|ېMF>GB mui%6xUN\#$]UplS+S K.8J8z(WÞvpj,#O[zj\rQHNRB 9|&PԼMWt)B)Dր(m2|AH=#Lw"JD;i%G"$ߝmxE6d9b]n_+\eNC/Pv8A9kP@ō1(~PXR8ܘr`Y)4n}'s{@I;SohGy÷u"VxK66]zZh @*!yȫOqb@vo3hN1&%MӑR5IT36\%@@PP|kH|2 yT&G; |kG@ZR"Ym{)ٵ6%s$C4] 9Ӣ!v$9J mhr\HpD.c*WK;Vc49Mȓ,SlS% Iqէ&:<%N@d!4FfI^FYe@> d)w+!5X::'+y2s|H) ,(3俸 -~Mz(׫yܪԃ#Pƻ좊*6E1nGBFZ8)'u'-Zl:}/ [ hS3us\ID Uw# IN䣣.w[.HO^;aEp|%$ܭ6\X<+*qHNI9WѬiN4C((DjGF-Æ4\G/.!?=F^]o :"/D Ux(lծ@7O:TUZ7QDCҒ1~9R'{rWu-!2~uMz~13S^5<l$/qK|R n=cD^֚ $wι]ĘZ. DoJRg )&H>2A摪ras|ZدFR3ʷXUh r{mjt ЭNUyHGtr':!Itf7)m j e$EQBdg!7DչǗCqlvX-%Ha(.tHUʼn+J7VȮs sOM҆b0H<ĀbHEhivbqy #UUÆd]J3s`d?i-Kqun2'l͑N%GZdmu1j!/]9"6%l89^!ȬlMp/jR,N3Ejk=o IQ߳/ P'JR1Di-13ڌ⼰!tkک/:=A(:Q}g?n8 Ƌ5Luɯ[OH)BJ =:H>m hV~H$r5+ir#1M~G-AQگH̃CH(2{0~E{i";~<-6z"!iS k B+ɉ) Ab;j?pS>CISJCޫGB,f5wZ)W`*P^GV.EDYUH9h5Uy"Ud Ӹq^/KI}nPPD0 <2qJGIGߘ jmX17!{,߃4xPtw`~ز߰:$)?[KHb/RBszr)3p2_ |1A[u[V@h@oŸYQ#fV Ĺ4a-Z?N$]4ep9ь#BQ"H2 ."GL %`ՋLz| ɋ'Bn7 i+f!T9{'BFudPO>`8]A֐:jGeH$MKZ Ľ$NRD^Eeb32ytO!9:3YLHP0~ 4ݰQQT|t"43K۪o_$1ʠjqIԴYĶi5T9!)N =|S5&v"hro*9Ȏ{K\6:US82p\!1Tdh"+'$,d is )F{B"닒aQ퇊1:|.=> $b9Uf:sp#ұ\r$Y•,g;= ψ 0eHR'#Ĩˑ ؇-u!xa65=k&L#d:bʽR2ӦC4DKqcnIDKG]:Ri$zZ""QA2,ȹ6BDE~O;^i4A8oa|InHS YLHQ}"T|VGr85 OQ7;\(m1h 2B|97䚆٧(Yp:sf0$vȎ:DH136<_7%~!avK큼COQfy?h_aODb-`n.2tOfg`G(h'eVHǚkGXxEGV~Į k<dcߘ;@?dc_=Wȳػ(qhwK+UoHK܈I4$SIdPGZ<H| j%Fv3ydB<):.$oH<ɳ=W{@Q<1{{'CIЮ١/d&YT;M$Rk{}#-FiR"BZt<ב}oKG'o 'T%' ?z9}^9՚$8Mƾd r*h52C)x}W$Ti-l}ґ(U)z>7i]vddG|8!ݑ18{oGOxǂ(BؤED\fFׇVlLIx-k%z_+%Nb 17osw50H'vNEyw%/-$^\P$.ܓH[dH':fRBiu?M;ֻgU~㋝Di֚|xTvSoi:99}B *!-Y5 E\7Oα2Osu8 m tjBMtFIH=-"ߨ&f\ βW~j!LDga}|ƼH\@z"h9I*c|ߠF;NVйzhxɌUqAAy="?CPoUmϳ zKE6!Z{ʼn -?Eb4dLnݪTɦ_Ve|HA"FDOAIUlbp3|QVPk ǁE !1z6)(/ Y_AQ_$YK~DBR-[ŽCj]\jբȮ+hd}iBOEXGV(z4e_°=-!5!ÃyqambfH!'ecvCAM!ؖ@nM9"&̋:FA6b[ )&?M oE|Q@בw8)g\ʷNrH c# O~qx.qkCң4'sCn|ruQKxrylX!!:A Ɏ('⒓q}7T@f Rum2 !!F.}r; ɁkBaK0YID,oFZOТ4WYՍ%?\@ߐG$\ӣ @x ^e!qN;yI%D@Id;g@rt&Es:.7B-nlPӮuqA`aHˌkeHYb$ $arnPJ;%%9%̘x , 5~߆tɡ"a]梂L樕*J=tL4!(ݳacwN$x?bXNA)IH>?_+*ݎ 51xRG4sØEH||_Hqoka8E$QRUe6 9,.kԨLCz7 u˖a$*2#g_ J2]d*qjwZ \Jq;y$Bao >N40QݨI5ZOZtvBd ^Њd ;GR:<u*թݐ s~HoJtt0SBjvsG^x]fJP~GI!!)2}9LIѕSR]i6#+cD&R gOo#w!m: )HtIDv\|Aס/$/ɠQp"KzܼffYX¿IWVڡpzk"PCXYuP*0$z|"(v14$gՉd"B9Nc@`U4'MH)^ hčyG.pCH' CDPnbd֭v41a6XCG'<2#a ( ,vɘ-Dw4|FgKJOC_tӼZ ,I_Q]5($ބ"ykX*JIYWZQO ߠ ]k9b^=d{Cg&+\}e3HEc](4#t7Vo'ݣu_PL_{PʏT@2T"L?6鷄^:Pd#nf\KBԤuN4fcSR4o' YeRukܶ5Ͳ ѽw֢>/J'$}~ɬRm~|NFw@M'`m[4ufAG2DZR6EZdu -`'JZ L &Qvy :sy/7JѠ01ANZ8]%|>q0V; 0gO"Gc#ÎvfJd@rb[?qMZ9[<0 tD%Px,rV?jae^mk[L6҉b3eĭDbnYDΓt1#q>D* *jC/K|B=Ldoz H1dD>?/sXbOھF &dR}8 N&?$"c8agZ?(_J4#M$ΟUFQe]~H tЃxP܋rfSw&t=/zc<2~N-|/7.V/ΈEO?;uXpA'D\XX2X{'okZQ?$P82JB-}'rRw%ߑ$=HZMEki/8v3*_>,dv] jtD^ " !Ub?sE RDŽOYsAVfgS2E$1|okh-4(^#/$|!R46,Yt8* DY$<{Dw%{(QQ?]@_KN&EXbB"N E\%HjP'WIoBAZ5(yȡ2rD}\ZK.W j.jJTzYv %<"e5$"@iIcOC:Ҡ3٣!%_C'?bhbln vNH# eS3duDOrQ89p"[_-@J}e! ҋW39t:" D["4aBX>;IxWށ܍s눲;[Y6Y', {=J6p8'#+OnZ>6۠"%U$pLW)B{^$4$RZNy:~eI PFY,Xm[=$)"&jW]R2 #rW~$FM_!$&Jqiu $Z%dʦ׉P0M0Rv$‘5E5\_-u,G`J>?Im·pf=Idsog!ÇK8J WJdlɚk֡m+U4&2՗ŋ pSrğ"mH)zCc!F@HDhf)QgΒ(-(lJjοD|)Sȅ ̗Hl|#1F*i R3CE!g-8ɰɐE)Tߐ/} C1 $&$O !sh#r$vv>K:ģHf1fr]tJ$I5S?R>9dG\gkޑ~V'owQ’ijH0[I1Ðo$Njr:]1DRC9t&p v܈ftEKHVk"y?rq@gI]~a]SdOy|PO#{ Y:8RߺtT{~CW$[z|h (ē,ծ8 I_8ί2> BE?U(8I*rx479q<6e "X%m೥I'Tt[ ,kH}J(oǚ%u H2gǎ%Zk+vv>Itd9HJDHDR]#{%˖.i"km8ovG*b O\[$S$!~yi;#̟b,L=- N G5BJ߫d$ P^r4>5$OMRy:#%-K@r!Oc.Tn0^%f:ӶC CZ Kk $rY3+7<}^F";+O)P;vqŐ2hc7Z%V osD.uui쯅7E'i5lU82]cW!o'eDmcNy u}v.i"OUs8KRYX@;d`EH,ǒ!Ѿcc'Z.յ9ݞ* gJQn:l_GBxXrVʥX@tf\ɺIm>S.A¶M| 7A;K(/&G593a:[r?7V~<&B.XO:3|j&Ƿ $(~x]QUE@èԩ}?Fk2R.$w}*Ū( K'J"d餚fx"2il9_GRr1ٍO"qؐR .29"vM8oIMO0ޞ4rZo?H|b?\kǒ`uK;+Dm>~r@Nu! %ۆt#Ih}WrO6" ߑ4d{ݢ !O| %k@{hg1^0S[ȍ|ul0_ d 90u#*o : rχtA璫:X+yoW#/]khȊvk.KRJ\ E'G/wq$%p-0SBf[wMdC"p5IZ%;;$ޫ~7&>\"?6c= 4EWՇ|;Sny=:2 y +baNp WKa.)["k!&]F>"4ahR_AgDSM k i/H gDZ:!<  (& ?PQE;$^͑HZV(7^;ޯDޝ?~#'Ry 7y9; .C'U?h@"R#cIe2Iƫ|vK~Ab_>'.pr"Ii_9Dx /ZO$*|"b"wdpI #Sr' h\Xž/ɨ7ǿ5-ێԋd_Wk'/XF ]dtlDc!9|P R==q rP枙ϾI4Dz_w\dIb~P' @?pB s&X$'IW$H#χܿyw{{/_ [*W$M;k{ |SR"毿@ӶvlKK{р-A^ΑH=yLXz9Ġ&9Oͼ7$|~Hu΃>| sa!M*D%v"u﬿ 1\=8j}(8r"S\L^㋙Y2R$>\IhOkׄDW$#j&YoM_ۮI[T@ ~ .AjTc٦tLؼϡ? g^}I/ @8d4 BafƬpDŒN7HC u *ۑ&'RAJtôQ@ϷKp+ n i|zx+xCi:?=K$'wuNO8F \ ~ _`YQn 蒃;:E94zA!*{ Pƴ̆$Q˿,TQCBW b xkkB`BbBjUsiNґՄZ*_D+ '5@ЮtUdnt1a*YEn| 9%o{vMYh} v=˽t7O9A HyM~E-Җl:X<*y ^Ñ##$}rt~OZFi{&E9ׄm6$܀턻|?LR2l؛il-Nb@/ A;ڇL>lv*Ӵ3w?ZC9;"鼖.TUaS U /PMa;WҔK}oB瞏a5J/ժ$i8E;^4Y )Ҙ8a6xP|/@NGlB,7j"Q|{b:x/R!.e!RH$3PYZ9)25M8(QBN).XBXe2b4.=zH*ޮn4|\qhjBnkV@̼'`gIOʣ%%e, 2&5fjJqgš@b~%$%^&u؇%R?!RtcO!%m{Wȱǧ';RBв{(-c1μLj3_jVK # 5n[TWҧ^%/;C*Aw"ؑ|Y0@PkGT,Y~5~ڼBguhYe?.y}_kԘ5N{= Px;ߪ| :wʢ64tگP0|əhU4TTئQc9~ԀB?j3(VkF# d^ N$q,;ōD@Nk˖Q9`HA[r y/bc[oDSu5O/5D#HEH"m8':(f~bm]xҸʵx&4I :M$镪TyWj*vn 9$ #1^4"I*;Bl\eSy<$&KOzNb.("*Nfw[xˬYе(2@Il$ҾB.^]+ccmP^Rd%fPP{n SsAR?(v˩~RƔ6&PNU2V8\Tv!FBpn_0ĉ6ӈ:Ľġsձn5QlZ '>.ʁS<ٽ)4OGNj2XθZE:o&r<;3|h$]v!Ywb QҀb)-wcSls=INT %w >RЈ} h Y5ի, \LV!T IAn5c :ב~_- ԙ#ݰ5yB&fOͶ;foi ʠjq$Jkjz'2*r8@wRj<^6|iq'h6)2ˌ&a#{e 䲌HΝȷ:Ww=-!@ܐSW!knkyHdgMg_Q;E0n9/ yK4'ќ)*& 2R!P'Q;u$`d|q%ӥ X"DZevScz W m|YQ́(M1QBRCaXȦY5EKHY q^kGӐ ˜O(ycg8Z^gL$Ffh`3!fv ђ`K74D0='rBXy]Lʔlait@n[ $o g'z I!y]v\eu|ڧ}Hsd $a Iv Dz $y9@>ȖHXgkNcS ٩ȾiM}y͌##E{DQ+R1 CBXcXuԨX0,6=>+ۮPEjkV`#$}*} E)2.I^(r~(i?DCAx+'D>亅:L!7Zã"!k>8%WJk2;뜐[Go+3"9IC.YAqڿ"i%2L$'#E08uMlh~GMN\,~}]mK NYcMq1d nfCBN K7D﷊˚p_#!tr\g0bf,EGV%eyI;֮@vQBJEIK3_u CG^sDsԐ-5Č ryR5 Ӕer7 QI&2YصQ8 nW>ъ+iCN//} y9G LI$m5lF%N *M+J兹׋<}RM$+͒4O^;Gc+7W"O%N`8pޕL$Y?>-H-v 1!)Λ^wqf) )dC@}՛1 ݪ4 }6C:ECd)vM:zF$|#_$޵n T\Nv>ΡhNr<:I]YT#u$/%fCnn<BVbƵj&cr@ɥa'CfszhS~@jbv}G)EPb"UFPľ#tP v q Il*)z րh5{a׼a($ҜAO5oZ n$g{֞|rF@ZI sw'r}%oD=ƒHw21;;]mq& 9Yy#!|>~E"S L7֭ޑ_'ypk'd#.=GHI%r!oxnaHrF=pY!i< j 8#m>CRU!_ DntE!T?75)RzBnvțהDz &;1F5UFy\ၚNY-}" GHB:'`as*hH6ӜLEiuI e$im(23 $I,Ǟ3x=y̷.;&z'K]­]=*I~Ӛrh"{$g e  1*ɖϩV@Bnw["|s <α9b]s;9|oHģ%_& Ώ= Sw$: 뚈\Ly=J:A5AN Z-xB@N[v݉qPw-?Z,1czd{xωՆ"D%#p'D1o|(QF$].yay>)Xw& j wggFn$ u^nH7q!ּ-xvlh5?uJ&] 19x$rM"Бp9FJ̷~kF^??E42;N+#enwA%  "g{w9I'R W$5 (5G .\!N.w쿐~xy73PDh9c_dG)ukOI։7Hc5)W㚈{hӡߐdiyvo#6rTW$b=}Q*5+Ax볣Ӣ}3fć@C(~}DBG yJJ5{G ׏Gu[T@XNw$=C2%B !wdmf;CϸiceH(*˒>%5Gf+k- kSgD҉vh9EQ97iXSc6/ qVyaf5uȈz#E6@u~|Ǵ2BTe6K%7fUlYaH|K :fXG~C* u藡6BKޏˉH9 oi]M 2*+ڐ) -E AyQ8P= 2^bÒ&ci"Y&H 9 mS$?deS~mre_;,;fC3(e"P<pLܼ~#Ƽ 䅸fأWekCӉze\!E끃EP_F"G5KoyKG]e]H~<ԉ3d`4垉tnQ%,Zj:=un W3Ȳ:oR )CzgrZ4FPHI?HvV wõbD> UOtz@_HeAƯH*D  IHӐDo4Qjӈ{Hľ.u1<b$-@>L DJqǷ C䅺C27:u'.j*~i!xN ! 4H$4x&rW{G|CAZb 9 IA !C_HpqJ̣@n:ICGDwo9#^F'؜8,z}3_${N mt?^ʐL#@6Y=m@>ԍv`l<@T x&eMPI:!-z1 .]+yؚ J<8YUD+ 8ҠB~*AtE}MTI>o] +o߆~P4ش?{n PޗyrTiݶ}=S)W(e"qtRؔ/6R6(YA@7= h겚by|@qalL8HzPChGk{Cj89y r5St,%Rȇ;3Gv%uއ"G LgIљJ^9=WqZpXݲ.qF_k0pU$ ]kZ*̠*{݅eWG0 ,!J]nƖ@qX {AV|Ŝ"і/}% $NKHG3hN]+?&F]$Hi3$ƐjqM"AvoA_X-sޛ7,]ͨŦ4=0H,Ag"vfj?Z^C`B;_%W#rAHh5} uD^=_v! aBO[sb S9!?/to=sH٪=:**_,/tAZA|Lj2Abl0HH( _#a'@&ZBf/t'v;(!S3ph6rN9v'N~qꇼ6ɴ4 k|^Q!8|UL |4$zsNuD"Mi@C'M}6-\Ƭˇr3lzR c5j@za:lmTjD$zg#*k. ;R2Ik z+vGf\l?&H>YȎؠrH5V-"u6Pዺa>E͈#j!. J@ViMס?W%]ٱ1I{.KvS[Ԙ˨0~0 ='ZAhUtɹ#zI70D8es8~D,D. O&piY~g! :r"Ymܥ(dn P!C`v$WN+ HrCrS~]&W׶/Yd6-Jt#mԢ/)$IdI5zjըȣ6] >Lq͆4>$ץp-5$;, 's5q;`SARFq|"?4.ιH95IEKFp!LG$Ղ'/S!L!~F^CȋVr«/g7Վ`IQ"2bȩ^ rCX9Qlvz~4F"ExAKņ&4zکrgG / [t6$"ȼAz5GB5R|9_g僯Q! U J_OH\ntY.1< 6`=aHy bO(!Յ<'JR; O 8ȃ2'8GmHSq),)O~cȧ~o#=QE}¾8ERRd2ܱڌV5xW')5Gʆ(6&LUX*98n&o@k°I^qwhҟlDa]6 iTRRԾ:S\Rn>'h/J^!VR;>%8Ëc !r#p;X<$9#5UJMN]5)4{x 7,YV}$+<53Bt[/`7{ed;C rՎA,LdvGVUX.LPR+$>JsHQI'4~#V{ZD8tp\ޓ">Z'vίyܲq EWk~lr^ :R35¶#Q$sMLh-ڵ>ؼM; IӰ{a>Ąn$Nj jj9BU ذr(߯ϭW>Ȇ됙_@yIc[%@Ȫdd)~:]?%Ձ&@*ڣ~S U%oJNI散4m3ӣK#sC)@"tE͸R{Tu%糓Q`?v`!?NHdW~]<-yȁ@4$-N4|<:+ueOt- $u}KɘK82ybU̵Wn;:Mg|'dQqY[ɼLꉥۡQ&#I [~CNIB(9 +(/C#HrdRITbW sAe:"%d{ Od=.$ESrXhOB͕S3>Ή@A Y m5| G]Q (EF7'f ㈏R5֬A$ևdz;Gd2G|fL҆b--#gw_Nvꠓ/kNȏT:H%7xiH㠉CEC^% qUIcgHvU5E~`>]W"%PL#I!v7~3۩g̥)}^_A޻"dq qӠd-kȣs+ $qtuQ.X˜$a+Wv"OLD9b 8"'E [rTXW08"qʂ_KLްWIĠj%f,\~J0<0 Ix"c!1eYXE݇߉?_".HSgk<)?5ߡDR?th{3Ç$bAG,`yuq͡ +C"wh{y{㒰wUOrU_Uwr#Kvk"㚰i`7:+^3}cK'µǢCĿvE fDw$]_dR^-. phjPxVYcC"ME5<}&4֓RbM\;yL"+K bPPY^2i…U Ej1BʖO#ZM#931b§AZ.]I~@dS5vQkB<\ K !9CP8aHc1а|ǜ91yR`A6qtg5bvd{0td&ɡ 3CrAIqb2qp͓04RNgHD:j\793=(?59x]>Sn #o7Êf_2c \iB~DR䎘K̪sZHK::"|HR*sgӊtt i:麮8hdk8Ӯ[x F4"I')B|+=`a)HYXg<׋vH(:@2 g7!Qo@جrY|'.d47\3vz9(0D'XӼVDu%rꉚt@ !9?:Ƈ::vA"}rAlvL&/$v"rn4oN%Ͽw*6zXMZv TjܑBfHj3י^(>AhBN4b$#0^l@#CՇtW# : cYxQЎh2(ײD5!a}LAqUE49&e#F*у& '9!_$IdÅ*4yܛL9DVn2'!X$JDqTdL/#2$F o\oOX׉4ՎP<Ўq[$3w|X{V ak- UQyQA9@66 Py?Nxҁ4p";V(8rQ"T.i6 *_g`ۅw <ͤ#b%y&ڐ:і8mPIbz\I6 FZH7ҞPfV/X}B?dIr(hH-=x$n<;M/jػ$v܊!)O F363sk/x)~t"3è,|=7޲BQ"i>nQ aJ$zGe]|،LjXL[k#WNfx:_.@B|fM. w5'XTHeijÂGեa[Bi͞<M9^O:HX̂H)HzX%3iHa3y@ y IrSݒsa<} 5I4E AF\בB՟nh:+EzH+ʑ|+WޤT# t౯H}#ATr'P'$:!)QHd k @ntHh }G UH^ "^mh@ijX[F~툼m$0%/(e6YRk.r6+OVg~V!'T*FȋCּ/GLWQ]XP9˞N|SmSLc4@by;&@e|BA0."Ww"[BryUpOn"|{\wbxǝRVfOά΃̞#ƢsnsI,hSEzoѲ (3d_Մ=yʝu} 2VnY@BV:J7!5mr pdvof5N8rțTCyY'r%KڨFk#06ސ "4V;oej>:gػڲi {RqXo"r_s%&:w$҉>6 EDI{V/5JP"UيŹ/#ݠ= mdrBEG$ZHV "RH QC4J!J@Jȉ~H ;0u"X5#ipXa j|oYyI>ugrm#A~"B}T3[#إTwON55jȮ ԠB DҧP.o mit NiL;s'(0G45_1zFtk͒ohFpZk⡴]NzK"'@.)[lm-c} yYCBCG k9Q7MdM/SYF8dV@pz'ܒ:En2?oӵ.R~MwINTۨHn7#`]Dv"iM]1}Y8C6ǬA&Y3$ p@,^~;?4z!d۵s/%ϒ/ ) ڛ AEġՠZ1W//EЖ %_~$RcER0mIߣG*Ǧv%Tk.yTh?@H0ətEn+;hNP79ǔnUG=A;ĸ!6`"Xs*s?P{CIL { Ӵ^!jJnAUy[|2ȇ4#m\ZNd3['A*6܃ ĿmHa"NVՈn\~_!5bZ# nf/<. %fa- QA.梭vIHNd>=ϣVaŋU)2X/N'*@.+&}2yrԵ,6lʩ 8xт>NtyB%`=߯[B2GB;VhS6iK:RIw9!h~wW]ZW$a0,X'~#\oHھȸ ׅK9v*i ̏hdr\]҅Ӭujn9?Q}Py7hg'UixivpOfQW Y:?4y[{Q$6=%MVCe=&PJ _0/~2"|9p!6D3=-?Чwr4\L<\:/Ѓc*Q/POssS~*zy tw"(_]^iC6RA >2B9/$u2L9mӐ)jrSt#;_@*9MTEՐȔ6 ,귴# ȷ dA̯`+C⚷uhcECr9]D r1J47iA Gù!SH("B.%r?s*r6:ԊE+|k=~=dnsrsmb]u_IPQED\`I1 oXmX8'P~ћb~̓HьhQ%en.%}\>Hp~.0ShUN9&{ J$ׯЕaqiUn;}FRDzAb ",Vc4B-5\M"?NFvbm>RWn;$FҿbАRV" ȠfBm:dZlPkjz?4zlHX̣P$0EJÞ_:Sзb HDuG*ƴj$2痡8TTٵdh=y`soIYA 0[GfOy\BS+tuG[Uq tHy< ֏ i:oPt EII3t)/8I1!1eH+m%(5!)c{y3JsqJu='qTl~D5=ͱ%zkOI92ҷ{wo_qABN(E Y+.)d3C4`sLލ&6]Z9dQe2L'li6ԁIEǺzbͷIS4¨})IMU@jXٺi4\.\2 PԤt Р: +_eV/;Q˰-X:(D kM$? DB 2Ǝoz_7*~uo:qa%ۙ8Ӗ usgh4!Kz02:"E\Ǒډ'5j+A(pvQ-fmWMZ 3M"GAT狌|L1M ] Ȼ|=9=! _zu~yQVg$ 4IۈW=~}oZg"Mn6"c=Hƕ^Q#ۼM=~8Hz)F F&xUI"#oC0߄>P#r!-lKICBφK$U/RKm=#[e*$(e %owGoU9oToI&ajš$9} uU=tQ؈ !*(9 i+&[އ/l!oQk^0gcT|2=2hBa %T)*ْY>0Dp$&^ $ei SxR4IkIBӌ- 7Rb1n$9AV:Z7<68ِ7dQr5'˸|Hu݊-N:Zb2@#g66UNY2 Jʅbw sn>"ILDMfI)*ڝ|y &וwIB$.'cGDwOq<1K"( ۥqissi2v'Fw$U\~Q]r0l,qJ[dd"~~$w8'gUeEB#K"r# : j 3dZ4ul }A*/ Ofw.쳂 yF4@.8ìP3 M㿞WU ZPì}"Ow;oLͣ a[ZG G+I(u8>.TeK=Kt"k'rKNy'Vd̕;9`{y&H'XΪ =ʕ,*u!ݓ HJpC*,p9H7{[I%M_HPY!/RD~,b%FN y"aZn(GW~OtpbC#%=fT;QQkΆ`kďSnzdH8ЫAtQl,;{AeHᬌ£֠-U>ѢMAiײgKp< %-%n5n`sy *f~;=&ttQZ }4 G#%K=(KhU$NBplF)ݾiO.%cDZVPuA)ȟeGikIIFJU(r$SN@ \ؚ#Ap9 S^yc5)Ui I)MEbۘLhJјē $2bE頻7Oip[͑8lj&^vGe^qMyRGuq@"(k.5HpSLͣ4WI~P$Wt@@TIJx'dK4DLu(Yp_e>YD"(tCI %MwпEK5iosY$򹷹t9&qiHp4և39I(} >ݧ\M}WqZ SScC8V 9'iC't,.!H!'[M)vR!/-X_&9H9zW۝B-4Em+ev1WMoUBˢN{o3SĄu%pi$U 2!wFSL+K&-4$ ÷\VN$T &nu$JDBʛp 'uimM7͍~4H `aފRt6C65/!vA T ߺrs堑b's) إ'ds V5ِb܎Rв[du.GB!ZZndqQ_BtZrNM˖#kfikxN]Gּ7uS9[y;r3 kǑ~zDV"ǰ"$V$vZ)eG&R"} r2O)-3^sr*dwF 2"Hn$ yʎĒJG؍ /&܄E?}>6SVZ{yDTD)UdU޴uJ0߀b| oi҃@p&.fG[yK_Z`r DtYJ'+T1ANYp٪!!oZD[;M/}})4AOJ*oji^u}ȩT: C[a'}EY^>?$*+' -Uv2CUe6؂k_cCO*u -!H\R>}-. %4K`ER26vRC]"SHGzO$[~vyDkGNμa"ppgf+ 9-MH5޾vi~ vS{_>_S{9ybr*A_G'06l:ǭȜaH悍@R~SiirĂ,D5CMh AEl揿o:%fKs"1ﺷQLrPȺ5osپA7y7o)QE1ٍ|k.4I/XˁߦVg//M.b!ǐ(NMHixE+mw5*P%pMXk: DR_k1x^HfyI3ߑ'ݜos)2YŠ7 ϨIi^)>WN֖OC`(éZ/lTe9r}%:+6j>F ;_"b "AUsdif@E m(uHSL{nsI2$x?N Y"nKQwqK~ ~6LbWO69)&Anfl]X,įoe Y6DB2F&(3=SqplȾjqo3Ok+o䉔EC),oDD5t0IJ/}. W::e܆4AbKx jgJ+kݨ%9MhnJ*OP $D F~Os yGB5 B۔gQQ4 ՝C+mI|MKåRG@Hd@["տ"!l~}nZ*݁$At>((faZP^ƇfyDsԳzxN Kzl;ߦi!RYo\w͓:(y2z HGf-C$ģd劺 yn"FC]VYH,.-~+;",?74PLj.ۂKВDYmMdJt5 $)z6vI+ķ<[bd5]??$m:$G#ה-* :uv" Jx`v-oCb)rXR tqh9'ekVC>0 =,Lڌ!~d|j9Bu2h4܆$D:~lZiѓmˊ$:W9Ju|$-xZ r$7L 7)w~"sdE:j|PB횜LI3i(_:d^ٞU֘9LC`)wJ)DJJEn\Z~W4%O/d4ɳ0ȮMKޙ#Z^pJQCEtqJԢ][nnq| -.'Toa f|] `#e )^^H*GF}z;7 LXQcAINrk?Hr%B<9$FSu/06WcPz *dT˄=l(SbxLxj,e>!~ʈ<"ʁˑ8$5HPO"$#h>T'|0: kpe.xOolDڷnjjld,R]%J “_Mtel7{H4!k.n`H/9G)~KVSR?)`ںKR 9F2-ZY"RCˢtb7cx 7Roߑu GDҟ=ӉWO"pj#dn{w&_dŪ1ղt`[I$p9fpBGF,DžlO5w@ #-@6k)vȉA x$&sϴ>Z!Os>z@)B])qe]Bm&Q*|C" ¡nRf.jT *ND^@ؚbBC}iȷ(y RDBLE~l H b*%%X9}G{z("[P'+2*h@o(y Eh4 (:ֺʷ~MܥENo5H8ǒ 6rL(r! BE*']l(A6NCYJbraL!QiUYH(as:i\&wW4)yd9֚KJ*At=ޖa/Pn戾\zCxn{GݡL Y-D7(-ꨄG_)e6 9F2NlԊHHuM-'믋^f4o~(K$%Rf'uz-gH)',L}A;~Bg3%:aGdagim1>+erRrLߵv(l"w¬\j/ydA)!o}CZL)lOjΞ߯d(x9-Ǭ0^gA0Oˡʨ2, H<͟I(`>C&(ܭZkߠ0! Gd*\Ц}7z%5Ra$Rnk&BS+[Aa{t%|M22oo@Jp}D훧 cR+iRI bӐħHîe9$,)Jyj PC)2{1 =,Hm݀3DjES7af:&]ȃ`HVHcBZ6GCBFˌcm$4sN +IJ} .SH,߯ +'o]RΈ(+p߮la"!nZ3I8_NRҷfA6ϪStg@h5%Ш.1ސj˛ȭG4G ̲xrQB|h ^Qrm:"SE(T%#ę2-էLક.Z:qEZ['cz<(=5Ѳ,O))i43Q}4 Bm%깕!NUPOpw>0+obKeK(~g*Li IGԕFSytݢoһE%]%&Z]>hLg6;Wd'%4y\ aAθos w.1&|EVX{&bdŤc#yI З :~O7QF]- T{,<HO櫷~yؽo!WwUymZ0yr(/YZ"mZnpr @ѶfcHoT$a$nҾg:IZ@mGTe-;'%KO e-v!hLJl*sM$Dl>HO;2j;Xp͎ oCF@Dtw^ؕ"QV` I^#{]O؉Dyyw=v4.()0{!1!pa_q) R:CC۷afHjf^|7R:nz  eZ1'!)͔%2nQ[} ʛ1H褘^ѱZb9*Dnu/HQM6HY~`!xWUH\ӎU4|!U, QDv՛Ea5'!,abˉȖ(qaR{k,x3I[CFˑ1/ԵX:r#o_EJSrW]vJ[s`8c!me!i!ǟ}s ! )*EKni 8E%k439:aΔ@RBIy>ўy!e[tK)͑e AKA„aYqM='f5'Ǹ"]h,G|gH!'>Yq%Pik~hI\1#ˀZI8Sج, aÑT,ݪhHct|?>Q'AA!ǰV=@z|f-_@^(SqwYL5̐]pZ"|,aVu$G;x`~C$ Ov}%]GOpB]Zm6 I?7Fv3= (bzฦDnHj8䅙훐$$bH{>a9 ! 5.I|6V[e9rV_ K-YJ7B?K 6#E56HtlzӳЇ0K)jù_6ZtD7ƑH̘0AhH$pd;%C^ϴA>cHI%WCV!^>XꁢFzI绁NQ6nb@8Awґ)9wɹ- (,q+3us_:wDҾmp(F/v$AQTP_j8R?m}z&lm,HZK\wvb"622 I~}x0Z7<za 5ql?|Co 1mGR ׻%fGmGvǓau1Г9/t. aDuhkR^<IWđHGP Gy<nڂl[~}u#<KIJ+N}#WFSG#d4 %ELώ #m;b/?3u -`'rI+5xg6JPW8i*ۛ%s}i8su"AP Ш_QD >F^?f(>e>(k*/sa}d͏C 2JN&څMv[?6G-Ҩ!%%6__ O#WD ڰF +w!O"~㔼 e@HNWM V귄q>+B.D|Օ,w9DbsJqzx%AׯhK6#)SuMeOn;0j俰Ph|wͪJ$mYB^%P~$Ӑ}.Go[3IRZ>6dN"q9Q*mGw-W]\8i*FCx@/uJ'픐m%CT>44YSpy3YP kRMH*y/!Ck[:Վ]tŘrK+ԅC1H䂒{MK3eF(Ѳ]˃Lk쐛||{Xٻe-xnZTo .O"M@3^G"9b>'9? Z^WK D3S!=@ @J64e 1CmAQ+ki{ @|FFQQ"O?RN&pwB~:*a*6Dxd* "bHˌ&KkRtt/#})AX=FpDX."r;-LNU"fOD}f&Zy&rʌmj}[@/"7(*gxe1^cmudj!( u;'TA=P:fPW4(ʞ]=-J3wZ((U%"#[;Յz"wdޜt~ -\2.Ma: J AKgUTG&Ht־Hq+ӎtp31T^cŒkH㯊l{o RVǏ$a(PCע c۫Bt÷L_W✑.4ߠ1NPt=,L,X!gkضȌMM,EGNU-6_䉺!OS0G=Eqdx~ U9(_p4[Ufw^ģI~NgƐB!kz|OH-~M/XPH\0e ]C>s (i;r~Ք=+-Àܢ>嚊 M$+%4hC>Ql(y)^\T] $SȇT&e+pFWh%aO^"dԩ ~Чك\W%{Sڈzwͫk CVʅC@!f LfNH,/<ۃ6p+7MD,}1he!3WCp GS%>u\ξ@}撒HڂE#-Nk+M6F4Qhȸl2?$+2Qٺ!Ni\d<.Y|%~N qXLD*9Hp {2dDp^ldfL )1\%usNWrQ "A3敮yYXIw-*\RgӺu?ǣS,+==Fewr#X~Hwx@O3 ΄O~փG1-a=qN$_RNg1B<fZ|ߐN>&_{QbB85&<nW1!0YV6QsU(hrm'Bc󥬔U9ۡsHROIy5!%J#يԃ  S{1]se]zt;b $ĵi-5VJޢfS^TT S8feZ_iGJ`JhM4m!%/F4>EC# ;/65c&l-,9wÈ[>t&% ClKI !9xhAL%:|0/77ZV"Xtट);Mc9gz[ɮsܜ}(r "qoƗ \cz"`vN.i6+(dv(-GăJ%C8Iny)y(R,wm2QAhQ2WN2=OQad/#KDJ|v2 >4䢩}^J+jZ/T> rʑZtI'#[=EsGF%BQybpN.[[GMVwrHwU TzTk@9Ҕ,Ld.!!bGҗIoQlqMV2+*H7Gvl_溦uk'H(/?U&cSRpy`9NO&/4'"[i_X\9FDN8J^<. Ee+UuHK{ 6'qgu~bH"r9 myuϰ4l}n:2LiW5$ Civ$I毓S)U}G4O `V{ s7N fyP0 iCJh5 Avi1 t,ci#ǁ}-=8)O$=12}(pFLJS+PLlXR/Po*nB V~srL¢ke45 OjE'92 BbzDA9T1>-5 Ŝ{S+*ϨvUr?WPl :? %nrFQU @&2J"GY((v3rɸz& _K]ي, Z$ 'G2Ef3?ؿҔŽۗX? ]\Qy!F|)fUCG?qdU%XMYH45ВuFHK3RgR>X*5'!-GRH8}`ѺRftH C(k'Wu ܘoqV%- uL:zѲr(ye/tyzR"HӯDbDU8HКzV-om7Ӌp%-qt=ڠnHD%?N x2]GiOȔ19谱'T%ds rH;u}~߀JҮs[=,,;6ZI9ДzAF2,1)(쿾"ҌMHV) u5)Oli<Ж`ЈHDCk[>lUݎ0GzFN W;],݇$i b`cs*:YIC @lԐ%ptYH<rE.rJ1M46*nͤͰyA}brB W-ن5)q&/23%g^&AK?;pRIwg#w$&8zn+7T-4j Њ!%UJ坝$O/J!`N֬@-i\ȱ}?綧<.վ!NWtfx_:kS8V.X5)GY0@z5,9ZS8 zTF#UùYʊmĚk.D^][žDFhɉD%$$dg˷J+%w4O̤DV,UΐHA4V_GL'G)Vx6h d@~dw"@e-W&Sv^d0ʰC=aƉg@n%bfN'h :;'dL_|TEC mWBo^"XxqA{zօd>Ak^z ]N$Hm-HC^v%D,o~ mirj-^],9H.!E,9HL G㷉>2/KఖYՓ=C"`CƱ ;H-w~ڻօJT>i1Ph\+[BRqf_mup~hx)ο)npa3Q#T`+۩UHP+763v2YEB Xk^ۯ(a9u3ƒaJB,F&&혼Obe_CT7%JÏωLW&HhjGƒgM>61y#Tkrs>+_[f!j2Na+!1!Bh-lRZHڥ:gHHI'VcgsҴv}=M@A_#AD IVz+Q%Qg 3_5jGEw*Q3yۑ)FA -lJր`ԒQuߦ'7CZ(Lb2N,qu!B0kMCsx ٴ >XZSכ,[Ř ۑ9lLB"Ge6 F",1"$8.a0B| *(r@|ϰU5mϤONH@N.[_*nhn%տwZeqΰy~LRhoa)HC h{5dK]rBXz )2"# RDC@b?M|$9cYC2BmN%#CqEA6V[ף}D/['& ܶ]InɗhM乶Kk&!m}߱)Ӌ x7˪֬`@&p(|띨/QKHak\E?>hEhCθ$ڬr7œ]DnqGUC 3K:fYo1fK/̒H(Hk1Hr"H}(.= *8< \ڐtu&kIv$^jB Y>;LeY @"GZ Pd.n^`)CBzhaܿ>,%м& c)j!uC (8󧈑1}uC H$Mp%A) O74v3&0GS;:aIrSQ fXj "[Hk U$ Q?H[Mζ%E| .ՙ_ 2}%R P~M)s@ ~ dV|T';"GU&T)iU̗XHkJ)L>й>$-dQZRX8;+ ҄Gfd=AIiߢg-H0$9Vs$iG\S˂Wd$f Z( ħkJG- st ka屄Ң:Z>S@*⌱$\J)b9T5י : ;s0D#=I)ɝHd* )!*v"U59%jX&[a'ڥ-$L k4dk'[_(KI]9>'cVe"(jxo7(ӬL~7k8wvoK&,| =tO;Ä2}p J9N^) }U ),'!S|^|OE_A:tQz>W=x֥!a8#kY" 8 9)Ьc6_C|eHjpKxWX'Sbn ‰CeRq%#$a5RgP KzXf)\_%|##{vkY<3h\DsM d\lEfeaT[Pfw8%BkAЙ,s]sCUѪ?D.0A$*GBJ4Eu)# y[Md;TIJHuaj4L(CP<_' o>CyH퉓]VHr#ƱNܐyyLAB1JtKr}@Kp9J ߃Lp>y `8wY`&>!-- `$4LIK#ձݤMY-֪H<-47TDQta 2m&͑S0a'р]E~ ]CU ;x}jEԐ>ʯT,<. ׉on6֨'Yt|V]dplPI d*6$E"*7Aqɐ&D9AhӢ0MjF$SHT+އ ՜^2KE"XwnP'QZGڶkjAgiT svC Im!$k;O EAҔk(B3vuPazÐ+_֚߇$zr'{ ;z}T5JH,0K`$@eDdW+*HEf\UGV"iȃZ=T!ԸM9GDH&!g1:]d^PڑL Me] 3IhU7z5y2:*8 13 (?ӪQ15AG'TMI].Ѿpa_WӺ௶MoraO j^wO%ro;O-$: r4 I @"{KhHBVa~AjDr5ʟR|M-Ge3WC.1qo )~AVXV1oGή׬ȸ H¥  GzJTpHyGFբ+uTBeU `RM2f i&INy $II+1- [}J 5! Q$n2d^Ld3Wq:":n%YTEQV|JB"y-xcLB(t Wzadij5ݷV 2| ilS#VOuŦΗ=Hz|02d=҉$qDOsڐWB met C疡dn"sz=D^SiGB (˰@9@Byd%IY ȷM9xx?{Jo$Nܮ=-ҜG[2jW O]fz )UZbM $G䤀OL 07+)1Qt8=0Q,|c.\lRgIp+d.;edլeC< irك+ iҪ3>8y;e!n-i7.I}!1|Du,%gN>7 $Y+7FtyEN"M?VNZxI͎DyxTQd3ww]ՠgTnD_t&V+/ Pr} q-^YgėNXx3=5":CfDSЫv 7o4DD4mB.XW א'ns1BS'\oO"UFDRPa씗):TIOCibO g [!8 QE|6Ǻ!Ҷ&O:&C%;F$ 75HkΛwӑ.%y|0B@!Q4/Ěʺ \BI!9Y4@F;]-XG=D=ېp C'ХF3Kڙ(x6..O,f 1Þy%@5ڀOID߂spfr碽**2UZvl FJbhTy&}ՖzMߏ=ȍ9) RRɘ1miV {Q3kZvh`a$rh;$a.h<aj}%QX]|7z$ϱФ,CWD*L;m e!I Hۥ՛') A·]]ICeaF!愸qѸaRrS@Dk̶8s29;! Ӧ8G/DR0ug"1V3btߧ̷y,Vm(W/*Ix ߷dM,B l+jM:)mO񿓨yJ!YIߎuF<OС8V:ABGB)v!1p_GoV'B@5-SS,gBN߆ >=Ȯ5_H !N귇g[!{ 9E特^ BC e_t诡dD@m~fڹ)nH?ۡ8-! ^=^& cSԓ ͲR-GtȊ Mu$!F9a7!jD{Twvb,B,}R\䮳6gfCthAZO?KzTu;wJ-' i= J'ZBJrI=}N^VM=$sX$y~1Zŵ"eL|Ԃ=}1UȂ,c8ɚ(TZItS=B^c:L%dfyѸM͞H6:~9I ev9}f$_n6vܝ.7~-Yym[{_ ܉@(rcXV iMR JraF>$e4hv v#aLt{у$aDn2% Me1L8HNK_yM҃4,AM:F寿 ^|O-w&ׄ0gv8ڏcq%VtQ~n M0HǼ q8^:I2PJ84N}]qXJAI>em^i=]xC?i31MK{:TqL@b푷eNe=U#v5) &9 *x'MGh*fr=$8rЎWNBh=yt#_~HQ]y[Áj6:YB5`>s# [i20&lD-$߇9P8ҝJ69óNj"^)ewHذ?XC'<|X" &ߔU{҇T=]O4H~c;CEl'jZH#uR 66}Ry$E!ciO p F.$1DmN(e~oTbh1kӴo1 ۶U>'S2G4niYo"iQjMeJ|[7Ry$dL?H1ۏ\By&>l#뛛%VWn븩qIʡ&6R7Hƒb̷(oqAUኳk"g<8Ĕ*ikJʆ4$Y|wW2W}MR, iM$ CO PLA_nkFqAXJ?ÎJޱJڰPqɛ_V _tK˅dPLhc&4cm|}*Bo5OiK6'@8 3V|,ZetHEߧݼUBl@B6;)3I;zo~8tu8А( aE{xY+B2gKAy9.9lyb)%u5(4$(B&=F$Hq4$K59iVVPˑ(4-!aiB_IomxmƈVt[ fhQ]<)W"Ĥݲ$0| b%HVҡe`daՓyKJ#~o5_GRHNCz]BK BJ,Ȏ;M:xoHrkɐ(NuvCE}jd\Q[7w$g7D(]oM$#DN>頩!Hҽ '] Ԑ?;g+/SK,Hc<黤 6"+CA WO`*aYIr'A5."I$:98H71{gΊcOL#k"Zz@E hq:W il^h'Рv=~8]|QG{EgD!uVȭrg{GHwkށ#!W5v1qz1ɉl;U =DNQ EkCtYo|@C{Nw4z30W\t=& ̎._N~E5k!vDR+r_x#zQw$`hGԢ5YĒ=[;! Nf)#˩.Yj$Y_tx}دQD4r`oUox*"v]GGȐ6i>Ѳf20W8XD$Y6Xf<~gD29?|T^Rq5Y#7}%Hӳ:s$rvc=1os$C%hZCѪnwG^Τ v4E`6ѵHm=yd_hQZs#ޭBDc}§$A! r_HyISFNAsGR Â`Nj&:0CB2k#HNVjԹH& .pcKn'}?=|8$HZ"ɉw`ҔoB"6uMqߣC%zP6P:tu܈n+a Oa|N/"APFEI$f kHz9 >G"А jEC'94$#:;<Ӈtz$$%>"d(46~z0Avw$^`᭯ j OWF C* qdo 5'$nͪ9+| ߧiH>lSCJ@^|>ecI$}.5GrB3'p(s@ ?GOU $I=6ߐI\"i~Vhqi T3Yϥ&[$6wްI )ehy=,N${@!MRL1:!QfW;fƃ;/ہRh2b~L8hX(S3w,CRzAyrAt!)ٜa.-j*ˑIj77vi $ J S]'S(?=gb)2k7~TA>h2wY9hKx1?F"ysja 9 Xi5'-_s+8UBBґt5w!@W^Dn6:D_cmmQ g!/ oR2CB V=*u_@Er΢&H+_;jC:t1(0JeV7A#eM '֮4 "8r5\OnB,@w'[-|4tW^S_B$!U=/23-Ք }:>m[ůg'rOCD\^"HG(|iHڃ)=J&DwY jތF;L<p2$S+|p$y7wG8?( %XoM|ܼsđ|C&ƫJwSSN7pyMH=v۷ h|U6DDrP3H=sm"-\n1Sg̎{qJ"Rz e TpYWlO#։-kA^f^2ed 9H]ר|-.G%jwI[ۀN3ABp `3S'/ЖԀ+Z[Hz2&[ o"s0Ni&rZ|H ž} liꈌ^Vo12{_}3^ j:T 3 -%מ$3$H]R $Ϳrm??焨Hk̜ <ב,@wG J!Đ<#D{ASf|'$՝E3L,O}8#_R1"]KMߪXgWVO\K"W7)݆-1Oͮ'RHJsU*;IՔD.}o Mf 1{V&yo<;ZdonF0ld\I mxBd9냣NP 2ΛK`7g RjiN ;qw$rN)O 29 EU+daMNSoMLaON-K~[tYxD#Ʉ\͍sg;F}~d[d/sdg R7/#i٠PzPSD"4b"JU 0![Qnc UG;L ηbN W ŸrX_;xA@ؐ <$DkwHݖ9|)!ڞ$iNi褪hJ2{'}*#'8J/9{829a@6Nn*TUzqPv$vX58Ma އ&7")92i%S+F0 AzlHh$ju@~#FB鞮Jn?gct8lOm2;7:b ]sqrעx櫭Wj2J-)p 6Q?dsA.RKQJxòdӸdE]bQ y  9`)QHSE3񗕦f( B2Ѿ%؎P:@kb7f&RlQ4i~!T7;A׿&rNGcDpJF +Ȅ)D|%Yss^̼"j}or^kAmH8 ck_Gĉ?qMZS$?::^ΐ^Pd eL:M3|_mmhĭgOPᑍ>Doל:,1_P't$ Cߚgzy(!2m8(+@ RNdy% ne,e ""fηI/dS$tI$^R/+Sє2|<3w6+ 9!Hw6Xh)-B% aljnDTt|?W}(RTKD)>[P%I=cO}ٟ!:W8~%[Nե@ YC( LqN$t$DVOÚ$9K3:md#RTx[fr?EF䁌e@_<%kH$ jN巆Ļi<+Uf>:4%Ԏ $XCo*skvR籭gt^&Y-BIݑ7>'JDҲ<Ӵ6(%i*X$#Μ!ҳȣ36@E~ECv+HF^U4ؤN29y(w2d[l7-Y¬881]e!?mj|61٪#jBnq6Iu46X,lS}+]J[_]B^!37A4wVuDWSX;:ʋ*ÈiF;JZd,KI^ˋyEJEV-ٛ0^d FkB;JJ|d-9'VEiϐ$HU6@rr@9"XʛsB^  f9pNu$q[9ERVeP (#p,1w}bw(=-c6i]Ґ3!Ra%K:NW_&;i6e4ҕ>TCzaAǑTE{y1m1ʛ.Z|.2m_Z/3$ MIyMNU;팟7r87N7Ch\twّ^VtxH{Y7D PY0ӣx%]RkC\CM" 2@"+%r"i3jx?RcC%If.{#_^R,!Vigb9|ǎx ^ ty4IsD4JBCE^6 h"@BD6H RQY;QX Ch(MKg!K/Hz }7\--7hpPNLRQ93CjӰz^p)Z4ѽIᶜR5$Jˌ#Ixlp^$9w mYPE~&ƳCH`~1m)Y!>h'&.?ZhO YޤDŸA>JQT~B7uJ3/k) %<_t"$bg ^B$A_6#,t0uќзu9 )#,}POBP0,g%节!=G|PxiZd1!p0uZv*TǷ/L##֊vi\̕v|-vڤGC.fVP5ݱi*KLT:a$r!$fGH5:RxjY[7ƣ$1r9צDc|H!_vY rLKL<#3% $jz?qb H]pa1`x9GYD2ho7ΖHr@ezZmoQ4i!I2LTҖ!sC[ZHzQ  C8tuRoBQWv_(t=" ?U_rCuۄ<\4߾NݜR orm!!Zk 3 Y( ;zJc5F$O{!X &!̄NqKӲ 9p;Cc7XijBTb%C]Dl;M \B#G>9L -(g7hIz:A̴K+]S@/GWCRN; JR c=s ۰嵢Ȼδ\\<zog@G5$GrZ v=Un HdDsr~h.f7YkCOn+HFڋjt?s xoz8կI+DZ3PI)ߊȼ<8uf6@zyUyp(6 aAk5c<^S1Z6B |k.6..2ڱCQcUӦ7 otiHc+$uɍ\NÙ'|y"k`p `7jYMJ+&6${n`HIqH4D@u$\u>ǐ#drDh=XD,.(CAJŌMӑPN0~ڊ96;bm9 iE-?;. NKm]ǽ'iHE8A +b>c:]#\ptn+DVZHb?u(ɐ !n%%_Dԁ 1*.*_h_@Kdq2o0nꣴ%2&t M&W:y$șUd)t! bxaoCؠ|#q4N%qI”7)fIa_'A*a@`>6L 3\i7Ģ }xS<>Jd1xo;z@;Y )XVsGc[vƎdգ#U@Q^)Pt^Uᴿ%~]\q"ߠ02.C00\I6|a!>R҃A7 ~i}S^WYoyF*7оV:1(.U߷#()4zº3~@V}c]0ՠ V$Qy\}_B;G/kv4!),cLj=`7p= Ki;-_jkK̬,l?Ĩ(tCV\ö$5~'ADŽD;P B5qHo I:A (d>C#H"͐đFZ$a^^ZW"k5mt$O ;+4I;7P|4L&I\#6 rÑSlZĜ~7&ro$yeV16?K tF@z_Ć! "ՑHӥ9 k,=F炰7%&; +HREFwm a{|Ӵ"]* ^kPz$L%zt!iM!Ͷ,b3}M'i&k&\QyimKVʘ5$ۀ??~ -]c=xI0 ;561!ρqևC^`ֳ728J2)<n* ~xT˾K^iJ)k⥒'zDu$fǽ\RF[Y 1G=95@6yҿ9~WS2ЩByEcS ,5T &\/GtG-SQtI%<쭙) Ea]q'E@_(}'+ eRpJ|#2CCH@[#diϐD|HG,D~(n| I ^< R2̺- eF+X.pDr&vu!eP @T q'6lʜ7K I 8hw!T>N~8^:Z p~!–-4mA՟H-kr^cY}G~wN_;vtI@BԵuҸnTz *1?pwšT8[Hr_=]RkGCKqUo㖻$|W3H)ԅE,>/E+$fr`iTԨz2'۱n.mSTH(3ܜl HWW1[H+I,D'Cȗ"PxCn2,Yw4#˽䑅8?&q/S\!{QGsqQ kʽ od{FA0+YS'5neiP1x7K ֫|Ue o;Žk]Y!]v$9C,gW {Jx%|aI-+s B &ɄsU̽~JEX@$!L~%Htͦ7F.Z{vrC⧽Oat W8!.mԽC&^^%pIhhs$ 9"Eūx"8t6@f 5N)1 -&]QAޚw焊%b;2rB,#iLˑAlġg?tɯ-G~ ,ƨ{_m LHh"ŇRx'C-GJ1u /SJٺHF665g^H%'G']̫&Ǒg|?Gm=CQ3s1iB<%$!̩kUQ!`<{&@*}̑x(AIdϤX}٘Y"DA;בe+et@@1m`r7!Z2 VĹn,nDf[!HZHol]?O&ˑE&~RH,>=۔+tTFY~()TnRIS/@Jh Ֆ@ɳDtfR0:ޯ+W^uq'?lzfK%qHmPL /!{Iϣ mn髎!Ò2Z Rۋx'JhM\>A$P/<.Rڐx xE74d_Hx_NɐkIW]j !Vo>IBDO 76h}93]y}+R=miuh!D_rI~HA>xGXB m?S2w;٥Qh8FI}%Snd% CB .wDoyYF2gOH{G2I>H S`:[MHhCPhQ:ghΕ-ŊCrP> \E`HRC53C6ڐ9r ) ʓfptzϤ8q7#Eg)qO'ߘD^պho. MOCr>%/RC+5(#OSvW$f ͣԩIϙHќK\W 8Q\^{:E)w &" 7N[Hl{E# l h݁*OÁ|{~0s$2X}!q´pS" -|Oߐ8r^tk7HO/; -I,t'e|H q1:HL &e˟I7SG"lipgf  ^DF[mbiFu 1vtL!S=lС rR'$RI$/;!!Ԛw#CrC^I Hf&7 @dy?=Ǽ)ƫvx ,y|qJ9m{b< p"i+Gm'/zx'zvzwz\r;?MG59\X kC }@z%Y>TXety!eÀ8N8D'cz)͗/yˉamb; EoƳw.6X,@:Ηy|K U{tfH>mNxqb@9=0XJ? HN$9l8bpa6!rڍ5CgKԸJ22 mкIh1į)'5Ԋy n:Kai ~H6})cxґ[^K*VTBYL(, w}JRw1ij@"KQzUWG2ez(2\E^5#DǬ_ (GO @ijVazOXc)'Dr0!CSx"Hۖ9WD"% β81 Ƕm5!`Λ $g !"$&O؎r'ÐSݰL ~aDJr{HBʯ~0kVX`O-gYZ_m; y:pHw@N~$ ęH~yd#G9D٪DBz1$5E %燭R oI&Z㒨r8ABLSC1#H Iߑt,א9nI,J牜f/' W=͟xE8W zdnyxCϷ'`BYI!ίeS!' ~Q$A%A F# ˌI$#OA (AO#Hb&']xGc#L]ƩpC h6$nX ~ώҕ6cQ0dĞDE?;4G BQO)b+CM'T]i洺=r#c b!FsOL"iCNՈ'OHJ/%4~p%hbDb@ZCt%r|hGQ00N L6&vdn iV Y^r|5ɵPn2ı,ŖÆc3NK=aiݴ\u52$¿tl Ap߲ӑY$g,\B.xO DXnw~s4Vh~d"ijN[Zo/A$=45?ateҶpGgs] $rČ,bñ2dB!S;] eDbD#U0v$<#M/@d;jd XiP?CRbR9DKsd"OU#T!y]m'?Gޒ$7sw#~'>Ej~ `Nk)᡹(|ksd&y *~rJC0QDҭ $2G]wMk%B DrF3 GcSQoMdUf}0q2Y |[oHAylQD"+]^' 9 6Yʇj*5yTmg"&rRg ʰX/7)l)V On,U% ȵ;ru}0%=}{B"ƙI^ƞNZ'=$Z%j$o^lnLp4hPy Zb!)E?߯1:Jvi}hЧ)Aج1ci -BuL|P<+SHC`Bݑ+$:KϾECurBr.)wH~- IKJstɜNyّHLw$\9dF"MAxl5,.IB$=#M:iH~1i+vcYj]&Ayz6 To]pʈV=X|7/(]8|H_בCVT?8Hw,wpS,NmY$[}~CrBҰKN['y_phQV>J;\f'7 IƱrZ[⁘W@D&| p!t?$S<ćb"QY7BI]Lb\+); |{M/R寉L"WFWtrY[ƜzBq;~G<$| YqDU,u>kKm#8,>/r׆D݇a槜=*~ȻzNW}幉RI;-s0|˩8xƛ;i)$۷?;*8ЈRѰܺ]6J|>OpNQagWm0w#]n\XdQIr߸N9F&ÏU lH5S1[$iyDՐ[#?zP&$gY o',50c9X QZ?hnPr}>Cenq*Eބ_Dx(EG^ZJB~_m0ɩ9QE]"ҮH腲8si+-ƃd, ^41~7|;Sc6We(;/#84SUIߢ#wDm%sBͪj IbAX ?zwJRxHA8Mv-I(F&C^5wfr|ШGif|?=9p <>#.&kLHjpFBv F.uB*u1y d@yO/^>Z9c6H8S"rz^-8DDEaּ_#R55HF bxta&.vwB^(>OZκ!ͼ$zQݮ8ts5/&$ǒmU~ǒKZR3+ߜ&>NzBn$uz{ %$6H$BO[rDHGIMD+l l@+fܹV*hwh1T42pE]z}ź˾dxQZZ ےЇBp۸& hi9(4zg_jK<ߞ(׹@W'_!y-{Lq= ߟ3NXjwDЃu$ݜFz!q@k'rc 6.qO$$0*{#ywY2)I3&'؇QmvGZhDbǬx>]5 k&4-\.xyqw~ߜ wݥW|"{O$q}pɑH B ΧHF/ׇmA C?9,gszS &x ߙy!$eGw"%5r,I;$F2ޡD(Q 7$uw}6-ȚO+r+! z\)k%=<3zҞwcZ/CCCJ%h( 8Hav6'뿓oqNzR<9%sEz-X%C+hɁ\tPdW# ϛtˊyA,oHh?ѸNz!o~L,M0#S ;"Uz\BO2, .p$9ڼ&XDTŠ)teirarƂxYb d̍}>;vC4C`[[#P I!b)ߐj=}.H̔+d@^?D?;ڷy"L9蛰'#"C[TJОkAHSL R#YC2"~>"13v(!ʛD8rwÞ }8pֶko`$2z+YX^e5IXipQkTX[/JmY@D>aPEG¢ avhHѵ]XE&HfHCiA HqHδW$Qm8 +b $L 3xJ@PD盛q%x0ۉq <;ů2;BOd Z )Ҫt &l"SyE\ k ,yiSEo<;;O1O#2IRBݟ1 *J\$fpgfwl8U(,,}֤JJEvJĝ[kH՝ʐ97 C7ISU?r'ᆴݝJ>/AF>2X_E<;_J D^[(%f<-$U~C"M>I7DEJN7M7DxK_οȅo !Hb띉N &Dj"d$P7$URF^5V !{Gkq v;pr|D`^jmPHdGv6=г֍kH=Sr-&/RҭiIšߑ@J#39ӊٌ]Pe>$atzm;HXvG՞p&`!;жuw1M$nÂ##Q%OuMɩ)5wDoȉ,A&f3NR[yS,6$tU3BC,D -.k[^;:wJ]@o{c&}Atp2hہK@)>șģdHk}䈏^E" L2:xTW?IRBS6&241H"P!ǀߑ=L_XSD݇s?vD{-nT~t +sqZ)n%@+sbGyRvHte&2uVGxR %CL!2,2jR؉ >;6 ]Hi,J6|,}zHtvEf@WdP*I#Gz%2CҼHOT9QSdI:`iI)ImEo)i8Д.5 2S)D9jfzۍ*_Yg*-潁HHTOvK#4c1 .{x5oM t7/y6/DF5ITCFOMn&rqVXyz~0Ikr6Gl'AnM&RDJ !&2؎TF! (!˔E$vf,<ٽ @DZG6E>>yfԇ [Nڣ5sk#ˎ:_ /7|ЇTJNN3vOچkAHN=:0%F.0yvh=5$g 4i5~tϊf6(Yn-ƆH;~{.Ȕom̝G~ׇmD⩷iL4$H+Z@l7?v4_a.Ͻ-|7Bn)g? _~w@J=}ҾaT-艤ggG@Fө1AC%FfJ\dlc=N*=7%Ϸ@b[xvlҽ^`d\mH)gb q4d CA IϪ%@5&_ǁsA$,N͎BO'AxB=Dh3·u$/6G7wd ty3DC43/kd'̳XybEU[.B:4&r[ Sy!YS ̣l$Q BV$$3H A% a>ў^8jXZ<T${J2L%BDz! $t`!cFhGOdvkPezWJ2if/3[dHoXg! }7Bܮ7*Uo!bVT%kTlo|kj˦0Q%UƃO=832@/8,lFcPC"==pp=[|!S2BOPYgx Mq>4#npmlʓ?2>뫚XBRz=sdOȚHHeJD41w+RZ/Wt-ɏص4ŒH>^Z0i)B.B1PO"Ou_ǓD9#Ȼ$LN,@3#1(?M<ͼo卩 Ã-_ϣ~|ĝB3v$bWu"ʒ)29ļ!.UIh1#>ې@-;pB ܩIG"]DCJ#7 R%CGaM-Mh:7I<! xߧ^fD.HpwBDk+ vl<@!z[לǕ:DYgI svBdE>2{!tݡFbL=Q] P[P`ğHJE?<Ӥ!Giґl]Hߢݹ1F浀}qhO6}  Hd< Yk)u;#bEqRJwjY4Hl~tQSv\s'Zة2ժfp,H6a|)e!UB'$mIG 9vwvpk I4G~ #VZPXe/R*k+w5ՋwˬJjrIȯo$HP>{3·Ʉ>]sM[U-Ik;.D&WDoZ]^bdd3bX9!)-ԡ&!*C?8rR*C(#۵޻5V6-~)ZSҽmV;%%-FcR9ˏhvoX 7 E$6%m\bJZih'HB"J#_Lse.dٱ(NKtXV< D )3o c؂#1k6 (񺰹7mjN8֬9w~{QaGiv(䵞Y|F ;Ubv!nFVX99Nh~Igg*rTAfn4POTӎO( ?t3'5ޞB|lP2##V13t@..|)Ӻ%8J:lA4] ,/&!J}+aPwHc5!QڹjCU%2lASTj%,jw<$cS<\̂\ N8!!#SHV '¼YAqg_a"} !>A#w_vbHT%T9O!&'*Bvi[G5~y3ӑ;[}!bw!"A kH4vdSQ!>~/2YY@f[ R>Dpԅ}YK7< /1kF" #;;VHMyA<V&r% :V>gQ ~/J?P+BBLV1{ #\*ҦSiNC"j__(b1ÀGSqR2 GH ^Dw^~'m+2"cNd hȖ@+jڀ͍ (ZKiD0=Jpt:l/hݑDgH^\4trF%Kڥ]n$xER]Ih?T4$* z<l ͛=dfPf$& HD޺Uq@FVËXS4snq,-)Rn\q9X/ f)ӾVj&/HivQ]ȁ܋N4OU&0)ecn23/Q¦yU`>Q_gw+IGbf0@S=Decau+"J ctRQ-qZ Ba`H;"鐀6PR BЯ0wY (C1?Ѹ52CR] ]d2+BqB1ވI]KTyȋűx] T$a"G$eFE)Lۃ|_H@GN؁#))ypKڳ ĮH͸]iMJ vRYcҮ t\p FEi+횕H0C-uYhYu X {8^L動uh5eem4ԩH 6I 4?OX$qD.ٌa"&&%$iɅ"EN&Ő)jkrZt:S bHh_hifXP _Ё'(vwZ]);N(π;O\lyi$4~Wu'Q 45Qq}Nd#Je ѷagE_dx\Sa %IڟIS&LK$(55"Ҫ JIvrNW3,ۑ1MSw"%9UDZKѤg6 俺)˼f %^]'D$HXc9m*֐=PqyHKyMITH|̭rs m@{§O:UƆj!$-(/GiL̏;F Q4~H"F"4{,I( ln"lST#}h+Ϻa—!:M@@ XnP34 ySA@HƷae\ULC)|>w|3Id2&?qg6<8wc!XO")$#IPRꁬ4MH7%~qvMҜ7?5FFlwFO~X*6h]cAhWsErdվ`N B"+f!-) >63_8<:8NJr.Et Cu@WXM2]tn~G(XYsJDL}=\aٻn Llx4Dz$jD7$cʶQa!LTDRA!B \EC! bLos}(ZXn2Hp3LH) RWH!!)7^y*RHf):" ̖IR˩u]}m#3|vI1 -Q6$lV礊#BJ$ qÛ7!9>CS퍩c&胩(@a1nӗ$)0?8(5$\7ipdM^kx@{\vsrt~7E)2yDTӏ*" u.տ@\֑$W:)OixR;K "H|G<ėh==|j0NFbJ*h<P4z-ώMi"!;N&%B9yx`O=|uctUC͜Kڡl&9"HTVO5^J71[ZL2OteQ"8»/&'f=9DL*|Z@G'6lK(rθҝAwKNDH R9%ðϭ?,e]-P-TX=j A:]v@tK69X3yM|hxoyA|jy_tN٥@g5 WZʋ7OHdoꗫQHi%TEu$\0lw|KrthZj $5N ˠ+gE@O%W?~q_0$aԺ ibb/j5]=@MT(ڀo& E@v;^L$TAbe*g~yaKdB+¿JAq$6 )>?,2t 82:DKrA2(QFĽ32$ Rl\B 7tMzd U7W7`ǮYx "s Qo2Hұ`Il~?‚w]ӯI5a_2EFX,ݰ`清Y itGpi c Û;/&}{S9$2Ă6䑸 ]NG"I"T9&UYZ?+Pc(t-lWRKNxjo7^DݧܬFfηNρҸx{#!AՏNG `Xq54 xq!HxwBuc]XHòO Jш[ ^2qTq'[+KDBJ=p2#TaymtAo\n+$PEk?>2G5DDP$RN9mu/p6lOM/ǓH7hpʞ`xypFnPrt ٰdˎk`*nUk ;Ԅ!>$l5dmdˇA%ųGZMڐޑWq}HqөN8j8IVՐy( SBTnG^IDל>&AOD]q}҃"6z,^h.d'@JT,9q#b ׮.c{ ] i9r6j3IrmKbzhT?S+H@t`|rڜ#ZP@{sS2'1nqd=IS]PX؉䐵qQY) @-W"ܔ:m i4 fˉ̒NwN .4&+ oeKV,vJLc@VW!tk&>Bd6P,^%*Q ؕ.Qre@^1S.dKTXr8:'s̡t !Ru&kN&5# )b@6sRZ| 9iK:#!4@Eоop+<:ѿWn[t?iDKֵԋG & Ptn"(]-Nt0ˈ "u| oPbgII萯 |Et  1UJTy"Ю/oҳCo`U()m<|%_p9pϴi_T0նCz_j#)@\o%ȋi/440J1y!lg Mk!gx '©9AB,"z2*#tKP}>JȲZ@yk|xph3->Q Y9#S_ȷ*HIW0x7G RV;E;[=AY>AmC+kMIhK߉Ҷ}4x A"WO z/#ы @D9D`H '5L簔{H m) ]n;'<{ 76!\=הit!=:2For% y丣"*_K5݋!ws)o Iqkh2j˽Ҡh|PKuYH*W"&%li~% ų@RME ǃ_ұ"Rk|r`ץ'/ye`L' eGxy-r>1!j<8@rZhȺ %7v4`~79B dSOeȱ/E#_H|Vw\bHw NJ Ĵ9Ȱ?1Oӥ,5P9g,ـ[ ;\1.#+]NCXj;s%)s?)&L"ѻDR1s[vOIxN̿@mΛ3{qĒY%s'|gu[<B(ӰF+~S4E%Dh4J!HXZ\ùR_D>&&2*QiAAC<AE+=TG?q]CO",8- }"Z¡ D7t%uBȤIT8?OHʀL)la<9 SF4?I. /]s򎈵g 3sa B">Hr;]v =G"j( paӐpHt<t[ia7$ Dt*AHzH ɣ\N3Caaa9TU2ItɄ6P r8_?-w}ZXY0EAb0HӈqqsBh><;ٛRCSt$ON\10lZhL"#u I rY)qc=ҡk&8F}Xz~TI,ȍ`b!% UMK2le=VN80vo7M$((=D@a![+hK}OQ ^6ElS͙B1lvM M_ʇU t+8IgTQAxH"H~鄔1}|F~s*(bEYlJt#}t: {sXU%  dVJmב)!ETN[uK7ws6y@za>zSߗȢ/fy{:66qwd'29k(D BM|.sc^ ""1"/syFkzJ| 5S@vDi *匿r34Ck(ܸ&lHŌQY1Bne􄐔T ,EіiR\d&P2S@V$r8YĐ4_ 2J "JuN_?pm'>֯)ȟ+$2k.S((z}ݮG F1ǧ{jM2N!@@QsX@"1dJ9wm/;-~ߛ7}ٸ‰HV6B]5d)nq3IDD93y YZHls[Ju$jDGۑd䠕at(#ohlln*/IU[Ĕz>FoҪf\"B*- =ߑ|P`K"O4Uk&'sۑя࿓`~[#ݺ+ @Q(NQi@21ՠ#n0T+]};ymRx<&|o]_,ȵLFwV S6~ T t;rL&byg`@K* 4ʿh Ʒ~.m+ntw;Mۗ!?kK!X{JBYH2]tܢzF?{LZq4-O/x-?DJdP3=9շKa&r(F׼<Dg_ #:4d>q'KH =OwB!FtlHxNMy͓ZZ'Nr$90] DO S_JH}Q:rF68FXVa*neȣB?JG0ސfDrJLF]{ !d^hRaM=iHi2IM?@JA)v@У0 5|pКBD.m&kXC.wTc"E(|L $G_"E_x3op=vo} I&: ǓaПuMF@b)zШ2`QL||/}KTyLc["{i 1gqJ'^`%ۭ$*U&./A6đ,- ;b:NZ;RFҵy_ MRԾyMd2Qu$B]n.Yz-yC=2ɒ,*nA@U%g)[bdxz M6H&[L!Z]Zy Edž^y5GJ&Qs5{BP?ݩؼލ8qۜ=mXYz?d|ȴ9bUgAg> zVslt1sLqV4y)&t(8!-:gjA~i[kM\xʴ!U+G Xz >$1Dq$I_9ߑhz[~ d,ޝk6\@w$!'dm7/I[tWtwk[̒Ia @:=Fcd-Nr W@ w :\sXGDH<[r' Ɣ:(RP`LWŬ9H߿GiW_ ?A$}>\A]Ao&"' wSFq^.ځ`oae!`P$EɎ\|t4,ډxfD(!~u4kjvAҫySX*?75}Mbu%xr,;$;f,ΪXt\u fm3$p!|:"TwwC"< u0Dq=JKyQ!|M@1vbνz472Hr(wSZ!mzV $ƒ0=>.q[jd]w"Ż=#Fu0䫍e`ċXyI۫ tz16ɟ9=C7~Ir y>LF:R -Ќ0Dޑj^H=t?Hc<8"w;p8G"~IJo 9Ʀ`(W!ZFPJ9(uR3J[da 'x: ʜ]Rb ; OLs@"BGtMOU1JdרG6Hs ItN{"?!nCydyBC"Uߐ"@r,VIŦteݏ-{`h211R YBh=KX3+/һJFGJ;Mͩ!%1'>ʌum<HJB+Hu])Q I+$\}o ڑ p856C#~&m:g_B${#Hv)#%PP/}LpdzcfJdJv@Os10BywoI->#".&C8 3 ȭ]U:kYPYˑQ}>&]D4|47ه|㖈 vq8R=%Wg"aڨ0F~w,2gx"]GJMlGCڹ+'T2i UG.Hɤ<[",8pW=O$95UL"H>O?G+ʻR׎]zY@p"y%$ h/HOe"AW+aHSULyB% B-HE$lMW@w\ ryĀ<90;5YQ@I~NR^{Oڍg"9?$[CWU.Wg.G܃@^փ#A l_{75ɀ= T|јeK ܫwFۖtT (q[PZՂqZKq$lNt*z,G%1xU!%M_O)QY^-džҜ|G ҧ$*mze(`wЕr`=K_ҋK"")2$Ć_h*;/ L}#7fUOuBO,93,q%K:-P *TQ(rQR {dxLQ;@}CD jkNFTCh8ܢ>M-"F2 ÑTH #"4Mdiw%Sր#Yͻ3AZ7M_}QcHz8J44g|h 'Tc_# 6i 3tJdJmrP'}XOR-[ӍDDH鷔)TfPn:CJ> F oM7:ڮ1Jo%ertgON":z{Hi>MIC^KPMۯm6WoUh3`}9GMĠ$0 f͚")ϴC)Ӏ(o?jօbttu$E3Im@#e5$o}(nbnWQ3m\)LgP|H~(920@׵?;=|X?%Cl{;P1%> d*=2(?"ҘOQ3WYp-SJC6l׽T6rHp~?Y'GbK f6)мŶ *Iۇ$!24$,G.yw$=(q٦NL bsϲM4-7"P)Oـ4UNONP,vQ.'AS~{cLoP|W H|X J g;vk }?ģՏP1dV `a( YޅD|ajZ: b-פM'Ӄ풎ZY+)HO&arZ4珄eR8b-@Fb!zrKÐuaXF҇PbdhI:7CZb kH~:$s )v7b4`*nLL$] Bv$q2?-%Ҩj~ɣVDe_$2UFY.q)*pQr(qX~q\u䒺%@^ ۋ_Q؍}Ā^#bw3saz,!t'p#(8Bkb6YꟍNz z(ݣ"QEHiIl|u}*'z3zB9U{{m>vUC[~13NnXHmZ+a¢JMaTB!V lI[pflF΀PkgX Ȩ3ԿZV"st>6ΪI@2Z_0K$W3@QtI$ҭppsZ FđLtT,pv0:it,dDx W$v C~vKrё QjwY l=ˌTA LQ}Dj}u=}_Qa)]q$023)1G<$1@fH(Dfc<9Z۬D/$1H!y5!,*5O5ߥov_n3ȧy: g-ZgLy#,de@ږ|Ae+J/"!:,׬n8;V]R^MW#s^ =\"Rdl $Jo2TxP&Θ(_=ia@ڝ=TF$pl,NFÚ$!eNhM?WtX;f7$VWNޝ\,zG޽3-ow6|"cA3XIHX& yP>V@^3\S?6dZݘHEԣ#Of $F ?߽:> PwRLLbONU:d|&xq8a$x;O [Ϟ$µ8M~.BWG*gm̍XiJixUsH2I!׸O׼{;n.gVCYGХ[Hӷ֘ 4uqW;Ū5(8k<Fz99qF>b‘&qcIbʑ %rKxhr!_҉yqAZc37RP Q#U󴿡 g[|e=hl_9U2 us ': iS Bd1Ht'OtKmH˯y9.:57kB(ԍD.^,{qMZtzC}'\n2P/sI^:VθO#}cN8 E+eui\YqM8dVJE /4SŰa-EZtG1M `n h{8W"G tzp9R֋QĆRs'Ve%Ӝ$wM2^ E֟#CAYbhj`4tbBCLu;g5 z4l#F&~*=GJ' 1r]hGRjd | )|N6eHXݶ+hDN5 4kq]4Ǒoh0%e}=M O@ԞNwt"[1$[aF/ƓEz[* Jw(ŅWODT6ěӄcQkF&)}#De>a]vInut7#=C=9-M#= N;ݑaxBj?ezu3+ RJg,m,[@9Iavg'w5m)ɫ1V%lÑQ,v*Ok9yMHDBJ taCtM Gӥˡ<_GBRN)W d,35=G{_D.۶}CZDx*~HH4Q i,]ytDizJ#/% ,?/V \03HCwD*q{l'CT XW0:win(v0obegG&Ye$Lm&U$VtR6\mk_wb08!eT&OQǑFt% fLڐ Fcp6`-}u;+- ΃3 u- ~kk.l LJd83AeH:PHH}7bworA} -uGdh9UBdCb=.]if9lOds8_&9BVudp(W4 t_/j~hy 0š ɋIF>-8$dHiUXwU/m/<A*26ȔrOzd"{ ACRf0( w*R`i[H; +;*-odE`r' P)m3-OE_G!vޕ_cIrҲ'p8R*dN?Tщ&-SoZ|!# R)zx 5S+ŧi녈߽Bj;)Uq?LGIF.-VzlHڿxn4}%`2<|'g@>R&iKC" {"QHj!xafH -j绦 E/zR>a"%Z)[Z2Hj͟}*+bz"kJa5'S0P/`#TG>xH5؁h6僦QUG>Q(¡Vʟw\Tg )è9=eѺ@$# PzN+[u-$5dT&a&ٟ,]2Mts7ݛn[η#8*\[z{"I$U' @rs"5*mH~MX_gX%dKxD0oQkan6 pB`Y#BE<7W|T?h9C>doC]%tv;V俨0buc%#nى\J^yZuw;_% Ns )|"Udbx()hDox Jr=RG-Ooح@TIHEgx9"%EBKrPQkEhG\(!ߠ0#H8_+e|W]VJ'+@LF`^_pz(s4m`*.myƕM_ (r:0֧8('K [=DeWc8B0f#źJn RNod|ȦZT%- Wmo4R*obI 87lQudE'S%gД I hCBMiD%;^9iw#sD_]DR^Q*<8 G߸qQ(h Cn0lH1|7!5zM1h[# {b#09oNX[U^rn)u8 I#II+.=ӑPa>y)t3HXjI+Zţ \NV 6:R[f j ^ITlC*!C4&hwH +S#N4%jq $)٣qG΢Ο*M/w+~K6${Ls?NoYc/sT ;\v RVg~2 Bb!;`@A 2ؖQՑ,P2%[c4>7|Ud?an!ey3[p !E~e QEP4O𲸈4 n\Q$QM"4 EpY5(^&p)\J0F7u$ςߝzd7{e2FPCb̢ʨkyU΁ӔvlC\}K3w"mWNl%DΡDlL9\ {7|k\εNU \ƫbɹ z#\G *G ;7wMSÑWH8&ԫjms6Wc#$ EXE:!Zqv?D:NwRAԥ$ razѷmfKTʑ>q"gDCRTKoGtDщ$v@N~2VcF WUpaY:˨&FM|D3K"%wv,F$g"_N9!S4J%䨁d@7PL[$5$RD/@7uyhPjdO_& T@2}ި}}Ek7ldi },yM'PƑHBl3EF?tZL;J 5C!,` d|^H\zX37@ON {4~&|j5$Zxw/"lH8r~| +RΧ~M8R@^? &FHLrky8Ց]d++Au~C !i>i-"*tˬTGِ*={$/ȍCE_xFzvHS rS79Yft%ѰH m $.s < e@>]$Y9|"ٶPIb(LrX/H2<~|aF@&>}垘Arr(]۔Dr1$=%ΐ2  HF!Bbrl 1:@M~ɞ| "JH: ,w _Lb4J'>84-]_+TN\Sa5̉F "VB"rjQY#H&ciՐM:琦#_ҨQ"H} N@剤#p  Ҥ@w`a↴>iRӈ䇵N(A|v::lG64/t"+\:#VGx^SjvOAZ[$ƸK߲ɄUCM9$($ R!ׯ;rm"^ yՅX=CŋXdUq7*Ѣ-f%%@ IԂυCG_O[KXT*PmW(ʂ4 ='?6 4])M;H^tA.J!벼;&FZ^* RMh&A8 ٧xQ6h@bODgTPVQs"4RBFLm "cVCO'~5לЈJq޳P%A)L(j7$/r{S{q. 8A?u*" **S27jLL_JRH i3T'b{(R$G# M(c- xB^^Ǖ+eHbFxHᛊg;vsZ0:}Ӎ };m͑8BxQx+`ՊnvJBoɛG*tC* A^bҨ HhX|3z/&B3#i2 9 G @X>d7Z#kcHRFđ2=$yiI%o2qB+%t riSC<1s䋚,p0Fܕp64榸AO_1A~Gw#?+7'prhzQbŲ|rrk_/vMQW {U/QEPURVJ i0DE/u&05;ȓ2hN+_RAB' A1 RaBg G2_`1(UV; y>5*A.吣 8'=)|R:Ps x_PsM\N(ZY$zP{[]6BhvOi3t##~Et |e3J_u_%o6^Ũ$M`w; m}DyFX1<ّWGA‘Pġ` ;Cn4HyPř3RÁb,@#'J/bPw"r6/+)͇6 94IR<;b=(;)jl8ZKu$I>EϖH$#r^dSȺ96Hz!Rd9!z%I. :H^O!I:X 0)&]?2A@` $> =D(HC.*5Ҝ5Wӑ2bhv )%իԞGӟߜ0 ߯<ʜ5/'?Kj?bݜ#}^6y!knQdMEr|i '!-dۂ%a]R#;:2p4'=÷OJVP0A\C!^RD Q":Ԩ8AԌݫ:d09HS`\9?hjkEr;Y&Ќq_@B(G;f@IvMu^'DӬ LH`Af#OGJ56ksԝ5#`;I<"afUt \QRY=}6e/ʑGe#Q> ANr+I"$?;~oὙ#KTkÝE'k拴8 ֆq r\Td-cB75Z$ S>1 VA#9Iw&*+k m2KlTbC~*&l Qvs"\6#uc4NzH"b|0ۇU+ᙿFP_$mhPqK$ U>q_ ߎR 8_9P<هu/ >SS.f4EnIwn"AD>]>۽}rD'x)Um0( SEv}l\|kL=6p`~~K )9~w'@i<)YM;R|'l*D|@| !UQ:׺IE@HH#7 : mEgܑ?1x;}3wH䥹|"B_o!NZo(;^]7LXsQ^%9k@Ld3 ̀1 0BDŽC^Yyw5`_fENTO~Gћ+=H jw#+4 Dx:NIَxC. Tο2|t gHKGlNTH 0*EWfė7GrpT35/#'٢) MJNr $UuyY!i-8Qpv^ b8,`w mc^{[ytߙ`Dk˗53;$ mH\8@}:b$π1o(0Y' _Y]+ K#Vh;͹_٭qœ7W_y7OX7Q.%GbL4&!1|=Q{l߰ɷu" hz F᝝c&A>gKvPdRpm%d$7)C*9ȉ~eBbDݴIzK\ }loKvk&<:kO--vbC;cG"RL>-ryaHQu&Zd_ a]<' 5 n, [:s*U6?'H˭9B>q7 8G|;d FGBs:Hђ(,M:<ߑ'٨d |05BuGΓcBI$?W #IVI'rP2AZp t"ާAE]o@RBB EJAPCrZ%H miDmCKRjLv'2 ȼ.Rz-)L\"Z!/Ո&eB&'$g7|EKݫMf334:4SRMaʤʹA֖!FZx .m߯zl#)χ!OA';tڍtyR(_ 5;0Twk~@8a{CR)IDnѪ4Kn'9ղU-~Io.?WΨCbׄռu*_βB5$>g"i{}jH+(v$yٵD6*523G=wTONly?߇tVH4IFsk gH/W(ϧDZ:6N!0Xy[ aZ\"mesmL #s^-'H$2XZ&Y YTpL אPOBW>M"/gMR+!!ƣɉ:oK"T`~Rē:3l5&a̅SBҭCqԑh}H*5E7s IW"F8'E֏T5J0f:H1禺D\2?R'iKJk)+ ?QBhy߿N$XQД[I'ݝK;; 9+[&6`$rYgnA"CX:#a,Edq-xvZ}BÑ I&[+sKYQ5o8l}Oy٤!DGLmAQzL)Mj8&9JK JPl&xSW"iԓoH#H+k 9Pd<EYw`_8p$[R4j0<]\ʇÜ)Hpu@.!eWGv5"Gt#*v R)aQjʟ [ҟyr/g(XduO hxeThT/~9NUijC6.~.Z&Bz:iu]mJIwJ~@EgAcߠTW:kD}uRmh4tAcɫR3-FT-`"ww݉NKCnFh#ˠE# '~,kH$ڔ0Pm3#BL2 fL;S1_A*JHy:0ԑR9/ }-RUoاpM1j}BkBr2{G6u{!j'$j52 3KV՞~:c[p^D l673%D)[2*-L!=KPQm">2HO;=$DAs9ޥ_|(ndR7,z#)pv 2ԝhT*ϐ)lLȞ/K3 3&r+Y@,5{@;TZBu-C[6cgt}ȣ.8{#Hϯ#5"#(Jc(|4YAI=Rp: t䛗H(2J>?0k=m$8TwCIA]A~5M`UWOG:DݧfP>] C nzQ#QJTr.,9Q:R$P : $V Z} o3;%80t1)Uv#+`U+L~TX[#R_4 éf洝Mߑ|yT"QLH11Dd@,+0Z! ]Y߼(ӟ>ȑI2N QP1&>okbҜpMV9t ;Lyk 3/s)3ߌm҆RNL@3M]\$ ?/}AU1"bY "0rBtMy\_ҖnS9! 3uU],:5 J#FdGc0"L"wx^- nWAG[ISZNV.Xܸv$dV;$w5 $__R(3~&g7zu?q/ԫB$g"}@iS5\|al%<*;aJR ɪ92Bfo]N&YD$-XC"@!MУ~wxT)א^G;Q&(#nk8%LDV@{;nNg.9AmsK5őqszNbwy:6iJIϤ&'1`i FRV^}  Ip횫K@L'*xu$} a, eԐȆBMIm7GVδDDY^g}n+`+O>p31-Nm-MȰd&fȧ5!!09 k v7Çac~QhH9Jj{ނuCIƬ\L !RE:Ggɢ NJȀcy֧V1$Z.E#b!A<r&_wNO 4\{O~wԮfF섍xiq-'IY.e҉kv\fjū cʔf*ܲTaX#/dWӺS'x!/EQ=M $O, Zֳ3J". 2WnS͖Fܑ?PsY fB*6ՙzmJh/bڸSՆ+alwJ3l,K7ۄ B$(]ِ >%+Ocw81)=BaP\G}AYwlKb/@LSzcL8r[0_%QI(8!Q vt(rf5r,'E eu 8p"JzdJɡLRǍR>xTp4͖kg&&+ԏ K^CZ8ʸא,66O1 ;ه) F!eo(%a͇UdLLQWнTh&F|#Zyt9LG#ǑiROdsj :${B[9xmCR~ML[G:Rː5-wc篈tԿkz栉` ߟZfBR o74S_;rL$ZGGQZk#cӣ<[oI.C*JCizH !#ɕ,aŗ7 !pE)S')9Hg#wkWJ i!w1MQ:H=/B^Cv';_;.!'*k59pOߐ5;;G_6K!Iũd`8 o 9U65#̃#<Þ9@B>=ΤYАD=\4N^Rbkb>> }f-lx˽$y dGj~w"E/Crp2>8%)ȍ(H^'6JOJQ]Զ!,@Jч$r~_͔7*bXE[=HĦ_v͗wj@*W]c-vZUsS PѝHWH*KȠ|Ӕx x0Ћ 4D2 G>kŤx-n-)PYaGv쎂x fa2I[:%@[ ȍ[2U%b7) Աw#ឭȭIL F P%r-!#ffhohDo'oc-3m!J؁WɈTpc$ۭ) ?9wc]ݑU>+Y) Hbtu@"~\+2n|{qV;#v;ysy٣ij '䐬E|Fa#5=(kIfA29>5ܥscHw̛GDg=?>։d e%:Rx/&Ĵo E[E H`S!MlM5"-W0D:c $'Te_SBTMzLy2g~9|ל=ټ/Hal]8$Fhj;q]P*hSu9c*w~yM· Rz ]"^q|P?\F{k뜁$2!*OkK~4["'9&<תFV$2{@vXrf}ǪyQb'@9ߩ>XKC3/N\,#[|&%RNEߏ1[ۉ\& Шf!H Ȏ P#RfH/ ;h]o ._(S?e}m K1FKl̊Ǡ'$ g9RB;>|woxUz 2H?CR } vh3Ԥ#i+Iç"77TI|:Ma <2 4!wp$+2(Ԧ|T(ֿxvDDR) ɗ(ߐq~Ac'Yi ?܆4Pp 8g,OV' FMmfaq%r`wI*~ aӈOT;H {0Yq SCBȦ L3S715PFtw\sn|KӉR^r CMp3ՃsuVrq>𡘮tU"߲,Q$hYe.͉Ol,C*y&gw0'UG:Dnp8P9ϣzu ӑ*ȥSM~ܜ$FOX50tXl )֑?HH]@nTu5BQxd`!LcYe HK%%Ϙtġ|k~#6 dG}eP7&v[IY<$D~ob0iAjJ$p#_dVw"%,b`Z y "Х-G詉LxP"x֧ O}|;EK\DL(+Ff|';EwUB!)}!+Ul31 FMF3 \7kܜcN?qpl!g]* iYSQXֱF?$o⃄Q Ia=wxgV>gC\f|L%%v4/L\4JOWC1Mqu !UGDN R'#/FkI*QLESґSU~4^ȆwY"* Xp !4^H[ګ%|roSt# r%A Y &c Ma?1hgjbӘBՐ$$O߹*[@Z TTLÐeBo>{= * GcHK+\+6DWM);yz ƂxPI||C%*HĀ9LZBLKhv)!!==O4?59?SfU&k!Y *H},-8#1{"J2bѵY@w]e!$㋼[0ybYAdEȦg  9zrٲasFGx տX*E$ZH\p("$ӿ@,e"b).^{)gI#3^^Q#6*yFޥuwiH(*휝%ɾJwwwҩ]֔5yCf ׬*.ő[sFQBY9t/:_JS\aٜmR'lք!co/"R5P9k*#Ts-n1(<ۻФ`'n`Ś~J%{ʨ}3%l&_*j;RٜG#biaRKYI$PȱҐәI\wͺ/+0iu'RUHJMBI/i,~yP_Uϑy;=nw5JE==smL;W5 89Fm&-$AHVZ!Bi^h_6ٰ.g_@/Vu;$/4R=|a7:( ).JoD'wmQUhC޵H)ޥ%ԇS%?Rf갞%U?ϝvC ܔ5V9\P{/&V D6"b9/\$q^t4GQ*fHdH+)ܑR'^i$SjArBك4vǎdH:cHx m=p7!J$lVd1\1؈OmKĎݰr7' Iˣ8 &tD'g@4a' [)~Ȯk-j͑}'Xewr[oAW[DI1D7X,o)!qNI4+/(*&oCbWf+5L'V*)PBO\>9C}ay ԁmdKft,ifCI =.Ѱ!fA]RK"+d!5T8Ss؆A4W_{FvϿ#zHwFkͯO^fAv(mԼ !U`ȉyL%͜4hybAq^'>E_G:wg h-ziLOI9]]#{lJa+f`= Mp$pۢ:94GD@nWMվ7|gUP!lM8 )iVX)i mfq*Z $UeZ p+"t{kˈ''  &OdNnB0QLT@Úb7DK/EhWI:۠7#II .GYsVF^T= IͪT:5]M 6ぺ#t ͯ^xʯSi%SoF)gXFB 6TaQX?|vU%yK"C<T8k"yW)l!4I*i H28~-R;<A% ,Ou[8OHr<0&rB[Z _;vMֹx/%rN[h0"%S:MƄRHՑc?h&V4>^v=V* F.`;АTȻw+.dƏ(oBaLZ8-̱%4@+%b%h, v\"F?HrVI]MHqFYsacwyJҺk4VPއjv I ,|'7I$!7T̠RbmNL[ ym {Ѽ]:M~t|Đ SPS#X${CJr fH8WdCe#7Gz'W^-Pæp? Eu s 8LJ64 `"71o#AvV4HH8HR͈ \1u!V lx;ӑm-[tTT] Su.c+CO o:JXNۻ=$A/3^ .zdAHcE+Mx>'iM9ǙïIr߰^1#43$^HGkݡo70 4=-Գ(-bAI$#"Ts}  | sI%{^!4уK|{EC ߤ;/=(X88xVzRI twT#~k%i1n\9R:L4kVQ A/ @[G$ʛ.P6$P'1ל&>BG^TN"=]r$Xyw ixi$Rėi{(vD'\RaN3߽ҟ4DVK1'M@hi3 & -~T!b1M>^ >:g `Ub$FOɾ\l,r䡠B.Gsj#F8!xafcU c Ɉoᘤr |!D+4lf ITF@A$H4kN}XHB~,#(^R$}LaCb*|osX~aܐ2S7ѯҔ_SeD2/PմH(Gl!Ds _`Єf(8bjEZQRce>wJi-BH|u$3qC2()+;G̴=a!˗:MHwܿϲi"Bk.dGUŗxE{RrT)\a p-{;˻;Y*,ϥ}kٺoq<#Ѯ* BA^nvjVy=ϪO>:˙ɤ .`B+jVMDž@d6#/E0\sTr;?yO:"ѝҼ틌Aid&Br9> ls%~AÐ@Րwcw|wv2ye8v#I7?Bb[8dJv#t;r _!V9"c)_3_2h7V aHj zasB*7:<8zr&/_C`9d{mq<#xGN\ԉGG>jDVsdoPKoM]Ձw;!-hMdKţgl|uxb%G ӨG{_lOP'Nd"tDg V/H_٧t!JR0I;;9'O@GGm#48Ymߩ0rXF#lO4bpJp9q7DU@Dzʫp ;y%m>d1}%V+|rlUA!i1߈DYo=Ңd׸R9<]ݤ <;GA4;  Hɯ o<[PXf'g~8A}:d60l).GB"˙q /ǙRDf<< |8}%?E?5To^סւDOu>J$92i9$Nc2zUJ?S[e U|vqSB=c(U~<%U3QTeЩ0 d=)E!zxϜ?4rxz= ]^{8r{" V lxG|AYz'PV_@tΚBhr_DOgQ ܋\?sg*}$hM6paw?M*[.6X͔ De}M램iNiYAgHBi+Q#:!&4Hzݽs2}̛"Z!I8m ͢!t]IO &]C|M7~l?4!ȯ ˻HJP(@ 6:U)d>5U.$n%" Ydz@WsQ!#$l Ma!-kzL"Ȑ< kAvjDWO:Tf~Dd ]|ny8_N:j:8F~&ʮyz|i1$ $s<Qg'$,<tIK7@ҶoICw#t$Kr J/9z"d^ӵLڅYd1'*j1Jt|w I#kб!)w |}t",@N%ȓf RGiH#HcR94ђ@;JqV"ё@&r[l<8АHTe7Xۅژ|t/hbs2?ZC*}j|9;1'9Q5>يpH k~h;Jo$X(]Z4wbŀfNO䀪 ՋnjG#I᭓H.+r7awI .i&⪥AbjI08\Id-hBB@rMO>jC̔ cms *5O%Aym{X:DGa3$1awaC]-< Ӎiwm:KNA0Wm&OHQ$C"0+F:43F@Ȁwj>lB ~#=8KB~s䐒!;zkq1za}3\JvB!Yp X>X|پk adDm˦h޵ }7J-搞 l4_1ڝ!kB忇\b Ό?Ow$ⴐ_N?LmPxP$6ɋ(Iؑ8Ǡ·ԡT~W/D &=J7V&!)PfnKAчk^, yDBZQ ZMݵ}SǂήvT6R_ϫCd%*۠E܁*8f;%0` = %$:”wK;H',2! G_o ?`$rBzrw-9QF3ҏ<|:Q/p>0/Gy:t1TU5+<PL }m(B s9wbNJPS0zSːX 쟕C$9#=BJd3ǽ=$^9T.H*ҺL Xǐ'9w N=_V` Pc>ykR ض"lK!>-ŊE Xv=0`*#fWDJSY-L#XDCsQh SN&aɭT y.xob*DUav?EYf%@N*i ) ~l^#ږU}\-&ްW 9˚5PTYH5Jxy $sþl}CBi xLHz@LwHt*H"&rք]M$F&OnpB@a{,Vwo8bI O%u:Ien }5Q[CwOLW#Q;*.swe8  F\ݡW:ކD$/OJ\6*>qY!K%ecN4;H01|lڐ7wG'1:}op4n`v/ X:b|f܀}t~hI$6HD4vУ`&/*VhՌe1!L(B,~}@?MjHOCZ75<'J^N,*I\A.Ee6|%(ڈyлeʂ5&Y.cC$zK)CSVCoLq['HZfmi NR$cARZuk> F\*;Y!ET$7J[bJd8aSΩ MRضȠZ9;'w# cn  #R&xR~M(|ɭ퇢qه$-o @[ PIM Ehv9`C BA|mDep8-sckdUD%p7S -p2VjC`*rILzԖ[C)Մte[B{D PLN E40j۟H,J(]߹ՕB@4$v{<%ufj4Q?:gD"J@ i0,cHxv V?z&|txBJRjR8Nj_f&-~Iά/GǗ@|UER}rR@ݭ'ͧ²iL@”ǘפcH*חwgI!=П>RGV82aHLf݉$iycZ&>ث xw" *Hᣡ1ސ:MnY&@oD>*bRzawȆŜIĚ;V0c Aw-$%|"2&' mya$ZCJ$V$,i! ȲS"Bǒ;t<95Foe8Vܺ rm^hϜQѣDOv TaIݎC9W#k}Xf8ъGXg ͡( }@@ؿңCvWǒ˄Z)ۍC"ܼ`~KG(o9rfp$rV!;$XĆ)k~_9vaHi}]A/{G&LD^,}& } "]9" ,UPg2Rr$ !`tΑӤ^jO*lZhSb<$J ӃCd2 <ɦH2#¾(2- K 8;spʙ }1c%ܽe3" R۽qe}"&/Zm"6LHY9 Q'mdġ羅B؇<*zw-O-t8C/D*dTY 2Je#/13[VY늣F YPH̽{/$d"ؘ,>%mC͉0=Ltˎ]K&ߐKǽ^J]<,v1y}X$;8$ tPxް#c'$MىZQ_P|JoTΩq $9LΆUߓvursi~!B S[?HC ؇3fޥnNPOA&λ/kOξZО}VS7d75KHh377]oyJh-^ I@ 8'# 5XsL)a8vFޙҀm Zgu(|?_7e7ڜˉֱx'X2VŰW2[K"چJMӾNmDo0>'gxizH7oxY>ȕ@n(_J).W}?.C~M)jh5 J^DUIs$)K pvJo)M;-[%7Ksǿ1Pũ|N2_eJ$ v~]s `O}~oG(ºjY l$+I_9A$5lD8)YS0$);`%}n&6DV`dK׼XЙ~(Q;wJݫ$r[k ;ޒ&ycbV`H*h`LѭbMk,wq&XpaVb]xu&lmCWm <:<7V!3\qOTAIH!M:oy|eNd@*'ɾjJ ΒH!̐:}y67 yM BIMG){H!Mz\ݨ_$LW9go5 (z"k9En s0Ai#Qߺ'aƉgK4GHGk¿VFhZX-Ji1_K-st)%|e:3E cė{+MP\򆎇AK>xyN cTLfT6+~e/iHDw΁뿒 R"vMتyMp41'}zo_n/.,UD.`@V<:y";"b I10 $5j8C"::5b'؛^[8+J?둭DF3çP*,$r=Ar>QbkaHE&4C)5Q"H, _)>3DiTèralB! ~TOօZʓ:pLyb-ZϐGR-=i$u`ùK(hҒh'B*@ac#5XW"qGBhN$d{$va>Mb8`QCl|I*=mat[$lu g8+c}!0UF?Z) 7`/Tm|λ^`~TC %YÓN|n%r$b+Ï|&4;r.9$rܧﰏ| Un%Hdǵ%J@ERY#~|3ĐfHBD~ab/fr ZsӦlH1g>;Ohi>Zv}Vh" v TP fwq>;.y$</&c~M!9Rx7^¬\v˹iISm$?Un UQOf$cF49wbqsH*"O1ÜDA:T"p4~Ȩ&|&V4)Ae9L?xQZ d[%]RZD.3J$#DP洮DvHH7#:Jd/NhB7 w= 7CWcYM3&wI$$8O-:@d?$}%<0&ڪ#8▷/<"$";6uEӇ !Ec%Jb%\,s|#>D}Avq d 5N$UMe)ūȮ b]m4ZRˑd;RK, VZܼLI.ӑ(IW_H|G2; O^?rI}⧭ya8 r Cpj_&ȉ֗=M|4;^\Dk>Rs!kQ8 ɱyӽFr[aknӏ)X5$N%eO2Zm~] yӎt X')]o *>8 98v, g% ?GQ  ,lJ.d4G8.~+nA-/)[ 9w"5B+TB󆐧LP"sݝJX[--~Rt 7BA/.N1fɻP}l>'$EJոפUǙ~>cZ%?bnދtb/1$;,m ݧܣ?sK$ME&: J_$C.&H荒Iۖ [uSNp;-HUBE7$Xqߡ#dCㄢE՝S٦/^lKmcS%dG!n@`ՑVH Ȫ@|T]!l+a49BVMrFכ ch=DjW}B?tA>N-)DZ b-g濊R1sD~0%Phv[3TP8ƘXyS&ZV[#a!4(!.ΛKR,M}=0dr9hep8PB>!+!Z/m+=݆Dwo~|9 ilbF# ]}NYd^NC5H$% qe&tg>ji{%oxw9Uap*z}yYHM>)ﹱa+ IN(BlDsZ>,) 817Ht y:FB_@LZ9Q$.HDLA?ROw.U6NDU c&*9V? E7GՠER 0'$ Lك*O% hg6pI="i|h7e|>0ESa`[|47Xf=0RFUշȁ h]6Y 5iڅRUiV71js!r1v5ƨذ[˰DB?+?$Li_ſSw9{Kd2юyR-^ Wv) MB)Cv. W.lSvsqDE-= j Ӄ6uȖs\C˒|a@k|hV"e̡l/)ɉT6QRM}&sy59RũAr17 ᵟwM K=:Ds ԗyA"K'U!Ǫ1HRY-wYi!bF!Kgzׄzi1,Xը|DZ":Mg1})bCkY ]?ћ9ڋ~]?lP;y@Q O JEA5_91e9VўğYԌR hmr5ft4ajXLjpQGD䐸/X $俜G"vmSlR$G.4tAzG!qR']8/"4gH|?T1wNGFH;'kcDn7V7\urtdh, B=0P2ot$" 8>eꕈvm#;{, 'ɣ5Q( Wp,sgd' L|A} 0P#q̝?4F|s[kri͎_]J;5_vv -Q%3LLS0ƽ6OF,tNꕼw _93o8!Lq7ML`W $R潗YT}tL33$cL4: +ਢH(", x}!MAg?]'pF@g<;ȁl:s ԎɛmCZawG$I3޿_7&w{Ӄ$ a'5쿁AJ#^}';|PC a^$ɻyrgiO$g†_u9B zy$M4'H HB٩ "&/cX=Hshe,8]9Wu'u@'u~3Ƹ+1xtEѱ%)I<]ԪuR~0CNQFA"SZWcִtd4HYZ [o[0,8aw.2:mHL |tQ⭕8Es&.IoBmE-2hayS G"n.FtA 0E1WȁE'5DƿK7ULsʦM8t$ϤHs <7Rẋl%5I5TGAQO VS$~ 6zreph]"CiEq" tBj2iLzNﲃ_N1𸑇wE}eJF)զiJDFS{ 1nr%sqڠ7"wsDv莤z y{jGNT14T bSN$!RʨĐd*xv3dOpEʐ4kv"N/֎GwoR6%B K4-b:fS/̿| H+C\{cײ$KӗtXjrr3E`]o1| aCjHmDNS$cQ| 'pr"+xjlˑSXq48` 5Eז3? e}=E&MA~Zܜm죘7(`gwWls*5 9t5ZYɐl-;^prT#z(#:T\崖"f}$k9BPZT. Y.2 ;'Uh~%HxdFm,$y'Ս_6FRX2GUXզ^. IUZMUtmD~s@@uyBTIiD.FHG^e]ce3sb)}I(r'r(IV~5/Ü=Z9oަ=c{:@Gsbdf,CwW41=N*Q[MMȎy@̑.";sNNbQ=r~ D,@ڧ*6t6&TpD%cYkDDZ *%MI}y+e3^ $?ݭ(Bh.vE 5pJB?nNk#_T!Ҝx]a*X ?EDל25:~mKI$CM93h\J;Aǐ/(A0%r\nyM:-ŋ4y}4&'՝Lԧ6$)B,I-k達Z?@Ba]ƶ4 Ϙ6\ڝwywq-'GN>~Mt~sECNG G"iIRZ (Td>WfYwGju$F1G rHԏ$8] 83/-#eS?؏9E"#i? 'u>KdDvEτ,/xgEOH,@~t;4\ʈ_',wM 6lGqYZ>Zn,JD6Eǹimi$KׄJ!L"pBU8٩k@IJ~6JDyf*ݧ]Fe|-Eɟy߸;yP!|# F"ufcHv8O!^-|}Ƴ Z"23[#d9\wD_Hl,!|_ud}r!51Qhosס_,yAiӷi;0U/CiXn0~_d ^HJSBw^s&"2EI!9_{9 KZ)R:$X-Qܑ(@"DW ?wN߁*/R( I_uW74fƥ.gx+PдFMpcn`k.bMd| HԬY]Xn 2 dV=(X%=HcbITy>ۉ\jcZ7O?e~<"CmKAoRlK1ޣ i)! PC-D.B*@"7> %}, Yr8!qrb놩u ȇWԽ̌#(*?DmŁ -ROF En0ag8<@Z{%=Kfㆄa/K ÍxLݑ\&Y4nxI'&ЋVȀ;C-nWrMCqNyk '[lܬ t IkҲ?6B 2hޑ/l>em`#>;B䋶!TbI|$jmX?Sj&U(:LqlN ,D[HĈդad&*:*D(boko{3$: 7X %=;d!YI Б+*H%3?+i39!5- 畡C6;ÿد8rZ՜Uh5{#4)I brHwQttՆA~q&r(;È>w4<E’3` EB,~Ӯ1K"L]>BLATqސzkG4{~5IX;$SҪkrC7V)~27<)Qd $lM+4D&:ڗ>@G'pʁO@7ŵØC8bSIc|Gv;4Ys:e3 /o@:]zG[1kɐ{UY-Q)|cݶI)E"&-xA-ڑFFbx1$h[H/.ahg1ݿF ]\C_H.swG.̐4ge;s>O/  HxOOɞݹdY0dR1ID^AK_JMfCHE nF:QjHQsVHɑZI{q'6%͎$w+1$u*0[-OQ+_l+ʒ’eًVx_6<&DBܷFb,4@hp*'?Ho73`: [vb/(WUzHOm_j~gHP74E$r$=Pd{MY(}m Y T~gr mqIֿL *@ pUWnYj]$EߝR ͳZ%UhGU3ojT_ 2d*jJuQ)y _"yb̟zsE u@.f8*KHq)W\٣<ey!_gkr%nHV*CC2:<Pԝ-%B~?ǎD~&\ړATbpI:2! 'gJGeàC"X!7xjHqki)˱!QZ}`z)aGyXtG"$-fC1D\}/&QG?:JS0KM?h>mt6 }%a(aJ&Ou59.e3F-,֢$lhZÑd>\ycr1TJL=rxX !AӁAHz!FPmҗFۍcC0B>uN JnjK1 ȎuV~ lvl2TzA~ݺ>1^ Te%(ςbgOG$%iND)qA7W5ttK"%jfGPjEt̸݆&Ӥ6HLpޏaQ/ T@5A!Cåhm`'hnL9ejEÐt6d\L!%P|~(!GͅqW ͨ~Q^#+JYxt?ʙ{ReQ=[%W4ׯd0-\?قEr6o;R@N )́옩m9XU2g;x\G3Dw$Z[,tV3u֚zvW!!ifl,EmN)=3MK *}u>Lw$Q7AEKh7.P(**R-pBlrjȵG>OjkgF䐆܉,Em3|UR E>MRM%JALpo3cmH E U&:܏]m@{2Ŭs6.`t=wt+2HneBDPۯIS|_i1?1_Z@A(va[&R&z2oXv$ 3&ʼr*̭ /<Q/ADWPր][Rry?SlJ<8Xu9PЮ5=ޜ{Nu JL9XYU6NiU]O )i"ޓC 34+#ꯩO.D(Sl}FGyUTXʀ<>y'u\K~qД0;-\2G L Y2DA)+ͷvi\d߆I@bH)Cģe# fwJsLg fȐw"İ/#ھ\BHא8aߪ@E9N5GS*od}Tn COv Y"?"#}Q@Pd a\" d)=>iWX mr9XΟn2X9?DEBsl=gcj Ucc2tF3$S3}wNH3'Hŝ֘F%tk]jikl?+5*6~s^ ygBvsͩY*d _/ENߤ#G"GȉL<i hqI̐irNtK ѩS2uapo8f9 pHK,:S-w'ԁ BN)(M7 cǧJXUA>7#ՠE(ݚIb iw܄ x(c=qT][J&VXdT4d%ƅ lB)Gfِܤ"u4 iȈ='AߡdfOŠIjjgUc )yEn ߗ? 3Pbp 'V tvH_Yav"l}87Vڝ? A|fž'X q-~C]9_;z"JĻia IxH߸ y}vS6ṻkrU÷g朻~>{Ν@l@hU%*߿CUdpfO[,7H mr@@6'&›2vJ:od |WA#SqCېMY$ A/e-Q^i,$TlAO)5HcD )Q<|2"k-ĩnh?*y 9L1zu*R@^YDxEbP3#W߹[3^Y#ivj|FYqF猥o`^D╼Rds$x` L ;VZ ~ܐF4s ILU(' Kvoc0R, Y$I-oM-͐"+G|7։}+jGJb{h$(_u% P560MJRysE5CX9HZTh{߶t-jkʏ?r3$oEYhW]K[8x iD11SZi>H t_D.%Cd#)U%,yͥ:Ip(sN/{ES'O93)+v%R9A62 2J;8S,qFU#bB\pO_HJh% Ҥ܅BgcXRL%@m K1^#~$-Gqx!էpW3&?.SK L jޯ;XP6CXQC~[@f(C(c|UKDn}*&:FU$iMw.ȰIS.+Q(:w-$@x='|?.p -E ]q)P!m(eQHU%!HDn7ݽ%篦$svS TOǡ,ws0NQZp$ԇ9Mnټn*s]Rc'*3A"M80YDxTJzm,6n6h]z_{B.~ WCҥj_*ң#>$Sa68鮞NkJ\ Sg\f %H(a3/9n7;7 dj[tld*7DmS$ØEml̨%G8ih*# t-#;]aJJ$̝}d($y*?1&J4Mb&g;W] (n.rUR@4(5{ƛh-UU%(q(ְ5K^.2;0-35КPEɞ3xHiAIC,/[*D/9GqH$zQ7Y[]K v>` ԙv dxhL*[q5(f J &m!f Rz2/(`%S~7{Lov5PVzМljjZi8H $a=HpyNi 8 XUv8KKH<DTTI@AO?䶐ݪk 7Iv6Dv"/9&84*DK ='JtBs˷TCFH~)D v!DplBVGD}Hې"88J(kbIrҜm""3eλfSΪ\>` ii HV{]$ϩ5&?Ut|b 0:Zw[04 ۪sʙ7mG @) I51YI#"`QIdZ N%H[&ΏpzXZ3iK-.I@zW4 %j%I,s 9e݁d.6MȇFޒҬpE4*AT 4TƑ>8Cܲ9?/ d x,CNmՑ\\OP[k5ZERC_1Bod έwE~bra i6(N/3tf&x޵ VRsa2(I@hKOJ;$#F/ZePځCfG{&Kn>l^t'.i)f'*掬بމ'=/9=TXbk^& X#'&z `H՗ 4V\D$u6$ʹӚfh ߩ8pp5Qi-C|W}qa_;2 pBF2H|HѰ뢊EaQDem GRܞ)t\ƲxJXG}>;=dlHV;<ڷ*3r%hr;~.=;eS^2dChև*$I(nA0 lRkRJ}dΡRnU8T0JI?@Z?:(dYTdH3a%ug Zg7ōcKd7“ư>~x"J|,5K"/ לo#Amg<{ I+Yc< x&B|aV"N@cc9a Xhσ=`,K'LLtoR7ƅb-iƓbm,6c4a  ;.SruC痡Rs'J*|6u;YS/]IGtgv є|z#/UG"Z򚜳0B{@ny 6gMк;mK6r_ _>֙2,$M/'M5Zv!Zq%| t[S\=9S+2w*~72=u& T4QMPKo+ʱOl=(PcO< "HڿEk#l3&__*XNhtcldлi7θ(h捴Er '%.NĆ6#,xrN[dMY.;BSC:փp]ub19~.ع! N޾XJZeo"&4P <;E8KzH3.Et/pIȯ?#M =nK{V[ >Fx !~}~#gUr90K C?3__L98{W_bNIG 5ӑ4K]w)R)=([S04?訲aH1! BCj6rO,ȹ|Ǚ*Ivtd zCiV4o? Τqo_mQ%uMN|&u*hיt D_$}s]Bq.zP2SAt׳pS 6- G+}]oXѠE;T 5;cXpX*u\E5hek[x3:zQXpC҇]xw1VԼޘθ) WǐX,^I 1=;-@JՂ"!7~Fy )DL"|I"huEP }]%N;؇72e3#b1f]C,$P8C:Y" $4-b̫4 [xrqVG.&$.6Qq$9ɍwr# $} $9PɵwVcI2}@ /=h5~>\ vInWB?ݼSOm *(F2>FG hHwU mEBZ"I/<"hOKr=   ^{3)t q tI&rVFNX&7\ۯ\yN¦eZNoA,Gʤ=(5)ѭ,S@MM WW/w9#;JyM%OiIh59$?@jP6 $ 4J5w*=SD $ #1 L9>*]!l`}],8M& F3?X3A=}xH,-tf%Xщ+8ob\B㵿kNc+1iJ>ϘO4ͦ],N|١.@$kf1I(}̠!oH•r9sVK޽Mԋ%%i߉֓JAN: ͏5 ӛXDH69 'M9w MF)j@A.H}jԵAMIˇ"ͣ&ccLQ=G Gu"U]CӯI@g6m/th0߯ D('5[㊳Cj~r$@Bq!'pϣ>^c l%* Gd[wϺ&扐d7="ec1uwmB6体DA\н} T5I|hm' `P+xIOq7I;jiI]%e&(P!#bH,xIw5!-qϗӛt#'xD2sceޯIn|rD,},O,_}6׸k aD=ݸIdxCkfyM4իAZ̨%j>Opu`%rk>RÑC5%yn) rdA 4*bts|P%ai?A7>3a r#wl8ᬒ+/hH>}R~S[$ n{Rd+ˀ>iR 5?nZF} t*Zft RSUpĜ?td+.%Nj_q"@brl'K5cщ]|H#o > szV6 m d3܁6H`ھ$`ZD5pt|F5]. $0O]TN&r ڄڱQwqQƝnj.t/׶,hemfKљ&΋h ݯb^E|q)3= %#''1,N!~wb(%{4QĒm=dU3)g <&ow'ZH,DP߅jh-َlE~$7m!|Iq^ T֊@ҍ?ό8 OW43Mi6̺|`$c:_^SF-JcHQO$$WjC1Ŵd斱B eY$%A9|JO-wTPVꊤ$I87TL~s_Ǫ]xȐ:𡎟+^jΑ>Jl]Rš {fq[ȆW!iغHo&';v_ %W7砬5$3jws$s`vWgû5i/Ƅ(j@N$!״=<ݿJ)*UY7ԑu~U6*2z"hW\Q 7l3lxǑ*\࿛ ݏ ATA"kVmZS$ԙ&yA88F%zK;ni@9Hc!X<&sӡHDP4xAu[,P1᠀,5 -)Btv8VCyrZ~2r^}Cܑy5ma+Kz< @_Mf#ץg4Qb^ Z9!? (r@ȟx+H7-^(G,mِmeᔑ_ FQxGiU)[jWsD.EJk!!s. zv2?mȎ,28yt>J;a* ӐRUc+ d5u8Ȏn;O -#N:4eVG~~f̛<#*6;7Że/Ǿ^de`D*Bkc'[5Fi{Bp4};rL`=Z/4R 6e謘"&7ρdމ3qÆՊK%!wDjk=.-`+R .kN1*!9%mzdCF9ͽCe'"W/\*":">/,' vI4Db1Wa}Qˍ=i(T"C9O"B!+a-#mXêc[H:zGp*k/3FM))w,oP xHD`#Y 7$Y|,ͤچӝB;+"o 'AI"n"_4=R'1$mF~ 궍D<l xԋO^7XuRWy* (&|!^)9±#KSY"ȦI3QsK-B / y?ӵkmp[d )O4"KBdpN 9-ME8+'IDJT! (&3ͺ'1eOG@q8`pώc*SQ1 +%AʗHAwk1&eW'} SJi9(Opžk. U!I Ye0&&;gܝ q$Pe&Jb=\C6*zdꑸߟG}wW͹+)-ċu[1FqL.X2G>Cp\Tj),H%nMVlbQ-' yCJ9_A1&<#6!E?8:txƃfs1=.N?7QF"nKCg1"R/5 9cw/$/+78fB*<7+Z;pE@ЁMLb Y @rcL"Y 7H0BsH)+[A(cH9T-rV]K z`ZOb/J 5h"g)u^8ıgk|N[MgDXI;.Cg;!zHu]嫁YS^πWR5׺'rKA~݁8lX4aFW[^vyH OX AF>v-t`c|]T)5 Sj )7&p<]T* DqeQCr8ڎw"`s*%&hh6ۀCDI`U,mxi#Q=!-a8{=ddX@nTً ECVh}*$(⿀fK=' 'T{LUr8s)Im`+?iQ2$wH[.,N<*t㉶='(,Tw'jDˬD?ƉfC, jĆj#Ѻ?%aYH]0r*M1T ۰K>g+2G/40{$-$x -`9Fa}hj< oruteUď 7ڌ0=bOȻS!aM6G3}r"(8}_Қ\&ʥjq2j!B4҃}D+nd̀9LjO$H,P8eWUt_WDۤqw;R=$W8n_s-Fh!E;p`r2.xQS`t&Ӹg3GPϔG4/\4UC_"7 ?h8%%^2Pb$3u)?\`L&DHtqvC +Uu 7ٿLt7$Z*\f=x"ڝC! "A14t$c!T!0('GR͟fbڦ^W"r14p*wGQ .oGBT ҸœI$:IȉlĂ* h2u}tDfVߚi>r::AKZ֧@pitslތ6>N  AD e"|rˊ:CȢޑrПhV Yɖ#Pz IOQ ' ^ddQ#l3/5ɑI`" ? xjOu#7;x]4W{ؗqP"%w!9ɂqHqMbbvJ[jt?N|<4m+MH? "G"P/Zac0q9*71XNG+U&hHz(|i29D4J*O|&~T^V%qOn7F <_Ɲ$H˟6RƒCHk )_1$?35UdfPVqw <R1 tb0 \} RD{}ۿ_zIt'fyu$D QKVn36{/אZЧW@A- +Fc{gsh▓)$ ~ u$RM- #sS{HXB1qA0xƩK$%Bӿ7In<FxOK#HqƚD8dDJ| %>1/H Li{89AގIʀTjL,$ 3'0;ݔ-:o ! AGZɞ~. =\)V{գ/DY7 RLq$w,"Q?}f]@ "h?>hDuBU#Gy ~[/#-tAv<>iΕGŌ+E?p7YQ^1LlG/L؏CE qz ߇Q{vwb4Tt0$IED6Q mr_&iHXF$w|,Cmlaw~%"bat=?=_HRXJ3ރW\6yO!ۮt8.zg0 $X~M||qڃfJLm>_(cR~N I>gB{EԀe ׄ3n GI3$WcD΄;'P&EEuWC9G&nCjQq"o K@b&rJ3|yz\XđDT%zL'> Z~%B1 DAK9ˢHy?IV23Oy[8Fːo+iGwvzy)T%;{M'~ #fS"XGEX ,FsBT3ZeP{;1H!Z#c < }Tk`kL)Um:}=!pɺ 21: yTCH\'"M udZԏ "lnSy{uD!Gw )hה?R ݗȥr 4i""Q&&Kc;i5ɝj*-.?)dI*{3|#5)4)]zmt,f; <zfQ|又#)`qO,\8SnՉmdLR{˦Ura8T(~uM;Kk#Z;H#q]J*2C!ȳ9ao%b?S^E"MF qKk쟎Q3vvG77DmqmtPɂSM=Ep5bH^Fq2L,RUZBH!!k#A&wbo<-ڴs9PJFlc_( vۓ A;AHx5BiքQV{>bH qB.اL-+4<g2@fGr$ȮAhL( /JAm{{? S>8Tő]TrZ\1ߔv:&׃AV>Ԫc6Rٖ|~(J # ǐxM%Cn?83|+QʗfRKCY) 3eK 9`[qlr| %%$u5g™~$w"I[L]$|#ž?òW$ "ÑcRǼGΝՐUD$چ$Kp#1o2qD.̌Og̠`MxTABk0ݐ EƏsÇ0H7RY0).;.*<'d|ShZxa`͙Hlb wL1.NCF:=6Mg v_J:ܑT7\^UDϺߑ0xYA+?diw6!̝{U!E)50ڿ(['k^6р$:D 5}KT r![]oF"$rax6B®D! YaL;c`mλ ) iZ"sN]Dۓ`5 gQw:+8%\W:)!i+1-Qp nD.1G-#1ԙbx!g3H)UMn]]eMb Ĥ@Ga͐t7ZrK,ZE;BY9,6 ~'7tC?#L0%͑l_KF)YL Ou )ac5'dQ̔d$iyc7ǟ$$j\Hë;$m.H<_P 7@N +`cD,  yVnZq NQWC_Iݜ*NvPȤHwG8dw8@YVTA3V~n_cHJCVyZ%? {yHߐH$B+S8c UL؟B#67tA*Վ ~9¯3NK9Ecj (GwQ#鐰&:=pK12ח/9u~yCOD: n#_\X.TMOZd{Tz1gG"$Pll U0#X^~A)ͳ [~L9c]SP]LA?tCiNCOT#8*1/cU])@9RE-7'{Gn&wiS~w'[YCNTYizw_t,Yi~KϺUɅ Ѧ'ɛJ(Ƒt@Bc-f <$vȭ׎.8*E?8A`.ѱ6jfjÑLիh&7ty%N߬[#%K@ Me}@̈6ON Qo[ !7?iiDU j9ۯ ב 勘:?"3|) `~ xK3$.IN<YgBH#C>ENĸG镜C?ED+8 u/% Ix#wGɨ ?55mRNtqN쐎 *jej.vFLHc@JF]Cs$P$Cs_k!97#L{7{GM]k)!N]A"K+/sM#-Nl+!$b;8!(E~sb>"6R)|"lsW2a2a[%t,эN'^5'b?lD$OF c['3öTbvknQKk&f+8â[T7g  ~:fM?f>G!ۚ jQP4 &:7{%HC7Ɋf\8'X޷Ίόfm"E@?t8 +~Dڇz6UKNq+? HV)!Q2$gMb-C,ެo /Hˌ$בw:fH*ONJY),ևvV<&% G#c?gU:L+;Nu2˴|D|eB IAŇܟ.!Uy7a~L{grD>õ}!rἏw%e5s~zeY%=$d48S5CJN :YӛgTgNy''i:Up] 8rJȗr= [Ύ;.vw1?u 9*G$+zFŔCYTe+u Fy-:a붳b| ˱ݺBKJ G $*sTy y 3vȓdD`Tn vƼȯsMdotAH3aݏ>u7{ G4 Ru5 XU.t%)Uuur$+`35A V72yFutVxA?H(<F}ހypuj-/I1#)xzՁz"^H'8͗F&C VFSG9^ :R+ xWŖ?*N7l]4Az0v$^viu#lvDȫt܏SN#ԞVFwd7Pw¬*KCF "@%>~Ѳu$A"{Gw!sDPG_ R!O H((~)Ïm "q!h,d E$#!t [ks*ܽg~y(_, R~j[T?^ߙȈ"7r8)7C~'z< {A-;nm =<*M^WR0{a[\WڣVCc^PIBІ^ ̀/0AY)?]721ũLv뵢kߝPvJH* Ԑ$b)ϴB̫ڳ Kh;tm5UcLGШn"+hJNȆ,oiY{WrGBv驓e8JSf&>{ ƿGDo)OtTBʵћ*Vua!<`GL/QxE oŤ)o[ґt ] *[vyfCJiKHI#}H.@.ٓKwCmUv:,fIT3G#hv:kA'Ţ6Li.9cp`E|lܑn{ Y4$jdLC]FK#Bn!5tռ;\H=5S#yǘ-(M5qrw1$F#@RiH9q<=.b%bNC;yT7Q)1cc@D@$2`b>}Ut%/Q!}iΜVrJo23QvN$+DwRS̸K^漞HTI؜KN5j?\ÓX^T 9ݭ=U~R,T aL?It; |a4jB*ӡ.ιKfĪ/ w+*!Uɂ?E22LNka@)ʨmƈַJATQfrmтKncjL]r?b  Ńln Y>H+0w5v4`ѦfIviyn:&'~ ?v>;@};Osf~' ͑Uj"ڏ%gOΎĐln7M]Wpag M{V.Id7I:RY`"[y|q$,nZkD[V%Ȥ:;&܁o2^~*yλ77^}7Hc9MeTLK 6?WF"`O2abx@_ou^9s"MHnYKl+mpДxPm5eс9BF,4o Y[L89Npp4P|D\ɩ| ˟?\s!4Ḏo/wW5 s4]Ɖ;j&#;Lֳ,o9L)RD ^' }cb)Du ъF$kî SHZ;*]lDz7 Ur׏XA,Iz )$ՙ\( )HLwI)`Z~ yL!L@к!dZnzՑGT[ʦ1~TΜmHa98A38RNeۤfĒe1q)pּHN#qp:p$̐lf9YwrjWDvb7 \y=WМ4M=[H3*P\gJ*oIɀ^p$U \is* AA>*gpɵf{o1JZ3q'Կo~th- y_ %ufR.Lи?{6o!Nk;ѳ9rU=y uiqd}+GQLv&zmdؼ%"(l4 Σޠ Mt~֬l*7?k5HOZ]>hJşȎ.i쇴!mt$G|E5M$nBR,r&pdA\eSO7G8ⓩhKd f kkȻWP,R)1DRm,n 7PYH?mwV $y0 R MܖWgCnL"J)5Pc HgSw^H rjeZxV#E@_Ñ%Cb4\ؐ7&pڍ-G5Ȧd'!ա*DPEEijlnh֪ b:Iz&ul(uKNuSbku~wyC]_(s/P0{X\@@-VwKq09e\+cDnI Sd) Y=p0KZ_3ߺ~&oH$,?".m1} PKI{.276hh^bO/Dw)rRѪoQ{.Ȧ.ZEv|ywԓ[1K a&9jyפW(_ yI$^!X}-.2L0pJe1#|K"IONw* mrǀwZܜ;_҈_Q LN##$ڨ&Lt)>ק{D"sd"WZJ_aBKMGH8M9]}x_$4n Z2i|v`H!D7 #ׄ͞jwM2Xjj Id+V+VtX8$tMD8V*Xt4Z9N%9iԯ4$'MѠ0D.a=VĤaOkwʘbCsD6ܬg{)&+ ԣnN -mx0HV8lo *$gA0! oA: [Πh\gm0nofN)}q^9~HH48iiZ˙&d.BCq8S0"crhdt6 eM&ۣb>d::i[2L<(CHHi=[ vIj+o@%:bvm #/`s$s#ATF'e# +ł xa5H$&1Jҙɨg"JtK]bPWx7JQ,•^{8.sX>M' /rlI1@m7XN;;q3HLW)0Xe,%]cIC-.Y@O1?:5)dDf!܂=ֆ]r:gVpLMv+?9,@FT5Z. Hj |F#Sidžn~@D[kGZb c@ELT+{vHh QH=` _r_ҐdJ̳xs_>?ܒ('R'^ |0LjZI8n+5UD|Wt; d゙SY*BٛG8b8jx3spHz!I[]ˡdpU?XNNPU0^r `6  ^I0} T r̿'Ғi' e?]UhmwE 휿ր`2Ap(=( EmFmpP?S_* лgUOy(դjpJ߶-Iv֦6(5UR8d簒4T72Svǽ x72K iJ:ԭ($+l['z'DM,2}=dްIk 4G$ ZY؆E $tdiH,?; ֻ=+|8&%}XA &AR/2]P"H0>UpQk"&r~Z?T#ɛl$JNHТ d Dctz@i&`uArd)It9}jMIn4ȍi9-Ñ!}[~t5 (fOȢSM]\GŌﭸ- ) 6,(D "r"o Y*Os"YW*29u@2Y }NV Ȼެ']'~/UDZJb.~ (=@xH|nxsC/c%R5 } !R(\$I1"aedxCz%4P6(C87/(kd0.(:$=J}'껤~஡'HXC3-Ǒm$ƱXtD>7 Rq)f?IS88Φ@]*ȆiHv%reSբlf d=ܔAn

kJ z$ 4ʲEu/YrG|KʐxE%AT{Tq6 n<8)^!$ AlPA!K"eKyWIV+4P k48WD7!v%@\f o& ~qIbѝiqP];CƓH(B_DQm͐⎌&tS?"`*i^ I.ɛ*lؠZ4iAMG-$mt\̌i 1[۶ނfA, iʶ6Ax -1wL<IX=@f\A@#ߣFCEJ0UB–B8a>DDl;^8%ycip=mJӔtX}!ԧf*d%UO(;Ŗm@7^lYA"YvGM_ 4"}DN{,Cz?e! iyz[V`A+9\.suo+騦=:?P1K()Ӟgbles BrIj¦YLHay2tfgE{x4Rq4t-rQIC\:XN2ʶd3;L Ǔ ,*awC4J$;PYL&׋9!oxu;R(N=S)Z ;O;Bj=P$˟#vR&g)sB#GTi D4W!F?# DZDSL G=w#DH5̟e#GﵝF7"̍FL!7^OF"!uϙȽLt+,D>v͛r oRʣFmys }45)$usl$Ϛe&'/_?rF"-xO9mo#,Y_/mC>-`> E [ͯc]R|OPc4q?ѠT>[$@}}sdtB=c+_4vID",L$+4T珎̱$W2hJbrC(|c>VGi;,-& {ZRU,Cmw< BJDP9! ) rL͑vO/i>QNv&.h\S1SA䴟YqxCe˔oby8ۋ1ŹUIƷN{H$_Ɇ}xĜClHO4r{fI<Y['gAEzdr$'5GL07p,YB1Ud4%[o9u9|ؠSv$ 3`|qq$)//JvKaPHvF!Ihvg'Y vCOOĕFO`6s"f HqRp8|" 7r.+A,AHA|[3*O?PD@h | a(AWIetZL6U|m{"x Q0y/M6V-݊hv!b*A _֮fEq%{mhT (9B=/*;9!vѿkq)(vbk:¸@Xȯ|(kd[>$Tg Vfy'hMg>31Ȱ:*Zr"bhTH5eVN9_R &\H^]nZIpÜ\67Y;vSlf͕;~~H>m/,2vԫU?:zHV6y7xwBfwf9!TipfLFȭxqM?МC :@mr-?|XC+G0K3Kd^씘8UQǯɞD8~1 s'ͻ"uve%|їDmܑGn] RIDqJg}WC\#7*}]] n׿˖keшv$kBl IN]6+YZ~BdO?O;l̰exxP<*_&)}p&zw*L$-cֽp&W%R1͐)ihdW5ŝ.d!Ho*:-m'!$=XAiiח&b%cIorϾ,K~jrvM2b 9S3v*R\HZDZ:],!ej{8\Bw[2Vo&eoҸj(VEj HIRڨ*IՐ[aPdwK0,F^RҺD؉00"4'',Ā EFiNJԀE^}eo:ICY͠&k,$"IJz; iSez6PݺDkRANKsk I!EWNՑSU~NMJ_&H8@O$H 38viY$5ԊN%Htv*Nyޑ6ؤݗD7\[CPDZ 9eΓyMb+Hzyҳd`raCY'oVtd2E^sx`HMJYGO?;fה3N Ɠ#m%ې2Ad{ׄ^*BzTc,Im|HEmKj/6Ly1̙9H G1e'g)i뚴ayLGqC!wj8כ nDXﰹZx~72ܢ|Qj@d݌Nzg@QN< "jNcy= ԓ ycnb'Cf@ByLj]Tß.Ҹc<&/#M c'~|*KVM~lȯ=zKlZ:YWΞ;? cL>O[姝H̵|A5{>+Ld̦6x <| e qǐҐbcҿUYHS9; JЯiU,u"@%$-RܢNT.AC),KT{Vձ4W4!GyC4W)6֨~&c-o/枸+T R(] Nɾ X[CPE2Ҧ=8=5dMɆD>bWIvn J>yN YU)s3:_zO {"K& /(MEO8ʨSu?G1i0J\O֬O'R2-H :}c֍% Hc$ kM6/ 37+` )uA̖ {&[*kȆ8&R/r8r)#V6ЬD;OJ3#W&dM%ߤ1QG6j*3YIgذzV%kLz$eM.Nqaj!2$C9$]| 9wMKb RT2m纳7C`|AHVPYs,is@~1ak_BK#B~&vv)^Cz夌pðC+%gCjA8lPF?i;rfDF3͍EA5]q2\%<]R9ETc3}'Qt{(H_'9ip#ljW./'}0Lh>S-y<2LW#U]pX%kqA+#&{v,dnG#tEޮ9dC<D* GlMs{AmbKl}6A! ˡU]IN61>C|݇2t,Tr\ռ5SXǑʎ63Qr>QT1F0qxTd-JO ΢<ň^Qm"ӛSM 9W3G%1%kHgσʧM+p\*J<cH Z'=5+8R3e*gSM(CwAtIg˶޶ߤ9sZ/PUNB~K%2/-S& ڡbrNp2F?屏ĆE#RC%HD2UlMs⚝慻"=6'#2!QbPU \&--el&KԡimCGPڡJPqȸH<&kv7ӗh}M@B VM[ Xo9Y?%C8^rdڌ&E]9WWz<%t5ȩ8|nK+G^g+W:?]b4)]ӣ9mioNp dtFPmq0tdXY 䶝V;?xw_* X\hw磛>[$aVtCW~!ZpŌ_ Z2Jf#dYwGQHNBJ{OzcPTq՜ H%qt$KRP\H q"(⃌Gӄ'M" 9u*פ 8)@va.Tu<ζ!LrF񀼛w\!`bFdHkԧHjbbEE 'R,[FT]!s}?_S cAB4@Zc&W/K?͏@*D}$9<d, H)Y{%ri@qSCI$_:kI; |8y;oir.GB$;v\%X/>#znW nNoQ%Aq}L>X7N|WDk5e!6FdXkbC%I$!fWȏ@ils,B}5)(ʷ.HdBtzr19vi*po^ur5x* [JtT.a3WBsIS0\"$Ǹ}BȘ^F yI]\.6V leMaˈkRMl9Z!sm-!XJ "l]SBw^ZhB@Cc5e4@1cѵ؎ЄL. S"a:2kU)xk(l8cGNaVm{xGIi&EMd˗#u,Sѐg>i"} A*8rKq>Mmx \JOM*+ sT'N]B[>4R EIX3 O\i*Y ykl6o3l@ױʩ9SANrsfm@G;UZ1"]O TOΆ Mx"Y}rIj'A.5>#Q=4ڸE8D\"\&?N }pwJ~lz_cO)GEH }#Eykҁ;9UgA|0DsRlGg}{'=\2_GCQ诎$iKqJ8/wƇ@R0%0N91'bEfi#IS盒q"/)9 ΌRhŜV->dw.*y1<>tT87$]ɴtA.* 6Q͸g'KVqUUB4pBH7(e>cD Q;. p=eg{xWeEfUtB~ԗ*St;D !Bp$if1L"]hI{rFwh|УfWY$&;8e-TU}i$2UJ i0$\9E˃-~jх.32vFp}Q3Y:9#̸2i;YiǠNFEA.HUsw_zHalMiat {b\$`6JXrd|"ȅ8CM]Wet1W4@&?|$M:l^@*)Bkb'LL&iR6n-: !q`W:dx%B.2 JU!\iNrτ\4\9$]s`@R3O=ϑD.DzhUȷ$He>1ɨES4r3>dj)2ڰ8{jzd徫wiY5*CHjq]7fPo14yEoC 3dP(]W"gd$m֋IAAaku/=sg- b%c&h׼a) Зۡԝ7&ݲbL[.{'YIޟNjP@aN2=&)H4?R]ᨁycLˑ$(H4bN'TcfBUD8:eLQrzo萶쀵} ō-: 5_訟СS3o][Ю>-mO8QԄC0eA3{K`bѢŰqp(L5tN5UUeDj^%$%Y+$l!䉕5*츂3UsUD $]r( #_0Aƥ:jy]"[S^pB)ю Nb"Bi~S):/ p#~C?EݰxAku$l[;}2pxtXAլ@HGjT]^D]tJD]1%j#j8&rId7~tu@*"_GI_S.Dn3'#͎e\J-r],+~w+s b1 MF )Hc /'G{fA.}to“ZMg Fc&̨^V9N E!Hơ_2V猈UzI-J/(&\O J G"˄CZ RTK {\[&-KnIB$iJ*s#ȥ |J%h%XyFOy$ʴHØnȡݍ锑!$LA٤CJl˓̯=jI֘VlòS2sk,H5ʉhC/Y0uNy@N( Kځ$3ExSSO.Khfɸoa.foEFB"uf%vZ! B; :l ^?:2QH,wp"cW'GI+c]M4(FroǝS Y0P0O*kxqGoSjm\7?!@? u9UIV|B]I.c"nHYj |-a]if+r$#ԬQ쐨_RxIrLTLɄf+pr_}{#n@$&z HƓyw\TQ n.ǑF҆O3 $79 2_wP7CfCD)Jk5+&DSB ͯy DY}I؞l##RmM>9irXėX QlW i j'"$f27H }yLɠIx.n/ gP=)Y*sa|.2! i ΈG҇\/Sc- ;DZd+q*3DrMdF,#[WV} RdICR iZ# VjFopڣvW6u[8p.-$RG+R OtECbBU"LCw[۬,X%;]DrBvDz]*SJۡf<$TI _HlPd<*^'K&3*2f $` YAg2y i9e 9)?;{pQ\ՙi.z,|a:*o'BQMtvIx{$D d )$7^&4%m2S|b8 qSEK^[>;UH!i " $ULNk8bmIQ߻TQd@,ԻՇ3\Tp' 8)5v 5?b1?Jhw Elt87p8>=! UKXlh:29 آ +YaaK^;Zo؄wOTlaoY2ɳط`_(fe'rkv"9ʷoɣl>2`z ϑz+)n}4?-nhc)%\ ։GuzmV87 X$,K5Vzz-61?D"O*c$UQON)Ha?hHi$Y^̑yA$HDgMYDӬHW IM.Q_=@m+M}{uhl l&=2 gsjt -ՆrÀXr[ IO`'e|h1y;9F{WC!H3XEj2^R`A.O] R0$5O`Ãe &a%gMuȈPZ]HCI cs{ 7H\kG$4xãd_4 :t^6vK_1(1|¤D‹)d|_0Ѫybf Ռm9$E G[<}WE 4D˞ҹ#k~lۆ|pKWX5]Vz }u)鱊DR#e9pu,Xh 1[gzh/KX6 U? 7P.K[AwFglYX:OKP hdWd:J iפxCrs{iCJd?@TgG(B_%?)ͼO S x; RCuӑtl&{) -QSau'X)0TK :L2шЎoQ̡J J4vK_?Oz$0N:E{$hh~eI|,õ>S7i#0[[9(1Jw*oʋ4%^$9\sh6&|Vbwo"ci&iN+j샢<, \Sh@BL( Kԕ岗9ǁzEZU$HDY&~<Ձ^I_C$-jP-"PbRwBq 4#:3HcS|؉*}a==O Y9c9\] Dll9#~|KefƚhǪ卯gVgS]U>ж|,2'ش,Q&V9s9/?K$vM`k\-"HX$7IF]zoIj$rۺY)1p `[H1jˑ[&E %:UzuW(}<9PV )*"cBY#{ w3A ޙᴂy#QMƁ}}r$Ȼze|ѽCeՃ &Y:uNHD" 'w xP7DHgL OXDA5jqqw:b#"#kOrED3yD&r8C$r^^q-Kg9-w įs$B'st[g%C!u؊0eu(}Lf!oǸ&<2_{9Wϡf19ئ'ZL|y;>hfKYSI8݁=O$W"k`<^[6 6'GGN F,+hܝPK=ϟz$]F`U yp6%gf)vOD'!2(?:"סʔ/wH}<" $BcEc:tSiEQ2vkH/`ǞsGDOUJ[Sw!QQNO-Cʨ].X&d8};s(,Бgۋ)0W(O+"rZZ^8r38@.j9̥'.}P(.5Cb)5ZJV'bӌQ#}H}% N)no4Γ6F^M!GNY0XVԙcb4-sU_@(T>|O>qlcPN炕K 3}X5҄o6NԃKe!,ZɑUv/U !4#䴩]pHV}*7^£\ Olx1Jel!kg)p20"3m̃L ۾~E~@XY%4:~!!=EZGsrX7 BB(C+Xtu00)>;y*`mʎƸOr,zOhIDA֐IoV wag޻/JtgI`L^t@RU,!*[ӝH!EgjqHh< [ EHA zXy\:r^AxЮT+ܩ|QI}Q2Q5\GȤdOj3f 醳'&QcEErV4kd6ڒv]0YN.zMJ/^s#<Ųyt|B*.G' w-]lxQ$:O 3lmGJmd-vXW|+A@-$a܉k @$£Ls6W˓ 9E/y7%S<~f4(̣叏 c!ys9*Gwȶ`XN=KJJߝ_V36j"kWt~ DzF" =jD~[4%{F^_ \㓣 B'z{ғi>EB#GAԎQB|#)jQDew~;&E Q<2w_?{%jL-!Hp)UJgq$xhX @yM;%*w1{2W!*BHJdk|# 8Tx d@őJ2yoF)azwFRwԠ$@LmDr*`uSkFR ?;~>-QMy\'"! $f Ig2^Ղ6담f">L$8q ?Ԁ8c(L= 1HvISϡ1$sphDgߞ@cbJ.HRR5ڐ3Zkɽxֺ(Ab/ЗmnweK֝;)N|c[RfrYbc3b%f#($-Đ 4D6{7'2VImzo.-$m59獅(=`)@ oqYεBk9r#=:6K-HKD+_;Y5Š'Rs%%oJ$g-ކ>s@F3-_P< A3pЎ8^n&dg%G#aI/W$e@I{î234S%2dEC*#qO96UYg/YɴHlS/xEYtN?܎dU+"LDͼc01=ϫI[IȒ)Ċ]I&C9r[>y}(QrwIcUGrJqO Em+ž-)9}9.II\?$Am)#n@2Ɯݐ؜HH?.(r8r>A>%6 !JQ ^tmeΠ!^̈́&6rdWr 6+7LjrQ:Q: 媁DE_A׿#?̃#f a9ļ&lNL䰯CVrґ;b Q07$r##*Hl =Xu$?>isCWy?!Z`kK斬 ēNTݍ!fEG~YY":5¹*HՑS]+"HC!]BE3Ҩ!“l2My&Dn Q O$q $}g8ыH^еh"wG]DR.GJ%^`P.D" [M2)c@{x{ Hq%-,uIecF.<&ʱDY /0BI "AܜHNub%g]ӕ쒀Ahv(),m(`\H_cR |y4>_?$,J>& Izi1Fty^Htyİ0$>aC48i |\ $BPv(!7#`ìW֓] Ar19޻L걫B)GekUA:hܑ_Yz.!7rhΘ| ˑVH" 9g]Qf2a`9NT#'H7O4Jy>/įcuپ7POw_wV4@I-7~rwӤt(c%T-}rdS߉<ש"}BАhn>F $:fL"!nͲW"]ryoW>PT::#/{ ybcqkqmW}V {j9`E89ԉ"h}4rt]e復q13˓}1?̓ՈEr6gX=ƒ@(I݈gĦ5e 䍀,CF@rĄĒ΁O6TzFTnBw"hGB 䍃 !Dosud)f!q3!LZʽrDrȅ!9ĻB̅__*Ք~ #$4Lnj_^Sq׫$OUo(p:4,Z.tD;-@)-+'ͤ0mNF0$J݉qs*c wK([@nDgg; V͉0%8F"JgNT?Ћ?LC`fDX>:}1,(O{$mz7$L$Q#iz⁐S|"> ;be"Gu*O,#'ES#kOܱN 9 2i#Z\s.Y/r @DR Iڍq푖:vDz/ 1 &ܼ$;[ `aH2S,X7ąSLL"LP 5]Vd3z܆XgQNSFeÓ%+_j {G~j/ {DYK 3Mea &dAľbdz)^0jHk GZ$ǂQ]'zY847Ԧ?fͅ|/@"0eJS)ܞc%,HM/3nS9v@zI髙dHt 9I;R&Y=9Ik:視5i}~\I4*+I&r4O4_8"w($g]& rO'Z+$oL[h Fos oݛYɕNYӠİ\zr 5xT,cjN1lk㵺FӰ}Aׯ>[Qtl^#Z|BBMvn6ܮhy0}=H;")ΞNEks{b11.Ť`\H\iT/6K Zc= Ig `5J)Fy< =OhM3*3UDؗ[|kD?m N0(X59Ͼ{"PD'>1Kai r8vV!NwHo1DM}>SՑscWGj˻\jO=nYQ#:m ٥ 2U㗊79=[pz㭍Ƒr<(57{ڑzWtCTtVg{%.$hM(\įc=G4RmH3YDNEDa%M;]L2tҩ4%͖D>0CF([㶻n=kdZ)v:&u@-i“ͫ>]ɬMFE(,InBt*̝:x\KC\d 7F"\sf!r_d?CU)I2|Ceƥ.E#L%Ju3a!" @"cywČW6G"ZtEY ;i>$*ܢ1ꉌՋ{cI 5^R"ᓞ?Ikq*[׷:8gp[ʷO߀T,èvHW #T}r HJ 'iHd4ڏ&1uE&pxYv"z8cdn$di\ \i[X p-.pȼ:'A'*#z6=BŢN9Ǧf`?-z1 RLQ1G8k EޖG0iĈa@t㵶"G.CsN I"N5$WEG]^zXK SFVGe$BjN H .CJӚ әS]<^)ZƬZ@K "x-\U -R{_^5mnU)%"k@D.}6MwD#C#eFñ(*%t^)A\ >j >sw &&+w (vM+XyD܌tjnBL$5jtx:YM[rRw\Mbb|f~ē&0$h^Cp0 Ӹv|n%_lTq"#[CCTF"'7?nu3/ђ+j ^m|B8 r'!k%T uȑlQIy*T̒!N!Pճ8(հ"ώƔY3 adzRtHٗOdWnxA(y'{%9$R:[)=Dkˍ\A{N9>TxQoPh K0m i)KP=[a73b9QF;fA0Ah&Eldd;t4FacgUYn6@W7v u T|e'|"HDW6 ic̉!:qOשD9KI6_HLrv#`:bea;bz459-| 2FbAK|PhAi`a |? 2 k^q8/ wW(Ց|ґs-ld93۝(X"vC IRbD,\W_$hcƥY] # W ޤ-V%3䎤h _ 5OQpdSIJ^H ѷ;$c5jrXbHV5GDcQ\ ];SgPi'EOqm8śOukrlVEgV7a<`ZqpEV 7x )M=i$DVʮܖyZFCS5>!cM#}JKRlIz~(zs oe _ ~uoA~k̤"k8ȇFT 8%D? ݥOBo]_$J&t`D" *y1@*Gf3Z9Q\pjj }^r8J#Ptl=eE:uU@',Jӝ"{4%8(n8qpe^Rr;!)Fb4B\a;QFK6Y]z#Q쥿)XzQaǐKY']dQw[41 hr#tmG+K@: z't@iN9!$D) yB@3W-3\\C i_~ \a$<PAW;u\f{G8ߧƑiH;rӞ+$U@nr&@e!c9q '8{y\nf@"SvJZ9i2b $Zv խ:3SMk#kOA.y9M5|UۗHMK0{>m BR bMڵ_M͊/_ěOhmvS+w5_Θf`X\!eHawSt$I{9>] '@*:Jp :o#knä狼A1H{{CDh!Z@"zT'qzB"᷁moDɒJ;=[|q'@|"z:2x9̕lt2S"2*eHY@H48W+"[8Е&8q +hDvE)G`<2i¼q$Z) _NbFud1 RxW#\VDKCއ>9q2F"HȲ?Qh6k #'Ŝg27qHT u_ 6qvIp_//a}H~`Zwg_n:X퀞Y#ԿG}Tû䵣:o[bǗCX;A[_W9@ $)+Ap<%iǁMP>۷}J* g9UO'"77/~&)$ݕ <^qw55䍽nR-)0gJ ILaH 3I(;:TϳP<ĤCoF…8Ie9r9ϐwIȥKNDHAk{^00.lt^N5EH9]ZkL& R՝/n\!ݰlLo#7AXkMkO1DeI)g֞:f5:FqJ!'4tJ2-A.9@%9Q#a*#M<^MVgɊ> 4Ug)ue2p#ncj;IJhi5BT*$aR+5nS!D9H4XdpMDT849@xD^>[q@0*ڽytCNOϏZ͍M|T=\iNq=DaC&z"zyg{lJN0-)CRBD-[e`@ &[mAĵ?[44ahGB"ΗZh{ [ J-%<3A6c䁫S ȔI%rtl(ʓn:!5ILLam1)]GFQM<ɓYQ(v<YI9*g@]Ȼiqvm(Ia AǓD4|!%& 9&Ed kt^5'i{t$hVy;d Dl悚ǑrP\rf!&_Ȟ7dRpF4q4G12 7)e3#D1p$_'ɱTH_9p,y,|I}$C.M%Le6SZ7d.fzfD65T5 Y~&^t+)NgX?!}z{ eBhT{ $͑$X9;Y~>!CD@Nk~!8%rmsAk@6Rr LGICooȇ$%WTq$RD"$A_"JK6V"]$HCt@D&%ZռyAQ"' ב6~:p$yQT؈"]n6e9~RN-BT&7bdoS[X E(g6/ 5|ҪV2HE1a$ދzu,5X!@RUAfY UyXF8ci3 ve65 I//)DMw̶"Dz +vGV\NS :L5Ȏ Eo-/rX s e WE2|A%xF5-DHm"sX7ȻNgj@ix'RM{1k|;69oTS%H4A@<-5*~ qWH՛#ժ#u@ Ɏ b)(OAFa<,JOi4ymңͪTnKDR}ʟ҉PVk)Xu5ְ}(" U6{R ڐlzΨJ 3{d7 Y9b1]08s,[ź|٘CO8+hHrhZ G&0|g$if.RųeLQ{"'ruO"A$ޒ'iIJ 9VN4p;uewGWO}:9$%͜R ‹+g:;ru>ުyS֯KhyM4̈́+YJkꄀpN{2˼)ջ瑳3QX" xkobhDaed$>S|jJ&X$EJ 8uCwڑF2'tQxRʑ /\VCWK|6y2e8/=w6dR4,]O!ϔ u$ͨ41% %ďh8YÐ=5i3ҁAo^LdcԒKDɕN?wI#kۄw<D~DUq rҚyɹN s~"&ܿK*|[+^tfKkL4s"S('SW[`qk)T!AؐVX 3>eCݩ 3i3XS9ar.մbD=;p Bz/ U_VURQ~/ݳoP,v(\L(t#)L3}~N4#Rt@Yԣ1 ș=)sX~4CtÂ>H&d?vx8)|l?^7Xw02ٹu}x;Đ'٩G2ȬH!~i[O10L"Iʑʉ?*kLQ{, g"4Sӵ|Kd a3E;ҁX3J@q{FDӵdzmрfTNGfwQD,8>N q"%V ȕiY" D\( c#ͽ $RLJvqUj:~'ɖt}H1恋il]WyTe`n2i! _`ZK Qn1 CƌC-Yܛ|)M7҅yz^;j!r= vSE|BHʈ 1OFN7;fU] R|&${d hN)Z!ɗanB QrȬ\֔r?y.G{Z7gcE6t.q7:^eV HSR@e5V9Ha<#$N -Βzӳi^ $JRBn<N aytIw x[ M2! ($—MIܑW)/%'c!HE= CsDXġnjYA\7![Ǽ#aIN4NxMBzYԊ T:fLܣ[z"W,mYGy%V^s,>*&+R6Dú|"o=ͺ@!%T\n4y"I Pߝ# &ef{iq|%<c4$HsI(mȱ2D kNOZmRA@ 17:[w8ZU՝G}8=`6,O},DCHZ JĽƈFr(9}7#Lq~gHFJKʼnkI 7|H'=dz d;|*~o)?1*e_o8bj?MxW̏11GCCͧaF"&kn .$x"H/wUu٘D5zCu)}?Ѝ/C0G҈}m54f_VR%4jAŞLRYH_ qT\[<႑m8?sM yA~QaDS'>$S[[HroW|4LŃcRfy,B6ueGC ?;(\/!EB#/@P,*d lflSԢg[0-<J;Pz_%Ի>(q =J`:mwMB29)mu"%CImQ#k32UZLZ7!n? 3ꒇ́ߐi< & `56 Cn+8j_3Xh U4͊?TBG'D*Bi:MKhk@L%} BN%&K<[/PRhCr 5e/RfPTT=މ-@/^NHHR4Ku@455͉Z)la1n0 EV; EȻiyף1ОgFOO6Hď^Y)$- Kb{ɹ@D车 .wW;H4Aj"="da|n}CuǑ:IQ[FX?1oBRvb_rG,-IN8mUh\sDJҐe\qY! #Ɇ%dAexwH\oSj{gRl{!R<))C)b@A1PHg[v,`f@2tl_tR):p*v\= 8]zSތD/"AҌ` i4aiڇlPۉ]U$ʹPG"Y !{(]M$L9nqtbO_5RJd|;p \`bp*dRU\2Z#O?] o/-%rTqѐ@p; 2iZq͆nȦT/$Odk ,&HձZFdBߔŊϏ Ѻ\hmHxg)blؐ J$ wYO QqMmqJdl::JĹu>,)+=I$v|#)sKUjtp[hbE!uӪ{LUG0cW ́ #^J s|.eIXxmCy.3RAu tj{ $dos O%.&"X hbwDm"1G<˔#dd^zk"NX"۝H7<|'Ă2 Q B@޵2?T9ln-"Ny# ̓Z؋twh0=_$vO~Ds[$yŊa\LN>#K(TGžK{N|ES\Ն2d mI}<~z+I;R2AHNb1#;hILcLzKeH䂈 WU iMyTo\+"HѩJ8he$M {o@v3 NHN=xOt!4DQ5g *zrp(YtguYl>HQ;7Vhi%& xuՇ \k$6O_)ic"mEM Iƺ}wT+6}E~ccp9 SrZhsam1$ÄiFxY&X|#짣M`R%UUk"K&fX@B~> z Gj/# ߡEB4/"Fkq 1xI%}uO ")¸H|DOiHN3x+ݑHXOd䪎i=$~&w$/:6{H"o3@Z9ZяԔS[xA:2bppޫ&M[4 %sD&#!* ىI$2H(=~Ä*BnmpZ~GyI'nU ˋ#9;OEH9 䎢ۿHLw i!!ܯ?+N3- K7vN:?]4AFܡÚpG2n4*7G2n"ILnp@rcMy>13$G+/f/9H5fQ@)N"{hME "3pZJ}qJTK44m!vK$-Ds:Q ǥȯט[yp2ĻS<I+&' @Swƈڢ/RL&zU^PR H8d"*Ee2}}璏ɧ AYΑ~2 (qi{HbDMݜNh'qsBrh[_ X'fʡbgO ]c7R"9DMz|k4VQ )kl,2xK : ym{MGjXeKɃ/uR Źw&ʯ4BeIӴG:zTHe"9}o{p1ّPDG.4LHziI$R{4&x()zU. )s'ǜr>%S@g2La#JKN8c\!HlTd? $wV|",""yGH'H q:.p W"O$P!gJ1pg9qd[9Nmj ]_xGv}7#G G4ZF[k1+<5 VҰgHEcX8ה#{ C3-KSKv?yjbp. _rWKU0i W yWdImZ/ ,N@%G"lJ S~r0qKd3IRfNq^ 0&/$&cY/Rbp$pc[>{8,,. .f+KnМ ()' 1W%bځ}pJ@#wqB|SAgŻX $;eZC;HhzHyYRzͷ].H4TvciS݌PBqdO FhhɎ䉑Gs$rdӜ?9.l`!vĀ#qbO߬s5aF)!C.Ņ:XZ8($"Q\' M5q VeȜ=5 >(+@|ùKܷsH`1Ai.G  r *EZIoYv-NRͱ5RNB$g} `(y8 d@6]b2hHE6ÿF{ΞCސԕM'$BI iq8!z/ﯣ,x[m? dx\\c_%hH>)oTN'4fH93/$VkQxvr>II iFvkZ~<觕_ȡfg,~!Ewg!w~wi3  d_Hdp0kP RiLy J ݾ"Ld;\΢:%]WoGΓb~,4G]) 䑼s9BeRE;ȑX. $_ UZ>h}[OvK9\snj?d81Ѽ-cetzն[WZCq^ި, izʕS`ȦEZF:u @lVX~IV ->23 ΐ2$glҥ5$ y# 8l+vLd4VRfmTF>JG&͂켦)&š ώ$$ qw x_tqT>q^/:N8Cn ۉ4A%[Y(w䐦E&rIۂDBWK.ׇtk=ӄA 2q$lS1ww:rϾ:²oS'jM7mCz '[J"KOͬ3Bsze$ ?efCGS.%[&ɾ?ʾ/x_])>9WxxG[ NlJ!wHfy=Q [ąQҮc2/E)ʐxG>XǦAn!{4|8xo^R* ;ۺBxڐZ QClct<[wHz║HoE:H0c5@F+F AJǑ6#Qfx+T*M`k(op} \~ $p]DVe`=i?:yy[%}MΜqɵu$~2G ^/.7\:}fd*8xV1w[Ty7^h蹟Ң'?40D6/CD M>Uxwt0u dA"1V3L!Qqh=' X"n5Kf  HOG.>?L;0rGHrޔv"{>@1skRqTHt^\TF"!N//{Եp7_?{頝ٽDJN9)-J#X[~/$c9Dw 6>\I.JTh.q >i>{*SZRK[+ 21k/OȖ,$ϲg;QngbffiI:<:,P:C[JT $1Mm iX)?1V pD"[l8<~ ),\U\pԂ9|OG+ױ4Gmr_X9RU֚ɺwA?O*-,&'EP9%{3^yjV!GdQs.Cꉪ*jNRXf Rٰ#,hy$>#4oAnWee- $(]N.鼈:r;/K'ƅ'JvR:pBǚ;91gx!= * I4N%Ws9C&~ p#y!EO;^b&!8,޷5#vw7()$c #fȆJL(Hjm\$[{Ck *X&8yd yLȉz: 2n;%H$وX9>(QEqMHNc\fT\NHXR^w,!KƜK <kmJp>GBWVGloG*zCpsdONZ}"BJ7N7X~պ"GS/ lD"Jjrz AW.% 4p[ $d0_9ca\ٝmvI:Y$D_@}pKdSGC IqV'"5[?. m/r5a\)OD3f_@Rk*\*gT$iJzM߉NhBﰟh.C:=&A=^=='y@Ŏb0e-=L l:%;-Y Lqv8GcW!"ucc!:8'ZkvS @HcHf0jHN+G@G `rۃǘMf]eN߻J/rx.(xr6?8ƹpDD Sk%R E"hHǬZ4O([O>^޾.NFف*} 1Ѻ !@V9wnb atzqoYG¯CGxP`LNj1HT!5s9pa>/p Bג3Z)ϓO'pSGzv{G\P~v$0.nXqó3+_P?9:HO{8G#4%pSIdt$6OI'D/&%EJdlpJ|̱ xr.\ -p}9H! sO,h'ψTQqiJ?8+H_ǾIfzj_#[P.vG*t<@'ZJTFOt\srMnAy?gO1,g&Pp+VA,1EH.G.[+aVL/{ÛW}R[}Ĕl>5t@ܖM@B_` `rXٴ cc@xj0:֓Æ%~C Q(οM/Mʒz( 2Q|ŌG)QRdv҉tOJq>D$m@ $Chz'ߖkh#mA+f q$'6-3{LmJbΑ.q(595^jS^ևpck$X۴DZICH-vԧ!IY'LM|Ñ5Lz.=֏),mbcؑ90hkb+@nJ}(oo?fF J⿐7)D¥]2['w93t|" JH'K$qrxCtT0Jභ>ԥ٭~T9m&]#ZlVpcC^wf:˃*xɀZT>!H#ѫtq/aا@ә;|Z9_ ;3tyOq4eߋwf]a>OFDLVoTCD'`6RwC.!o/SOd7y9r(y$d.rL%mieufdO3lp-@޿lfT𮜨Ndڂ! otGsTָinAfx"6D_i$˖R2D U"\}8z$C?U4CGe@nBYR{ ~Pt) o?1wt͉Ody 9Spo#|oDp[/6onL>vD=.p>e.#mrC rPBw6I1" O#R[Dt*~n1D E&,-n LhC»i,EN q؈]d>Χ(ħ1 {l( 9(q{MeS4d3/H Lj>J7~;m^IЙ34[bPzK$jX+4\1U*;I^ O\hNL&78k}B%HK,<-j ׂ]Hd$&2z{\_!E@dC>N"F J8GWK'3o䔳RNy}9;e\oȉfA^;|dyO>g AloRޑ^ odk@zz+$Ku:z\ >aBmT>u ]]v;r*ɄMfoR٭84 >)s8~FX*a^ )?1KE@_􉴚e1s>ë׳O_"._`(̼52O v}5O w UQ+vTCP)p}^'0B[>LBp{t؊a#ެOOT6"`W7z)L7`eD֖#%rx7 v68 N8ʜ%)$bhܟH"[/$&jY|od!+;sWBX`z 90P/$|a" !Ogx7G:?~O~RSvS $98{d>7< 剡o4W(!'}M\H5G]BSR$bBHW≨w|zS--&{({3 t-(gj*5TSZMHO9@]G I&gKѨ# ; @DE3]Vw=#4bA'cˑ(wxFdI6ehxD|Fc!WxKdLc5Q7W՘W9O@5:閄Hrh/,Hk7O#A鬁^AЖ Yؚ!SK1z_iL_bb.*k$)e=ewyE9փIu d-`mi;/rp8>)«?П2mP^GLe;{;ڠKگ|2H3k ݅nyO:xHݍ%hݱ$.IMMAOGi,s{> Jݦ#YEB.6 r&ODiRAF°\wkIԐj098&}[}>?h>e45;Fn夒 7&!7KO$} qF9gM!чEה:/4}L%rwBFՆjT}r:"r)"_$)JF >}ҷh>Jwoeߪ7DBnBDrv8^h<1bБ [*GeNoNġFӀ~k-%̴!3K>1F=t! iŎDsVN%`x22 5 B޿k˧ xEB& |BU2}n8*;2E $mXr!CsxcˌgHLXXy@A$ 1!2z]epXNC=Y!jrz6=NEFLaB>ZvBmdB?[R>{r9Q=BN^$N+%M1Cxl~MI. } q28o 9aQE;51>.3IlU 3#kBKdBIyXV:L#sM8vP /\gwcR'r9HHِF4&d/JDxA?_t>Y.GBҳZͻK9b_^cmh! B]QL9DG^" `"RvGΡ1FO+F'J}q&pRIǿ.TΣlR{ne+/(g/_Rm纏i݋89Hv4G4͎n_(Y<ԡCBkzSʳ1y"Fj^qux".yf:'"B$V,B&谺ׁ@lOΩǑ^vnRdC8"%vLbd1MBsZfW3j֐\1 WopAx-B&˩1?pD)_3P! ImhَQ]$)µ9MK.EɗAi}oD0- ) -Pe&nv![Ք'6Ri>J$y&{烔=D/y`|"r5Y>Ԝ$ 7ʘD'A.VICoV\O"gWFq9&,8p mqh͘tv9M壳ո. d2~!9d .}#"> '*|1=%|#%-Gw*?۔>)1D@"yy[9-'m}vԐ_$.)7j 7zɄΖh?x%7XFs^pSo(41s< dHwl@迮 - ^'?~}ߺFH=e2 dmH46P8kr#R/_vo%|}|Y[(c0rg| Rjh|Y*qĊ lăa\-pDSh(yMn wl2tN/i#r}%}$_d*KHpDM1xbo=bfy [o#DudWpȻ_ry$AK 2/LMN-OkJ])t#,),ǪȆd,\_y/w~V\9H#i+]gNϋ\i'dg.qMTKefg߀%G'w`%BҬ&K.B'źXg K/jt4\Cde h$MݾS=,8*|jf ~.w$d/Ħn$1kqM TIMV-S@t.5Wqn'Gt{ۼvF=T"ratؼ&aKՑb&:7vGVL< C2H+B5 -|WvuҎjzyO½II )8*$BCw}@Lǟb=Vu['#j.Ewm$GX{{;˫ )yDiYɺvM ,-_90Cdp37br9l$5{T,zBwKZ-FսC|d$ВsQ8ȐAv- _]=w 듎Xhg-mIv{6<)_T@NJG$i:lN8{HĄwdHܐEMQch"O~}KqzG1AO.axi;oWK վ?UR)aS,"!&POݘ0k $-2keKVik;͗̆-(iY8K+X!&%"Țnrq@~PS設wm{v(qG(mD7CFҐj%NFN!qjo# K2/ /)]d["g3:a|9QiXocMDR7jaW8D&U:'޾T|C ^u D܇?L]#:i:j^jzI$&$,,h5C ]:"^2ʴ >o?Ob0 T0mA朙{D+s}X-jml9gmQh}dWª8s* e!k]W^6nnrpY%Nq/2=e ?"A6|\vk^VpH4x2|r^*| Rh"O"MI;ތD.Qg"9ל?7[)ֶHo1EIwd%gk|3~#)D 'H(#=*lh7%ؓ9M+YR8$#F]ZI\%, Gp< qW䀽`}+'ՁX I`Ha͘N5psA*XmI&nR3arV$kim#A,[I8G<?OLQ"x-Sn d-Q]{crߪՔAF6\$n8A|ZSɾdQ]#$&{}yQckq"j]64CU!ݦƁrƓ-7"Ljl*K1cA waVsܷQ <߰#քWQ+mD1VJ$I֚M>19l1n ,""|mqM,cfC,l'6?iH E+U-}SnC#kNuGrCt$S~ j}v=|.A8b4$ |;6Imp{$۰ S MW9懁G1?i,ECnB/䂔ֳ V&v7q^sb'CoOO_Ut[R_Oh#1QL` d-i _\*ZFP#9VSQ?iJI%gb@6\p9i_?]%Arr%{H p0WA9ɒQ''oOY'#ԱAX=Ox)EUD~yKNHAENys 84DI*Y ryIzҎ=yiKvMmG|! YwLB!X } $-d=)7C6 Q[75Ehb͂>˶M/,r4?͙D=O+!:@ t$_H6 Ƿ?.EjIV5lw}#Y$;1 Xyk5ܐwٻ+(t@u؍4 L"5-b>b. 9pY% 2G%W;؍% ; 0#BM!/zD-4jhc\ I_ǐݑHqhz7cm~Rj"/!%lNS\!neGm\~l8r3ۇ}qؔ!ɇbyu!$n*L <\,Ga1O+rKq,RQFOTQwE 燷 q c6%#ed ?b5w$6:έi4+!ѥ.$̨FpdAEőC5e'[IX(iAIHQj(xZ:ᆄ*MVF-w&<"M APˉ- 'SO_~d_,$ރ=͓NSH%DNjL}l aVؔv~nt *as+?jDQc=;މ#qvU:J 4ⴝL^/ݥ(ew.HU*֚| ȵ9NAu{lw!13 V$ ܝl! YCaI~dp_d3^6 ug~|Js%9Tstz^Ft!I53oZޟm;0ظ9DNC֐<&R?&0,WL0L%Qh0Y B 5n!GwRG&T5\dVJ:3M"!%CN9ዷg J[rD2m$ N 'عpPi'6O ]1'|tTrPҐ$q ChN9_=wH@bZL*2 l1!+gw}U-?$6 Y=duͻ<HQ!=Gg'da Ǐ/$X!>E Ft@ ՛zxWs<#dusoE٣@@h}Ոȭ7ה]LscǑcRond ͹udQ I±٫`7қul RNpH 2ON|XiHHljm9:<oN_n ~b4l:"n9~ k1"΀4tlZQi=W;؃D];q+VJqLI\ik0zᝩ^{ "Mń$6ǢP5+ŮYHƇq DWY? Q;@clvRH)GMd YC㋬H2[T"b}6B"p݈'J|ŴrA:!K/$"[s]!`WKU$&2NiaXČ5I“Az胧ޖ$lEXz J6}rw#+-"H5@di#aDmH< zS֑XupCۯI o>pLG"r}E':0X*K.qb`AÐM j*bԘwPژ, c8De/O~Щe7_PEˁ w[lFNKbR [mwZ(]"NdY~ b@rhՌ}A;Y4{j D+CcHmO8DžD1,V  R2svH&mD@}TE_6tP1`C*]8p#Sag1 B,DR%MV^e`.5QiP$#h=l + OxNR ?ÒJ2%4ovW&S[wyŪ&:G-G)B ? Vsr Qrۮ)rv|=uO~?#ur! *+"​ȃDV^Ir$]״(@#x)N)RoB9][k;v1;؟!ѴcSyC08|C5<>NSԸxԹxCrL"_iX~ɹ4tI cjKMWfmROWbf kҁ 9zEZWjkƼR RL[ ӣK\!nz'Sc޻CboD"$ߋ,*|xr2`1w )~Uc)z~l O5yڅd5ޚ0 bAƗ=47> #YvCz"i Ȏ#)vl?eD[;KCNַ1}IFM%?aLƽu8,bc]PAe$o#HOstD:)G+(M+Cv"˶߈zLcHGHfW4$+=n/,qM)F~ 9P.~E0{T 1~"4Y+ap5 䠘J>@܀鯝؝nce4\(Hɐ4OczZC6 Z3}~DkGTY#RcXJ1UD֞ѰێG1sGՀcF}ؠN\w!bM"I[zFۛI0TI,:9 XhOИWQx{KJUjR3Ffur5Q,T(ŷw" !5'/RCrhqͣ'%4rs#y *tm#rhSMzQUS sh8NO$tJY ,H H$PK_kI |Gn!7T ##PYjœ dіѡv!5ANi7hː1Ba:Ig4uS٪'0?UOuc#A"R$%lF:% 0JP ors_Hj ЂFp4cˎ[?:{_Md.Xa"O0؎T=W S:⨨+^6wwӤ_Bt>k#&B;oSQy頳9 $Im*]9r<|<ʶ^} ?w?E'P{ސL){H$mj%ڸuqM'UlHiU#DW4:*ǤNjlv|d9_ '{/B>ޞ!N[ƒKYbTL5ϲZ`mO78\ i<<9K*-5G_9qj,xfS+%LX>8= ݱ웎'˂Y󰊠IwZ!'I"VVYtA -ŭ,F5e4+|PUjx06T]FI&\EXPƍ(imvwj!$=AEC!M RE#!o&|꣤rdPW!/+~4:+O?DoDZؕfŇG"&b.h>oCՒ/m(ͻ|ސSE9ɑ}Ȗpd}ƿxHYǨq$Zè);l4C.eFlGf:0g~jh. #dQ$%*tQKbfpb_yY4H(Pkn^W|DkR(a6x1o!+ͤX=򮹷)Vᖨ7F9^U Zd(gc^t1Br+^5o`VhgzVU;&Vm*ٰH0j|O*~$4 ޅa6MZc V#=hzv .[#HC8'LTy$OY1yĪxC26ϋ\&iWc@ynYոK/&)Ϣc7_7.i͘}OT퉁ddDI^w`tu5d)w+bb#: f uפ%KV l~M5 dr$HYm'߃[@ x#FFA:e׎_&~zho~ r=ƅU7v_8" ʄqA'Ƣ}^cyo~ԝW t%RNv:牣''\-cL,K#D>MiM7hƐs9=Sޑk"%""YPw+. (܇ɀVdBYo3 Ia=ϔ A&/xeJHj3_H8+q't99#;"[G}n;_HdfȻo/$DcD%p UDQ rޮČ_~+G @QT 'qqMn0s %f{.KESPNo2,hmʞz%|zPALdO$n;lߩ[U$OeNZ-kTZL4]ԁȍ]]]e;աӳG mms rSxik|FGcAcx >@H1Џ*ZNf~;LKps%&¨1,+޼Ct'ta~,tS H/F΃|j-Bz(xN$Re&=o$4H'JJ\/d7 jCFSv&u#d.Yp|[bsnQ zx]8PHBdN6#|$w&'z e]$dG_>CF#F>u 4I\<*#Q@'!NI0;j"!ޮ~ =JA؝t0O G$8̽uALl(p?E(^˚cl*y#/uuZke ܪ޽|!WGո{Fm%N"@ $F7\ոKĐ&\cr/+{nwW;*2$ 醊8hϠz$['PD*z>\/ԄuBMR9"\ HZ(̬yj[g+>ӓCS{C;G99>5*ߟ>GpSm#ӄdhp3:܌@BGS-?:YD.̥ApFzdԹpv0I}|%d? bElK/Iȇ ^' Sk~rzcr~T' _D6x|7O8v&fGng%rz7"(-P;QPb/@I"3ww:NG+^Em.ku+5H,T_A8#pnEŀ lk_>/RgzDv y%@ɤsOGbXΗH'3y{!<&r@mwędƲ>mijR"/xҳ >.麤jHvECQcx5N8*Yy4 R"b&U H(9ƦTo"͏2eX鲥O{hBvg̹!z©D8^G 5jw5Tk@ZLfJ<;gG1I4nAB-5`'e%q7B jU.NXji(x?Nu_Vɧ-oo92YwMJ"D+؄2ulLǼp1n8ĨU׀ ؋4eІ6>T6,Ж&Vce(gԌ7D"בFY}zH1J2ױE Ļ/c>PG:ׄG&o}Ktn6ClQ_HUG'g UV6t$qI|s$*FJ+ .C\ 1ݡ`@nfE-S59QEC1Brġ@}]g1ҷ6ㅐt:n[{-ѢZH!ΞǻLn~ᑼڋVTHdt蘫+Fl0ٚ-hO#j~,'C ʯe-yvESIIqH1ȩei%CfS>nmklQ†* E5"dQ+B)H)t4W)2QcDcz \/w"m8UimZM1gѤP_-;3=0'j9C(R@o@Jö#OcToULJ H1;;Xnp3 YJN:=aaHV뇜yzڗVQ.@GԒ|@EU s5*^ HD <9>d6ܿQf[*<U5LR=OT R![ 7Gdx;DG̒ mbPNz7 oɘ,ch0wvFDފ'ƒ@Dl>옃4ٚѼ"o !s9rR`,zG?& !dJ - I/'8 J&#ȹEl QA7V([,;9VȪY'AN9dfHO.R+ VK/\1D=sAAm2\(vo͉3O.ETIÈhwQX)u`xG[ !{l Q cCcڽ2nId-Ws&kCrJMHH#ŐsŽ$=aUˎQ$tbO"d9xf rZ:[`nLiIo$ ct8s~Atk(> T$!/t}<'qZwF#,%92_$cąQ*~"ф>xcɐ?1Q' l9O$6f'v N^C\~gd![; <;olGLd:ݩ \ɚ*f I:9%#qP5ٴU9_H9qfh즄 yC*VZDNYƇ9򉤇i^s}:-"ۓ׬,Ic"r9w0YJ"=ɾI l_'Nck>;vSZ^&peY7R=JߦZ ݁j ծv")Fv.I*xqIZ/r"o,2n!$Ƴ,>9C5>DF؉[D"Hz|C*A3)G)U)c3T<LpΆ3nDHI5RX4|P,>({t`xbgg_$G;Iș#~>:J2"T/@ >!GO^6|@Оqlq$m#=һ"H a?E1򴁤&GGׁH r>M:)| G]wn J&:HHCl19LJ/2T8HQz?$02Hq٥׬xbٜȠlh3;sc'GluƜ]2Xbeu3JMȦ*-w+G #9JS.59 OIDh%{vpj|]J|_sM #_O0`:8謅ݲrA|BʥħI?J sADv7(2 if"*A^:YT'?<He'rV ]bt1iJ IUHwvd3qgH1J+aK!I HG. (^59,:I$I^dϗHhZ͒"G~"Q[q;ҽu|)Oq_ YV <\m N6:"Qn:OQlR=RN#e)O$zYFn^ HR YM4eQ/ȝDk 7Q4leRtP԰LR6,\ o "WwȐ=_Q$p s֕ݥ8W'2%}oH?Vi6ζspW6 C@rz-'w@9`R.ׄEҧShDOcD+o 81gt\1TfӍ_kY'Rhp_JB7}-iN.=+ pO>^"" ۚBx6auWIR] sxV1%K nԑ{2$k`~5Q^3IFo &:g(`b9sTD7b3@=NGޙs_6dQۃUXeh/ ,K.3Hȅ#'ܥ!# ?*j/ R' ɂ@:-D9 Cr$Z~Ζ,L)-JԐ2rR`tvَ^yi%7S[. V:r+SBkG{m"@p,*΁ :pe|_;ed8Ƴ}^D;| }]$_C9*g8І\s_G՗xxp<:_IwoL53&Z:LO2"=bfF%*dP[,oyPDv!t=Qb!UKN7*!d㬺U'KI.|4z dCʑrGDT;;9u1/8 i'OG88z^'-u%wZ @}RL5|Ά:Hvd'=Sn_$sz '2N'̥ #aSJtQKMpV'M#R'H2_H(?kwcl&WHVZ}"u.i$Hh$⁅Ls+rX[qM,(^b*")[%ǯ3!c?E$BjqMTI#~a_y',zǗ-|%={Y */,d xtoiNEO`^(随L|"׹woZ_Fa?HZqq?(|tlmz6 ߟ#Bswul $hӲqصht`54=z0A2N>H[fw#p[Joi_@~pD/_@\Mv_aHIssO8?_H,\翐K5r:/$g#[^`Õ@N7ʹ!R p2K`S>rˉ5W$e-]Q&'(D߸rcZ6mGQ"qq,^?NEz3VhB= <ã.H+(ȷVԞK`.9袜q"]79'hP#$AפÉ׺猉Xw )9kYo%iA“\*Og{W4٩V9gS7bE0Eo/ҺPbk"E %H 1㵯j)xm#S vNV+m(?OXAӛji+~1D9=ȉ E)лR1'E28yI|n;Qra:Iû|B$K-TO:LcIX:edr~!3w.+NblÝ798}zFFf)97?+nM6wA!dW16ѐQu WFK <Yyd=i@vǍs81R]O?K14ixd<@-=SD_g귉ZG'`)9Hm+Q!љ>t1~z +R ǑU5ؔNmwvž~U Zw rJiG,`sC׈v!Ã}qD)9r$OƇ-E@H+`j"y6?TjTjL#+M;:M+OA9 *ҎFTq3[wy&{ ~ +F6Pzr*'6p&~, UXOC|cgL:D4<^!хpEIE= RېpgǍ':YLG_tm^tt J,uܸHnM޿u⦄EboCr.D" M2"(:J' ʁz#GVL|B# 'YUc:y|@NnCƏF`mfFqBc׹ToO6mf"7u.D@0^wwk{_p:rʜΧ&RC&?'|l r%qMry nIv $y5cv"`,Fď/%NjWIU z`CҰ/+D\{@ZD*ȷ+N8}z~h5/"qäQW0DP/ 3?!uT! #0F=+ $\Å\Km\:Oo4YhnʟޖKCOY@%yڗcR8t57y{ $ |EJk{lV$HT쑏t䒰}D%H_xӤw(X yak;⒍)ٷm#,zMbnkc8H/o( ['MзRt"O ,+aȳ$'ioCDg\^9ȩ5Hs8.)@!j|"j ~0Ė:wH!\ ;;KLH=@j %0ޘ˼Y;Hk;&^yE4?b->ɯw5bHˁ&҈9߉&xr%YLJR&!j#}{"R*# =~"v~=V"XCV`yzC=CC0F0Q'K|; 2Dą8{cw FH*<~Vm4`ݜYO; J(u=QeŰÅ0vƐKeDGa:8JcZ"&jIuMTDO^ѩ%9O!M\9>/dI$r7K@n~ AHo!\Qȷ5ӱv"񹦅&,q t'T"]|h[2U;1;au΃ᛐ$(arpB(ÚD?Q@#)vųp"PJ˟3hzB/a}ָk?%1s/͛׉BvDF;*T>h=|SMHHItE.9I xj7LTw/x5`KNԉ[@25`U"A"DvqcZ׏J>;b}>e^$OYR1)ough_Ŋ" mF|_r3}D$FkɡNyhX>p"-z蘻QgYk4ƨ@6ZK dYK$VeED0q7jNB# #,>/G. ?d&EsX4m}|CO"oQ W)w\;aሶ&˨Dc)G^9>m4VRR~л(!B}*̌|"",/᥏u:{sF"%CiM3bxqM5׬v֐丈]}I/*sgx)(A%.̗^6Ӳ(1HD V͍&N:X/p8:qw7>`3xJH*reAfnJb0iRo2C$0;nC5J;MAn'~{??I2u<B_ֹL|\JϜFC#cv5}=Ho9ui$H5OhWIsSd_$6@"3*x Gf$]eb畻 $vNA #QM$$ůHp~ "MbX=&N"~(+>`qm[9B/ [qA$: ɪpӽK-D.m#9> iHq5l[:/5ZRY#F,kYyF1iQ1EEOEzQN߶&! X 5/XƲ}HHfv )vUj,D?S^# g&%iryY]gDeOȷzUC"Zybdkr ,5YUw4Q񤓍u{/ B;"5NĆH -IPk^(a}C54> dHWQ,szk'D^{o ,,pȷ} I [dzC8**q _3 7}ƿ* wyWǮ5(hܟ LxbfcDZ<<8Gܐ<6rv؀~U{+ŠhD#"IG&u;t)$Hy7DiiXð*sU0<4;hЅ$]6z݆C=%DjcAk\7+? 1Hv?4,5<kc&MKр~8")/z cRmy" ѝm#58b~w+Rs:wf:i)82#ɓŻ saN³A I6hG"#/!@"5N FͳxGg%~$~D:NDS'h kى'}I1J 3Jg3$>yTo–7aڴfk>ۤu8ǒޜs١ZұHl%,-N$ ]ӊ/Y$bB1Cr1^F;DAN_wEV2@> +Pb#_0ȡ:w}(}Q#;Yvɂ3Д d7AkfmJ~FZEh;W^Eư' 4 IJ߰an*@ ҏοJ0$:1`lZ)`PĈsE?"ZQəc4Y Xd)k羷3ȷ&߸=]'ޤ+mrl'V5 O3@%H>bHJvS'񖷵΁=抿c e)5hR*n_`Rw7H- EV X]49Ҳ/& A$.#!O9;i ~"9<"硁z[)#׋JW|{poY}" ^#bdc*$̴%TK !'%T ,τF[Fcqtւ$OX4G u݁&WD @8N_=Ð@=(e9 %Ҍ*,3f<ڏf)v cl#* aHyuSS̜*!}j4XmT6_3o}h1LRF5£2MtuM &iPA;!a^ $i`&rkYpUGAȫ0o!@=ECϠ)g1&}bQ#1WQL:+cvxI(rj9[]Kk%R:sDX/deY/^t(k|~, Iyr; ٗBT"7^s{4K e3?H 82o&HtsW違" ̠:!-ƢtydWwשpsOpic[AK*reE{'rje罉[ Pqȍ'gÖH#4 9`A "QyYG~mo7JHKXDBq|TDr;4A9JH겄l./AtF˿H1O8EvyCk$r=;;sBƬп"0e,?HXf@vW[Ibщ\ԛ!;r@5zzz!>t!ZnrrAQd Wqq6d VV\[IH_\={pu*ñPƶ灤w˸͹#?Y)L[sջyнf?n"0I1ׯH9b~Pxn@M9žYIiߐ$IN2/{SG'@B6;.2m=} ײ_FLTaGX1. Y&C `v'L'b2j1H{M]ʥs09i rLZH!#**r~l&_%Z~S {I\,#ĒV*!wG@R$tt$9;ĒHUG>ߦ;%e R'RCd-f毈LfKVd~Oop۔2F*_84K_jHYhrKC+HTJ_b7ãIbXtXAjÖnQ A}w$:G|C%KAI~Nm <%U{p^S_7/vY6m!g dev.IA 'lc$P5d8۸P8YGkʋj)6]<_p=0YFA-.>u8y& ? ENᘂZ _!it)~%!]H٩9˩ȭyuď-I=Bv/xdTMꬸInܤ|[ZTKN ~^EwMH q&n{&ϘՅk'LJh1x)M"reI]dM!>ކE=7~$u?$Xh i?$+sD?o_ M~LCHf3*J;MWCbACOh)l[9;@r;:Rڕ5_TfPRHbh9q8mf@L?q|tK̀EkT|its=Kקk7QkN#oCdy⚗uz_Kf;+>&|ThFEÚ.٢#$Cb]!tQw3 #(&4GҘaOD_pAF f|CNR7q>Eæ e@N?Yاi_>=$"7KH yw)oBŸi?G]ƃ8x|S#§+|B":u완2X W6DZ(gGZo8Ƀ(%zrIa{\E6~jDMHW;Zu:arJd+8w[HfAmE:Rtfa^1žc}H+F$-$Ѥ3&u⚿N uN34[@*c(~t6xT 2 觙_2p.Y6!G^6͎K1,OR>IpٻnÑ`R.("`!OjpkTRg(49a^OBn^{ 2V39 6oD榟r*yM ӊ!]Pzp_!>qwǽ'EQ1RL$nDC[IrB{f+XKJcGmas Z۞8RgoK}*P{"%+TnTۗܣ,y׉U@6)RHorp۲b=P[ő܊$Jcюb!3oG7޶d6EC@e#KPAV=RJaOKBO?B*<+x:7p N$u+bsq>mڇ^Dh|M9 فUS  0SLQIHVR@C ۉ<Ȣ&,ѹODbP }jRdZL ;}^fD#%qh"kz4w ɷ}J>8Eau[vGAj(o$$Hbl#Im]@NR;S)j 2ce)W_哿ع&}[L仏RPE)sym.ѥ;%*F~@tmĽ" LI&rizS(!bY"Q@J(?n8E`a%տ lon^׵k7yՊvcUCq }Ns:E$M͠YT;zY;.,E@vW  OXAQet͔-h~ڏk;OԾkce.raPѰG-XƘATP3K$ fz\ 18ef RVaWƎVe$؟7#2W敕-W^9N<|I|8y~Hqt $j_@J)| K~=S~9=^k"Tvf&MMAÑU &Z ^T򐈠(W(hb Hu>$rb6G|~?VI2߼,)Mr/oTCneʁy@ȩR-ihT+ ה`9Nc25YT,('O aN m@ۓ*w4.<ŵ*wxsMCnmdޚV"I瓆J\@3$X5QAf@7#w3FoCŸ0 CjG{m&) ;PAJL^1@&a Ft1$\?НY $Ry Gq I8ęe:rM{ꭍs ͩ4S~Bwy|kB=$qskV*xA?:BKID0$HbCQA^!v%/y QBDQ{osCv_nt6 U E8χd\&WBVߖq4ۋPI%-hoRY*I[79?쎤ڇ0%7HS{:#$d|EHw@V&ewα|;K':tONUkJ\Q]0kޑ)Xq6J5W:0R$Ȃ}b VY6#Pb'skM+Z>4rHS:Hh|y!yˣ7,H:(cH4=YOULz5B"[)G6`Y=9!GD Ր5ĵ[+bf:Jr9|aȄb+=I54t4Bb=HW B&[Y8J mW{])V9GH"W%+'kאq {z( %~9WщW\z 'n*r\N82-w\O F @"P{G0R+8ف|K<^*i#eDXݍ3mTHmg4&Ғ},W6E;.(ji5] TT! VP 6Vӑ،O{yBůϪDGV0kқ譒h3$iNf/HhN7$d鲣ZJϐCRI!DKtH!NlG $Yxq {^H%*YOn˓ȩDc>FNݓ*HXɨ!/ǒa2P2q+C \4T~ȫnS:7i[* IzQVM"V8ގyD[B96!AD~IK.PH o7$$<(eÑlH'$3$D^Qjc2P@GiaG 12$([0U%H+ُLFӕj1o9q#ٻ> @9ߏ.?r~.wDy;17KiF5o=VU:" (G #׿O"u@E( pھxȋT#nC 3rT E8(bvQr]K{Mʣߊ?D{y(Ulps&u@RHkǫ)#TǟG ]atAA FCd !zɇVٷnWI$ٿ4q18,+eŧqd>ÙIi2 $zqҹa'ב4+ܢ| >_}l9MZm&d'!}nvȫd{SƆ%s˪^0E܎ Mқ:m@p Z]G 4E CT^|E|HlMzzh RG3 Hd0o1w f8'_#UqEǽ.GJ FTV7z{Hyl9!UPiamxd~H5Z%L6d:y!%0!0C#jesh]3pHcMaia9a~HS{K.4Ҙz3$~`%Rx]>90.&ۙr=o泇54wȁڒT@8NKyYMHNT4yfU;U `'G^ ۧd79ˌ2~#H]s{ՄeG\")OizZ_?c^HS/5 ЭCUh4a}ȫ|h"Mb`)N/R. 􆸱 BSK9Ԑ8}G < (Juk욅$_Zhu&r5ƈqA]r^$[6Ap B )*7f.iH}hs cQ8l5xpPqrfo";P`lGT#9n;V;L/8g%xzY/◩L]LT:E[I)}kDqb5¯ .YMN @#E6U?ݴD=&Hm܆M+,ܮȦH_fCrLdHO.[rT&q$ q}7z,_5dI)"!Oe ~#K Ѕ#˥?Qrі\ 4ϬB$_Tv!f(F&5ȷR1O!$, ME4Z(]sFZI[EC6ȯ,:g55|:O|Z] Ʉ+_+ qU 0ϋ*>A`cֿqqPUuL-i0jH2L\d!E0-QKNY{`g-߯_?j ݐ6c^SHvwTf'Ϯ9$׆v}Dp(=廦üpL]mMNFcr G³>#]'-EHSn!D ǐWM7qMraM{1Ep$՘ut 1W::> __[Y~ES.2F!&./y~4 I O3M)s,^k0:c9<1By3`nl@:99Mm 5+ZIݳ.E̻VRr:oEv9qWkId<`ѧRN*&'/o\<i fΏ?;? ѸŁ[%Cy^Sxa]"it?MpO1Aʊa?HS=Q5 Nzj i-‘|c1""8`[g[K$s.}J%ǶѨdž^M3蘚r0=&bQ|}K=#f|k&0 &;{^>0Z97 ݳS_5qjT\^$B|'e i~5uH^fAЎ߯J@$j%)[`\]R94$۩RjRDsj '*%DqЃ_FPRGAx$xȪنPY iG+"/.8"/@RF ŞfcAoe@;G"1mXxIݳt)y:|M 1FA$0"wBHv;L4uk]DؐDDX5j/Cz;>|_u$7mG1f'P!Q)2+P ovg$ Eޑצ4 >& ƒ@d>J>gt_l._G/G|R4ix)mE}?mŠFJiO@i""3;eNXɳa} dg }0{TFc5U)kٶL-Oes'Y؆ؕɝ[ߢˏmǜNi:Yu[$ - GWpêC,pr}4ly,8r2G=$^ߔNDKm:KHׯTc5Q 1IC;ћ#*7a: e3yrT$9b̊Ɗ_b)ɰw*qű27j-XRפF\'9ul)yH֥Z! J]1֠Wݿb.Xiw-5 ]M}}Jku4yGZo%ٮqM?f@ K w~]^^a#0}xtjǛz1(tѴHϷXٷPcS\9C.@F+KFdQt$MP!j4zR$-RT2|6Y-&_?'ȍ 0Y)0ŏodjG 9>/lV%ŗW~MImSFaSiϐGUQ5 yLNrc|w095Rx&*xDȐTyc;$)JehF;4x𝮿u>bur [Qx!M,9p$I[z ɯwڙVaod4a'a!t>;$VP \ Iw,@Ak"M8; ({^H"v~wCLk}mJnXd̠tPf)5Mub-UkESRV h. SR]GҿVcS'8A0mK~,}gPxe\ɌH61[ :ZWtY28>6=9d{%Hgu~lpSSgҴh /,!/5 ZgOMVئ%Ҫ=k"7@A))!J@/g -ώeGJ)y2G~je'&$23Ui.n<ԀVљ[4Ug!d]Um|P >iEcIj%cܤ9l߆mP:llKCLo9/P n6 E_(tEd[o}(0%ASr@te;17Iq5ay2 )e7R%P-'$x9}[uVo>2SdgVe ArNL=1 ɩHz!#E09tqS}y|Mw80:Jb44)֊t!ߢ}׉[Yi-.Йs$ԷddC${_{TFʰaYfjj~牙-+:˶ZT{"osN9#Y<0-Yp'q`@Vqf 7 *Y_7@͑^J'D@P U"!bfDr(lT'l:;BpwU@8 r&mF[-.70i4xA*>M=;HL:MdŊTb8_-@lY}RmB}@6tr_PAhǚF0\uH|WLq ݡM5fғ<& n5HkHP/(&p j,Zs*U#;n3I4JV$I95F05I-m.7S=B =\:s'œ3k36ic-蘨?@uN7Z<Y z-OOc:H6qq&rjCBu"Z|n^NüYQG@b4S,7w$ޯ;O,$>3ߗ9GBlX3;Hj{=Ӆp'ˠ1C.eLqdQzCcICqfךI.T28fD< &0o+ 7Ych< $^w^:+l3`˳uB¼NL@?HF´.Tb, oA M;{Ru}ߑ~d~ڡ ~`9jK,7ߥt~83#?x~ cjhgD$_5URv5+ }I;ȥ}\hM™t^*Ve7L7J 8vODu!6\kuEEj^3B.^`yo'r(/7ĴCp$ 6(Lj:5_z>C#ÖD:lV8Z%N{AC}#%}9@1Xv$x_ AZ73l#YH9>Fec*.Imր"#~q>&>E)2vM2 irP;j!ډAdCX8mG܇+6~GZr9Dmk"$Z>By n\P*@}Hh`uQw$~2 BÙIE N8 w s  JtAL@IkU**'BRx呜jIQ<0Soe܈hw&s,AB H`p*/y5a\ !'xiy\Dt M 6ۏ!i|} z +>C~>Tޗ`yyyG7@fb$!h:*|M18+W1)=H`DoGG|md>#myd?fh]cu@[Z @HJ D5 7DׄvDW#+@'4B}Ī:jԯfFLGF*3.EaJxv>P?߶IJΊ}gV1l&֫9Xr#!4jVl̟Z7#UN$ڼ|ACjS9t bP@_J "L_DmkCBf7ă’ $|a=CmuDVwf#A/BHK.Pi4v5=4qcV2WA1<`F>1ia5 O:2-b&-_o%s Ӎk +hYmB_ @^}d :PΙ(ͯL \3!n#0bYP1A$.@6GC,|y4QWer֥)4(ORaOtfq*yfchVK苷=D~Uy{tx93@L XhXA!IumZjHNFW_ض"xR~NCVzbp@t?fP0)Ae-D>ˊN$]8Cb^䳴 ]T]=mڌRE h10 ,"ۈBT[ŝA.uɐc%(Kn_8 ^v7f"8(ƸӒYcy`F.j=o5ßqަɺܘTEeorރo r%a#it2Rl8 tgyI'Ƈ$,-+$޿V &9FτgB+ЈdY1)ȫXI_82}Jlp(lJY@C58 QWARY~ SfH:;\ ywT$ %UD Y ZA+ގDu;*uJCbnjR2g$$DN}@@!zB@!Eߩ!I/'ז;[j"1U!MS-56GBd!yYhN—HscHޑKAm|L&$AaH2Cb o=OMY=r]߻fg%(Gí )JKBv8$F?O =pJut"EC>wpm2x֤p͕YoPaٓ # m>KQmUhϧaHP9dJhO'D, g0z>pǑ&?O ɔlׇMz,q#DneDX yārN=2Ɋ_zXɼͥwՐZ-5 k{eȶPyIT(}Koe~3k$,[ӑW]CɊ#5/r,;rIu!q u.I-}׬2%a.I|:)Zgbե5etUo|qNu}@t-OMXfLJLɗnw@# xhTe3C$om( )hg^߾ z/ЪvZ`*PIm'Z/%HK0"P2̝wR;^ڜȁ6/Fj^\-$>oI:!A!-$ő] zuD`qm{RMH>:aFWeAjmlZmX^ l}qE7WH?ȪIBZzP ZD VP*Ƣaتʇ(9b2nߏ1 uZӃJ7$>§vHZc4ېQ]YI+f0@n7J rg713|g^Si(F|mV`naH;b O: |WAǦwXP$c ND)3:,wS-ĥJ~//UXCR!nͥbԲI˥#V㉚ۊ;_M RWILQzYKLK!jd݈{8;R_HqÓ0Qv®xaViȡK0TEgCvhLr(iN=JHDa˼qo^ <WrNnsR}Eգ;rU x̸.tMZH֐grsH64U+ӑp(ǽ:>.ϸOr5|NԑH,ưQǕTy#bMW.2E J/ U}ӟbʢ$.+) Dɉ&Eȏ哿J93:tNCBaWT.1KWI:>m$١4FtW-&G dM( -ϐag"X E\VsG%[ rف.d%d+QG~Ahn (ˎ< oM$jqNcH{H|C9)KC:*;NuˆC$}'GCg0iI[-cdw [j8,Hcd8e rT.~BjYߠtTʴRZҀْߴJJS8 4=@8ݒ m5;၄ aLȟH-t69PL.Mt[AfĈ&?rɅ PGnvM9$Pɚɼ5,_oe!}Maw`G2z8M&tH1|vr)#yUsAnr|k{Oǝu a)W(t1#%atKhyb8Ϻ>tQoJ+7@sOs#r=GK`fgq4v-"7K4&JQ;L(?g%+*6]fnBb8dZ-IBӘ8RE5O (ǵ*ܸ^(r3,wh)afHkb%E=߰cP[r4rCδ~i[![(|[{*RNՐ+㉶EcʈҞ@5[f#)A"7>jkR暇:P>7!"HwK8d5rs{1D7I0)}-Dk\|6:G;FH+ةAk3}ڗ^M|<*0QK<3!}O"~tv"ɦB:9há 8rW7EPyc̤}INܟ!emSZ]x7 /0]M{^PE:02zAm`JȪ1gK ISTOϡ ` tjIc}>aMtTx|-|ώZU`+&ePJآ#C#Mp[6z#&GRR e'$;O{Q7T9<$݈ٴl<X v#u ՠĤtFNpMTo}s_Cv\C&@ݼj XXe~ 5F /uaCBūHp &I7$ϳ >V-*HғH9j"*"%mK_ X5~$~l9r1ƤK̝?G>G:>R]˺Ś #-C*D~n>.^C. /'RL mؔ0Ko#)zu>)}R$FL%RG.;f.ގF\3h0iaH-|Vbnt)fDLor@GVӃ s$Kisp}t}/sK,fOC~o"mzGr<~ Mu6&cs8%,FΠ!7RHp&$IJ 2nOԽ}(м9o؇4TJK&Do$ l' 85)>R/RЮh%Ì2Im/ dxO.KKף w6rҒHnoVA=qu>9 sQw=Ǒshd i"NY,F'q :6Cώ AY&g9_s:v@!%R΄ Y2|Dħ`ЍώpY2X%WUr'@nDJ]by鯀x_-MU*>0 Bn} fetyj\g:[`"l\=!bf$eK7֡^ă"jMi}XRN"',Ц8+'}^h<8ZݾI3S5H)+n CDZheGh'Y&Ufx iH pblw.:Ciפ(C%4;Y 8X|rv*8wM4+rƞU2 7kn`]%*`23g>.T>HxR'râ$]38<2YR-]F~3I/6=u) j>S' '#k^éwT⒌|Zdm`!A8@VS`-"ң / ! K my(͊f|/E4DFM5> 1I"ΐUd<dpxo;\z)%}Y  }m[Iac[ꈜ1$#Pq5r'bVG6/.3<'I"u] ۤ:pck4:lmm.jیh8ZjB5 \X8 @ݯ:rIAg1Lɒu ~y,8pp á9FMƑzae,îajt8f4G~$%lɰüԃ{-M$A&c}HT=dǐ#B KU1:\f~M19!$ Jch I6,`7{51 $ F";&YccbDN RG_r_Iا.q<DN|fLz<ʦ(O 䂴IDdp !<b`?hM9o7y5㱀z߉7l>O\GxgٟN;)!ZuB%=W=nzrtDA|ɓCoC!9], TiO̤ȇّH K|:?AԷ>C2Y0GcV C01<.wC)]ϻ9x&10#/v\,mwckH<3$B/h:GLvyh:)ݙN¥xMOι>!ai HO"nlFKk'HRjH-sx>}%FB, ̜lBMB|_s, -D?=?b7Z6uu'({5Rm<4濭XDނ z,܊J8o89MMdDIO "OcQO]hfg{\ׁ!鞳N+!i6tM!> Iyr;RkPDV*9J;y1VN ÃHO ^ y:'T<+ >wy՗.l lFnI9H(Y' J9栝~%r 3#?R^kAghr>JURS~Y|yTd?X"s]O2{#O#KD>&Zu7RI@ eOzZvP;A!J8懂llo1_hů3t14`kT|W 1iCAȼfz C6@^78_=闄rrW[_q39\h)DET,h'@adsHd%7lg+B8j F$GKL5*ro<95c :[2Sl~L )N]87VЈzb]>U)$tN]@2l4s"/XH bM/-bz`P_do6uv<9 FiI+'q\fuCi1G"2^[i;~ܖ{C뱸"񀲶> ͈R4ȊɁjGQ."\GVL V-6 tˋ *JyuS <8@̨99LJr%rh{v<2ؐc ڸo%FK.Ӥ&l y 6 ҡDu$֑CROcِH84^j5`̳8#-GtKRBի~DniOs =R5-͜>}3]RT>NH2JΣ0Ų%t>=tˍ\P$n ժ7c<Y0LC6Vw,*-C6<8/ߞ,mC6"ͦ//egqy_S|8ep~$V:'Ru3~9\%93$]}TLmBB\P/kBg.Xa)˅f;ROwN'h '4-}E@h#*JUI;S*BGP aǒHs>!M>Z e>2 ?zӑM]yf[%l',QУ4hDԉ4J3[)Fy6R6;>,dmC WQrD&UB(HW$]_ۤ^ARJChG,lgDoO)2ُY$Psv\1k:Nf? _%V:3[|@^t'r;r2dq?NBw2Z#$s& ,Aé R=$ٮd4g" IJرv}jluҦ+fR6"7I3k CC1ND餰>y[F-!%{w$,̴fv )Pb v/$Y]B1\rJoQӬ4$ߢu\)hR@%0D=;#ߢ ? 3(2j> 5+-6֋e~HStMDn$h pHVp+;( Y DZR8r/==:Q wg&bse` w$Ui$[2p%()C1N[{q>n4rq$&퓛7 $Hz )-D)rK~%)G紃䃂r\T_:)u״\ .upNI7Vq}H H]\&O5TǴ!c>0%1sș&X(!2ZCkg_ B{$`Hd#ؽdH]H|&K/ʹ p9IMܲ\{!fpST);fj*~sA1UF,Ḋ dI6wy@hd8lUn|h#i@|u qaQ|Ƀ7 Ѣv,F-3 IVՄ M;j>tH?G%4S GB/yM#(ĨsFSw#lJډZ,IpzmfR!O(m7nmCȇ4(G[ u}yLDZI@ 5p<1m@-m S#خ 2HtYr<{fڔ؆^7ec"k0N^:!iCf $~>8Q Aʒj+L80!eT=ym)7l ?,hAtw9"M+Zp]' TEjD <&>"$ԇgO<{ҍ\%ZZ~(‰j2!Qϐ諠i/y!æ)-@0!3~K鮇ĵ.D@(QˑP`]hlG"#JQbWܴ1I|+dk$~$)k y9/$x>Oھ]Jqj $?"Y|r ;X$jǖB=@*jyRFz5;oyBwRӟHW@*_V^\_bj(!Gl}N~z2m^~x9T-$*ϮYw)SR8J1($X4,dHϒ!W/05+>HGVOy#M% /Ҩߚ0H@s7n~qwÄ05࠱}lyWSQ,8B;=xÍʻ])XY4uDѾPaLBqm*?h]W>^-3 *IvLӈfޢR`t$!_DviR0AriIެt\@+{~Iyd܇JuaH2IM{@HĒxvg2!TCg-Th顣Jhהa7w V-aHz{>;aQ𱮆yrȖb xV[Ӛʑ&X;{+f*f7F>Bt(SI"Hޑ۟hOd$'-Ct#l'r*\j5F^-j* 4&MUF]Jl諙"HB jup'6=/cm h*9gGqcL69u9RI )B2 7&$2&4-DJи"6F:ONO0t27r,'S'QAoKʋjd $[c(sTE6Ks܆R XYK5>vv5LwQ o:R&@ԥsߎ%"oIJ*}'iSo:q$u,!k!hu~@ÑuOfD 1G6b %If*yXRykU{R#UKޅoeq\IDpnJḧ́r0.4V '<[DD턹 lOjR6HZ(D9vC2@ i]n9lۑ4갤!]uS,LQ4!_GTPcKLr,] 1v;:^JM`OAz4θYi!&;c9"=hoS]{Jͦ:kfHQFIؒK̋:MV ';ֹ t1d_ biÞ R,_  Yh1 CBBkc!^"\'!d=ϊ \*$|TXiNGg{FFUeE {L 44K:p$L[9^wy܆#d@;OѣEbьw7Wk2t5{1c[ՠxk ݄LsJVk%w5c^J)dF(PcB!ib:a )v:@$9ٳEm=W(/&`˱: I(P"(7_+^uW *)XoII$g`ཁ*SĖP_]damn&@r̡tM̼SX3B"0Xݜjk|ʻ(˥ ~϶~;^\^jE‡DoW"dގ=GHMQ`S'0!޾:m⊊HhDNcgxX:M@=8謓Oduk9q~{";f'tHGj8t΄#[$Ft"v1լD.unѱ́hsҎz쵗y,H;VV}v>єoabfbsy_1y2$Hy5iVoH4,=|Sx"bK0HT2! g"!G,MajfR7.bF_e VQF+ @)5{ZHH8#t"#H[yLbgfgIO" G#T&YR'7HgV7&'4x"cґB)df/$7G?`>>03`DZڇDT/V wIZOo]]#D2 IҢKItV5ZmdH YȞ G'Ҳ;I= -n[ xvȐPe"Eq?dwV/v·Dh$#Xis/z0!9=9ٳCCC$=ЊoJ d[ ޙ<$7zS WDmoMd3FIͷZPJqj q\DmٱK6^qW{d`MQٺn9AP~#WdH*L5]{H$y=z<1APX  V:'>:Ȧ^iT{<$?eOQسK[NR> h:>߳#l7!/4S$M# ̀͏ 7jND]n:ƷzeȅbM$M;O,a}^H F"1:߷1Ѱ`IwgF3_GIȭVs!!TܔFSVoWv#ߠ6Rv+LBk5Z}Hy^(H% ! %sT^< "۠XՂ 86}wT~*[i#Jf$.S)vւ뉢;¿._%~S,Rѿ49V zCMS1LDqF,YbK3 dVW/Сq*.?4eSZ+~kcW\;1H8'UQ op3n}_ kffV$GXVP>Sxx$H}~q$ A$ҵ~qA=&>a,3E8H)Hً2hf؛Ī1@3axf\`i^dr Wї_%-rhO:L~_ƑwC)!uJ Dϗ$THU {bMxwEKeɌ&<2R8.FO6@65r w ة-K̳k&Z׼6%`ë +L{-8jMUKxG va|GjqrϯM鈴vtr'&'%shkҹz'[/-LAS'B4h9 d^EZ)oCOv0T=Ab*;:R^5$JlVH)gE0'$'x=ǎ<.RXnJQåJ6x RG'ڰ+3= 0{iuM-뎤`09MDȽ$w4zb&%/w6dN:o^RN48D"Uc|yNdl]5B*h?F{>RfHr ?抧G ڣDB Fq%W]F@HDlɥ)C):횐< ,rr7DIHE<)쨦J+96HFXG!zA|ѱ-G>.D3J0 ( =x-_%4{F H0zAGA? EKyM[H~yw/_c85늓(tqe}G2kI$4f }~ y'4(4%Otd8' Ȇ4;{dF4tz%ٖ0הJ^9LR!Z|ؖŝ,BƱD 2jȑ|FM$f1x.Hy5ٯ$lؒmC*oA3]o["=v=P$b%Ȋ'RHO4YX;@cwSQNg D̦-ic ic;V%L$IDg"ta HT,7HطD. ⚰h p AF*5K&={ RH/LψLC1›>oP)̩ qGrK##[)(b- @BQ+BMz^WPD06I| JIDx6$Pv0P%)h:1ѫծ@*yIV&C7Ghs-gFfqZx>'B8ـX8W]: hE%]n8Q\`;rSΔQ:;a聤[E.yq0qT|<η*!}Okdy5Pb% )Q\"S2,ꙆeON^LU QUGc>Ua. )T8ŷ,WBZ&0".c'{4I+4$`Tk{G RA'L%V ʑ*s] '0%m)vCaͽPSVUtMys?AxR-O}x = I71u:6-|:–)$7*S _ n"E;_BFk;s- )@~@ŐۙWd X)KLP1}+ȃ6IH 3ZxyG BCfӎgVZEgG8SO"A*.NHТBu*fP aHt)HoD& $9HtSK<.|"ZhE $#mpT㫹d{: H̏"+]iZn"_ݔ#4QNNLʃ~M$"|I?  >MopJ|*Ovdf!'/0o'0|}Y}W'r/KޮyuMlb5q[-Z|J$E,Hk[*^m'7d )̪ԑ(CЏV>[Q}f6fÎO$:L &t*V- ?ѡ{lf<B2e{#,Ȗ% JqT-pRˇDΤR{&zʿ Mv,:eB(&ǔh pHѡ'}*&/‡|Yϙt=|U4y?撟*i NY*I ք%8T*ެN#.̌)*2'0qB _+> L.UʐrG՘%D>HsB{H!4 ݮ$oHQg A̱8S KٯBu%Nx3~.%!9/c  (Зm98yE&P|e iY!&rhw/ԭ_n4EW1(T]tuE.-I™OsQK2d )OQ?q Wq&Nh,ps >G4164W`CM褊t bQTHz,&<(q*/^q!%|~~Uvj'+y&8"Tǫ/oz? S±meZb*͔G2X IJeDҲjH,hA"` GvE#Hh>bNrz;R"H2R[~ ˙77%Br^w}l޷DKV ^RoO:;6;o4_J #3`ݤKHy,| $N@m{JV4"54Lf*5Kͤ`^X/-u]V | J*7QGÀދ{IsNײrFL.45Zot1^H`BYz5&/Gg+4G'RRܜ?m F+asj0$f;sqA*&=Hޒ $N 1y=~Xo<ҽ|[ b޵D_@ujҸ4kn} 5Mu)㛀ddFLX-$xlίHcZ#_m}HdqͻG"2qfX3C:xL))7lQ69s̱%%@%ƟDO>P?'YSi@YڢdE^*}q#>l#Z5RӴIKŶJ&Ӑnʾҭ=):uDb޶c#EC%xBTxd҃Hn>:I `'$=431x|tNB"!g4#Y \_GAשm%dꡔcW4t4If%_%v Dº%芆~$t yX:{D ȷ*X,u+/暘i#>6jm⑶,# r>FX$/HBA&9z$iVn̎X-8!]8|q:uKpۼ^)C*D=eqJy5ShYټC[^ӑ`A boIgאéXKۆ ɖ{ls'̎6MV&o:|*?eI!ݝF gN@H@+9W$6UDv_Aj@"+HdK>;,&w{;XFWx7*\~omZ2x%9G#vٙz`]9){yIBVj["y[7i<%@Z?vn !A _uшSIĪߐa9|״O_$_I(f.4AM6 ' ~#eB Q[Kk:Z1=qGRk Vvr<2,I6 6+%!$&c]8XUP))=]g+9DUHLhZ"9کd/V$=oZ, 6SZ1$%=$OFζcbmӛ.҂ҐLNZ־{nH`XU'$|i P0@ *C6Y2b: [U׎\K-:◺~;)' 'Mes ˓acΦ8HHnIqXUUSxD19"/vHl[;O2RZ tjտ5$?>$IUo=yNe0Xb Dh/EC,528s?aJM4=)Ç}k{!1~"CHKNw/P:GF]Fx oTs]t>B߈M#e%ͷˢ:uT9T0?}HAr dc+.1Hm\W/iB.x$hK$l ?6hef5!9LsGɣ3(6Au:Xiku}H,uP@"dבtD4N-Zt/@MxRtE{:b䙓c-SH:ԟ8FU{V>_t[aaWY7tB0I(|>4Hy9og$5ޜo(eiDN=9\aw VЦ.Sn1M4 8P9H`F9>i\5J%iR-HHTFFYċ{ՏNBJm7u%6!#3 _yA;!d4CR 5QʍX2]׎F+r]d8Owu4}E 5qS!/9Ɩ=!q!tY|t$ L:rC y>I:!ޗB%VXJIgMU!:5R)њr {@caZ bL `3wL08|2rQ*TJTSK@vs7b`Ȫd0Z\<$Rmd9L2b&dOx͖}HSՑIi!/;,VHzW]=_9:˖6.Pc?*]Eg1_$D.8XR"iK{9y;1QUy髀4QAGbu0r.&D~ "ϣP#+^f Q 䋡*fڅl-4 DLI̸ِ&y>r3,>s[4$xj=6U#qAN ͺuH-{+:T ΡG1 iVx*fhDLR']yI?H$h`~ANj~ec߯cfTS"4\2a\. KCbHzOoJe&6DN3 E‘+T4$=CvaHgsƣB/ OzT,\ ?_[iy#F8)ώ ٶBʁ\SJԱ+dupP_G_`^G(\^LB>MX!Ԭ$q4ohPS\/uaƒ)Z|xs N.fViC>|?XV6 KpAˑةl["#"%!PW1-y9dj&>IAJ;Ց{'LQkbC#z(FQSӰ |C2މ\"#E""KH]lXQ^A Ǽ H1v  R$Ұ:TUq$#lu3UvAb3$hiĽ7}|.i"= ƇÍ ^&tA(-Pi_"bfnFo̟CAJ(\ܪUƓ%S"* @q[,]3wf * Mȋ-GPgE^,nZ ̊&0%"$^Xh-F`~8X.GaJ׉t /)L]Gv羲(FݮIZfRֳ+;FDZ%HzkyZ=D+&EH$<҃e Ph'XLa=b|ZP#$“%YTY垙-W @ִJ@-?n M|}hleԂGwVՒnVW^[5 (oe*4*!)/QGGAO9_yz,*ڎTZ^iN9\ _$x I+IHQgGb(c0_D[zY\AOHOX5=9KTq.xiS|BS@6+"uO1:<'<ݐR2$H%cGఈ{w?9t'Bz\$y\J.cT˦d%bv6 wlt5$r*qkuӛ9Iz9>BnR^oD Mj_-ŴaiQ2-ۛfA׀aN Wȷz A&r1JFVr&57C_: 8>&Ⱥ|⒜n$uE3(XDM-ԄPNJ^V~4XYL%]bHHaP$H;xn)XshX)F{$\?tŶ m@/W'~Uu?QY6,4$K"oj Qn >URX%R"p}cP#9F c/s OD g\7 F m"leIYp*8U-_IU#8$UT;[)$}cj sҁPg*]= }kEID2ix]fK4|٤1e"Rd|f'\{AP=D3\. ;`!,JvzVda ʻ C "?4]$=H:R M cZ.'.Qh`ɘQ1ƕ& Er: _P6\v(d%qV^#3O^$ՂA,\~s#ZϚ-uIx5HX_+ECcCzRnXi_H~ԧ_gP#_e1HEĜ47M$OM]IH$ARJLڶXsn؈c叿KC}U;&79ܾ$!.p|AV'xE ^_ɒ^C\5YtFM{1I`K| DrY}8/>KRP9䂪#ߖeG%*UT/ wqe[' Ӈ ?+o_'a`d hP&C(GŅbFCd-~ƞLVt l}0%X50ieD>BcYrofEuTed萺?~4id^4$ ȍ872sm"C"V'wAr' 2ER$i]3׆}(բUN=2l!aBy͜18Xt" J%yX#Q{#>J]R!%a1/IJoHliZ4|ȅh#iR&H'-2BbY8t<]B7Q(@?csP·$s^Z|w>(dKD6qd5MQ[/bS IuVbAE"Dzxuf"V@ n&vXwBMeypIYhRҟ}#%WH 켮Gč %+|ͱ]TrQ T#!bE8ҽH%$iP=<.b>+j!wM߼"4 OFhׄ<]FCBfn}ˋsEM@ZL)[tLsĻ/F`T=$xpх`HIŜSSdzHjI2ݹh.:}S8cm78+7""3.M#D x"t ̂^Dˮr6- 4) E@gn/-$^LRKt@88oJ[coCZ}rc#H yd,]a[䨭[NH]t+{! b.7 Vj"_U u"a1FHdEEy6@8f>qZ`]G"x]v&r )^}AlZ$8׷AVn"Ղ|R"ǐJO h. Mĝ6Q2޷s+g[\*hQԃ ͪ=WyDbAHErXdjpeoh"LK9Dz6҄r/ PNCMgQy e] ^<*^YW=cKHJP*AP0<盕gdeAn&pCcN"osk\noUTef+G $A%-toW-:l1~HDtZ B5yɷ3>ٷ>K')OJ4oo9*ݴ  I&JLh4%,ru E$YDr-tbJz炳0?莓᠋Ցi4))ٳɫ<l,]<{"Ͷ$Z?$i؛V:U{bOH,=)0ȡONCTmC%>NBd!BVV?{߹$f9 \rz0$۠Db5nΒx (VŸh0ZVNcU'KY7ȥu$RV p>ǩ.?i!츇Rty/V ҋ?gΏ}|Y : $erm3ˀ]:|qI֭%GJtR_ +rh}Hn\x?0Hl+'lo$BGb'|y8GObٟm*./f < IZѮH]L ʔIDe3a4UvAު% EfIK"4>Uvɥb!Em Huw1ND+D[/|Hz:HZ_ TL-W:6Ԁ@֢QF)GG7(RwMu/oPnP KҒ( J[K^V!_:4 )ƇďjD?z(ъrSYBcaL%Q#уv@"yydt`TnQ)B2di$"ɆҀb~(6VMt5Y9ف\}Z!"l77$i$_&j"}\08IF_;/[oڣ9vE_Du8J-ip2&>:Z?CvFHHKbĢAҕL(ڝq>z=\VA@&:9aʐQPN%H2>}{Y8+*=>"f)@jsǿWF'15}pm\̈ʤSGe o巎t * Sz&̂ HĀɇM~$UiD$V_ X99 u)9!w97TI&O+) ʍT/u F֑,d+r+ quMKWƊVPze PZ"1 RHL.T1A+y#l?zj7BZ`dq #Q, lkߞ<@ːqlYd nsmsclLwF6W)pr> Br;~X'R]>$& ztۋf~VK?:71kϒ5 2(bKgE;Ɵ1-vgQ*OoFDA܋P<-=8?85z7pꐅb왝[<5-V;a)&u'#/#igR[9;^bdXP|i+B 8: ɡHy!ԪB,ִW/"2DRe3ZOIVNGG xmhY&"IyE ®fIVusoD{Ƌ{o'otEj+Bn5P9E8K..yb!O/ e۫([/P[-3Ln[I"C" & CC A1B>3* hO5xhD0FfEx28JsjRug\ Jd5&~(!58!0`"g{K,Rj-UF `^ N:]J'f\{7^LUݥځD)XWV /C긆(NJVxVC؋Jvdt}IZH<|0 ʀ-.Us!Ac*(,XdTVz#V, ?^U94DO)|qYˁtR$ S99p}CSLGF!:怬-R@02 v93g$Ƶ|j8N䋄; aB⑨$4l(8(E2}^ \t^Bkr#M!UQHqqeߦeA Jпl_#HϟgJ”3#tA-B4[Z"ͯ 1>G.+щV2b OD-|DY](u("߉4⪼3 ٥M"t:Ҧ,rt|'R%W,6 {^k=RFg4i ]R%VwG/H=>\M!*H{Cjn aQVi$`8f]*N?0Tn7V0oTk>; 34Vsk6)[3tyEO IU2A^"z>Bdv;~ ODI/bJR6Gʊ>ϼIW~C拈HX_V75Ä"%"mc6J/yoXl^-bM)y`)|8r.?ų-p:ichde "wW]S3-4&Ph%_~^-Eoo?ֽܐ2?KP 5[[x)5,Xӿyv1p)'4 r]CZ5RpxlcƵ8${yb($>WVw_):yJ "µEm?Х x"V: ĉ'CR9ߐ1\#@F'iu>JMsU@l~5CD.q$@ Dq(.4sc4OzmᤇHlh}ؾV"+n#Lj&@F| ^UG6(Ҧ67ʊB'D%Ȯ-mț&uV"- -97Kǽu}?Η!3]d(L򭆃"w8 K;Ј8ּ#_$6Պs6z oɑq|I3~/)a}`)F,'(ˏ[<ZrjR&%WȖ5ή֕MP~+am@*nDvy IfPM$ƃ!©3 p! C=]SldHKGHXYH&j s $>u%0m1?q>F9ghOt@0׊V8$:E2ү|a@^K6y5q $F %G5ِݼZ @R6_&xp79 =Z !DoLFPр"orhD;;GQXȸ>:U0A䷉D =r0o}$wfQ9̊LZ⏺,J-ut>(n6`PrOӒkvC`47?g-ZE(WqT&!-Z#Ү*a+OQk+ D~ e#_ovlFrCbHZM{yM*S f!@Trx'NźҦ/{}TGIɄ) g_[qB@s(9NhlϬP}bn ԇۋ+Rg?쎃Bw.Wom|nCj90iQf}_'_),e5^@./fA:΃܀|Ⱥ~70{vWTG}sz2@ېs1_Z;j(_ZTm{bChwV^^tSj?\v;_&:[gTᒆZ˚ݣ|:3ٰKVuFϛ G/,5soikBci0(^3S4IZЪ B0|"M 4>JE,?9=iiz-~ALfQ¿+Gs:M*[H9Cfp7!=lש~M/27ȮFT#Bc~!%iQS\^Ցxh$%ק㣽# W@p 7!Q $l۰j< %HI~59 5=?i L^͖"iDHi^YN}YR Ts>$oNʻ7Pt 87zҕ?gztU,K j. Q#n^=t @w[=ikwG Mk $Dʿv4PG^YH#)߈)G_ !H+PBLrP !Ѹώ5/y _^gB/b;Nn;Zo=j7Ii˓ Ֆ]G.+wͻ$V"#>H?%101$K7 tӁbyOc[+;QKny|cgkb= Vk==oVvJI&FsRMwӘtrHć\Ȉufq@7p/GN>tWnYUi)7޶t_!h bO>LH+ِI'= =`q6DAP&-lK `yc U-)@J(K@ل޵fx#ն>%k˻]?G{bj(ite#) Ĵa&QR5grJ $L.%d)(D';FH_6`Hz249;=ѥ/9&I$&[bMx]8@eʇ yqvY鼓lV$lZ|+<iǂ(~%q $|gN)ϐкq'rz0 &dwy3gGf[TQykHLO Pqc?\pkAF-d_"E,j%$ ]ϩU#|Z&<[M?՞Hbd&I7@:6C<'%%Fi dC+ &|k?H )ݹ|Z  M$j1Mv=J?D}v|+ ~7ȐC-g%uD.; OJfm/u{iSnd_;[K8CNe @Aqҡ_DI#0.2D#qRIx8G"iByDn '{儹<#&woPo$N`(Oĵk ";E\̙L"Wo$ށr \+O9gXT2Y+>uJHYĖpfiP4q)nf&*f3Em݇qK",K!l+5 }v$6ܜViƑ0D dH1Ā6ћbwMx/Vcd d*wg]B}Эt» I]y!pwE ك]ڊ8jᨩ+r05YTG,Dw QCP9:RDbs$DmD4p.i: PV[8w:'ݝ+n2ꪈb Gȧ%FH% -V~Ҭ}c3~eb3GFIxo9ԛ=%?:#([P Dr$(?In49I!Ӯwgk EFrR8W W~*إ~M@? hrs2[2kWPẊP1-rv魬<:_돥trHtBNJBW k#>hS>^K9;@yŕR>!Hǰ@| ѐ#B)пIBPpb`#'QUW?@ i m5H1}1 mC7Io#qXGiSm$ g&yi"r:/ R!Dv$Bۮ@2$rw˷wu0T g@OT}"51.H1w i#Oא̈F>b@! 捘w2wPl2v;yvk@iW{B|h֔8 ŪDEO~B2!krJO4 ?DNE7,@yy !9>vtw'&&1`+ɓƴH?&A,` ~ /R ɃӜD)]NwD0i$BJbC\i3dSG!̂(Iג+, CAF~ülsD C+iK*bD1["Gc.E zfqVl˿?"xr$Q$  :k#)"c;r閿qܽG@>3贳D^W&:q?!!U/^`9=D6m&:t~fzHOsDK$" <>͸B _rNV"5ˡ D乍}ؚܵxp&4:ι<]T@J҇q#({.}] FufT' ބJBQnjXa$K$X%5=! rPH s,&',논q\H3,F0p$KQz,"rZ#RNDbI$$ҨUK_:M~@6it$#kzΔMQ9BlIk0V.X&A LGJDVyYys?"ArfTNy}+ L`^ǟ)_ ]%޹U#A͈F@i ;R-FwM/lɮt I։,!TD42ÈF_‘s67XY=b@E`!no蘇C")~!86{ `6jsx>⋘Љhn9;qZF@Y4* [CHpRv{En_)z76ȁJV[2/k"~BxP|w| $^G#^őlG2/Jۢub9u)??5[ ;sG"pwHYFoD_ɂ)OQ &RpQBn y/J3&~> y twjO;Sm7]h%Xo$JتMHtHKIﯲ"T٤: PX8dNX |>5<1Ȓ [yPqDnQ$d3sԔ8kNuwS̃$Ȭvg$\:Y3՚KR6$n\Ys8-nDOw 1{[˃mRrK s:VH(:ZJ@Usӷr6稵zќ3ݾOկ 8EaPsmT.@׌Gډt-x-U>3z(j|+KG^>5:MNg$i,-R͸HdJI%ۊ)F\rI<ћ?#ixhZuT;2x?b"vՆ#i.eY>{PN81&ҚqؔS?:s hAg@ ,qq]\JI~C'2OPD$F$yN@c5Fw7JR* )QSZa=QQ)\4''Hph4+#&Ta%w~աfP|fo杻C@]Do`\Yo4$WVQآ,ְȼ_v 9hj1 S="iL $:chytܳN[ Z^Ir o\$ Jڑ_oק1^E#M>c? QAϼ沔|u|ݘR)(m=uivf MK{P!Ho_ EAvsѶksbY݆]^TqH^!Mpra_k]Ds7")mȩ.l#j"$aY,A=I4 G Fmk?Nym7ǩ`9Ei,rٱ+~$@>FM $ʗtBvt&/}R&vBaVhg55sF𔠝hf*9~#1)(U^w)b:Cgze*!(F,:qr75g^6apͯon':3L[UKR6Fi.qw4Y'O "bjWMRxY[^ݛFx]=%cK#r%,@[@NJ%1a, Q% $Zu3[9 Ii1P*eYVzLhʨ4HߩdHu!gD6#v":c8mek -3Tmo|8oڸ4ONm:R/ˬĢ#d~hշppk.ZGP\ s=R#;Ywc\.[ !v9f^sSuG|nME˓!*H2\a ŘG1V .S4*;zX9^_+7z `=48A)k ?YF^77V*j"-Uo#L A`M3uU, m-f!ĭwA^/h6AB@/9Ə-Lc㧖bڱQ^g3I\B@=DfZȳ3U>Yrf B,N޽Xo$D@3~'V!ZM6fAJ]F1Ʒ|1+>i(WЀ0\%p;3D1nϣBI&4]E'kj!S}ɸ?6wl9lOF~9܉ceĮ[Q8qb'הp4M >d\L70hM}oKZ N>?3;9݌a@n?@BQ2;ISuHONa^(u$Hԁ)~5pnqGyI>Ue[T9ZI[QhȆK@y3]6SЦ'/EC )hU՜l )W[>h63knyhoOLҖ8iQUo!y\z^(nM(=$[RРZQIb@OF{li|31T&|4y%,o(cEl%8ȩt2Q;2s_ #oٲ_I oL!rQGg C{yaBx, 9FM*:blk;LIm9W?gsAq`Z5OA r9n~&*##fLm*H<]|wl+})"L:˴Lb:3R{PZߝR6<"4Rj*=zR]5$(ܣD.1G98W)(&g`teƜ6q9`sb4ć0%Q;)Rkx]vՁĆVy̎ ElݏВ'f55[r%R0[W!G"';{t-:.Tt!eFڎDuvyWGɗnIip#[D?~Om;zV5tnjC,$%P6'_\ѳ]Z"6Lʊg }'F:z'| ^Ӏu(۔CGgu$玶@dbHYrHьziGH<+4iMEȅrMNҡ{.f}8=<"q SNW#ۧX?xHaB#r%#ݣ˶%VGwa OYs58> 5imuQ)Ć|3]6 >PRI5e-78G)Zz~P3ܝ0 f_mf.d=YewϑM _dϡNhFs@¹ȻVF˒@0s!s~3Cc-:u=HUW4ڇ#q$;L5EmІJL$IR* I}ޟ/sĆ ecȢ6@Aӭ}Dr!hőىg7gIQф3g\s4Jȭ ֍ue&֞\rp:+F''[ŀ$ #CZqE:DB\5&)㯿zfۺ~@"Wݽ`.nT~] <:P&1Hq7:geʧz#G%En2$澷 7?[&j k,y^yLfQ@^S̏$yHgP $Z!QQ=)  ^T#@ãx(9̔xÉo=rH\.TM$uFI[yGPH0\ \Us_|gCN?>)G+S[8FԝR\4g!H|/QH(X1n$m;;)jZ14cT1<t/!gCy'C*II"ՈnU86u^w}c㳇MX#{>dAjYᎶ_- ']z?0#\s+TKzZ>%ٻh=0C2zw4ʤtOHj {"`)4?>1LGai ORK4ј\ZD6zN=qUo#"ӮprK1N-,vmTRQJ| 9 }!gHv7z؃rw"r L$d J"MEt@jpWrx mN%i3^#Zax ;(2sDhܙo;ÜlvdW7UB;މ~rE_k}wϠ Ipg-iu=BD#]A'3U']%^tΘJOE7|7Ndt/Rel( Wh 8'%Qs ͛R ?){ twǮ'!jW4포-kMx\;Hrq'Ŏ4ՑRldQu~٬<ȦJuӑU|!iSQAO q$E3f e@[-d4>K#E ++*4ooφ/r^<"z7@NucnQ|ջnzwv󆎆[,]$AzNvTl]qRseA~_E遁ӱ\qoDy$`ox],גFOJ#q(=%C>{W޽A 4 ~DvqPi|Dw !LSϦVD"XMB| P#bHiJr^:ir$τlbh@jl'Zb4 V+9.!HtBxHv"J`;bJp"bb$-ZqA1 ,ı\oK$U&ݝ=#)dKi$&GQXy [D19$gW{Ix֘H"/FϒFBI GD2@U^DN(Q^G0QU;>Ro#qhHD:lKqA6U `$|9v )]*XJ@HZ^eݞAږG-sJ#K=ϩ|K9Or|8gː4;ƣ"D? h*5AayqƓ {RjB)cE+GnHĈdʓ.77=dJ yAIfI9C¢ï)MOKL^*#!فySb6e q{Gjw "tJ4Qֆ/InIH!$"N-CFwyd^ߌSOϊ}J"}I)g:'ZXV#i6X=9%:Bx< Ii pe }ּ"3YÎNjuv=7mdĚp<ŒHS jH$s T_R.O# =G0,q{I뉻KCr #{br=g{zBx|v$/߬oBR>/$(cYlH"ȭ2kLENxĥ^<R=;9T]=r;R#aXոJ 6&@ DC hȗȢD+HR h7h~h r] !k<$yρs&PxE`@-,߆ctWWPhm1jUM璅Oj5 Q T#)ST"RH\@­%.&ڳ̅wp<Ž9Hbp[B!)8Rwoז3s ydywה)U53FiÐH:o? \eO-h:#FC~P Ȇ+1vz!:Hl2wٙ٨ӟBIwqe+DG{BZ,yH-M}]8EɶI/x=[JbݻL/rZnf:_e 9Hv-9J "F2c"ӻ/=:1V/Z S ~#i{@$NWKVH:9AH&뚨.kw7&:Ir_="`BD:3}N26.lr/TuԽ;b ~$7$Y<w1ֲ!c?IaMLi.`&r!XBP1p_Eks$wqqC{dgMd_"(&BN9Æ$fV,[CEXH}nԊ3xfxIG=29`ĊA9.RH3k[䝌 sz`1IX 9H516ARyc-@bwgȁ̻,}x$*:BV'sC3e|޸&B/G m]LNWF ڼːהx9}%`=d/dMu|< 1MU7M}P4 /ߣsa"ē5׌G9GB^c$ +^k>=(Ryor !04CхO|G$r$A+W*ӛAKdO%'|Ϝ݊~CZ_^,ħbD"VІ>-B >#'T{ٟ)b%o;ls &94d L=5jHmG9SVNFBL:Ar+x!7=_ѱ!% &F.![^!9Wֲy37> #xjw"[o +t7wn:$]4t2w<%E-b{V 7 -Ui"ٺzg%6"_8fp  &DRөmwkyu]~DV@RM@!C7R_bYg@_'YH0N5NSee#1g9wGUk?[(HH1$k[i$}mIp3\| ,%YMJ"G'-%R.ykN}Hx;b:#tN!qeH}@٨ŖE+rgD_&mYL<_Vh@£Ji ZIC!Dr )tAjXL$~\FT<5!EIw{?))"@WVz _B$h-B3ۗH\o6J=BySg\ z<OzHO%QTk<2L}~V4E֑K" DHH:p_agHrp/@SLeˡS.47 %4L|`>=ִd/eb4#ۂOGE~@RZޙa>vTi؟odڕL28jLrƴU>#V/rR!x[1o\+Dk6?Hc'rSb-dx%rZ3FSHm8J?15T #/&"}:7pSUjly!m$(~Dҽ?߳>F5GhZ* c\^,ڈ5d68CWPW*|+HC[w'ݑԨW42m_JG@<r@~'X`ĞAB~=?Huqwr1' |<{Cfr!鑐J=hk|h/oy58DJfE?t?$%x><0 5~@r Ke@2٭Hj#4Hd9CgDܝ\B"-(&gt lʑ_DwDT 1Dz$t߸\jgxB+$/H7K'%׼h ;= SC/C= &T5-3r"HY1}vHyDEej!ъ|FZA]I&UbSY2|Ӛdi6E/)v9C,&⒚R &u~Ijt,QYU\N_P%bmw L19‡$T:睨 ;n Z#K/sk'Z`/~% OC[<OOC 3"ߩ"-1ӕq'X 18}^-ӿgWDZ+H&<6tȋ&Z+ QeX(IEׂel<yH\Ag ٹN\RRJ?!C%"J:uH-=;.)0- :/vϡNE!ŕrzq 0ylICoyʆ1ԄE3N[m B47t9= d1P!;^D㖓kyHEܽˠ.7(EjIB2yw7||c/ "OȺv#R'jm?!h|i#iaH֟5;"IԬqL?>;3ne./pUy>#ɤsZ24:r,^Pi@҄ה?DK yB$nyh"Y0(Db[<V7~wǀhi-Y=wx.ۍZY `ᑅկH݂Fd\'/G6]s!A.GHz?$ܱma/&] œs6H63)Z|El;)ѓ5+mDģw+;8^׉bG+$YIJ2v29Pv+VzM'BJ;.G- MBXǜLHnċA*6zŃG;XjTH?t$S"\ngS X`^ߛ5M7ЗF}lشx_+[1êJܐ(T&o!ɕ0+ߠ+ dh'w~&ZxD ͂ fv2%#C@R)WB2p7>"uɱii$y87$s LwI<DnBG6tIY F ɢrIUbXmq6Z]3zHBw(zk$gNRTz%UǨyfVU~w'%5f5؀>w.uٮXN6šhEt~%!mР?K]k6Ba;fcg/m$Q6:ԂP@LbvaN ,/ _ Ϋ# 3Ȏ Xf'T(EvH6_V i뵽BPǐ,z##u2X"b/!'ykkI:3d[xtqLJO#s7ot_9Śgq3?x \hQ9j8?Df}:rb ~vvS=>Or%dyEp} !=ļ5$ci 9j8Ł\.J(bփ~&!y,wAm5If iߜIXO߯ D=$E+\?g/I`9 Dt^ Ȧ.>D$@HMlƺ/sǸ* erWԆ?7x-}?sXU! x QG"W#Ibә/KIT&:b3Ji9#n:MLjv x5iճ\` n~ ֻ %r/[p<7#r ;m-zNGWKE3']S ?0@nhKdSW_`:) 9BQkk"#-^֑?T!%guIksƻ4/I5uѿ.2\$f" i]٧.Qv(3)Jj(A,(\"joŊ,|RG6eay\iG1uc{cH0H%%~F,ar2 ́$Ew"qde`{nLt >yw6^fCt6)BIw#BJ@GϛAcbe\ "7r,w!?$Hv!Hx9S"*X@7ܔ4u|@ aFysBBOHGݝtܒ# 0@53KB2dGkr#فjM)`]5';4Lo(IjEvkvqظ)$!-15An{9Û,Gi*#an(7j\I݅MOsww;qͰ,؞fl`qڥH~7Xr[6I^qcy*5]sjG[ rmi.Pש 1.k['ecJ< HlIL򞎏$1b߷c5]*s_)qk iَO,Z^spH$HKPUkn(2FDԹD}8IѢ !a2^RwcV-i3z i!R̘aY 8ZµҦ~cEKg'`"}I4/h+_0YPq;U5.W/$wgMzǹ 9t@QɑgxGC]= k(szlRtR1$sDM[)o(ڣV} s5Ѯi|avV74d>rvBLd;t7dH${vX\xU@7 !4yԷ:_7?:+QD}]Fg.e 27C=>7}эJ+J`*ԥS^,EצbPSaz@Wn_m2=k~膘xHr$u HyӍ.H`TX2? ;M[Vry}@3N 7~:~'bMCۉ:4Nhgr}]) ǒr8jXR*K>;xDVˍ9G J$4ߣcm@"/f'pՍ7qԁW@ƞ LAq&!}tkT|Oς2_H{2> Nd k8B"3 R $tcaՇFy8A/D*dፍjy"̳HߢցtrS)v KDRS_"ӯy Kf\ tqKnI :+Lx-&ixH#IݦlPwJLOGR"F}Y&cvVT >txH3]I>pedBېh JTi8eOt52jv%04X;- UJ-]l;}6ǒ]wBv(=d|1 IhHm՟(oS?w2r 8wsBƒR $,E>${t6*Z/A=ywOt}Yd꼌?,a9mqw˻QPYR0%u̚$nH2סL72x^@]`CP7tP Vo#A`GW鿇(.OYs6qEґ|_UxJ QIxY3<:mBk.qHI3c9ryCavpψ[QI]~,}%CRCr3cnfCN󃣾5#EVtp6@4eq$=&d@v$ ]&#)5Z=~'ȿ~iH̠ ȇP&M$)n\! mL;vMAλNCVQO0١XTzN|"~zRKz#[*FvSVXoF&*hG_;ڦ#klszǪ,/e Qs/S$8@%הaKC!l=|m'*R)yp?DŕQOŲ|.|PW ;Bސ}}PK#\L ϙ22' ~^ݮ*H`y,&x5C{c0$5d"<tO4i;[Z#Zp/͇lfs?*ERHrR-4kL0Ḑ09R((@llLْB\RFd=U.WDp/˻ck Mݗ%6l6GJ:wޥs]&LtN=X $Y%D]fGxQBӊH[Oҭ;#Ekx V"5@\$T>@:ӣA˒5砇I_;qM((+ b@*0969k2AimOΦOw͇!ZS yYݨ $m,i9FS+Wۑ ?΄Jr/%{iCԮak>?Y󚒢D-D\w;Wf?63`7!th,:#Bmd@ޗdwTZO ڐX3dG&A%U>Mgn~,yH*[>좹Upqu" 7!N}HI&g w Ί<m0- 9xVC|rA#Y['tx8֫KQCn!aly~D"Pd;rIF['MqM䮠;33xBއSffia!v#IB|Px:;7m#fBwJ q O]K[b=KRPJ-!I=a &}PuAxS^f4'If4G5͖Ӊy!=k\ʄd|/t҈'wiԶҟk'%RSq$R%?NԴ);]Cw-IS;Jl&4/[焜P(V&cmZ0g_{)eˤM,4:Ap$| OZBn%*H4rg2= z['_;ęT!e5CRQhR )!tZQ$<1*ToqŁa62u!M)oJY/٘xG ָ*V;;O $6[eD%XEBv:cUEb(EQ#&Q?wJ OU1<֌} Σ$Nt?VZsL /1lIUnE"T+F hJN:$y2#"F+YI'*`yϘR߻iِ<^VgMgI.ǕP{3:/ UA!22))hX`(8\"dB=SUOWԚȭ SkN&%߉/qj㚋 cAۼv՗/>_& 6wZxEDRTI ߑp$d*Cf1 ;%*53㱪l559G"'xH)J*8F@M:3 Bz(FYHmE~7CO庞Vm`|x#G?ZiH#L}>) DaoQ2@LPLGn׬w.ӡpd9Ӂ4wRk]$@RO=C|3J[;6nN$I]B:bIj'r m1Gb3YG"q% dj " RI.$ƛ;@/iGz$zeE"#rH[!N=1 Iq빷D=vtfTIČg?\ͩ# j3=Ns-b`ŐM>ȿDsߨZIܲwP I8Á4I< "zNIt~ZMfIΓ,ܓHDMg|ēfi?(:h,$j 2Q0H ZB]1ºdD.TR) @"I>?ǔ j>H͓ [!CysH$8l PZ©pDE`?d6eHoҐ>hgʛ] mѱwξ>q{w#L@ž :.%)ht4pL@HNZLg#J#Y L│)~ɒ.;DvPYM HT`%Ώׄͥ($Cj]@!͎RuYm%܅ő* ҸpF["lCDR` &_<:9Ie|޽lCS& lTj 5OC%́ѩ:F CE8-+R$>teK rʧ@r'A$ıLGyć|WRm!{GX,Xd/ZvѨYA߷iqoɱĉUrt!r#4MpMZrnt@$I1*P -l4 9Hշ [S_%fqAd^uHÒ"n9J i$ӳC#qAƑ. Uk;]S;xczJXpylYrDtOg$n#$TJ"LQ#_;b`7+Yƃ^dM K )(pȯ m[D5  !J.^)_n s>]qJcI wgSշKzw[/B}<nF{ ߸|5ޭff$)⚤g<yLqgqMG2_z7KbStc7͆=jJbD]CyE =G~{!ąYX|X*;;wp\kx<=xʁ”L"+JPmcWE*<Ԙ+4'lZp,A5\hn<}23:W\ JqKPeew!-"xgG\TuD* r0yvh 咚J1HF7wRQSQޝ"/1юvj2E¸~"9s/F]t=,X*RRhyMpl@CDRh m+:k ۺ@Ìֻ q);cLht"e+"WsL k 9,Yw pPkw;a3 :LyOri|0k~hǷH#c| @e{%2>ϑl~So~6"|U8 $^Y?4M ȣj|DiQQTCfDHu~M*XAZdٍŖ$wX&ʨF 'Jq$DˎTQ>m|KRaPOFʎռlh鎿"jU>JGk:1[ĠKN*@4QNoAΤmϜ* %O uϜLaz@5r.mI".^43QJhuGn90z^u~A,OjIv;sXxM q#lm8)Xd}d;Tcn`29*5A@"-c|"w6|≎k&;$#̧=āӌR6%ӈp6ZB@†&ym'-l \MI0" /GRl;T $\i6cZ5)x88.W$N $$?d&HLp6*t@~w B{sцF{Zv>.^ͪ2䰿LC|~{[R[ܙ/zG-󅊑4%GݥM?mOM9R,à]dT: ӑ$r!97SX~2TYҔM|f'UŨ*U Ftn7h^ ɩKµlg;Dg_i(y$G)"F#2>J*=~ ۑ35EgdN +yBR_uD"ZtpibIDN<)Y4Hެ(0At$%vL)ޖEmp:k +w2:G1nfHXv"w @e=D @.cʦz~>}iݚ3wh«(غ48PW?v5WjW9s Qh5ojdmr? HJ!w eԯF acj"-k=/؋p6iBdȭfH»pNf-31AC=%YBo $i_Cϒeb %Uzהde91 >D3'NhttS%j bG&u#Gr',pCY%L4|g ZΊ/L45AAMo^Fatc!@ >i=@ʶDcsS<XyPezGk}*zƁ\ԉGhȍǠ7 jri:娣/wGD V@|@p'ܿ0[$v6_~X.@XҾK fG~Lk*H"|ƫ{+`KaqAˣEGGՇNR=ց:D"-kZs4@yw߮}%Fҍ3a/hfw}ceO}{o߳$^O~R/}+y_rn^5/EÒУQHI#zF洓H{遴N:uWwZ!1o rOyy>GnE.Dжܝ;O{㾶 σ /7w4[k'r45Dͨ,%tvɁܦLnvx9Y" 5k@d:zԸ$Dc p18/xD*&D^]UycɈF5JHE!ZvD9`!X + +[D.@ HKN:GZRtYʻwvk"b=k=Ő &Ӓ{ ,AÑ9r<+P!HzY%/{vڸ]A޳OSM>2 S@nW gKh<-\hۤMp[sCyK"u{v va_8T >=X!A4Ed21餛[r;Z4j=Ӝ%4t'hJ4qD5h aa*0Vȹ mFVURdH2xņl`.D.U(pހ@6}ݽaJϡ.a IcGBBTq#m)@{"J,`%QB"!-ѼTG d%/͜t)s^&:WP3%onGJJƑ.:Zar` cաd,pb/2Nn-77'H`tÛRʑ4uC) +$[;ђnW.iDBʍ ncrUHRQAP3$Ȏ`~V؎.SH𭥘֪E)ΕwI3onw uO ?Vv{ZUM'q "o#Qԉx#G鉵giCoܶ~柑x{ &H!+ 3ᄁA|@~Aف;a1"$ $|K?)Ԕ$%\.N [/~FduN('ryG`H_n.7PHwf_v~@P  !o$.l#׏x螺Y$B}'}4n$W_$6kfbUG]^!]]﨡@Ӱ?Y@0r2 /sQ-&GXҘny &297=|}^xC,Z; ~w/ZeyTth+X4\Ӝd(ƣi g^n)\PhH4 Ԋ !uuqϓ67y'L2,M7r99$Hl/'˩;!D@"/"%= ON%67]%v޾Cz/HdK}3^kjw@W SW> v7ŅH]ظ|& %;g2Y9s3 ͑b0[?P8}:TIlsΉNN8I#*ڼ|{ G Aj(}φc|W洛s"Q=DH\2Y47d“פɳh9!J +ks.ci>`á12-t: ~MY#{~R]}&#dH[(͸{\wwks@^%, ^xg]DH5 lwS "G>#/ #TEy_U/Ύ{DO'V/Xv~lB^rS*kHY>1<| xF-Cۢ_ȤޕvVtPOC&`7JSQE%+Ug%}jgDW)!I\ h2zVDƛ d'Us7z!@1$Q]٭x1Mb--Hmpdr~Nޔ^^~XP{NAd0T d~7?~ttONLjv{]G)"ߥ| zwk֚w"%DoJ'җzu"FEL)D. &H}`rI4[b$Q 97!_r&$B }NK1XԐ^А aTfah/Sԙl^$|'*7춻}b+W^P hOW~&],eeV>сMRKE<F At|$"hw9Y8h{J츂Al@s ^(4 nc:Q0Pt S5n'ᄐ~:ҝQb@5Y'b@5_IӼf|?VB`|#i0Pa`v|KTƙ`w/τkS UΩԡMrMN~N\35~Ý]G zżϏ:v ` Œw"\&N9Z؋hz,Kc<4ï4wBABLHd?xM5KDޮYSHH %$H~HFepO_9RN ϊ#; BHz˟|2J'GU$dσ0DGV:h;@rBHiFIh)d! YDZSԚXC7aJ9;7Y{thJHM!e^vN7"=T5a..)Ot+8;Q;bDn;Y/hWY¸ŁᱹgOT|2d[8َ#B 2iMHմ袯yw/tCn͠~HLa%hZb2cxgK,viWX,97Rے)r6H֣ m]EʳF*|j`p "K@` b,zt،[@bB,I'jM#u,-q:;')%y# &tJ)938!;v;IdUUՐbrdfL$91ǻfBvqMc 0F \af/{_yͧd'n= W5nywV::k;>{P{H W6sKOϙy(gǎ#r)%,)+>/5=XB"uȱ9rHtMlY4۳t) ꣉ ?򗷵Z1J0B/܈Q"k* ZВ?$ry2~+KZHZ>LKL8Pe^IZZ*:5#AUbot9Y\I ,&]ȟyƄG 3ӈ*1W{\S dLBEqM%x,fy5NmV%oVcڇU1D28Q $ҬLw56BJ|zQQ_K'j|'Cq=R T5`KgSo:j`݄`2w[o9(T .r8HW%+ U<) dI󉜊hD`Q/c5e&^O^sgxD"ZsD"L*Z252m?|cVm H4`鏊~]T\q5ԝFBo *Ƶk"ocHH`H<7Ww!kB M7r&~3Z~;Ѩ3%U2C*f.4 rpFh)H,j%OW_uYIQHqfȻSʦ&l6oFo5.U43С:BdqyqSˋ  MJWs r{%8Vѧ2SC4P,^TC|#9uvz Fe 5YMqLH Hr0HZpJs ! #+ǿ)=Üqݜ\pܕ ih؉\:Qz;TDn8V٬9Rx' q0T^g;H$b,szY"~+te] b#"ȃ3!ɪ.:2FE]v< !rU MnGMs9-Ћm J t QRĪ׻ɉkie%rh (r-}y`K%KG5ЧqA>8b'7=DY-pr7DY3CyY1iM'd7AJJ[H( H yƘtt/רT]ag8"=2 @k3)Q S B ?1vmf[5uiKoO+s9ɻ]ey/ /|wpZHW 9y"I!2(~F )fmu$곥cLʛU[ pЉּOx~Ced?4rͥÀ4_ٗJc ';D`l+$M>[I'ljB|'\R@;*)QG4G"C"31H`FgER' MUDD2|\ycڸuk@R6BLtVxqȳ O zK,u _@_l Sܜ)#&RfsDs`Gzs@+^k"w)x$ھ\gQ"8ִHCyhDYoh3/jJS@&`{T#AAHohBIf+~NC?_!<5'COtSab?gzɭA6Ze1b95]_ʔ h o0 ߴ9Ro <r.RPKe۵l#Āȯ#}G»DJMאMC:聄Y zKoN ǻie&k@o$ i4mNUO VECA?1dDۗDh+!arI 92HlMb+NL-X@AZI,ĽAA$h=t掸&"+hA:=:wyd͘bÈ6slݍPD@MDּHT;ݣGrb6P^_%C(N}@B=A,HNp>$YK1HXI7V}@+Cl BA0H$6nݔ|;$2Y^H»UJa I-?o}.Βb1WOyD6QȄ A츯Kwh#[xZz3ErdSlD8Jx',@{#[^. ' іZZ]RZފi8K6;T <;Jud)$~yޏve1>qMVM"Acy#NKCt;4Cń9K;[Lȶ'RQrH Ɨ<w{ 8e cI1w)Km2@N'H)[ sGΊDXrf}NH%\Hܺ;kלύN# Y$RCW~ @H zHe{r7䔓ėĒP|1-%28l]˵J.im1!d@F0 >6~OVH#D9êMl<ڷ;; Q~?[)uLIہŵe*[k6LD[1\ЉH$͖ZCnG;7& yg:3B85e#9jbRH-ƍv 50kEq^y ra',ۜB9CWrDbI37=,GV+x%H+ކ#R '.:Vo׉ɑiR ՀJ9LJF2H-](n9a TB_}/IFi.gL J?Xj [ȃf؁܉j8DDkF{}4SLP!eXphPi4&S[S{=խʨ\s}Mo&^G qw&/[9,KZOЄ[b9]T5݈5l۶U(+,kph!HBFR!NKҊk hϾ$SW$F_': /E8=譄2 n^BB\csYv ] . iՑUK$ $#KKYjM:%W9N>2N1Ԗ=dŞ:y%M&~ <'&25!>z9(=-H)*D`7K+`\ ߀ј}xL,IMA<^魫PA.V9;@ݭZ3:Pb%FlL O-Q0zBXY.qUbIwžȩΔmwɇ ~ɱ7qA!hQj$ٞ@r͏|K̐Q$'$֒Qm č]!^kx H7)wۛL5-ި~o#$UBٝj3tuqpɞ)RS@X 9z5\J܅7q9q܁,|(PKij`b(@b1#W ~Bla2'CJ>}X Kk \iƍ1gD=P@XpHD6%P\ߟt @^{ ÞiH:)ՔwMS%ouKАjRaHpHU,4ؑ n ϗ{6>[#(&.%,?: 5 ʏ%҂.̛th:S:7=5WP9HW"՟>KE:!~! K>z<Eyρܴ^; ;N^ltV8lQxRY20$5vI|JM ),]^>2kګ#2W* ){x,ғRV#5`sN׈zHْ tT_݅{Vi6[] w"ӑK,D(ihu lŜ߻&O/u=eЦxe)VUд{G]zzFőPA'H )1s+t3'6]m ]֏y<,/! \:Qn4|rK"D2JH,=jÏI+#8HI]c;)vv*H}'ȣc9NG|D ~X8znH K9uE!6Jyixov41/FzU#bsTݎ 5F#E٘CD_`.Nh,o.0T0wf|HPr> j|WmШ.C6D|K]1`.Q/%S;ҟ7:w=ArjQ3&W6d /XLg&(awwx] !NB9=jHyڨl JEOgI@O'f!%Ri;#uM..X实q<]O Z;9R-#௠Db41靲pqkXHH-(>*WwDj?ZVǗ߉Øԡ?p:@j1S 阑}y&3r뤓qMx QBH>n|ֹŃJ!af}C|bA/ te%>ڕΛu:h$YrQ6]}{MNd ^]o-N-=^IcRK6:NAH"Y\3hfIk:0J 6ODu(&]l .ea2j֚x2]nQ. )ڱ Jh5Y׀jO4|#^KQf0y9+? a476kg8! |юq*#W1 8~a'N:b<2a*2ABCs-NLe0>ȭ\ܽ2iߥTt s.EQ/A¯ȑbB+  {)Lj Ldv!/Gx(2}"{D~Tz?.pRf"FYDOp^4Ĝ$P(YW"?jPz2״w*;8k[; b{A(_0PW]B "z22s "G$;0e\b0BbO.* faVk,G6殢<5H^5%1 *kvt _rv2c=ݏND?ڛ"|^Id9.Fzi'wO HOs'r~{ 5TL` gKiBC8 y-9>ۍZ6܁ѠK1Jm,XRt\V):gX9rGJGm3|C2YBi,N}Ӗ Jpo~Ydbm6px=d` /S*q+ N@,[mýCݸH~%KbMջ(!OHc xH"Xkv|쐘 d'1 >@޵w:!'qg$MI&m&.i>vc^wDEv!zix3NiJF3"IyLnM2ݠAH&!5$o9HRnDh@ӑV$Go, .Q3'Y{Ҵ7 5+DH׬jc+{Lpj@)61)Dvv ,ZRZ9t5|IY R%O}ioltWA9~CN"#Ci՚Ir/ SgF88+U%8NJȑzX$ i*`Tȟ~C %>=R/-b#4OqOrc>@(oN.bstjf#UFw2IB()E_oE} !A,tr{?"˵ޙ{mJĕ=8_iOsES ڪ%ԉ[$OG.Bj&@7w*YHi$wcI myPx9쫠Cݢe19)o`CneўdQ3ߙFm9hwG5GNB8_]\m}:2E}}TW NV9vP=KpT?WN{jE/$DO@BPF 3qPpJlX2q3 Be0ߓWS['{{aITK. LU_z6Cު p9մ'H2.dž1Eݟn_TUDAw F["kpUa.M-$\AB yU[%`O t+bF{Dg<٣B `~JI%Mj(-Qh$mhF(.y0xmg3O 6@R3 '?>qsB#"< z-@jѡt\a[ Hd(DenhmM8$\eI`XK!%ghR1F?'4d+Kv[wUr'Y$)QSqQVIjqrGO._p?r^ҁ{FBZH#4❊JCn24$T]HHD!Z㚡H3_!ၟ$uܟe>MʤqrVipȣSD/~yơ>׼y7,?GF%QX'+H$ IW#%#S#J,_}$7Hp\c?vc8EV6CԙwRݜh/683RIB6 v:%7#[Oh-̆t6Ha=@ÆZ =jI"~²# -tb%dNcg F9C&~Gfs8&}L_v8zv/c+5ozشy[e DHhWs8)LmtX*e|=| BȓH2`=]th?7YH0eQԃ`[Rsk?i>nV(+#:nEln R$=jt=>yp6ش*矨a=rJ4s4m9no 72jiӅ}CB,?!ŊߊfK'r+pwT?hdvQHLyz=eEb͞9]nH"}zܝ DgID-;-2,MHv2yM: Ie!;Hٱݻ+kMzHm0FQE$*O] IXe:"5CB{;v7iIkiJ1T+M>/Ү1٨#-!9 ō@tr'm>CD@w"-C_ +IX T0T3ћ'U mDyxni/dZWYM^ ZȖ ?٫9znV{5ְ)3Y:GԕVʸ7 Ŏq6CZC<9XŨ.DR߫IobBϛSս);c?S;IKs2j,iHQV/Pm$4%(Du56~HT"CxN}v*, qv!v+'@B@JA ZRS#ڎDUhȂ́R4 MD͡.;;b0zIڱ H~"%Cy5DT' 'hMNd04)UDG65Xi&ENy(P> ;dGxy@ݡH_K1e#?M,dB;J1a)޳4,]᚜cg1d=!D)K2 +ߙUIJWMQ)^`GC@\xkŰԥo8Trpژ>౜C /T}H' ۑywn 7e ?'$ݿyLنt>'8&A&̏I*GUI<#?YQg0V'a7ؑwJEv^sVK 숈kC ElgZ ߝ :͍IJA$m ds8?!ы_O 1G'U_p": ~%̰#,uohۖQ a4+jxP(y&#pHUq πn e81u+`)qg #Y[z)ڴ}t ;QrknP85ɿ#SwKB`'HWmXH `~F$Z.nE{w9h(B2#$28^=_.4=rS)` . Ҧ<;!7ZcAS LB^{"6ȶd4[2$0C"sT;B=J餃_U;9'ފ=OߠNd8&Y٠#IۑH&Fq^H˛9pw\TX*AeBĬf+d?,9H!#cRx}r&%38ϳLA.R(S~'|GdUm:jA6ߑ\v9o XG/,8 6 y#S&.ːIrČFH|pGJ H667$f4R w,I5!pAhp־T$^遼d1;=` )TLc߫PQñʠѮ) gE?QHH8g%Ӻc.[Y^o'@RzQ^!D*us$1UMODyͻ)-y 8^(䡙읤:|Pe$רPݛr c &2`Ӛݥ^yf@v UKsrVf^9!Mg5]oT9|r+, L}_8$%1|>v (gl+nCJ>􋀇tvu:l XeGP3*ݣnidrMdM3m>}G&-5Cwh!4~df,Ϭ"Dnwdo<z 9 C2JZ[!7$es/1|H/Э쪠HLeGBps9gR?ݯK_#ʎ|57E dv,{(#^X-zC(2`!*$:|GV%(m'2PlJv|HI>H=Ҵ&vq\%ئZM1ҹKTNNbW*Sn#H68ٜٲDN?9Q_/K }~Q5%Yg*8k$8 @ n^c@)h֐ !MivyH/xX$X E~N ;&T o4SDg7{$v^4({RV_Q~>Hw=MtNT4F" $5kg"Kg$#7? nR& u b6]QG-HDe@!/A;7 R]7]^K8f~@sGR/yGN]8蜈pN`rz2l wT$.0jfXDqwNv&RN iV9sOHSb#"{lIH?5 Sm^^UۦD˖S;܁ļQ~́,4PCyw 7pmS -2'%Ri;H=F߹}%]'yTN*29,G pO6+g޽)^¥G^ŸgACK d5:&\v]n D&TQ?LSty!wE~?ׄ*mLgD4x "ƉguW}SB6KѽF ANMIȰFvBEGn莜S[e? @r٨G\qЧKpMr#2^S* Q*F,I;0-޶vn)H8"tOqR4C>" /5 C{HJ6yaˤ.HA2 v%xoAF9XxoZj7H&oˁH Az cs.BKsTr(H-O Ȅ3tw _IR;94"7aK)̈́(*Ӷ>SDg'Fr=iaXV?nDi~IJx$om4!qFs6Ʋ 9sV+Qk"0?ϣ@T@9 ?ܪj}:w בE?Df@bl3*ٛT`N%c@h}%g~N8I";c}2H Mv!n wN9f;",T:g$]wk@rBRR(ٝ? uH"]R㉼ZwIK۹7rG.7T\DFrH-N,׊D{k5y.86Z,GYLkbXb"]Đ+٠),J9AF RuGQ**ÂNZ|9X+E~qRф cDɏ!̇|Ŏ=~ +߹/dLJd"i~7 $o ͋ , {-@hJ HU07Q-bwY/z֩ԸKYdz:pm$i%:s7 )fG3Ig0JEUR&K&\\+jXv$y. Bnz-͆隂ގ%1H(! ։L(w)SIxE_P}(i{׽a4!qPӆ;Rvu,cvؤ?w''A7)3!!5| .VGZGt11(Xdǖ˪vb7.W]+ ?61p,>$ Qr]yI5ͭ$V||ytdՙitt;AH zOp@JǑ8WJ6yc%CHZC?]wEmQoDt!) ـ .3INkȞ5y~HC֐vèQa~Ni%45{^ï9tNl"e:)1#[*T)y+NCPbL>: =ꮢjM 89zTZ 2THTS!->ݡ`OE>BރEmKWHzHOA&R&^zKi5!eЉGCT <ܦX۞<^^M:[|C8BRD{H⭔%Ri 4+O{rX#c d~[!'D4"îBpmFNn|ePpԊN QёG7P(Iۣ.UR Fy/C0IS|a5bu$-)Cy@4HybÔ>V )d%FQ(Dޝ|cR3lD^ɿ`1Yb8Hwk[ <;J3$Sgӑճ8o)7$eI)Bd6S#ȂN<i!X0,RY'VR $8wi&W<Hk2H=L>5$!RKHHҳ!ekͫ)y{d}UqЩCDYk1$8wضמI~ӄɶ1͑B XhQ`/%%MZP\Ǘ4_rzBA;,jPW n0;xK.'wgӴ})7$/m+"˼۠%vM!"hz}HI@B=#rDM:M9 w#G I] !;fq%Sijx}vyYQMSILu ̫<9R7G։fߟM˟N#MLl$ZD8~w dM֭"!J?TYR7 L֠vRoSmU*D<@NSOU; ҂en?8ker@OAZ {x/3V`d|ǢcnηȮ3RM߁ߢcnWiHǑ: Y/$˦qivСHW#'RAzVՑbRɧ f+4^AI띃t_C6m"M|4JC(& V@ʕt2JwN{CbQ`Hd/~MeʲrrCI"bVf&hɲI$ 3<;l $NC *PD ' !`&،תmHh; 5=gF\ rL* Wakv{~DhfgX^˗2֧P9.wOk4$Q.o (u}Α0DM鱻M?s[lDM7&GhpVlY;~G2K佻u*x_侫ɏ1bFko#)xut}Xw y`x k7$Ѕ#/w3y8!^t/hxI?ԛEGWsQ7"4g8]9 )`> ݹ`rE ɾ5R)76&KEoXu~9b-ƀID=578^?`*xZ#0Ȅl؆)  Jx7>1rɑb8qfFHOM&}R%Uɇv'W譣ʒĐ:?ܓl);Ezhc4cr$QU"H9.XfZKV.RUߖ !5A©(rwy.U.X }{ל$YѳAJ&T2g}ٿ6&rZ2?vzH阴e8KM3ۊiPǤ lzO1 qUGR$`g{HQ+F"AV5 ?! 9u+kdQ Bp.-1:T{8 )k- 0+#BfZ9~-;Sro8 \q80<-]K`K~YM~f,"63䖋=k#qs(#l84^9+BC UV1 G&XIOOLO#R, G)(.ޗ C. s'BYOSۭ0*D/W'#O^:={U3E. 4dxݢ)JiIL]f Ќ(̑R<"0P9>C!D."h1yț0!ZQV# ѓdt}qHm[aOZ~%8`3$F ̥~W9o{~7αs庀)KFY=Hk;if%ϔʲJVÒ4aDuΚ@)@u[w9D7wv I55T I(qȮ% bLvEKP73Rm9fOj3MDZb/0\4\p4ٍ3!d9~|Ge#b'΅0֊\@|ftl>;Rs/h$Ҙ?膥VhA:K'=BPȹxs@(rVw ,ޚ1 4$>,; ARӂ^28XuԿ9ɢ)zɫ yW[(6s!;d3!:&8KgԴX*aY샻z>uWwGLNJ讨n:. 佾"E-U=B31;27B}f*đ?]R~Lؖu-tq2"E}pGk^|s*}gP;5{O"X#1Yb8#&iA"[BKgG } qV7D9̡#G΀ .Y|̐WSCl) rC I'MN39)$PzSv$y{FD )B&5K_'l)V Uc%paDY!x\~8R.N.Rer4uj@|sGc#7“"X$; .ݐwKm| Ű^rƁcA8 $\$  $ZwM "?Q :Vl⁈`L"{FA"t#Z~n7BH.({'=tRWCk:oNOHc>(zEw#ٻcEm,鍒 z8y{Gq@I8Ki_&/SlKƘJY$H$hKD ^(\iFXH$۲(\E6$\dh Ч!7`wGdxH;B Z $,$$m"1DQ0Ȣv!Oz,@=FG"Nrڹ`7ŚS8`zωG>y*3qc~7V2ˑ$ Qfs0_攬odZy%nP ,ң3vCvd5GM$N@"` U1)Y!3B(9796Ó>J ʎ0U ;hs9YB= /Р@*Bb&Q]? ON.'k,M iMEx _R &Br̓ yK2=?!ҋ+i{MszD9ǹ!~IJ'Loh3.G w%7q}NGUXDC8yM"d2+ BN%l]Sp,5YSI=HljdȬk"1T<i&!4;{4xbhU!dMc!Pk} ;ȥOޮ܆#I.1AA% |#Żp3qa5I]G6'QW88TBYMKÇw_],!2Cve ^RN9%TQ|{%rsw"Eu+Bۚ:W8_J32}$rZT(y-27<-}N a|jRݤqy%N4u`$!ct27 '2,>rVI!zWTÖG@0RN"A ` $M=KdS53KqkW($< Cvn IHʖ ;v vMz_G)GzK;ɞLR>*f|cQw$QB{'r sD !;֢5buR>:E?LjՅ/n:mN8~&݋Wb1I3gbMtjgPԩ`Pޞ9F҈9Hx㗆.,8ޝFY$ & !JJHDc$G =I8؊6Zgbs[+ YHzL=ܘ1 Ib+nJ"ibw$QƱD̘rSdF"m͎oGqI'd'2"Pogp.yUE߀GkK=ܪ RwGJK~!kޗY|>8L/~߲N%BqA`t4uڇI5& IOBm2 R# OƁ;"\_ 9Hh!7P ,MKKk2$U(1=IjjԐ xC!*YЄxUak U@T7Pe970L2XMJ=DgӚ)[)DGN#dNMِ23ң% %~nW%Z.$'Iݷj҆D$}贖.MM#y[T tX[0sStTqJI_ptMr؅T~~aB-L]sɢHȡ:q[ $WTfK"4kXDb^!|;;RUp8/N-'"#i ނ\s 3#w/7OsdD - ,S0w$Gb_YNq=V!Rw*RVBoYA9v1Rg՝zɗ4CSo17(څw9׏U$d3z:J*߻#+[DUqM*DwޮFki[@GK䰶@Tq7ġ9š~8x*FL#嵐C" Mn3R;Ê,!D;Wv?#уcɑw@dc |1{w 2a,WT&`_ }q'C>U̚ˡFe==YFbs"J'H8_('Hu 5܇RKU2X{`d 22ے{CfXkd?"\5~@m]DN՘INgd`@ȣ?#iY|qq+*tĻf@/8'qR833E' H1E?V:8 j"X0{BFa5dDG6!lA5n]E87:D4k~! ]"X Ɉy̩7P{V_HJk7?#7av4<"ݥkvf~}$ڶ R~F"-G<1=U;rx׼% ryDwki% 3'T1J}YؿQb`!c:ٽSSy{''DzZV",x_PS;EM?_͜,Fng$b_B<f{'ȑ ?yA+m"&;KP~U:e6I27<%x#JOaDER5hb 9_n$ %yx^WčCK)ޚ yfB IV\=nBᮌD3ɍVoyvW)D>9 @ąIn ݽf<5ïҷkr3&x$5XGDZ*^ m;%;hqUt_6UF $-z1H)t%YóU~N~m!V#i|8Q0$-dkG)88.A{dܶ&ˀ&ncЋk΃UցC}d6VlKgGޛJ QW(C$ Q3B5{%@BFq y/4-[@cwT[IsrI408M@$qlӫ p$H4 I YDwļ9ĵk {QT8T&&/b4_#$$ofr6}Z 7ioJYҹo([~ĵDG&~7 !f2~2 ;h2Klh'/fBe~zsޠ7||/:)y%) #|O(BX_Mc퉎t(EW7p D8x )ˑA.*f"dMX6_>CB DE~KcڟF7ˋw銔64 l{˻cGKæ!"ioq& `MqI~EeW228rIov@;%CZK%q_ |8,lx۱H: y4mƣʪ%f+0ԚۘkvIIסb#!O 158=F={a;Tj"gkh71u{iD/rod9* ?{Q)е$&tH(aR_GXtRKP(~&5<,عj +B(% *lz`@ϝ! *&+pd&^hȸ,yv6[!2Hya&rV%ZԹE?]rSl2A{-k*^\U2~Vsj.s.#1c~g0LOY;7Nd LF@.(Bߴ*hQ)!%$k`FiRFzbf)R㪄#iL0~4``j ) N I!IY*B1V;NtB$Eȳ|RWK$χ$ ~nCɶnN6SX[;*s&XDBWN"n!7K|KZ2GϟhK8R_P4Ui6ӾoD{ t>k|ȫ,ԜG\SgdZb(AHD]]i @Ʒ!+sYBhBOR*hW<|]-/y<3irY("D1w GHfJЌ Hkl~uIY`i47n>o-1Ti yٷBK&M)$VI(qC!|[:p,10o^kHuXdVbVw|$S:M$%j Z;tH4𓬤[EN|#xP:e||\Ƀ jvST3T1_ }cJIڽv~S*ͺdQ/q>քǡ*2 $`o;xC_Un="$(*;$䃸B!!⺐R&'ȳ+Hm3W 09M^I|#usbPdw;=C>hږTrh ġW/)iOeCD {H'\Eg cr=:xM3Sh*j; fu㐤EnHN]@򱤡.ocMf͟2r2>Ʒm g>=^?@٘Njhd9r adF)"U:k<8O,0;!9cG`յt)\nŞ4DQ$MHɼ)6Nzr B??:5xr)uHVRub+%DMN 96/c˼o>W!/I]T$u䈏#JjH6~)u^2sڱhcz]YjF.ȣʑ7|ݲ>(liYFGIWY4 >}WCb%H5Kį$,g~w0ψ5# >!$|iqcc4ޏ@뒜U6f"..B-C%ΰ[ DTJ"Jitk .qC"Ip$}5̓5+} #慄pm-Yq.y*<ځh=܀t6:30O_YIjMc{}UC\"jWNݸ8UF&w"9= ZSrC"$^ՔxkZa cבd:D>ax@Ñbmr9U6Z zteLdiGtK#iEdN+UX. ciPNB"xH;b?@c0/_Z ˑw?,fPOjyg$lF掘%2y䊯03Ue}*KP:UQūI!U_Lsyt #`$ч*~sd(H˳HOD%p|/iIW|݀^}fRƝU{Z $,) P s?b)I#aBANGoc2#9_lgMٻ@5= aoA @J ם|I/ =Gt8K7up2tI b(-Jd %] (C]0kzSj H6BK|oHP#Q; ZA^]S&([lS4vJ[ʞÓ[a&pK-jjL$DOS[E t$03,2%{fN7ʔW┓ث3_.lԷ+>*< kvwc6Є|Ȃ{I :Cͯ/w7mEI 0lqd0V" Baǧ"GNy-VSpL9#!ҡbQI5czw|L=d,뺪$N蕷~!yw9(֨=Wռ!bc{#)BhnkbDqr YXt,) 'V2-0nʅ.]C9%}vYSzHGB'pT:Y5zgO=䄴79,/tF!2O ZwX%4 #ɐɊKY{i rkd{yMMnynz;7F^,@"#b J39h+k`Exˏ! Nf$h+C %Ԙ ]՛]$FJ2f5wi-Ze"+lGvh"ܱ>K;*ʤ9D QAzke`Nt@NKA,wZ@EH[t{0S}M)[[%}b1IpCٟAIy%]MkuQ.ywV7ܸ&:)3Ji*iZ|Aj|jS@m0[|! h""+Ud3(.+rޢYfL;a'-6Ó}qM*]M4B:WI$B9O FrI T#-TO4yuR8\e~7?4ڽƛCٚbP-o!6r@IH!W :+a3kV@7[ї8okjt#98PB!^\Yx (1QHr4[k6"(=Fҙv%R-qbd9D4Ȩ#O0ڔ\bm壓ו'b| ͑XΐŸ>|ņp,55ge`IA@|D䞺 q/wzsC1 1AViz2֓EZ- \'?v,P6|Cy2lG6綨l^ IH'ؓT[1$\7<![J ({hu!mXG$4^N!Dh&tLyVay grWw =d -^oM`eG7dEh7b$[*$A)E5Ig^GfKs7vG(q``T=^{ \;D71Ӥ7lLCc:v0aD"i@ʲ(+/aIX3^a yBU o>H?=Rtlf'8ܘ'/{){ɫG%gֳPHQ } D"|rS!I#+Ը۲XHS)cH&&2hb_7%JjțQߣ6 /1MYXޒJJ3~} $vrRin])VqgR,Ȥ$Ekueq]"#n3FS HPףĕJqXD ɩNz⽌!}ĂxI]j?m}7@t )k'm9@m}zZZ,bԜ*\}|EZƊ]s.Tb!'9KzS)2|k(RV^\0 rG^B㦫Ȣ&>^S H5pM҆3!(AD0y{9+o=Q*=Rlbt;N8yLs:fbEKLJ)5X:eh_i4??>0qUlV*S I )@B<v];r3=:@"DkBTsMFM;HcP /Kau*'HUAR>4/hМȟY[&|˸̘N?ͼywUa}{$ !s(mCF*li/ } ; 6nJmT 5ƓcnocWzײS9L ["UyG-?0e `Ïe84%8@* )ϤXs,dE}p߂N!$ I$ҰP^He?]#J}S2ĊDa4hsԯedʼe$r.dĿnZ 6 {N]1_#"^*DTWzlc뗤@*%U46̃m] տXRFW-g@U dGܝkv×TU Jd#y]&UwɃb5Q<%yeC#DVnj~Ar:9EC} 0"m ΡbFX[ @Vqs0ê]d|^dۘ>G1r_;8%7v&ԶɆPHc_X;UiBpw5)TvgСoՖ( jZ:{A~MH5;Ie'I[Ns1$)3[@:K2$fz>Nozs5\[D<4:_`)% iL§ې$Mw_6kСGÃ3$;&%B|rwD(.-4]E1ёT}?4߂ !Q% !I&|`H THΡDRۑ %+qh5xUX&bb35rڀt2?i!uŒC`r *]uD&!$,NdN 'JC:M!:<3:RXn$HҜj$߄[ى\!),R_>N}D>e>ᄋt0Eu&A?M*^:x}(ǖ= &kN LģQi^r;=.? KoG~YopM ̕Sw̶&TU҅XC> ~qNVDsCrvq$Ry`s:ǐ $ZޓAkQ. IJS 5wѮh/TРT><|1V}?Jd䄴,b͠frJ]YW"ōhH-@:L'Ҽyp$#B$@i.GTg"){j9ņJvNZy$ՋړM#OcF.HZҎ $q|dzS-+ҏ9 oP1R4W}{HJIdT9Iҙ)1B*^5?"r.0"Re(<"5q$Mopvd/,`r}L֚%qW~Hz{X}|?h!.{QbmM}k ̙5.]$f'gQ~)W%"Eݷ^zF$ؕγ^D$[" n߲Ȕ]0L^R*i[Yr4?oP{c:_#tB'rm&l5klF-/oMCbDoIET~K >pn!{?p^tiG"'peLH\WtKey{4οOnH~w $w$DG2?TEA"~"td |tPllFP!sS1jgLwwR/Y8!z[z@9" tD Zz!݆d|o$Ojӑ$SY8$ g=?Zt;5Nz X.0h\)G$T&;'rlt["  6g,y>%LOҽyjhE!Bb|@ 8o[O8^Y=y[lL(? %G6uѤևTWV;5j(5䅓X猱"n KțÍBůD;2!|G"vEaxD**rLRww b z\1+$ t2:ri<ιλIc }Hc1Uȴ봋kt'< 9:?p^4Db[כ4JxM8ȑG9RÉDcn*/{}$zH5&Oh>'\TBE,]ze T`&X_r(M&)k(RI;e}|r7ٗro죉TnM@7jW6 ErIPz]@H.o%k/ l'An F/"Z ,8' Yۯɽ ݮ9m!'i-D.RI3p*f=Ö7˶g0U9H`96̞abHetJmMa-1F[E&y- Hؘ[r ا4>,^2ta7鏹I`I59=3ަH1˔r5"Kv Il  y5۳ P8DF|%Juke(DAĐ+\%h߁ĤvR66dSq6DɃa帘`S7.CZ3_v9d? ip :$A*KJJb8O.hNmrsF gOkVҏo44h4=JHc$LH f>_S؜sKdve~?4:5G Aӑ^_'Һ<1q!Rǀc}8X$G!""y>2S@,)┻'5q:Q/^}[MXJ 'IF^z!KuϯOy+%_F?;۔,:T艴}\Db;B^4,^~R7ꙚH t#qDRWq9: t< 9"XL9$ЁyF $iX9cKٶ|范 }*.eJe_Cb^>:A _^RTd,$ʥM,mRsY胀$Rx4}P 耵 ďd.*P<@(xXɖm n(y>s5m ;ڀ:%@~'Hmc/P{C#?H+4aC&!2tW ">SjJ|\(& kwMxI MlK վȸ" $K?zk*9}3+o4NLa2狭s< q>}s |7ߵTt#mHe8G/ v@†;#=apk HL8=5I0mݳj̊Y!XykZfy!@2)-G RPij|qGӀXUj_y쳿'2Ÿ4s>KMW]oD4GRl`||l& }/W2'V")<7Ŝd/(þ9vG(T( DbRULG?*5-DCd $S c&r9ŝ^GP'ri姍Tl\oel-eȯ~?1X@N0KO`޵܌"}oѡy-0jz{pudGN4|4Ttp#j1LQ!Z4ʴM(YʕGN\ZtNBDkkbY]^$n4'fd5U iV k" lH $rL뇡.*#ɉh"1D!yt?闾VA6U_<5QHQjmsVyMErzl [1k=;TPD?/*k{҈BHW6J&FEiJ*2!dSjo$GR1*Sׇ h)ylblX>Å#r +'r;ej+J^ 1 -)7dt*D)@yi9;~)ܢ߈wn3IcdLf})jק&LDI rpWỻ98 $}[HSQ::V'Iw?>GC3ki,Jh^UłZs dr_kk[} s㆓ Cs_wk>9}l߀tI=Y] >IAIsx=p4켢th~HﭞG_5@7ޤ֎k""4`FhbPVŒ(}MƇ&5AƯI~Pߑ1ٽW}5H{^gTz45{W<w~ybGFX{\I.3=Y/L%r}X:MͯK8$B @V=[D3U='rtSZW$ pKlDmwGՙK7]Rb &HL&i%|exҰ$}t"GMqZLmI$, HŻ?fsqT+7CA@U3CLU^EU3tʲ-uŵD^{[ڍrLu{0(/a_2=A(' JF7ۉ2.-Ë4"ieP9\˯:HLɑSaҲԟWc36i 7#ϣ$e90V%vNlY[BXdݣ:oJ`LnI7-8HYMR8?\Z^I,1-XT^\O28^dh9Ɍ4eN 툖T%1Eu6C"IY;AY%Az@% PZb.)hHJn1TB*?e&$ T2Ur.)R#!%3)NHYcDZG {\BuҜHJ㿩X+ǃ>lxEm͐NQX%Phqgw#91Qڔy rD2|XHr{PT#+yf*-QCe[ T!&'C"A'B+ |1T?Eek@f)$ 2 HEg~}'_V1 I6Q@tbvC$LPE6!I$-NaIwxA6!7q|0N ilZ,4$W}̗ґB`wG.p@!eXBޫG gdfŠ\ӚT5xԩh^V]RGR![1I @Taщ5{ڼ S5G i$TG n)M#+sh1ƒ?Z= Q`4\ C=li3;U5bD 8༦ S"^FTCA;\Č&0w>VKsJ>|A'rME+J$tJ'ߥę?XAe$74b{4DYw4 wYL$B\!b`&V3i>M|K0ITwAip̮|8&LqC^zJ ɦ@BTH ɪ6N[]mZI\4΄dÔ,nyׇf-$hUy,G&s-?d)^G>5DEq$ @n`8~~4zH Y9) ? diG' dS\z:dD6G9жz<{PD5^M Ezw0AurQ@.HW!r!͵5\f@2XGR{dnzq͗lT#H8P 䴔4'+OCV _hiTDH{s$?GF;QY> UUcl a)q^KE,WHF,9)jCD#U&v$d96uA#^r`FsX~j .MVHdU6 "D9(;qk@B`{T|"I ɴ}`ǔ=nz%<:;[ uu3DBX=qpKdVJ)7u^U$;CB]f@gr^碠7):e&s`7p Bü9Uɬh*ZvuNLEƔ<4!37xo212P0ƗZ- Mr`zp墐2l\959 )"V?'&.KP{jq^mY@DE2WnH-%jTH`{K$&[RT7-VaO7DL nϺO CniC2&@ >٫E QȊB4K.lF8H; 8[<Ҷ CaZR GyV \."q$ ,a}9N| ~'a5kߐBqHLM6fH(h$Ƕ!1#?6~[Ỉ.q1H?!W"_jDPΎibsbDI4vHI7kYnW Yj~ V.GB9& v e>"Atl#|HV9t:jF|ֳ5i%C^\H靽MҊv-f]UQ-)~z/2i9OF5CI8DբI~C2IȷrR {V8e Roa4Մ A_L"h4$g/'S5Q#eE_\dRDS!;'7U)L%cN%RHTWr n$gt =`' U>'*NwǶ\HNi!>CC\=|ߡ!t<6:٪#9dR h#R ɕ?te d~ H5׊~2eJIhx\%aDL sjӧ4{EKl/s@1ItgnY%>:nݗNBԐlоnZT-΀ nWgC)@^ҿfWDKX%tШrr+Sb"5ِV@!< S6v~|E,/%~'s}„x!ZvŁd#> Eؖ.g <:R bgIm7٪0ڳ =$E.O$C2'HV:DUnb7:ΞGoMٹ\ɏٜ2 fq~懼U1}@ȣQBR^c~)0gt#[L@bʐX}$B@N  LA/ԪDbO@OGvdItVY眄(}>zP/ ފz>e V!y7'R[d3!%[y͘Bɛmߤ69 .Rԧ. j8A?jhչ^ˤրp21&+Xޚ4\J" D;⡮Bg'}-KG .p+Fz%25R*[rB %/ ]OB"*mw#qۧ@iPj"Mםפ;~cGk4 'fBO8mIdJ[)I[CK\:p@Deي ֒!^I/Q55w uiPhcKlSc i֕EIe.%iHn>Z"d!_)=ő%dlDdOqdAn5~/sXTnNd)}Mk -p[Ig2@ 1֗Dݹ{C-ӈ[34-%|_)N:>0lu%Őa [3(i~@g%rl߬J7306\TA[5 8Lj#$*c!q!Aȹ!a]uX$Ҭ,ρ.q 1ؐRΏ>;D7F-^1(LaW~WH)ƭx"VߠK;Or&0线Hܮa| y # aۆm&ԏɝbĀLTdUߐAB@!WxoDWh&iIwO Z h$h1%⚘/_$pJr>3^ANR5pX|N÷Mx]yȊÚ妺 N+2׉^/:(CtyH 36I?,mEEHtI0&'K[ɛk!& uD(sRi9d{rKǔȁ smT)wC&Tf^Ưi]}T/.4僼@28/9:ljB;5pGJL\/IBzO MQEGS;>Lb҆ ;pFM[P:g@AMuYk"[uv$j 8m.&BVGD;{iR*ص<.! ؝lT `+ \0zkSe^ lUIwEQi"'d!Q/cޱӯ$[9rDNV`\ʲNGb$3Dcː4'>,6 q U) {BT@ɗC<:5M59zIϫIvه@^cI]Tr EYԌ+ ,s9v91?ҵOfhD]y /u* t~׼ZK^:I.pG.I<@)nH dk++)=8f{Cꔹh0 つ*"S1X#H}h19gCQLV ?wBkZsɣ ^II&UaU[MTIy_!i80(~@5?4ny_D^C?l(B.7?(FN.H*t`# JVeAc=Tq6 %vF&hB~P6xe؟aRb'7\.P͡nrc*Kr= yl2V ǿ}$zX }c#Pl(,H"Ԣ,D&|84@~F1ڛs !$tߦH4c8F+3$;%nHHk M߅tf"q=r}̨ ֚ώ-!?|20*@#&9 OȅSYRiTV i9`6aӍEVD8<`/I<'$kMuN6&KAV {UɨДJ$ ^N(<1̅T$ך4tXoy3mET´Wd^R51_8 &ruZ]A :/@ WSt@Bə/mPk: $IT( ODw-Y(J.J Ɏ>5Z7HrѪ_1dPjj̱+e, cW>j L/͊ze9Hs>Q"}MRPj4$tFo7p8OMInr7i cCr&T=:GA&g\s fP$:fGulc^3ls#WG*cuWˆ B\> ڃ,FT1^K6)Q~h!t78uT2z.VE/%6Cbt'RfW(jrHH}ǼȹqK&{H. i)Dh?n>2(Ӏ5O B6!! W|Y*i$C-,@ n~$B['bBJeۓ81WQ؏نbDԔxlRiQJ?/C'f"ȡ~Ĺ,PfSI&k8t[/j#y6.WÐ7On?j5%[m_>:jBHInWOE6x= D$[3(D ٦'T7Yߩğ,e'39dmXE?Ag`뿳)#;>!wڣy1P#gyr2!bNHvMJ.Hy.5aR&Ϯv7 / ]r (|_QGlx !D5h ПU -r?%,t+IK"ǺGW\fr$B|cyfV|+O3ޒvN>\*8\2Ӥî)Z Qq7bmK2γM j;ߔϐ tʷ>+=K֭/ZY-UhrDKK;&pVHЗdCW$g S`T'4>HMH$_A qD@<:8'/=i lFR1_9ЎAKVޮ^I7U'%`5$-CH‰չf}@8WU=d|Q^O‡TJq[4;DKDJ k$2@nhNTiKj|~+d0AG$@RŰ dq\^8u;ĹB#XʮԠ)`H\PWhэgL*Gzg(>x>$gKAؐXA[4DnqྰL:$}`'qV;;75LyFn&̀/i"G!I;%Q"C7LD 4d+jQn;R7SOfob| |gV!lE9:ɮ/壡|);q|.c7qQJo#@b"+jHLK~!eѸR֔DyIԿQF&Л B׾0QjG'[].w!dWIyBh"MhDěBы4I{D o87s.ً"OMyXj]0"R1bD& סb!|`ZD`84@dꛀonCMv>'JytڑJaQWh81c Y, A3r9<J %!o3$2vmN$8kG,DIV bI$ $`gGĖ^nu6uxt䏱SIFILR46uM>޼n$Ԕ- L I ܁@N(b2rr>7: zARD߶e1|H>:X1+En[}%+܇,uѱ@HX^d]+<$%oM$rv{GK\o_(o!װªTC`oLu+yQ%䤝oN peD>ԈA^&/Z l @61pTVK"BR: pD&Y ̔,"&X 8#< Z|Bmh3 B$/?6%fH/s~H$Yc:| 4wNO>x|E[n qx$gE3IKnVF32MT7 ?Y3E FFJ uD< rHsz˯P5L8%mN+ޮJ#eDZ%Z;0 pg:hmd(p- 򠈾!UftCJ")aX=Po5ml|©C* @564LHIIr$Uj21@ 3@ul"U>hqYF2S .ZP4ad,2c!/iH *A)[-OZhmI(1 ݑP*)}Rݐ4@,AsjN軑C r9 wX19q.IGGNmC록iWr :CBI"~vs~7]|MMWLf(b↢zWNƒB~o$~(01Gt)6T'RNo=qMgp¬ĺĔƟwoQD kkH\r9|n^D]u% ]bS?fM$4-D#b#ˬƜVުDlH?bMCJ@?lIyrV}B o %ECHeu~S XHy^H;Ϯ2HxzZ'+"=;') !ՈlE~=:f*y(K'1B9~esZ@"k|4ӱbZЀ2$-Cy۷)q瑺R1 ; <9Lu QvcE#'=⻿ @9d+':T& F?;:/\J$pdcHRUʨ{!F`T P-K唩f|(;%q>OܝPÔ, {*rxvWO=g7K]uku|awvömFj$<;L)\H!!Lhe8IJ;&\$@|"b;0T[U6MH!/e7vHݝJR#Ms-)A0Rz?a'Kq^ %Eܿ@q܇Dۅ\ F/J2Q#B5FZU{4uel:a'TcȝB\͆ DtY/PJ( b2vUNgޗХ >mjPw0E*HTuȾ<_;@GjwZQNq<U1=2d+]"+o37t]¸tIIvOMe]PKX/&%-"Ѵ"Ug@$w΄3dҿĢJ'A[EԳ@;\JNy?݉!a` ե8!`פ7>c8[E3I@̸7.!bH:%bzj^؇1x6tC"_@KB>9bnH,vڛ"!59"nxbZf|Z>bb y$^L! @/M[IuUFt9o֓(/DĭS^l/ AVo L} Tef*  )n9vuDuאT\cDꔃ0!п((|Ow>Jtʇ4? cO-G|Tl\mY=m ;Z2EJl'Wa%N9՛NKH$h6q4!M Ri+WMYƇgaM&mRv mŝFu4G_A<7[' (5b$RL(\e[}H$v a} =M]P$0~ _"I:lX qCam_XU I!ѶyUԫ+KU&bԦF{i55š| m k_Ab u͐W F>`=@{oX>hGDj7GЇ#G"ލ*MVS++dW|X2?{ M68t%)8/,!!" z%ulTc7㓨K,},L^T?; tBj[R+B hE/R/v&a&_#ٜd?XhDR,&r95S6,r5Ө 2RXVoz:!n'Qw/Idr6$쪙1UЗ+"@rCrFf%ѓs /K4?ON1gK##I5:9 |jA%a5pvź?:9E a "Q:9$ !w$P ߵ|{zRTo{Ytȩ3O"Ial E̜fTDN~wC~9u$l>3&E脼ezş|vyG ${v$(_%dN/(9rHTn3C ʁm~?LN) s1j1 H"!ʑqPHw|RLae!j՚?sۉuYLj_9C><'l֮m`(aWsm|t1-$nHCNh.:=8H%_3RFや %zd[pZ]P=e!\qgr4۴yI!Rm$m[19(voUE)JL-_8-S} M(ÿ@%Sn>>JzB"ahӏ@b!$v"H:_be+USDLX7Z9wi $ߦp -PlO$\SJئT&YTRDdgScKLyp'c+[rڔR@r0Uƙ(O_e5a&Ӓyc7G Zr#ֽB˧|!<}N죎҂wlD mۃȋ6H"mc J7ݑ/flּH$zJ@B#b{[Rڷ<ڄ=?FNi~8ݖl<//Q&K:2$ُ>f94?繲%zIF{[<'d݀`Wȷs۔oz^$HhUE! =D(UA*~3E7e [g碎 )"Oibv, pNj'Q:̭@A|$8m4istg-HdAMjH/2;@$E%̸Y%4i1ێ,5J1Ȓc5m7XynDJ`] , MyCkrJ,܁0[KSZETe:T qau8[ )]o^Htʲ+`8&]I?RwrBסɘkR@=B+`#9Im|FHqPW1umcJ^H~ /A"s]«8V ⍣nz r.ךV\.W$F'BXg[ns:_g}ÖR+YlR0ߏDސ/H4ykׄh4"K֒{wB,4 gDf9Dȫ-'c*1Y,<<_,CrK~ y6@*gۚͻiнqNR҉? nGoC)$̲A{NA|G$d~:J८U߁YYJX\![Kg%$vxtt!V5'eǡ h#=c(FS:;]]Mk<Sv8/ l[2Khl3yϕ:9Yn"#l7Nxt&#MX,eG"j 1Fm #JJ^v|+! ^8lQs?@n3`;k3Gu%>(b^'AQQKJ9!k'rWKcEE6VT W؟gH Uj`L8Ld*NSGA*&h]IqetQh% [$珒p!RIf6nÔ/+a^HyCn#y4$#^"MO!oܝ݉1!+>R2D)\ՖYz&WKt5p$>:4}H'WHy.#}?Ӵx(cNB&CNWK#4N>wwkw/ :0r9B&"˞zjr4hY}{9 Iߠf{L\U }@*@!~)7،lehC*J+:6AHt%C.QjtB)a"wűuXʣ9 p읏}d1IV־\tf7j;%8߲!f2 aD|k.K䋦um߂}o'ZF{lDCC !wꨉ-[L۶Wbp^O?6Kys?TsɈ04:2ԟsasr(͎m-Eݐsq K9 fBE{fsmeh F@/y18g86teg]N\c)/L{ bTrrr.͏pM:vD9oB Gg;R1vD[A#6#4p'Gh7dsNׁ$ё Μ(@Ub݇$!QK<6]e{Hd>\TH{x(ɁfWΛR7xKN!Nr$)?!M c6#F AHE ui=Ng|haQ"@\a{GAL%?@qIWʿDnko 3\x} ?$CR"#b?&JҏH҇=%EAl8r$k|ʨH>do[8P?XRŐHXymRd~5M^Vis[JuL^Y@.(48ѨK{z͇ZMK89CGZlH1^wʫe㛪mCџ:@BR1JySކl0.!U#QȮ#SN5;ѓivwg'MQtzX[U0@}47:O[[39Tpu jl{M9^jP_vDywMi :^6xEZ_r(5xk~ hC\YTlޢT~Đr$EHSf$2G|IUp+Kn\?gRtͿש;Uc3RzSSAj0эq$d"Kv[w{nCvoDZ?(r\ 2jC[Ucό N͆ i-_eu6Ԣ4!њ eu"$~?<=u!+;߫Ē^:@P[ь&\jiA,"z"c,CJ0q@vBhXW}Lm6uH5fuPE7c`/Ѧ^slK@P^9%adreK6Itڍt`Ww L{961@2 BePdt+)1!ً*PPe2@*/^: zC0ܭ '8I*f5%c'Wg04+sށTB& vm{:B$: J]z"6H]U5NB"UUn*!<x̿s,IAO8X:hRb]8z5ZG_(Z_Cj\@-bk;"eD{}-p i ͣ_8g)* – qG~R$W'!t l,RѶkr+t}f(zi]'Rr.)~~lvFK"OeBHvi-L$:lD2>me5d; oIq,wִ$Tx 9H1A"xQo_'3U}s*!YAV@ N; >Kb@7Z'c ι>m*H>"p]X<*7{EQчP7r*t@RPVU%%@I+ $hHAtn<*(6(ɑ 6+⚴׼fcJ$fgf´ȟLK0W %~"}*k%ͫl;ZAR;Go@g'6 *2f|qn 7N:~%dHz<(sڊ7 LLyo~]rȩ7翫ٵaŝQy$Sք^ki_mm'4ao{>HV-lO'&ܧ9hԧG_n`TDcO Akp#gJ?vwɢ}[>:i()@!bB7-%._pjY&b1ʟH2?LJ 2B {E&myEsؙ |1+Hq+/ܢCͽd7# r$?Z#Q\OVS.!5mi?Oh缔mjNyd=6^@Րq BJ<@'p`=&p"@`Nײ/сo & shG< >:-ZS͟I:cd$mrm'MǵNWH"a{_ݎAYwbʁl6$h\b:xQ<=R4s8'[v:rJĔ.9C[u6J8/;i1Fh4PYŠ6?>Q>I7"CʦHpH/~qFT=rh4:jUH v+:HӇ8E)2GS'ůIΫD)j h!2 3Ґ䙰q֏;CW|UP3 =Ny$Jh<`sE+_@.ӱӧzJ]"a/ssv`9 Hy8+@VJYizs[K rx#fv'jWZ 8ƆxNSDMJD7C~Z>9/Iki H;_#S?w⥛Z"aPC_C.{^dy>fyځDw}H:=5h"Z {!cyMgg"w7,eA1 O2"J2] %H H\YKNlD]DoyN/H$I}ʥ45v^ 5͡%#f!g>B17!tejCiL_TjctBx7o(sXA䑪՘sW5C"j@bg $S-? p4uԖ~N ~5C.m"Hfwλ$SE|by2 {D:޿ \N@ަo 29ߐY|Qu}&qT5td}˶,_K9SI2PwDz' 1y+ FU4&@HEV>o݅L8y^S'>[_$+>zI$\DkR$;L~4,pt[RPȴ@Ԁr8 f2fzaD% Qot_˨_c8gP)V08We" vdGDe7Ixj);5ama Evn=WvO{ 7af!io~M4{nEN OO;H]G"l>t_D߲˲W}#iP}}F,W9Mw>ű<: J@vj8=AΑ/ >y^Fā?Ãz:4#u$k( ~$IFm5C޼()CV, lV9yIq HwN K)6dfC؋QiH^)Qf; CgTl@Iu\H@b۸K@J~r hwg-F,XpF CZ)%H5! $ I9#bj.on3E[g-]y,C,q*gft6 #IM*X<5R|qlx1{B큄"Ċ\~Gz"Gr!xF H$zyxh~M}`'a"*';/207da,2EBỆkh/h< 4[#M9b{9kȠzy?@Lh9͍!HuCID:D?#ȿ!,DnD 1t;R=_r@*N{DtߐM$UNb{X!ّ&"{ɻ*B~6̴~ێtO)QܔG#K3H৅XOd/A_ dC߫$P?ۯ8eb|WI`: Qdio/E kz=?%ڵ@TqaMwJȧÞjlWrT:@ΡA_ގʏ%9kđ $œ|9ɥk9cuIIƐ`y:$9e^+ cdy@@ 3H:HJ Wg|Sü$"$G9I@4jcjhV$rZ2A)Rt'1@פ?IH{i@B fbq^#q 0 7䠨%DGBkR3>@;HDvN%%qbS#:o@)KdsRx"ThJ%)Eă"մU]`WVpWg^`[1nAɑ[&z!{d-A#-; dȱs?$Wà "{qUd<)_ߐ G9CbͮKΚREhE.Q@%=* k!- .|DZKK1>dDCM؉FP_d( :&#l%'xp.$>h KhڎɁ] #yH㊸,dMGE-XH)Kɍk"uTpwFwEDpɦzHS It5-v$ 9d~AՃ y~O4FjGat,}cA5=〬7!d 6הvLTRsw$(e{\2R/0-h- *M/!?uTR#)5c >]s=bbծb{#O.Z8,rJ>5$ԆEs1 PR~NDn"}~ FlpwQ>Az9vM5UONaL_MtO;kPmT, H\}VS3Xoohx5+W⚢ JPMݒ@d@Xgco (%̈"5k!Xw9>NȯwR 91i,1FxҽOS=ԦG;Z|}NY쵠i+fK#Ys3^:6F $,QrFs!+5NRhU\QT#A`\8E/{IO#Y_%rG2Eׄ3elN$QhV/vB|Mc}Kql9KBeJz ^V #jmDi hU3%Xy~qϗwt=U ;/%ZuwM~uA A`~M,2RCSI\@*,dޙ{* !ߚ+ARfd"P׻F_< ن) <ݟz9ɬ9b]* q, CP55ңLq 6ΥJֺCEQ"ȷzpl!osWJ>;j*!%tU_ D{ ]Gc[7x3W9B4ޗcH/5(o欽 ә.Dt͑A٫~}_i(l,(}袕THSdH7>e< 4  ! A~D*D;ȣZ"Yo7]0Cˎl#  a؂ͮ,s0dA儈HOlr""'^奭YI^FǚOo\CBuYi[4"vG`D^RWs$$W>R]:"{`_繳]j3xqͥ-~r]#3HsIzHE*u!fȉz I:u-_wy%Js}  /J~l񊜭/>ZN i6p>Z-%u/հȃ.DV 5Rե)T&$"7]C"*lN9y\eī LC[WQ 4/3( l[iiYTGVҩ)̆))(CJ4.~dNJAMI@" s0ٺw[gXRaξ chj#698.DVYRUD*lN%1yMqB])!tH^|_iwN̉Jj yln]策{l|k?UTbAՆmoHڷ\ک- e]]d\șZ|tX*P8Dt$buzA2Ĕ^iDk'd4/A.bǣR峥6{0z®8dT>BaS94z]JrH?炘 䔤8_v1X5$)u}'DQ vuz/AnD2w"~\187&kFkZPE/gAK;rX'$%lxj09w#dX8%rv+#HKˣ$x /zXR ,4ᆊ.rr+1&[uj!]7 d\)yILU*ysD1JZjR ` >#H֌_#iF4DdW8UQ$ːn?973ia )IMMWm~_Su $C{ɀ?ɪH)=V$eOoaDz aӪE %dˁUno.Dۇ;ݿiTxVs֖)3O ?לʊb1Vf~VTR*M(3=&/{-R(BLkzP8H 9%n#W|t?( $9lClg goHB٤eu_#В{N߱~ 9* ^hȡ>ur=DeOrlk*c>ۺX0sJf0 $Z6oR Gv|c.z8G\-{9.Ey3;j̃n'`^fn>$ˆo "=]"A!Ɂ-s4$`Ҥ<i_h3|YZ0>U6ڜ&CTnS2w>EĂxf6p=[m `SG, + FP7F"nIRn_;'9D[5:8ak>29Hys$sGRAXEUÒBD >1rB@$WȦz nv0>ܪ;ŧQfS=A$؍CM =۵J/J>}+LG+hG#FM!+ v }UqC%9!1)%Tc^݌Ԉf.c}N䇈ΰ,$һI&]q)!S,KCI~#okZDJ&E(Z@&Q+wEQQYQAD*4${,Ն9ߜdʵnt67{D^itaѵrM~u%e(Ξ4R[ v:]GJL)5"U/4@myC8Qc &Ro5=kӷ8FC̀nmVŦ iTPrx+ IvK܁`HCK @N[ycxX[l2V$;ː5&|Lu`t ^3>.ә#ڄFYz|r I Na58J=G#/ү]1AȥH)Mf@G_c^ tK5qeV}ːxHez}]KuaUBM(m l%Hl+uv;՟SW^f V_KQ,\*lo(XXX``LĻVDĬÛ3dCQ 7HE Bi3a%(t:[?^jfy}K(2GxL H`5Im),V\y$gj<֤mk&0,Ec%=. $)-tpBb1]q]|1ܚHϭHYC#@ȳ2 RĈǙ6EIBW| -8L5t,YPR)7ҒӁ9HA&'&+4U8k+LA1MR"1AZ(}EtA蕣)T&QBrcMQ[@v`a C Ih%x)%`EçX8lRfN@(~s,-\QHY>j-q@(V fN^΋#7O{xYe37M; %]|й0CVH%wb_m#*D$[PɸTC' 5&޷e^G5g\ivԡzYc = /YJ⦎?ԉ W&+&5W93D`YmO&=yD0rUeN9<6CC"rE F^'$¡{!D9TU#5Y~vuj[|*>D+9_!{m|1S >7k0hM&QH $iU`LQe+dz5úHӕdH ؁P^_H2-{?W WD^q# I׈ަ1aHr%g0$9 (.+QڐoL:Rfs3"\Ryug(!%HiΗ|=9y v&>6*,Ӯ5 P#3Y|oH,)ɱ؄.܊nD o*Jc΍'^ N n9ƑJ9I1 0q'eH$c"1$TL{l ^r$VD~F0'4w5'ȥJ# ¼{KDW8]- ґ(7g1wKLLDDFBߘb0)n,5GoL8@R &g"3hOhyHT񐟋5qˁV6|iD3{4bCPJ^ip2!EvU*)H4׊(NH=zoRe7p%?`ØFutBi^фpBԴac|Dq$$[dF7sE< H_БQ1;w$wM:a{twdV a 3;b%y}U "@~@SīlHvzrmw[kSx쥞dmrmc|catKy97iMmbp /a tǒڄ!J YC"n;yް84 TO$7`XVCM@nӯ!t"<~&Ւ(3Rщ,kb++ NG. Æ9 H9 L(t4POVYwU8ƷZ|#BW9"V<:u&Lc0`WFBFvjS}H27Kbׇf=-܍R[Ϧ΃݆ɤ؟"鏬a*u#d-fDX ޑH z#MR}7:&EZW2U+^#R VKN%W Q[rQ96GrQ!qK#C*".$,GݽАbQ-_Kː1>& te~6زݑwu9NIQ,>vd;$868DЅ:HY%n|8%>z";_HH6`twMRԑy;ʹDR:%8wo&IDvM cbB1~?01HZ{zpHq.Uދ@8(FmŒ1$'Y"O އ o燈䊖\iƵ ÈC $zl#_5;zYw` g@J0{$aKjE/ꑤM yMQB#tlk;43H1/yM`^JQv+.Zܚ%I- *H]Uʟ@иxA_"獬u(%?yV/e6iZ(Q Z ,E*CEr2S+2QFZ'D-oܫ{CPv2e`&{-gG0[6yNh%/_Ɔ[:&{ojadrq8y(CA{!N{0uDdedܿHy s䖗#E* qM1!QVh~舉Вj#aݯu76<Cq{Ցx":U4/nև4_9B 7n= TD)_XHR1@yp9GRmZ&sE61[򚊤WJww s#+ g5oΉĐV;EȒq4A_PMhK1s n@NW/rĎnS"6@M\}oN[OϖT!]>1I=?a Mi'\5(Xbb P!$?solv*(oϾanuuZ@:o<I5:"ʩ^9>qrN"<_$L%i'zK @.1 \.M};R|voS $HqJEfױMth5 bO=K5Wg- `UE΍nw9=TUƘ)k@NIՒ댈䯜)֋G $fY~R&A8+-1'~#zx%cH WMW4z_l?/\E(鮇e[!i! $4ڝpd^|> '#l11VB$0@r7c"I-0Tj8㜔㚉ǟ*H-iH$ xr"W"ǟ&?;+Rҷ#Xyw:wAI;,ͭ HZ?oq#ۥEu~ϯ+DfKd. vįdyI9iG.hȅ@C_NnG}V$j;Bb (3x' y z_:^y ~*{OHt'w2$m9 mH8Dz fbmhűd}y7ޅţ ptYt'X krAm,9_4p>kywpiRЌ@S#Fs-i&M\z"=H$y@Ӯ&B)2oo}RU6=AKK}"Kjc%2x ]Zn$vGBB*a 7C7ӿIE&MfDa]2 u•.]NRT`Gw)i֎D}y 7l$C oxC69>;p,;?;/ߑUqXޝwN%WߝH|Yy\Q' :TbT.~ȫQM>>3 !.!D+@ĥX?X=]ū!LO$5>97A7V@pedz.$ 1ш׼ʻF]o$#zgG%0+&15RVp$ J/dlM,*ѣ ݚ\"$5U^JES>dH}|IJLBnT=hp|͢lt$;$ `5g|C>k!nU~Xk~ +|Df$}M׉?ʁ (QGvYDnD) !˴]r}pˌ*ogT< Fķ!!U% PTGGPD$YtD0@JO%1*\GfL EQ\t%˪LBFk.`r/\{' ǽyV(kW< ^pM@: D5]C;vUA)I'&&@N@*"&܃D?z=-{%L"(퇜 /Ҷ!HZV>zGu) YQzz͟\1V3uMMueub<ꟈJrtӝh!)u|^6mr9w"I NzoDTL)ٷZ'B6Z̷$,@"--kzc{OjḺ)0aQ s1EMJ@.|ix gXf4c$GBѾ2J9W;k2}7o*Vߞ@JTw$vۇ8\oNd;!5#lJ"T.:s˷H# ]ODg/ۼ&5X"wճ^}V/ jVb 1rn08J.= 3a`$zgу{?jxFDNR#XHbGUyJw˻cx"rJ` Y\B%?HۊK\w$^('$)vh}ѿ5W62|E±fyDyGȱB^u+m+Rkkb|p-H$2ecl%^Cz 33jM )ux"?v64pY*8`4Kqsj'7wtwn#Շ <"N܍@ HF yP(j; W"jvjW8޺w"эeUuԐR]$߅`O]J  17_[?'׃>LAWǒ@ gnvH7)!fHp S .K:f'YhVjx=@/o1 ׼r\DN-n"4d7o+Gŕ$ZiцO'$EGq{ ; tG"+N4&KENaaPY*6zݱ0&9-ĆyH|&HX%. )Ӄ:Р$4UCQ߁o!|ȭG&3o:^.I"d[4DS Ro7C=}spI{ߐhYH"$vSr[:M9!^CBƄP4[y,C6i[Z+QH'1$548c Ӻ}Et\wQm~IҜ # [8B*gۑA >5*EHTaj/l~r;tU%m5NK‘2 LEH'}#.Uo #Zz 9圁\u6'~墑q)Ff9Ƅ:hU'm>/=6/7,*$Be}'"݁ZԒ" kk 9b!osei6o>Mdh#5ud u\wъ|z&Y(e};_7 9! 4i}Qޮؐp o%̟M 0K ]A4-ҐHDxE&i}l&bq},2>?|Hү.@Jt,x=I:BNaJ Ɛd|"e&w`>R&oSi׍7N)Qк:="!꣣I$b 9 |a8 gzúN8@վQhK0|;Y1z}!lAa$}xA,fyuzqMtqGB3oZtl5ya$WKHu"R8rX72P~<+cHl~QMXh\cFĞwh=$4ߛ-^ӗ$&@eͩWVGHj$}ƾqmUR`&Xݜn]p@خ 9/~TPU|Kv=00cH5DZǮ7u/o5K-.{EK(:D͙N5WBWD'1ߤ:% [7Q9P4ep\GmzG잆F1qI9a٨Tm}GvVXM^MV4B" )Rd/MA Α44)r7cCV'@ҿOG)19 4\H4,It0h 7uIr#Rt :l%'܁F7}UgaHbiwOGbWz,$ԆCr)$2keBk0[-&M<_.3*!ub7w AȜ \7pz#@vAxqx@N!46h3PFt7F+);QIi*^bw.y +dyi}r{YR S x0<#gɏN a"hԡh!W2߷%y 9'o^]!WHQ I"Y"e40ѡPtʓ/we'1v?o)\6Lf??e".#‘ŵ۬{X6%>T)Gyyf΅ F\h\7PB$. dv<Y[:h5g@ v<]rC3~NL<)@Hr`SqLd"K;!'{ÁtWڊ踳FF \I !;p|cw̡ӨؤLƎ"q ewfR::e]֒d/;i-XesmGaׁ wqpZ#'=N ywgџ$Hrd3cʑoA`ꪤrGC2!j%RJ@'}/H[?}Ob)uNW&l!Ym~?=S8"N{HLH_+$6!}ғȪa*;8*KG# Tw,Wx\lh)i7ijbvm8ɗNKoh!r䝻 ˌzD.v(/'$!"SeIlmbKVfHxۆٰ61Y{MuĠ-; p0 y"TѤ9l⨐K$*;[8 с>ȞI!j^yLrvCmܼm)$oG^x@F l ޑqOE4-5(I{>MzPsܱD40hC ;&@"t /2@v!q eDa@mf&"Ak:00IޅHve/һmyl-"M'(.qC 4Hi? =~)"/R2D}AM- 4Q:I~HSYE#!p,1CN^v[K}na]QsAH KMJ=\we]i̝XXT[WULېreWlMWlJ0p ԟYgb rɊBk"lMF493KȆS|j"RQ*>{&~U><;p$&MTqss|fȅyG$:zQDڃ # q%r!byz8ma4Qh,$ %8up$l2#yd48.;7GLQ[{ғPa>@݀ȾpvSU HãnQsr yNCYK$H_ɐ s8GwyΊWs:yMRGaC4'V̰ws ^mϼчgxBzxe! is3^mʋ>1AuVѰ&HIsc_KgA$& ݣ62΂Uk|cQȣskۄiWj"myFC͘ND=%^sN;!6 MwfC^Tj0c$ANxb*2/hb2jMoӲ1&4e;ĆQ\͉tϱM͝} |Ho|9jO|"ImèJİ7 P19c!0w"2:{وL<>/~*8%~Wӑ 5-Y,4h)@vwLB?l#EGm&c4|ǣh 0B4?u$V;\8@MX&=}t$pjNL !Ȑ~wJHe$Uzrrrx1$]Է.*NJHoSAЄRټ)AӽS8+J; O2OؽOD'6'!єw,` gH,.>o4KϤ_"v0NVm4B 2$D޶uu':2 :0L"( . NT`HMvϴ["gǻAva=[j(S9 5yd˸ZNE\,Ws!|HRMNyLSi .;쐧[?&!){:K9;왰8٣wTfA.%~lY06cdAůy}&>DrqޯI쇀AVTH)Q"+iՐwkNyj4Xs#b3戻q$I;2]kC@Olv"Y}MIη8ȮJRp+Q5gu^i]U:m`;>ÓHz*.B B#j4 _!k /»yƓcI^Hq-hyeI2'r9-1l- q_HZB5b{㓪!DWOf;p(MIwV;H}*kHZeR~օi BR㗷D 7C5MC>l#DQfݯ'X]#pX MAMA0^O ]rm.xn3iOwϐx}h\J >I ^oèK==BHutzgٗD/AG4jL2x0$b,`Mҍ %M 3!BKj >HaǧGrp&g D_ L Y,MaPwwۊn=$B#(9D"QxHrTcImRnPs/((/3A𻻋b;RL[NH\rۑj!N6W 6Haכ3a,P+XH<37tsڣĒ **ycDвZ. ^$LDTv>~wG(ų:7o[X0IR|dQT`vq6B;k\=^ S߆7 H4s>Z!84x=9d4H/r P4 M]yt1SʂrX kњl`iڿp$ O4qQF9'y&ӗM6$ _?z9[=:?R׍(6pP3hybKq3m(n3@~]@S$fBHءЃߛcE?=?h/T-I@A121!D ٫!9B @v܍./hwqq$> GJ诞 }w#Ӡ3xI" -9PٝqJOD<ʉhX8ljgyq stgWfHl_ɞ515$,R+*v: !$ f04yMxh2/i.(ѺfZB‘ &:n)r^?4K4 2QZ+K@CV=^fn IVP__٘OA?V7I X ٪ %KliZa;^2G˾8UH$(v,QL%2 ʌPi kVSa䓷#!Վ1 <Œg%YTT-# I}+Ūy/^I}+%Hukc.Lʙ-m2s̺98!鶣wVG&*3.!% ('܂@0/ %H'*?'ҪCҀntM2{"V$<|5PeݘmveQƠ-',%"ш/К(D6Y(,[:n(H}Rysb8u+;{޼Ypc)ˌ; 3\~ Pɛvf6q\j˻$w\ƽrCOa|Is1iEbWTbpc] x(5Bde`MK_=ZXҢ?5.-'}M->1QdOڞ]z %dVO_,N8_)p5CL,U"R; 5E,RCx]t'rXf+->- vqxr%>IjZBޥRKa-t 2cTVg<\V 3Db/iZGbuq4Fr6$M^O_x4Y-񎤠31퍆kNSknY-J0$$*74j0)'HtG rO 1 V΁1DtD: E11L"y$䡻YϥH1̙< z~^*.?$|ӧ]BL"_ V5 %Љ7<9Ó47c/p\Gx6i:Y͏~'_=2-Ldt*ΗsдB<rE50$܂`QZH 覽aG0n$ z*O^| 1-PՑv@Qn%QLz3.N/4?9j 9䷲L>d 0uv'M1o'RѲaOʨ@\담 LNtլg-؋DfHJ9#$xjR .QIC˳]H5QY ~r2JY蝦t8yI bs$~2hRN `ϛ>7\ֽ5@#4^iգxf4PIc C -=;yI5&4B/ClL6J}{yx͍P;䠚iVv͑mywJ kߗxD6 R1K6$dk d_zIy)-DRx09'-K\h7ّq$bؕAO9vF R^sQU+pLK*]Y)$nޛP/yer/ ⶿&f( 9L罻_@s/X5S޿y/)̟clRݩ1H%BϛN&lY;$x".Eі , D= $Q&ClXqXG"{ȴW ODFLBnC7#CAPH9`}b/ EP+DQH@4i Pv;4JKJ+1GэTD0RFS_Wm;d!ŅV\Y1 CH53OHbιNxP>O9LȲ_"i w{sɑB}٥Z[Ät_LPP)JLaS";4?TQV,dB%$Y kRG8i\ ri@:v)0G>fB{vK!jx?!_gѥz杲ѲFHT|L-u 9dF"w5$ָ )JCGޝ] c䰛K(zVE>B*'(̟9 F^ ;} XdKjH&J~\Hl)U5yAAN59I@24ó>zԚ]^Ȇ8#YH.cݠc!ICnuE-g؀៵L$KvZIPe}Txʆ\H8T 5o821*\ 9K$ MG"쯣fKeF!H͵$Z!Z/ ˝]9 1(ܸ+<^9vC7` PF`bR !]je H J-Tiy3IM swˀ 9(yE,#v䖐J2ZK  e ac&6㾚 q$=ދ$DuAID¤42$Mp-wy";!8ˁp(_q=DĿ7h'R4DKpģZS^OG3ŤI wQ#\ZG_TLF"ѥcz#%mző6D<0Ox-z" ˹!L7ۋܾ>꺏$wkA#L䳳tCׄ;`]$kE9]1붤&+Gꔉ[^ ~Վ4YN8<ې+'I^1n[__d;N3V} t0I=cwBdudL]eO>E'698aT#YM"^%[0`r$4=>u3&1:wc_ʚbDw"? :h,K <fDPDU1@ޯ!(oqrQaO$Y?3)&uymM)~hMS vKH^50@B;C FACO # SCg0EHQTaQK Z}vZaδ IVԿn"N͑T֣:ͪ$l#Q~\TnEf:+a̲LyߨG蒤 $]9ҡ{+]AÖc T".ՀGN hZ/R~H(rH:&D ZdiX ;V<Ԫ7~C5 =Dh\$fDh"O_M5=?֮],i9|T'/X@D ^r, ߩU{.Sd#kwޝ?,RGIL+'=qDRk,K Q|hdУu3&-X(Fumg6XP9ru$N0:k4tz s2𴦌'gJ+P1$\j[kS.j;emTzK$QZU,hG;t=cHh@Jy!G6Ex/r!} taIj;Dn45D#XI T o<1%JG uieUc1<ԩ"CUC*OnGSH]_f1MgXmv&DɋRT7`9]>Wt`,u$O|QfnK>Sl3^(G'6pTR4;}䰻t)t*d>42b+黛,9tTWKEL8@$Qv9}GAl;p3HA%-Hno*yRRO)b({@znrJ$j4Fw]&&uZHBr$>ġ'o^MZaf#Ј7 pA|{WbZD,G+T 1S5Wr`AJӮCIyl lc %/mƢ4_IYLB6KGTJRJ]HY B-ҋőhxoI1ǀ4(SmjI,zp&4Q肏Pg"/!|JN }ő<岕PFrsN 9oXDeCT8<=s]#l%*9j;EM z=RF偈Ӌ"9dw,V;M+UQwvZrM9;A aQ3_obm\c M #UiD)y5mނ#uwv)؊t%h$w}v%_%ӱG-9|gCR9^Ǚ"UJ.ŪkMЀ},0H%PwȻUN?AD "&R_*xYPyGVf~P]T'eI![pq5 $- f &)9Sjb R-wDNKέH3n,8uȮʟI6HxO Q]a^sQfbxI};_Ҵ%2 8h2=3~bRNƎ:FE*lP*j$qgBhWvyO :(.>5V-܅%gK.v* /T{tZ!=O,=8<.pv'G\A=ɬIh7-yNT%o0V'B޸9Bv󁼷 3xQ-H1d l=nެxU.Vgvr@H,N&D@~l D_#B0 Q[+S Թe{մJH?_uBiq T$Ӝ4GE6+tlH E׸kaeӷhxHWN;sjqsof )a MQ}cC8|:@푇~R `8YXq )Ԅ#Q->.XCR*RmԐ aGȮ O!x('s2"$(}v:f@9߫1|ģK,w%awZy`QwKȒD߾%&7uJtiIkH2Gu$rFRXQǁa–G5ۏt HyZUy 3շURj5F nyUrEnNHjYPH8D^!+7/i (޷ h 3^X!0{ $ f ^k2sE͐ޱԕ>yK~eP٘ƺ- 3"1I| r*E]\ %j#؇/Dӫ63jžȩ8}לT8>x&*SF9O-#"]<=6ކ$^t6R7O>1BHؑY)a<%@vNxe?GkI\-QTHrF-S ؜٤']8ݪ-';G15ФA5Ks89,g!4j=|kACCΫ|GޝHOՁ.~̵P0Hf3wH1hya;4_b,rdQ(i l\Io3_(*^hDu IuG鹸(Iktaa+Y.I at#JK^$a@/Ra 2p,$cf OQbeJε&|0f[Cx~p$mpUyqA9N H.}F" 烺}udЮ%QYԯveHfU 3hH+g$A}gbqG@vsT0,$ۈKNI.E<1J p3#1mKBhzJt%;f}:$NQl1ި(E2Iqeq6Q⣫j@䎅b2˝6=@UwDFl#Ijk;|]J7 1 $v0#j ؃@ft!R4VxYȑwCلʅ" @!8-S9.7\<I6чn@C'P ˯) I+?jF=-"uGVW$*w[5STr#.)rJp[H`0bm0`q4 6^V@Igt%O0m0tȻlz6Lvfi?=Rq=%h{jq~{e=;nGY C:”Fg3!J:>iUhѭ}lxeIw +jxr>ymT 9FX.N\w˄qtaH}ZޝL%)XLHrZ4]Y@/r+DgUHzbohhRjB?V-tL 0ACg1kMRY7v$$[fՀƑ,Iw$ƆM/ S'HYfrw1Ec‰ ?^ jH|)c|1kRVP`kS"݃z`򒎄%brU'?6ڃ\`UKS д%0AewrVw*"$+8j8-5^gvwP~C\Qwk\wMECIbDww#̳8ysJruyTIB)8 >nSɑ"Y*4P#Vf"] Yj\Ha;xdOTsdSdϾ+7U]NM4ˁtww֔\>{fiqӤ-F$Ko|mON 83ɨDֆ$FfR]N$̼u\"lW @v=Б~'|-"# $+ r|JԬZiΞd*xdU5åR"˚bo JRԎ!ӪH*&ENhx <wߒaLHt<Ⰽ㎎&I+jTv2ˑ9>QHnm5C|Y5 BN%FIQ2ZGӑ$ IKj4ު6XyujSda;2y)_c{8(/.'r=KWbtD BZJI6ӈ$ƾg /ǒѕ+LE‘K&&HݭAǯ$LDT!(v oε=*bM,=2<@ޅBw'F%%`<$LRO/)k CE(DN{ϷU8WZG4<(@w U)cHqþK2$uNŚFM,,Le*`pKg*В{ *Qu% iq/2'.A GVIRe"UD%wT$d}l0v g'ЛHW[~Hf?t/gHyi3'p4b90.\bQFRhm(rL ( AoٞVGRbiX0Fӗ%jォќ7çQ>#>f =P6ߘ@Xh L *V'GҍA[E.X9b I(#~7A=d<8 ȽgtDrA|)m} ^|fBb^T$Y݆޽̲GFFR(tdiJeCDwjH|Mʕfz"2_g?Y79u{RUC]H蜼FWNI_f"\=6SC'5քRr#;A얪}36D|i!i%mH!jC |[vH @R99bh 燐"N3IӐj\Azh;0m#ǐ!f1kwqucyW1$ ,'/FcmEnkDnlH [ƍ2wb! EI:Db6qHt0bV KM W#X PKm2A$)r5^tO}k(9ds$yBކ1Aw1lv?9RA}} {悩]vHv &l":yn<%T D{&*m a8r"/+)A犍Ld6j/DV $cڋס<|;Ouiaz_9!^B#LP RvAdڃhUm`T^^Y/t*"$\Ʋ6 ]PigIJ#CI6담 &Ŏ.5rHdݕlLynK5T$U AC+M-LmkeoIf&p)GХ:FM!jI߹L9{SMЙye%`0ă/&0AIo"hDbV)؄_'Ɩ@@˻`Nm۶!m6Z/ -bmlC[@! TD?ǂ3\Mc%-q F:?9'7X 8/'*!xnz,7AN‘0̜]H3Ň G Zi-bOy"/DG ~4G*tq=t$YpV#oɠSf<ȉB5#Y_p^/$l>:xUpb(>ګf1/F_HvpEMmmf )~!Qc/B'QXki<ǁ27r*3"џ/mbjvA4AHwkc2R+ ,Bs+e^sYȊ#6-VXrf w"v$p H'AUf' $yĻMg0VykΥ gY:"b=b;FNk!!4FG…b/5WSGAm5*IeB"Go.Ю-И;)Dh})N93Xu[KJyM^d)$տw yj,}:b5s›95.г؉KM9){Gaˤwd{d7FBn{3Wݺ͏V AoXO.2&v 5iCe+g5v-E:4LB qH^|/+Fi9'Ћ|-% -_ٖlRBꁼ'D- !]LGJ^l84QF텊D8GB=@2Q7#ٱ4kiS+%u])~8H25 YC >m@nT5ףY?i.z+w~XB&[GV^\kmTN\ě8@-U {)DeP[ʓOfmH@3熿vE!~ ]ԅxk;pz\d?ZS4!aLF2[ rfv&NMHl8`P8el/C1ejf;_^'7C,` V*bK=,D?[t+1̏e+,Xʶ\".4WS)t|PrH&Z}@ytX}t cȆj%+=R@g1LqH&yx e2PWԁ7=cJc-*W 9&5GrQ$L뭖S\8ZH$w!kK IVj :n>ONB_ReU= 䔼"_@+;[.2F i_.f& `_1,A9H HnbܼbsHܰ1 2hsD1<0ᠲU=ziyMZ,K3׎hSȁ8[Y>/h4d][rH\nOzSJIxv=GRUVgyK%xӳ$P,XNw")ݒS)`D?[:Yg ~]&+ծ@;YPΝ׸б;4 /l$#k\Э@bl20#ėtwoA@š}CnCj8:̳8ߡb8Gn:D#EoP &vJ~TPd1@$:2). Yy2X#1 F5䬖+cHuZNBHH`bHVjHI };$<0uMv@h eC[kN5-7mJoN>yQXS/pGB|&Ӏh+@BAx!Iߝ۪#ƑVR?&%7 IY커iW$MrO9+ݘT ͣqMMY!kҼ#iEnkPR$~Ɩ3 AM$\umڃ#؟H,yK$r>#r@B墷&rDrpI$u&(S)yhg/r(#D#nNȫBPRތ x1 d`t#B~wxMh=́qmcxL0[;$4Om6RV|!4i24 S\qay`ջw$4"F{#1mǀ((4'Huf5@D7<^;8σL:7,!޽f \D O<g d4n"cxwIR / duBD.|jVYDJz$'޲d%^DyF'ezp$EadCS* a RO6|"ג|̻7;0[2@O/Q4ա(cY# sЌ:HSټo$,ݲ%Ko $%A3 .ID>;RҨ;&;V~;0~B@81iZle戺)Hg$QI.]F`@3` ]9BȐ^ ?jo?}@*#JUuAj rJݐ8C(7^96:zGX{zԯWB餲]$!2J|xr:⚕|&HbY-|piIE㐁n ЀRQ;7wZNfBsT P@FZ!@"*@\{^CRu3VmL,f 8>)qIC |lng l2Pm8]'&{87&yV;9)ALxB"prZct,1Dbu Weȗʍ%4 LCfːRt p}0cҪ˨k"GSс_mФ 7H$nO楊k]j{#7p#AX8>K@bP7 &=iY 9rB (6>:?KMw5=< =,N"F<DЃ*2ȇ۹_{R)!*uDtɷIMEw%*}Ig3Lx *s+K͑k3wbP^HUwH x";H!Ca 1o $+z 1d0@5 $+:lk9= 3ӄ9["zz 3ZOTp%إ_gWsj<j8ѭӜ] G( ,$km ~cX*DTF"\Gm)8g5w# UKRQBPҙ6$EKm 17Z#؛aQ,NÐ ]3 E&>1>`CIHCqp9y@E%jD'`!ǐDy$ak|͑WIpm4NQqBEH)fςDc 8Ș$/ k̊F߂] [hzgHdW!qw 3Sg{vP"M@10/SϤ ; Xd} HmwU dWn찋A ȣW2sXxR-4%{;ŴH%蟨"VrhЯ% ]vNqRx-:Eչa pKKd CfPTM)"\[|#9E#&ъf dV!NnsrRd5-4#9>ܡov"m ; ٰHքqD6 OFQȻ?H{ANˇ Gt6UT!i!BVj6OW#=O'-ǴO7pŅ6GFy1Evؠxz}[ձ"\Ni2{ZO³/[W6Q~v^fH;&#>I=:]?qMQ@-t$ͽwyw D5L?bf Tt-RIpPIȎWHG?խsBf W\y&Θ;D~9gD;׼lj"M7r3wsفV夽s\2Fؼ$rǗ߉LG/#Y~ [#*+:9[z.H)7'gp-(e"oIbk<\Fi+rw!mDZ !]NOHht=֑Cyvb Q~  pN"YGX%0mN:IDD=:G\P +F0١''MM^w.䬟@d5"?ryW{hA*yTvD$uzhYkXC`9džd| (Kwy-;?j0\12eGѴnz )*EN& 8lq8&vhP)ǔ=  y;fK+)KI~HU8Of`#mL8|svB.DZ莹E_eAbzh2'CD(T|N "zm%bwjHO{M ^eT}w'wȔw}HZ)G &`K@͗>  \Do$?4xI7-퉺*ns1 )߉-|@l3H'V/oV( ّAo}r(/$񴜿 QߝɻH 3'&<@B!ˋ鿐,n]">xͷd{MHt1f8Эj߹!I797A{$jx oNIx7_rpo$w(T~C$ I#؞(DHXOc&rW5 W,Jʬ8QپXɻn[ V88RrmҥA;{ JY&ExxU&R|̷AnjEm1!'NF %cLX̩횴m@1 !u0sI\N$؟D2A<> 9~46ut+]Ťl:UW{ 'r #/ѸvYGJ^ټnPVVw*PI{PoHvd|y~!Y8;P.Teu ]lE%=~gd'Z?>P){Fij9<&b%UXaЖ"w '^]2Vꎄ"YYD42$BX9TQ?D,)*?{O"ƺ_26=3j $N ^i UxK~[0zs'^{,f"3>(о1^ $C1./d@(PZF"Tأ-dHipAlHIa]>SriˣnMe3ԐX) \ t @ꜯ;:W[_{a9O|bDg*Js~z+q}Q q+Mz-`$~xa ܱ\1L9!g/dg5}MO7:Lz,\z)^:Wӄ&g <"3?m{OYWlTWl@2ѱl'~.QHCd<+$f tL7BjdDґnuCs&™HTz#W~jvhӦIYE8{`}eyr_=js g{BLz#Bq)+13Syn~J w&$ Nۭ`f?RJ5wˆB}W dosF+ϣK@Tő}H cr?'O7$>*[M 2H*]rC:^J 7Mt3\ Q`:s\:`w&xmEz :"H>؈2b[>`rJիYZ=C`|;E<]ˆyQ(>;!@dߋZ` gW6HxPR}PBزf|!li1Z1dYO8!ŨMalh֨}ㄼ2YP/̣OiTW̘ĵ$9fSn6;X[ ģ\aL,GFe5}0< '<[SN$S͐˨pw$HLHI\- dS6@E e$$#iNKock6"NNa>#ɻ 9e_X!:aTl_Eg u)$d_ +ļa('q$RdDiX'3m%hr9 F 9U7[Nқ+<")EŐwbLL VJA{z͘ʼ$%N<I3(;t,^_c48'l%ͩ_HF*u(y%CɆ]a@mqʡUAs%j#_"]i_;90Ӌ?fi q$I~ylW뎸zkぐfc]kHK"wI#:@~264+چ-dw3t. .yU4<^=ARJRhـE繣͓MOY?ֈƶڥ؜ei.9d #tl iviAʑx̩&"+?;)4]ځd)n9i>6R^h% &Pk`N+R$k @r 6oml"'_5dkB+o"=]/ ch}u95'ڜf!NUs8\]E4$јXa|Q1O 9Ŗ5$HoHxDƸ1[ ![=wd.=GB1s+F)o \RWSyO 7_NH d\li Jҷͱ-X&wx(%yrމDj!4x G@|_S;O8H"H$C3'տm$5EEw{F9,#qZ|Fo99D@BލF>y?{k@ɘOO\+_]E iDu>Ⱥ-I 1owĔKyFT D=wXI'b@RM$ -8.UM#RˑM%rHFXkM:V5GS+wՕD6Q!qmTo W򛿑 M~tiNI%1qIn=s=? ?Kt_Hػo$5?7;N-74KN[ZH xuwgo$omЏT 7. pJ tH

i|"Gv\"?: o ݲB7;GޑXGY}28)TyDQ74J !hEiבNK?d`uO׏zerYtqV*|%wa YPsǦ4VKd6k3oaҲ>*9 S2ĕFtxf!'~'T! p?ꈼ{HL^kqP4zDmj}#a5 Uh^N] Ԑ5Th<( pNH- h| fmg3ݎdxj'lӁarѪ^ۑZW"K#H{%Eg\H ?)Ҏ#hO$s8W IGpjOӱ~#q.Lk(eFAk 4NY\7AL!ٜoU|"q9<$eiwHN5S^>KA[I$?$ydbo!S@"TKJor9 K"=Z Ui$"p$rN9ۍT^^X(Ku+]+HDԼ@2Vy.z(OLC|I8igN%yXfSYT]/6#̃#hA1$(w9j':@EU^ sbH i:t)(/4-I3I s2L. %wPrC LJ1Փ! #_?tI*5]G8հ:$~qsdn,kDGIͯIEd;tjӒjKXQdyR]*B\Cxx$1Ɗk.Q#9%Jzx9@-6ѩ]|h-ij.TmOblh>ai4@BG!EB^kD\,m˓^U%%B4|p <\axhmP#wuʴoUj\&] FG,] (;Ϸ'SŲP/ CRWīhIm њ C7CGbhd'r*JTk )#HO&݁ttq@MwaP,DU@"bH2ȏoY]FgɟɹniGV5_4A]<,:Der{8GdMFTw?R ٴy٧:l\j_\g$lHVSP5^]z1QBqzjE>~#Do{z"ii.N@ʟ5G‡q6G>M=:)8yb`J]oGb*&hk[7R>ȉvq %):c| -sR D'9P,E>^3"} jA.v )bZ{A>g$k>TB|[ O6UWb 5;);03:W9]ݐ7a<^jctS3TDC.q et; zrA,9eX3p8%Qf/4zze3a sjH,wTO%!<8[yÏ.-g$s5m%P=b-\ [/Â;y{k[@‘3&tN5tկO &6H8&=h?PiX H9x%rNCE%bmO<\*ϗ CU 2:)S n:rOKc5Kđb=GɅ߼/hr ZcOgлߐrh$t l!Rs-zo&ª |N*H $o͉"v# ͈U"=Ja'2Ys90|'7ί{@V&#kW0aDg4#{K7Pa8 ~k):%⸅!6ȃ3!%.>[nlYNX1ƕv)/ v&V_"rp#ʍil΅Ã-$ !L(a.Yrw\nDftڤQX20ω"\.7s<#WR}haLBk@|>({1&?8x"}f=q+GK}͐1$$7  >kzp$DT lԁq7Cl>hGJ1 e]Ӱ~SwXc*F#[!(8KJo.\ s\QzR“% C>`HM"9w=`#KT:'.vɪ$˨cӂX#YUzX7ho5Qo*.b8ÓZZ.WK@Ezp3Y ߘ/'yׅDے Ҙ&uƋ@6Jw<ƠlLRW" 1w"I6CRyؽ!d v} HF&D{^szf莻mE/wK4PC1g=+=juwHJ~ ˖2~ٸ 9S>ÿX+$@Ѭ^4]X09Y";5D{ ]Et#錫HJV4ߨ;k Ux@.AԦ=N מ s}SrH``$!D4$\0Qj i֟Y8l\1pk9)kOx?k/>8E M&JyLbj[8C~ZfHBcE<<An8bب#zbtLʑw^,1# $tg@?սrdr^#,j&9HWX+8ЊHYڜLoنx7g\ UB&u9rz34iIB%Ok^ꕦ>~EF՗z#[q_%I!LTqrs%I]G <551~14|y+Q`peJm#R|x}V󉯉P~WI"/ǿSśQu(;M~O^ [%4EiQް7U懒- MkҊS_5ٺh_H9[SmN}*әm0:"1,ˎWi Ieb")`R{H4^79=g N|A"Dǚh'@>ʎiS⮊3/dfGb I:H8z#HNr *]ߪWזOm㼫,8 ixפpBBjӶ1^m-q%n1+SюַId(ɳuʹB4zIOlλl// [ '  d6Լ̳.5)x %Ak^#j&(z),pTvN'[IvC*UhIpQ .J+ccal3}?33U J,Ig4vohX}S9%]yCnM[/$bQ7C#%9p DޘO] Srx"wtK^)+!|E/u+x4X(&|w@=50'R81*c%< r <baԕDH kSIr#s>q n]Djfnci>kP>Yˈc)Vx:_ϹKL_ CD)9Qupmż0G}Gu$T:'lf"GO]=hR:>C䳷hB aD&8Ry"~UV2ć!ף{)2y!$w%%( Ew4Gl[s (]U[b>#GXrH1Vߏ7ǵ1h)xFa4àH{ AV@NTJoE~QM GR)J` ؘDCCzہ|13D0b?%Vph?0-i=i}wts8ijߡ-! E 7kϷt$`U Vzg"eIDzNa~<*U4/$% G I^!q!`8ozGySbGБVuwmH|wOpf֑ Y荨8L?CyLϠB}4nC@$<}v.P }"cB.Q1(Z]3@P̬5^$y֋54+^$Qro_B"`"C_lN]1-=( |mD:b? lNmVJ\759{0WD(fNn!4n{DO$@ `IubsHvK3RIxKmgOg|#_%P:O\c :$}o+p@ |<[ku?[@] D.4!/KH#Mzz Q"5)B6taFګ1n -KM+!n47ёH3csAL494&V=:%3ȫt8Sb q$"]r [A-9VH.;~sf _a$r[gw4_[][Bt HFWwFvU=u68qz _F!D.h $r"3+Ġr <3r}%5p<TSN 'u2jmfg8J뉇>h73YŋA)=~!ab+aFf?i崻$m,M(^%!*G9KBҢv ,w5II8HP0yg5 yGbwN\/TD5Di:FT ;n$d I+r#+6G l 5.ľ D@. RH*d3II"\NXl3b_$BrcC>[K<:V90髾R}?Y9IkwBH ȅRWXti g7rӢP,'P^\}+"7rROHgqrs*,B~{n䬉\ ii =C{MDS43`ǀD vH!zԲDI@qSݵG^J T Hi p^,*gĖ\t0r[ Lf/]uϻo ?@HOJfyMuf(3LJ}"DRK/RXASP.0eD [( XNS' M Y6a4*IRDE%.V RК$B #4p2m%9w#a@ͼ"ISh_D{,>9yC-P#AE G.z|"_/.aqnHmt}`gpI=;ru׀P9|ImiB/^x]cBP- y\$'XCx'ґc IG0:P/~B}ZGϑY'h7%QvdOA¥+#wo5a.]Eu:48$~;4g@ Z"QӤLqqF ,P6#GrDNMzuYr)pctg%j(.@X]ͳa%vwRScG-HbgltVpLnP/ 6t$7K,͸xkyD ʷ9%uMlӣ]TX Tk aR6_G,D#$AG.; Wrk>+C_2է%0 UL8m7!N^㆜RkҌ,m<ܩuY!Y $dȔz."4rZ|<Ǽ !S!Q9cmf- ϟmlCjPiͺ$3faMj6T|F{ a)>^7s$r 1i6]#q񆾢?nC_h? Q9V-"p7Glad]OQɩFj<_''<51/".rrGȣ-.K|,@ހmݏmw|6?c!'OnWbj"}yM84H'5: ߪD$_d"|ԾרKԕɾ~a }bǃ.1vRYErqJH=v]>/ Q>5+ȡSM|E ׎3r'[$~#eзH^~v"@PdH,ƹY}^:YB6|ە@A^JBPxvȻ&9O;y;=O#+C K}X1Ns ?I a \+ee$K^`9ZMƜy x#7~==(h_od6$ШvmP9M~Z g;&Nj߹U#/w& H6 \i5m"$a|#i.S(bKt?GV.޽ xC}$]Rv4 Ov7O(t2 G )OJi: ք)7ǫM{V-q _xpzqzBXviV{$ GŋV_d-Q=*BHnɔr2 ҏmCpMRWG9n~񔿎Y#Gg?9#k`ϋ4V0|=8&'X G&yߊh`Md}[^P;cɉSנbɣrcؐ{S.z3 !Ab$pX :-۬wO"L8ޜdNJx%cd$-0i($%>Z)%&HڷDvT&^;O;\o8{p7\fs|JnÑCVl9%Q&ۦfhq;tY8Y[9Y!Qc#brcFJ/]8>HN@BX]˔0vYG6fvqٚ3PzC  [iySөл'+#eiTUSsHz ߳\=KGJ m"2 7paI.TiOB/$KumCeHX~wkD^*m[4WNa3-6@!$& 9}-Ƕ7H~WHUIz :u$5Kz +tmR Dnf6HU5)oX] ݇_GAc0$$>5@#C9|YrזQkHSl+J).z\E]jƺy)@t9r"ZrЄўAMjH9RqQ@.9^F_#ykUx~T' U'N )Iyw:֠u\IUӖr>:ˇnd/M d1<9]Gp67j+E@Rg oZZYZ;zޚȆL16;=N aӢ{IfRL{O%g}ߵ&;Z.VDY>/p{-Mqهm(%]$Rr߻/dÁѫqm_Ȼ@(&/f }Fq ~M҉h䔎nd10IQ*GNFB*F 9EEM1+<7b7j)<5F;t`?#$ LK!\EtD*%DBOi aC}9]E]H@.Zӵ /]&, _HzGPg~#TiOy)?z{M۩KsMpSdA#FJ䖁XjؐhC"̆]VI7݋TRm]Te^~/}]ݧuNIPB\ NOnRqTqqL޲R%~L^ǬLYDF l53]l?/OՐSyt'|Is[}f5P!a>9Qe8e6 h)c?Q]?ړq4[,YXO% d ^Ql ssDSD+H6PdwQqx!aRiR7v&>#$wVu7I*Y "OrsPW;¼g$hހ &zAasTCiuRf 6QC+O} |(aȻ ıWQ4\a/!5Ml*g$[&gHu3>_zr~s=@IxlqɣACG-N>&%X,FzQRy 27Y;Lnۑh'o3* n !> "rmbCud  }8+f.2yE TRxڳ%#Hk-H?F cP>!r,E..uQVt$-VEk3tvo&\l K&(vM56v1R q$]$ݧ4)Bi=$U9@ DrA@đ,B z?Ν;Y-{8URC3yVzCZ{{3k kQKYRzoyit97wtxHC)k>ОP ;0Mqt5!Ӥ rsHa /!e0^]l({i~2@KrR 6x#zn*[hniġ3~$hEё4hˇxEwzjdFibHq$V;$3֡Z0Kb{!dW*#XuM4H%|۹_hG,:7 . X8]NBwBj Q<(r0 b071Ő9Hݮda8d$<&[+bL,@Y u@%@⎩ 5 Ì7t'DM/ h-<bO"Iئ6>[/Zo$;Kz?f}dML#kt#]#M6 \Ce,(%TAv{ Ւ;(UucٮR9qc{RaHں}vHQ'J@ iDMnO"i 3 J2r~{oEpI蜬!H QqK$BꀌHZDNdm"hch#Xڷ>=d#ж<9$$k9Kd3BcݔJlKRwsr0Sf숩MMHeQ@O ô$+LJJ5ׄgR䯞H+>(ZK޽A๋Tw˻w#rRW:0%?; p98|ioHT$6ݑSlgPC͑5;t a!-rӁ8T;elb$o .V7&H:܅DQ2$pBDcQFh--w2szk8g Mx*it,A1z8 IƦx-W:qc qlyhs@{WRG2xV)c"-6:ɯ+N4k"Bء3[{&Ω%jfk75G5@",dʁ%2~Jۑ2 Ilr$4aicXZ9;dxIMƸq.,w/!w~"ǶyP܊go"w~"2w[GA!7쉼g):!@}"Mu%}L!&f~x# *Ku6`Vn-D;S>ErϏB c,]i]ȣ^Z aV>C5|^8<$r 6%$lÇP^sSHC@nc(_w#ͿHS=H׮J&'^u}#bq|*l!t OTR{g_cݐnyb"  f5FBof)(=8njc{$S٬TZ:$^M^~09fhpcY5D6zGZMOvͅz]s't= q$I[Ӗ8=W:`|={!Q%Mom5i`+2DjEXCMoSy[sH)p͕e!TǀS<-yƞGφ-,\ވ4g*_LxtlG@fɍ.>j#^U)`S:izk~ X}<~V!Ž<C^'. 2‘<8rZt='KO$hiRD7EkY~q|(=άde{ABqB뇲 G.:xxϤ'-;Z#Wbgr2@VC-]w7( NRtּ ڝ7G*,B;ȣsHXP1<,`G 9 )=Pa[Wf$DytD|Z;rxnI:M#PIݛ4$wicYO$d N9 ͫ<7qy߿jyTW-lKٚK_Hђ=鴆^`Zjz5T *j@sp .wI\%; ɁiM4#ʡ?o%7sKR_ߋ,@κQRy*g{ҳ,۲je}'&RQqf^QSХIYW/k-3wQ2E/9ʨUZnÏfőmZ\s=9j!G0Ϛ}#K:'rđ8yiJY`+^ҴlD92x#,۔}DՀ;"~l?r[~Z26{p %1SX 5#9u4Z(Z?`İƱLf\,E-j7 '3K8i-XH}jnȪ!)@fD"i}f⍅%~TkA tF[o$ʎLq|jt(%Rp,r큤U?7*VR-4$HrD}?˓Ӄ8Gt1Gچ>Ned7w]r LtFgl똃ݡd"@-}t Cvʣ$Kg YǽhxCZiӦHNRkJ48$"*(>3JUݜ" qI\ ]$ ^D#AO^?[NM9 \\Æ,$*Gt]K~>o/b@f$NVr hP?)pU8fA^ANzy߱8e)6 Pu:iD2 5C=2+mJq^{{N-h>WHUr|G0/| )cU?~ Dމ3!;%~|!vF[A\KnXwetx'GVhB:$#P§d3 35ch A䀻 Bn Ri9*-Hth1bI`M$Xjz _H 5/9\8 NK9vwT?ޠ6%~;bBE%;hmQ-{ձi+ U~9԰fݎdiGBI?vs_$B%keN!{eHt%=@RB$TŠGG}|3[(ʜ(51WwgwdK2`l<1jT_ioNIUcojTH1kOgB2> UBԽjEvE7  <$Dy͙4WC:rr5k)4$XnYIMե #B|f "i'Ĝ,e` Kӑ8)Li M+^VJ`CBnaǴhXga7,q&2$d[-B9{wG MMyܤj"aTa5zj̪_sJМhF1\JY,-qK=1J0,D΃.R{O #ɓ&8t7&gN#փZW<#' [t?D9%baVJɠ"kl qS^տn%͑kLijR$iNF$׆!<9{y U i!ŝ`%tcq.~nl4Cu(Omdr~ck-rbD^~9p.#rOUkݑpmEY9]by( R9SG K  ⮛?D[;osBjKOy;:WAQoA!\sYPmx;hbB \0[:g<-?`5{gSN$C͐(?I>ATM}:k8/x܊2($A΢JwH7 +Q)&:#K2) '"lԑE(\B&~7p vC ڸP%4^B:!w iXK~Ȼ4 sP}hiWhB}J F|ó«b/iޞ'zTڧ_!Q{wiij!=G3P$P 1:3R5M>xHE< Vo M;yw rh&h=GW7bʢ^i\ىĝ5 h>vS6m\4{rrH[ɛb$~s\[]}KZ6EysZMg+#<(HHn=ʲ@d^kQB3^.޺5T]s*DԘ h<-_МxWf@[Tc~b:Ix+U}%RU0yKM?:FOIّKHe c6̷t? Y(Sy?Ґ@uL#<@cG*aӎ7OaHm_|ۆD f('lf+nbTwҩR'E2ܐ`}axa64" T̀z>m~Pp*DT8 ,W 'Y5rȓ.ug-8;@DPJR/P1YE'weH4)wR%/.4UGVQ -wtCj)uKTZcHIGfP'>ߘ'xA@ϝ`1 )'29$ cz FDl$rp|ω | UܽʾC0}';5x`<2ୠ[]zf]%ׄ5ꮧ{giܿ1/`98",qnV@I=)LA= wռNxNt)!ᐨ!1;2/ jr'MDIKmj/ꯐTH,8(E&GV'4t2Gm~$N3ENHr]BW}I !e5Š٨ :H :WJ`RǭDrPj"y2Fxz֎J3bn$fu:4Q!ͣĢDuh ]bBy~f 3bfbH8h.^sĒ Is]2;?` Ģ|91wW;<~(gUGD{ ]N%)%tȮH?CO#qb3}~$z:'b1 Ds ɖsWXˊI{#fm8:OIJD&H'Q%Q6|CAh<7:~THǦn шyȫAC\wd߻wu8#} 3$.^r9 bM lc"~Y#]x1ʫ p"]4])~k:hV_Ќ^E%E'"gr@ @yMram֠5CӼ냳6`!4wyKH* #H2MV"H;NSLgfº#Zd#U_HJzohx`)Vϋ41*U@N{Mdy*!WHZxs1l$+ߏ'g Ƴ#ZrVҋOd~sR0Yֿw_#ʫv u72 YÈS'lVl9 OE"X“;b09zv.jeKIȐ4Q JYlF6MdL u3Q5]B5lɑHf8&TqكtP2,Ӆ{!_!*B^x R2$',F3vlZWO.QځݣDBY`.Ex.{qn>[ |'ULvNtI&,y6TK~/sX!@"7tGuc% ~& 1ICH1t ya(͉xڑ^@=털D3ڋ4zR7eޝ8ܘ!Ս}vN)&LrcGΚS'Fj"$rx 26 yp14!5"(nE@Dla*Ol6ՁXzzMimt,FyqG *PT@P#yK[ZBr! XK$Lz:*ϓ?󘙶+D(H*&ݺ NEh]AȢ9B<*'W,_H,1:Io$yr1}MDHD>З6yP>-M ^@w jv^p,,ys|w"+! BHT=갇\Hz2Iho䝨 &Z,"|y} 3s>Ry2"9wC"x#4l&eMt[C9^:m#o88VQ[qt/EJ[G+Do:7r% +ꁴ¸<At k NL@11N]$DZEH5͟j^JC\[&TD[ M32q~=֨ lHKcpovDts#ш;mQ]"!8KlFE1/_X?2ڱa)]^% >8D1{w#BݯyoYPpu8PrNHM F%; ܝ}9Ŷh:urCa!aMG#a!3g߲:g$j!3><Y|INȊvؙ7?H$>3~6Ye& m$} ++PȻ dVyq՚#qpH%o$~Y9&&> ?\%;4fx(cM"wW޽T7̕PK4{ub9uR̮;tD(@Z~wZv)zX+m>H`DT{@5T?R=J졥GB/R9g$,YOJ ?GٴDTO(}#$޷Ik7Zޔ `xJr$ʜd9ZsK䑿c~5=FK͸ Q7a rbh6B 15Ab%^kCRf<@"b*9mx/L]BM ^<㵋 Z_ZlC };w"6cL(*6ếHS@M=~MD<:;,kTH-GBD"eZ0 is9DLi<ݯNUA,ά㽻W OȪ temo?;%]c;9TQ * fr9C]{vKlm=.-Bp|SI2Y5+}qqUBK9'l-dA={ŷwYZ{ySSD@ Vn5n /*t]:Dfs9v~Z},yHanP#4$ȥ;U}u436פjU4;76IKa(z{5ñj%(7:(4P_f <H)MWCT gy4Aʩ1t('̀j{˻s~&rl#>ǏεC<^"B:."rd+nCYnB 6}R"U1191?1ucjF#ٕ^RX!eۑl"a.^Ek>(R:f/٤&y3d'F1n[eW0<6 @b)Ʀa:#>jf%1M GWU:t^LV#/jW3hHZ J"R/;h$ܭ&Z)u!`7"&DpفoiK|0i@ԛ9wߏdEY|oDnbj_HHR'?n| >@ê5/ oG7#+ YxsrOEB7KXU`,L&NqѥTw~_a&@9D|#җB';<447GhFRJ̈́Ue9HL_5Ս]ʎEI>k XϼT[LlsF˗Τ^q]UE3!7C]d#l6tbq ƃ! $;3bXf =vH7O$' /+Ch'R.>=Ac)KR9fuDnmX["{$}[3C O3zcbjӎ\,^Cf:?W>2mRX> *q 0#qG׹`iz*=Z[Į>gW$me"A>~?syq|CS8bMx3Ζ/K?[x$JĔ`"&[;8vBcҁ/1JO!ѝ618#3rx k lܱ /~wdC_Dऎٹ~DeRJk4Fϕ_3PΏAWNrwzJFXM?d0Dʙ#Yبj# _D ؟AA^.?C:\"vysrF,l *$q_X(uN .#5-wlen)לl0F8eRy ':U~MLͣ 2EaD}.7  %C/ɠT#H9?7Iy',&Mr15.d~7Qfb*EAF>Q$#/GBSE"0EaHrz3/v_njSRk߃+ʹ$r_gK|m#);CrtF]PJu-@Gh\0KEck;v(h[r~&R |=r5: )O$+kb2kUYh@A[oƹ=hyhOC7|5'9?Lr9j3PM̡W z l [ˆiA>å{K}ОEXsB&]ZܩOCrjvzu"!z1rt Grf!Yjc!ȂhǚI6V< 1m%7lccyɗvRRej1}K,NҬ&JH{ #50ŤݼMOH;H _;U$uCB;=PEm,ɔ"#:IpWdv[ Kp x"T)r;+eVmH~~e<: ;N'~ռϟ9L&}~?d<ᢼX IP=h\設-ȱs\byjOCGz&~N3ɂD~1^fw}~,c毨=]If"_%EHf$r!כI%s@oUE!# blfg#uѧ:upp$46] _ֳɌ.d J>P*!o5pU"!dD̚#>9]9Χђ+3-#iHڐ^GG fn$T=yEf19H$rIU a,)1TJ DikD4XٺlQ;*g9֤YF^24rʲTEzIL$O]z|myR]ccO*aAأB6C.u_G"to31(v+4f4`Ȯ IݐΆ8o8l')Df$HN DmΠ(3Uʀ %jw[(Fh>%Pds){t D *vsQn3dGP. )XarDGd=T 4*`;H.3+n{c龜SV32|4 戋\r&Ȣ"z !n+j (iѼtjȉ{`UW0Ɍ]8%oVƻ0C:mR>cڬWoBDk^r)ĦHĞmeDvIrEr-΢ʟ37bo9Rd$p!>0+4% oD[?$OH2 ĤIq#cC|YUN=1|rG5y 䝅H|vT 9#8iIrj$7eoG )*ꃘݦ/3;P{BIg* dv%SFQ|G^BwVw[3x"tդmN5$+ݼ9ZK1Zr/*_\,gW!ՠ [\>DYLbNKbQZq춇O#U7SM.FY`fhqJmM\$NLPRVjT=T;ujӱPa07!*@#&>&#QNcSu8B4_Ly29} Rsғ#j\%f<ӁȻцܲH7ΰ5q򁠧1@Le,tɻtgu/] 1[Ǫ9n|E_?;"gJkv%p&`?xZ ]6ѻM:]vTnuɐw6'?  ّO.'O y7y)| (R$Q.U&V^rY.3H!A椶 "#va#k$4$_̸HxעP٘/<țbdRsOQ|UdNj+9Q4,iQ9x C%/57ޝƝ~kŐ_Mn񱦘urLN +@ٌU6Sq}؄W^l]$։D<<¿&rL怂TԚ>t&}iղ|j1$^SXQDe,s N6Uα;ڛP{kn̩j"bTR($ԧ *-V+'ehD6Zr> :siϺb9cSҊw.E4wQzw,w]T:,ՐlNA3 d,w,zN 'y'MY !|Rkf.U5a/tߙ).Gd[JIc6$if5ؚ5}r!Ƶߋ :Ql?wp9?GF0w"V6[X&]H켃'a%s=>]nt#۳h&Yg1HoGWȧ*`}\Ӟ U@BE&0y*er׳bVM[= 7=SfGN6 (ܥ[468{˯9LI#ϯ)6}R7)j/RNoRMn@BG|f"uS֧_jBg},6$ V Dh3"%~Lx\TV_$jKo7I$$9:`RDŽ$c$K$1yN' $b"w! tuC +vwB0Al} uhSHsCiCw'qP > auo'5LNIH 6=.\PX#YtxQAmQIf"K{IEQ<y#RIt=T'ymD|qU;9ݥSI\)+FMR먛g͇W`#zβHBJoYم,BhNK "Ӂ,RI ly<)d"˻k9:4N;fw|A+ k"D ap !mP.g";Sf+NzF*9rC\ZP?ƛJ(دdQ(Or3%]v͎WVw{ !YR x}smK`p$gHI~/o [S'6C֦V l;*}8aEH_8x_s:Q=0y߅l>GLב ISIЗ!)mS`N݈4, M18?3̗6㳉;n* 4LHzMkNp1ԍA"Ϥ8M{KUh-r9D.P`xSW ˩|}4_P`h0.#e[XӾ5$,jT]=9K=Ƿ9 MowiwxF~8e_wH2 nroQ>IDC=V坍O/6͋aPw%]Ds'`\Qwn=5]/d(ߕG|.:$RbH#I 8*R u0O+sK4=Ui:#SQMq P:O"x] !vASMJ J:2?l#75%u\dIyM:&[R!Rm.GG Y A"*FTy 4;Bv~|WU-HT?H,2yxUBwk5 Ȭһqأ{tՁf20\y K/P>1QySdH"wE_6 ZM],` !!熤]h Mb42BBmFA/;Շ c_SW yjy-`јZ3}O,؁_\! Z*#ѨՑk2MHN⨅B!1䬶C ŃE(yd!MLj&&5qiKvhc8sa ,'D  oSQNb~κȳ7'B[ Λ“S ,jPXi> H;:=NRHrAL8Ĉ/rI p"@2*iLZ8Q,hKEwIj̲^;ɔ?R;2H1mQ~ĖHL C5ÏA+"Ug!ޱ) P7GuC`{᪗! }6q_ DۦƳ})#h!Msw@cmG%H'+Ej.jZִ"5$r[)r>ϳ)DyL!%q YgČgTHĺ\>Iӻ:]Mjx.~~XD[ީcA(bQ-܇!rWyISQbH?^$
?-ҹZa $Z􉌱:UT !\9_ σγ}Ӯ9 ˀ%%wfGv|gsZ"ǐLȚ)^Pj-^TZSTI&"4pʍG_rj9J|dgҙE]@e{΂{r`\!=BjHNf=HTatYn%@Hc|9t2n#\dG}i=Yn,MuX ldI$ ~?xҭkJuCBBn*= ݑ[bO!G-NI !^nd߀6፡4v `CQ-2FC"~&:MP|HEo Nٍtє+ҿV*[pύDZ8݆ds[B3:A.w| Ξ~FrakxZ/Ծ@)hFq=!,(] 77Hk&렽_9]ZK ؒS<ܼPkr$FLj N3ܢ9ͺ9ӟhYDszhlг*!C@R'ҘP[ip)cMAHDagU>Nʍ݃sn"rm@R]N!ct/YTd{KG5hE1b䶷nɃh=#bhH1#!Aԅ97F%`-붘 UǫHf'mmz/k! fu#ed$ 2|:Uo`O1|͑29Jr{$|T9J׀%,a 9aMuf\myoWG:]NuLW)@ܐLA;3B ",#꾽!kJCS^ _J`Hw},qDuG9Czxc q"e!)bu=3||۶ߛTEwU/qHEEt7OKiVM P"ٳWS'Ͽ!V{J)4m'bGd.cW;N)LV^ %;Q@ւdѳ 2I0U5Ld[Ub SIa-w)הdn) u$ʗt !ɱ6_ m\}C;eWCL?CN" =,*lɏGiC:+Ю~!b* FUh>ӵv6K[qqX_qeAs2I7 }'gaj7n;o< YGMbIy(|(Ef X@5%t]d!"#.Y "I>i0$%V){XmBo䔻S\c2ک\YTYzPYʲ9c1HdWދeetX)r/vѩ|:c= GbQKi )~~MrpEc#MWxPjHVÀ4E΍m!'Kc4yqհ[1Mjq'% g0d'%.wɟ_7y`_, 4= )t ]0c{!6A‘*Ph R')#(6s̪0jrIIH]OGH|7m kp!ɒO.#ooユVvM> Ft5I&~`W 7=f`%v|F;|MT7X|w79L4[}xy3Uh02Ef گ#Qt1ճfR jaH )i %N(*+v*w8ho<[)`s7(tiv8 !h@gVCWLy!IQU:QNr')%C]f5A,b {+*xIمIԅ~mLR4%J d#iREDvkAcIaJFvTi"~wvnCܨnۅ&AďD"粧n+˴t@Jp}a[/s+bhԸ" G }o;ryÍ "v_꿬3 8Q!E.j$!Mr1m0Qw`Z'6T蒿rY~E52.8α^']M=$sC@S8L+K+LgĠt$\.ZqGKa_$v9% 5Crxu>5f&_W}ԝR6p%˫MEc4;`KkF&+UZߑ# $Ρy:cZ{`4:YI(Uxk dR>G|#]nK} TjxvB>W!QKy6/$&GNLȺv AK%'瓕oԃeE~?2]I ?TzF؟\AލW.0ގQUAko&C<#Q"^I4$hhe%ٕa7WHe #y{#bSa[F}!( 9) #qџߛ#aMr i$'L:}$ j65!;Ht6-ʭBCRBR^@~"oI9ݐooͷJ: 1.oEؐOH(H7YёXyqR#֮Ja#zDV9rC3.K]EiE2%;|FX& ̊sRd6$1<,ٻ܂Lfg*x{q6rz\:˱ICH^ *)0I)wWʔ+_d/UTϧ+R!5ҩ:Hɵ@~R$AjysjB˚/r|9?.S B/V C(SkH6B/2Z*l JwTFQȢ~yM h-Un ݗ;SnF٧Gϣғ6z ]WE< rp$M x 2{pO$ .;H/[*'OsnJwNW L}#P%4Դs-r8 !Wg*jwi{GTHzi8Ϗ~X_q,}b& ud>>& ʕ;!ittLf?tRW.֧oR:D/cy"I)By@rt Ig82i&+xZcx ʷX^g $576,$sd/ E\c7Z#H*_/,v&1osBҚOx?|Ըe3W'* p,[HS։ۻp2!#+ wt4ّweOY;:yմ'"J%Z>l_orف$@ugsd-w8QoywJHZ*ymƝN!q|v-.A'%G2a6蚟w[QNH,$FKɑwҪtc|~wlkݤIL9bLFcnRtLD޸ߺ!ݰhHubn p璸1[GřH +&fDH(i\kЁ&5eCC(͂O RwD㋘[ nPvͻCurTX^Y - tT1~q-ⱨ>*VED=w4EDXYifHB+ynQ= &j;ed%Y}RGc DŽHAe309lhthHiӢ;㝘R:v{WHεc$3+}[_ UqjkW/-~(eH2ϐj#'9\HP&f>h~&^ļՐ (eBcӫ~-(tυˏN`$B2dF /b0׬<](!-)R\G:wdH vJ/Ho%1,r A^>n6GBkH-22޻gz";@*}o`*=ڈيO{S%CH tWҼ9<7;PE#*ͪrL&\%ϯ!w4WUtA-B*h~;<'lIuN Ēi iTՀW'fcR"qCrcwc%Uq<ԾFɉ죴l#TUU[j(!'ZR&UBD6bxqpG,%q'@$!-}G"V ‚vRQOr$Q@!_%{154s |@h+]yd3v3!!<5$X5ҳojH!C7%f)ln|sY7aMf+lx$jR-sJdcKDompI$U!UlN!B[?-BZXҺPSZN 1uxy#'f[J`ӈ]Ox4qY)*=ÑxhZ~!1egL‹flSv(iF abƓX.*EpDSzC投`eKq}B*e0?c8il#kA~7hy"wwt0r#hxt2| ?LRIR~ҏJ%iO{ezPԨ(ñ7;햣cE@aS41-1PiٹpT6J1$fZY==رq#Z~MG"7&HO9MR%^q!'5R}MSDEa"sHt/N }چ\o%lrħKvU>H op!9on#Q%ɼt9]#DA%q*~9wX4W̢udՇXrE nH5LQ8ϹQ'п %ݯK"݀pzȁE88@B@dpHt8>'R _vso+_qͬ]ٷ4icɉ,E@6i/']D6K#wi$V!9@oSMwf011lƛHaE!wTG"@UGㆼ̩iʇcK1ªwN"VrIH5zf% ݑ\*RϮIG}yqΧ!MGR?siq$Y,Gpf6礲zä vY+;}i䛝,,$AT1"NS)jR6'8dYY Q%4$:IMxt|Y|T>] d{J qWĢsWrR)3T TgdYh?`#̒U1بOW8&6+b.(}\axO+ 6UI>|K#JpCAC~Mr%HEӄ0{飼:{$ zGMcR,ȑ`Hl\ԂsV̓B֌y/P`7`cm$Rz~$r7jҀUxH{kgO^(gE9}ˑI#qщ/oTW V_ǿ`Ȟ '>ȵHeԭrٳ9w"g YG|mL`N`aV=E.}ET34y~se?.yIA$RbezRʰ#MHR2:6K[¬# E0'aM&||D[H1ibxfprmzbm'q^}ؑ/'Zd_HބtbHt(¯~(ڠ)4ȭ98q|&O6[B|) NXڪڏoq ٦_Pv$Y<%T;WAl"`r(S);Rɼw)i/Gʂ'7hPR2{Rґ4>jPyuZ|kPٖC XF߉umi'OY mLn1'ՕGLCcm7!gXcD!>y9"Pӝ^G-3& .(h}Z+Kr5 {;GMcC m$ZPt>nlr nta%{?%3qjNj $"wD._'HVrOVܜyrk*qXT!q)R&i-[|^̐VkV\cv+ C -["vmI|ZAHP!nUhy"~. $GZɪI`C;lrr49tP^v5 ֝7DnHhs z>6zNx|,2w$<}>f KT ĉl24"L lBAFT`{UFu1!iv.) W|rwE%Ocx!Qc K@W| 07j94{{.򉖳pfmމ#@yWGBQ_]>;OG3f{jS pJ6N~$/wDN!J]$hQP p$!_nQ{frJA#m0:0e\$O"ȸ%x=?H)ӯvR{I$SEeHxxvǿ@UeztOzsW@n _;%YZ)NG.t(Ŝ/Hp+Pyt*+Y(qpBIpOֳcK9ە#OVNl0m9a޾ՓI`K Jڈ%5yZg3. 2+;Q++F4b@ iuR4'8 $2I _ڶ m JŲ!Wr[mf&gw KOB3YmT q&:y4FHd@IQRCvZ[*9H6C$gGҐz''EεcCֵz#;ؘ bgaYBsm`@/^:7t"h4l|%c-"}cX\gFW!U$׼;};$Tx=ŏ9g"EYXz(Է܄БPək'CUV5٣ȵ:@B,b&ttW0Y˟$=Ҩ=QøHh14v8ӧI#p+id1:gdAz$&Y68B n,1AMU@ HdhN]"_}e1ŀ6Ƥ<[Ɋ,;`c=j5ߝt\2-! GnmG 7i/tŽS#KUr܏5},hl yj[`-99`PP4q9w>'<&: sFZZ7Nc]qLAM= m,v3JU3Pp ϧ7RBBOrZS@v¢EDc<7D $iMhvhhɩAp %G|nk#XA!&G+By?(1j~6 *Z-qF@[x$;7Vf;ڐs|=d+_H\dxrpˑ ƶwggg\ݻהx;FC'Hf'?Ƈ*P956$t5$#:EJʑ!ӝ4LJGV(hsDZT.4;59T;鮤`G"B? \rӞ?[0,/GF61g'+l |aX``:Z>u>:h.GoT ގA|5O _^su2ޅ` r_0X+OlLHEq*kZVNSyHxyKVHD$ Kd#~&SZ{ $%}}DT2$q$5V:=Z"e\_9D ?ݟ7+}Ȧ=`$ YDrP$gT$N^fo|S.ٌsC%J[_ ͽXa)xJk;bG[ tSWd} OWy-ΫwaH'ǯuqjT!ZM - my*GV;\ gHwIo$B G HZ0G5`{HUGY>s7wa{Z>T5j e|SDރ3֚%}w*H:A>ẖ73%Ơc:HCZ>M\wJϸȔ.SF7Bb Ð,9 ~DdzusI:ҜeAQ ޢ Q]ZSg5Rl'rmYH=K|DB5!XN&mNt$GmQi@n~m; rs",yk%o!5^Tu,uN%@'Rd+Q"uᏅ|ȃS y'?b ;[#Ǖ!.w!fxKw5_h~聤$|Dҍ׎,Qwہx]qm3ijZI;I I8raWH*ŧ6#I^ /ȎmlՎbt0fx"&e3B5 \3sMnK{!+(ǫl6RM<HFJҹSU2$D!r>!=$i$;D6=>f}HzJ|frulϼ;m+::Bpfsʯrss:>iOL7~‡96"ȕeQJshO @ `2%k(kqɍo|%a$zREeAN$QSVF(ER_I;-Ǫ=Hy@EW"e>8u==L#UҎl*$PBwt?D_$rƗF~f"!9e{({k&qgT!*Hxơ"Iʝ8+r[DQQi:M{^$pϴ$F!>GuBrRP| CV(O+ '+鉶n- } tF&? 6敁#w.wQ5k2-Îy2|D3Nm:M1(U"~H C2Z Dta(" *y;HQ<=m ϣQ$oYTӹ;:C[`IWG2E)|C7=x˻ IquHԝפkՐ6/䷃m']F>{ ' KD˘z%"jٱe)%Azգ%r \f/di~I%sjбO`򝲿6H WF5n `_i#7a*FDcmHK8 Z*JꉄO!.Vle2q=uadԮb*<}CDiasWGB 7@A\ɹ #zO` I)s8s(d%mf 4B k"%vIWArXwx 1>9afN9hI|_4wQPkܵ ~4"hzD16G iW_$ c˘v?Cl[996܇`Tcp\mөIPL{8;0?H"McHtHCa3%mMg|Zý&>bdzA%?I&ܠP׹k4<@G]\Y2W>sIjH:AytkCк4ҏvA=:EH9U!}cVYȁrcޭBia.drd+O"]@V*t % 2'< nH]̜S@Q)!±)OTRӅQk6@UHM"%r+Ցh'6{/<5v3̻t6IJb]P1fS|'Ue ##h_`!N WM5'B pƫ9ħ.!s)FӤ$9O q G>ハ#B!i>on5YEF]fҽ<&r E59!SFUsX$rتMk)|xE8;r{E5\; MIɡ_QS<~}w8P ȥ[dErIrpNd+2i-2%y$ǣ.7|k'scZ9 ؁$y.hO{=dw%hxޫUO(KA"y]wW InA.Ϝɘla=Pz5$gTO_Te92<Yąr+fWݬvhȕ鳛]r"ImY\> AFdD86;'| /&90<5"bu2d5P2Y uӓ9ڏ2sPg'B!o\(s(#ltJ^(>~&@V;[@,\[S\ )Qo%]kΫ Y;G;,lxj*P0d ۔Jj\Z} ;YIAb-C![7d-`zmv")_ֵ5]d'[fIj|ǡT˯SH>BRޠ`5&=_!V/D_'?ȩL(CȻQQpǢ4ETcFI 3=$i4p bCMؐSֱ+`$[g2t@Jä!rɎZ_ѤO );S4J'fHv_I5i$ ;Qo2$!2L6$$;'CCW-OHj 6=Pc U;r4]LLT`9"O@a/MO4ՖB`R R!ʇJ:5h%V_(.\7db68OFH{9H=>ϓ*BjBj߹F £)~MEE9}d6@%tyZaRU9Tcd>bR RzR?i/qrJư@6l8v[#eH*;t!lLo0 yc$gݏ_SZKJU+㡺#D*]!]YͤM nSyT88n٪eH]yHg1 T.!iH}.ѐ{u>3hI L5AsBHޝE"E5!qh+]zab9=CJ1ݱaUԐmKa@؉ ]k8c*'3'Ҫq`ګ (XLw|ǥ1e5  Gа@ohz]Xay~G'LfסJ83lاAa%FVr&A^pHy*מSrտph؎ ֲDt#"@6] VNd'l}2l8p˪d 17,8r)]H`r஠EE~HCA~_z_7nbYyhHjOVZ;QT<'>(nKɐ~&HGĽl>YCni>l:[HtѣENKSEq$p5;ҧw Ti&B!ٮ9#jp IDDnup;>c#G=A<䶻3AG0MVG[zA֯.GabQXoIܸi@mrJJ~Ћ:W :c OIc˰J]/+n-!')ьN5mES.)Ri`3L2bȪ? QJHQh\kX9 #C,,2YE5I0T@Qh]*Z:[#/rx@L58zwT\/pS-ep|w";fG|C_3G"_׼ɡ!WI Hχ*۶"vRlղb||*v.:6IUG.Iy5_@bgSZz)6㚒J

,w2Ó/`Ռk34}t+  9;)yҨ.B$aOTg'AߐL iax"(Oec{E#\ eq%TsѺ+l  R:~HYq0Ag!ٲT>N|`?1rPpZH64'J [CXEsT*_A-X Ő][i/(Ÿs8MV=RNa n[$Sey# =LCs0~#ًMPc_3LWO" /e2H5䖹%Y 'vӱaL#I۫'TݵH=N)VNK IՎ!Z (p/#Zo<+!"~aGZF#xQƺOL p%m޾td ^|DYڑӞέaБ*tq*j܂H u SƄoQ~]=5UbC fIU] +vlH>@3ZЉOǓ8HޔnC#!;#:J{H;7FoqGB.哛#ht';$-Mw$RdܖNxvBC$8NRa Xwđ*"T8 .5,$ɚ*_"(D)R94_cGgbL ϋs*/y*F}~wudaM(H2̗n&ж0J,ZG8dl`! EcD.&dHl1Md%$UruʀFT7 ƤXfoߛhv8g ǃ/tSvO6;h9)O H':Ut&XN\=ޓ,DGPp6 K fxKl^J٠XI\&^ViICv(7vt4璟2N_mD E{9fo~sc,QE 0vJ5$mGN<ʻՁ>OSGZ%y״-WpaX:cu'ar.mI".YD@@lI#޹; Eh70ڑ)ycҜH&s#EP>Krvqޭ_KRS0+PHӘ>9?=~!ώ-:l7KM- 9?2{M҇S r!:LfBoQHΨdEv ȴs+b9"VQ6cE*3LX$z u=ck>")fxVCz~(;YuХa7ܑ|󁻑H $y!0ݷ_qpF $P|9AR4JD ߝ/ '+(Rŗ9KMl}M צ?ҹ8i #-d,IQ #bA\`8!*YE\ WS4c!1FRnjݰv(FyV łRF% s(fݸT{v\d>4\W>]{E"BjUݟBEkB)*u)/i5I5p!M\Z),]FMjOš$@7*4 E|hMgLg |]ozӔ+WD1/LeJ81A毖Fo1y`!iX"O ] g#:Yy_9lPFls!=ޗCoʫNr4Q]gH!C%$)oL{'M|ѸÃcDÇ+dS6(X".h!k{vT կ,,b::@.izC,'Cʷ,s F9|qzbY%*sHm6%H$iHz\ # &z [ft hG䟽tG6"Ө\B;dת!2I5_> ~wN2(ҘiHJd Bo4d'7~hN/$e&$!%Uph1$~<"e$VRykl# GI\s!KLk*.AĐ \q7wrhj7<5rV"'H-|Gl͐qqk#7M)]ֆ6Iš/&T S>N L<>#\il~ 3i聬bVGҷĻ䐚ZCbh<qH6 NRBٴ=`X)~QcYst[s>tYL,$SB"O;^m*$US j6Đ!ٔ1hOU)E=GC+CmntqԚ#m)DGC펄ˇq|6C X(KEXS' acj~C!3@r-o>{X.Z^OTmR.k24VZt,@*;Rt;rRD+D =-ϯ7̉$YGҍ_H>qI@${9Kvé#8d,HF[[DFH䴘dv`1*YvD!mŤY)uKV9ܩ%}c7蔶E L,$@!Ë i&'Aؼ:)H uMRwp#M'=RrH㈜lAAǡ8.$MqΗN+%H(1/Bt ^=:ڎ_&B6_!Tl^e|zR1@8 YhDb 1z/&}&FրRT>?`zI+//<Ӳr\;; H$>g7GNzH YЈZG~ͣY6k>OojU~״X;u L3r܏1#ϥNHhmp!I+m"w5USQ>o0$;u}-,#޿)׺j^:`I'*5;=^J \?BӬHNYHZ# wkWa.n?TDz@1T5 L4̿9lKE:RCS ݉$$6ia<9JogV7ua `F ?U,:WԲ$Og&Ҭ?%b 23c(-H JӐ|S Oli+zr-B/opwDAf}D M#mw 7}#傶qDl)*C%ڤ+"$"+-]"of07-u2M_; L], ݁A.S'Dv)Pz$ n [ ;bJAaVC1P;6AǞHN}A2{tvMOb@!U QT5D 09ջHTs< &\HG U艜bH6p1$7FXg#/u $CdނճU,Wrkcq]CVK#BÎG(Qw($sZ!T=}0YyoeKAaHZ vPCmn'BnZrmC-]'.. ÉAL.L-4nRp!bO Z~a ٙHb ir: q>J>ҡ/{]h T.%I`7;sS[ Od׍GhBNRjG^ZQoSmÑ[1ޖȻLf|&0Rz>4dw#hJQp $yʧziL#.Bo)Ij~~IΗd4ϛPlA"I)|^PjAIBu xZ2>ߜ<5I!jRT"N|*w@AN !|R $%(A@Mim$h܇σOH3 )5,82\!4Q'pIgA6yiԔV,&hã8"et$DN5a0#3\S4%>|fg~2;WU8l& r;/0Ă&-u~#b@BթD;Y.SyI9 l]p%C@O_TTD?'ݺ` ,8zPcC{MHQ&u)rKq'!dU%V_{TyY5MqS@;jB~X䗶cINW%-hk[^|?ZD8{ߩ P^Y yl6OXj)r%)!BZ&,c-ÀKS,`ц߉5H vk<ϒ%H;qCF0֮iG?aJ$laI"G`9M]Qb܉@ 5w$Z( JQMʈ $}G7 bsKX.2as0YF-Eσ9Yub  D> rLbpC'rhm$ݹB98SjY84(}9*o|C-1TEࡄ?yHhX"‡n8H`y-[nߢ !6B@SRoHA,{xoH)qw1).<Ȫ@a$x5 1z Ptzl.$nCNiS. lV%XiUEr!#L" Sd,kP1iG&^{R롲|CAGalpJH,G.D`=Hu"+C.); rԏ*pw3Y4Qf><(!;bYX;ݛ)F/ؼ$T5g(bRǖe]w[f}ŁU!v$_⍫5)$)k%~c t 9; _ \ fz N"GAvL3]Q!!O$u9KHYK/HAu~*o|tsL00Hð@#fRݡTTCsMq%M03)eH -$z8IA+M+6YDZ#b!ot9rGzCOUR7Ɍ hU Wfs$|6BDMIˑU|C)ؑk@vp4JHbr#%F !TKE;ItNkV~…ӧк31KCT&vXVN{=HmBJzz5+Rx;DWlSb 3 4}4)1$7Vq=@ NXϼKIIR6\uNO&!RtIȻ؃?^64{xP>J#{`Yҥ6] P䰫ݯhg'` #5猾Y@9<+U{l(A`KPȗPޙT&ў#o>eGbm d4NX;ϥJŎnH{kY\GY%7=֦aHDRH0xBҽ{4qX$x&"ѱPf֕W!R9+ǽI^n 8wJD9U&z%٧)D_Hz9P"KNR_r+Rfhry,9r5Ocْa+)~Z@;M7 9 % hc3*?T7!1޴s8*ɠd R+B7ȟ l0q:1|5]z{7 !<{}ST"`rKk{><yu-~}CҌ&/ɖ忓#̪9UDl%+zpeNɈoG*mF+UZC4BΔ;ĺ5G^]yxSJ$fגcdˇ9G"X@ıS5ܑ]@`P^vRorZӼ O$avϧ2Bɟgvb= JCLq[Е+Hϫ gP\}izpGwUuf]hǵƌ aHK i @ELtS4ިՀ7oƘAV&Nִr%ѐHP`HqAAՔ] u2*]rڤO+ DhE5]{_ ~ Nj L ;oE@0T7$ :kE$tndp锿ųD8g₃c $dSZj|>GٮLYM4HK|!L Ȥz 9>)!9pBEOX~m0%m!V-xS 9[q k=zHMND81݋Q~P`g;,$B64Mq@Lϝ4{Ri~BCAQ$!!Q"Ü7'S<% yGysyEO v.Z΢eRr ݺ_VRS[=9[E+T8J"1g yaiGNZG$7Y@?4(vJ> P*YjR^Px;cR^ӿf(-#4!4 /'.RK&x,te sOCȢ=]]a"%j)U%2A⯒|,>N)U r&ݏ}kU.G1:yi堄F IlHdL9 [D^7RVD4x"DX~#?VS5$9 9u$t.EfyrYHGu V"r};#!! $hk}|8xizӘWTI҅8*rR1}@4\+2̆p%.UnюiL=-s99ww8H|@hFWi~rJ!FIiG_"D$CR.XH(xz< /{+3z9n@ b視[s.y=ɐn-nA 0:yݻSǬl%]|] Om&ً10!2R;Z< #ѳ ų.9dBw_.hҗ>p TGB' GbY^>e!**W9ԏdY"J,lUHV|HSH6J` H[jj@ͼ!VrNd% >\da1ѤrH"MRVFT#VŧQ,;ٲф-ηԫHJ* " 544*!jIk!XĖ _[?՝Uf wELK؁IMɡ&Hr; I^ºi0|;B>݅:zS!iʸer"#6pyPk4߆ 7%[D ;N @Z1psD -H:~{AGG_qFH>Cw\n"mTw_ʿGٟ<.5-|jÑ7_Rw>rǠЄҡyudEQS")PsnZ$;4>P%Xv)Sz ^C~. ! D} zzTp292-0 Q"Eq\gyDO$y2 M&"h rr\eㆃH0 kym"(];|[J!S!A|NLb ɂNd_VI6cl寭N=g= ӫk"4,΢v}`TIqXBa?K"GbSNqZG^޵Y™y*'MOꏾt6N4HYG @g:\PzV:͙$\%Yx\G48IT)k՘4Ϭ}yʖL;bC_Ԭ_"T[&H>f6Dn R/9+Wr*?䳳")? u k-K1a*$CM B.&%=gAHd^+aC4|v܇^uP*11IA? |/jP:Uv"5ߛr ɷ%eS8$6|'ؓw-J$ qһ4hʕj'b>R6$dN^Y֏ݟgP,ͧ·}E@9ŒUdKEs_2¢1ݛV twRyM@!Gݮ=<CWo@j+!R.RĔ#7'iʙ> *:f{GL ~HNBҴ5=&Җ|rO8,Gmk8c-$%g1dCv$ʅDr"75.&"IQ^دD>.jVKW#M]!!u;_$ty.2]y~x` q' Tz Iw4)ӠB%ў|ɍJt6Pm'V>O,]d?aT\>zˉDPDn[z̷, +~ M$Cƞm:ZJ{J߲DvuEܽ8\,ſ/r#"I}H*DnvcA" Kvm,wd&eUp*J.ζ,j [v$$˜G)QRHϙ[baǪ# !tU]@5Z\8|`l_p&Rv5Ĕ)YdyTK1hCgdͻӎȡ~GV8vܤJrqv,eQr2b@B]@Ү+hLRm)4ڲW}o_ 1EoYA,rBt~6;=*c](}R EMz";Tpͯ1tFey ==hd'֍0HwY R ,m!h44X{8m(K'@66} p`VbL!4-zRb B: ;ӮIf)TX<HC?u"h\ؓ_)O=~MSv#o&Vv\  d 4KMB Lw >0LrbB~!D(M6Dxw|d>Z%HT9ʏ_/ =k>|d9 cn`ׁ^lHÄ|tChПgCE6뢴 5: Iy[Ն ; *}ʌ]NH,7FC8r{} $fـftSS3̋3]%s\n^[]dM7=)DꎭyUN?ǐQ "%&=cCD$"|X.-1f{F@;]gF;ٮd/#IĝXo F(\@dڡ6Эh?BWQކP{9[hNJ:ɒlCڭw5wHn] l!(tmGnE>Wǻ}r1uJ6ӧ?;`^.22 ?1*LlD jV "}ȔT9;F%@B=!$ZɄ#I"5RF[o HYmw#EJ}oHDьcɷT݉d/|H^E ߅@`f <eNe({'a2teLBMڙ Kv:KOi/DNM$`>gcHٿ,_AsFr>L iIr`.3?Sv ſ| sU,ML3i!L| zMPkP![<|c?ѦCDTv$+t[AgUԋ5o-XE\ceLTrXw\|!QBJVZk2I2;zw$0C3c^ 'Hv +˼2{JdgXZdH2.~d 4 ɱ4LՂ$8s-?t-Z.N<4%Ww aJǐ".S<CXxqڍJ=R.6N3)Ğg(/>(zm\ h 1D@ۏL[nL@a1HhmnK(PV/,*e~ȩ'j;8˅l  6txIyc-fHX ,̖הf>&KsI(+w '҉p,c>hˑĴȡ=lz@u5l$rb7>dpצb9TG6}7׭Lhդa\[1{&H`6i"H صVN.u]{!$u0 `HZ_FS;f'* }Sf)6#BYM0T+l~dW Ze63NT?%# ؓ9]޻@U~ M74mq(~M4l3[mT8RU]Dy h4E) $n5)m I.y~3ލ8WX&if'W PU\J ~HsA14$⩛HjU;D$C!+aާD! -lVhw(?_V4h1!Y )ק ]|5B )_GVnQ~b7)X8rʬDu  )w'PR'QaI3݄\@>ѠZyg~H?s "wNe]mUdYERxKw!Iwdq(rqN0䬷D$ 79izu>5גGҳ+6ւxHBًe:i zX|6V!B%U@IžW_ &- ?DYi} tޤ0 uVJ:? #,*GBi R^0l=B[$W<^:x1\%M"9tCY<(LDz!|Pq%C6 tUxJ'X=*QL^Њh$Jg=Q~]%pQ{DfTqP38cA#䀦rr?@U=QUsI(}<5ᇞiH _iDB𦐈򄿮 bc~"1H 9f&jќ,T4ޯ<^,(BJtyH%r'_JMpLgHR o#3XwĐii?'e䣉5d-'\ˆφၼW޳!lLBMqI?@!U3Er!K!pf*Yه#ѷ@|x_ChJZ}FIG:H#!RMԓx"e٫ kҠ-|;_uwid|e:*ryL y¼*CcXGF#~&/ r G}6_:ฺ2}򣓦iMsbߝ ;GC#.9Q:}EΜAJ}ziH$!DŽɁ9P{lO*%1t,)Nd *Y|~Ȗ-77PD<+ yl.ywy5Xtl9,*(X(c+DL-n7VH%dߐ/"&`"Ҷɂ/Fs2&]C,3m5Y ~D'LhH>,RDUe >}t0w@dK>IWAB;hpݝ߭aƓCޖaM<t![ m=XF5Jjz#!uQ29WR8 E1-t'/.{/ZSW1f>}RiB[:UFu OC)(8&Ob$KٓHӮau|C6Z-8՛\9;4i=VGbПXqs9o/Hl*O eБTk lGʦ5Bnòc"ntwBC@Hï4{ l$8OzWzF"C$F?D&^+THjk&V_K/GFJrhV71 ~Ks@^-ϰB5G_'$Qbr6ٗ$3"Z3_5gp$8JS<.Kj5 3[3Oـb5NoaMɁs&^6AzCR;''ύH'us\3^" @f Ue~֐H կo hH+n6BK%vC{x^Gj8c NSλ@LMEu$ZR%pbcZ@!Imt8ϵig&o/,0WtЗQWM%)1xw͡d^6? Y8ƏPk=\UP\~a !;%)$I>Xd}GB(%SM> Dl碨3.(rS42! wR!9glj#R3JAs61Jh(;@)SRDQ? A&v(`$u-cPVZ2c_(Dx:XQ B]eD%UnVOi%Db <{ZDrT9S5 NcI<RgJȥ)rpvd="x=x :rJȹ tDI )t*V߉ƃhݹ!(цBcN>I7R铔mr4߁c#P$P5Zg#\b]g;wfa*V>so +)Lc-(p!0D&.rt#;Ƴ҂+u+e>萏i\rYlK/yڊ-_-)*V yK^0!Wu c2,kųcAaޭ'M_ݑhܓ[pᴆvl M=ȾQˋ#bx`$.t/DWqF\ݏvfPbc2#}%.>hqs.s$$R=zHߛd+Emd˦WPLCG`uMbG%jmIBpz]ѥ&W\C8@mߜiy3 Ĉ &:~Dѽu zC?Cޑ䛒T%M$+^l}'Q\TM]DO ~sbF{H)W7nVl>f|'2rvsf1$ 1Cm|ޓ/ohW|֜hʷtPA\"BxHe%͊7U2>cCXG,B6бą:al\ʑ~fuwsdf@7", QcX"CGJ)xeP  mwc3T%Bcy(nyHǏ><;c^Cu4k2N \.7ڀb,`͏8tH\yDO :rhr_2dCy7WCf}#qڱՏg $ڍH0y)|B,L$,!e0-B@~!-o8[,vB?cFԫuI5җ`H:hz|Lu "8UMk^a%VOQ>2,l&/sC)2 Iv|Ke%B3R"gnX*iϯyh,T r%[*n]DbBa;ǁΛ!!ض;G+υk@2$as⒊@--].R!dd Wp h) -$Qh!u⚴{mL]2~+!!O13(쀝6 ñJux B<'5-(JGЎ{:e*]LHC] gX`B{ձ{\:tE"f0 0DXp\=w8C &MSȆ/ jr$ۇ#I^th䕐xrжy_i)9Mi$Cګl lXb@Nnds!CL"Dk]%UTP݉橆<RRU>}#qdTX$j8\zzJv€Ti!dO23iRoGoC ov9~WYȭx;RバәeÎ:9^Cc@0F.R`hdìl5LnS Iw&U VRb/Bxv I %RX 3MeWSHHz++eǑj#e! h)W4] Q8*YAr k2k5=| yϊ/\7)!wyfzI^҅`D. iҸh%HKȑ\r#i*nEB9 ׽dŭlcǪY;},L#yDays_GڭȋRd87@R%±IVZ**C*.ǴކuQȣ -GRҞL5;2rΞW<dWK1U➿Jbn݁`* gL_:' No]>4&߸7ŸHĄ/8cbKLq1 nUMpeˡ#A,¶K-1|Ll?5.ͬQt jyJ> 9zUf.7<+[?S$9j9a3 ) zĩ-L1ڵR!4T) 7"9ntT_ ;3\Ǭ &9tyx,5}J`sgi΁wŹ_kB?D=:i0W$bbM$'PiѦ_)$:"g7McCE/祅/<J]K{nLd7zwncɞ!l1>6/y\I=FD+qV|GnDhC6ĜR69{$ȣCbeǏW\ d* H}9DBh;\͑IU}]}'sIv}䬤}4N9-VBܓǒ2#0ߣ* ނç!heubjl M4˛Øׄs7uK^ui7 ISwDbٰ^LT^D}D\,ć!Ht1Y#ڎԉ,Jnɉ`U\{aHPZ"gOGW +&VJO]:B0;RJH$Q!9;+\AkBݝDQ]@D,k&DmUy#{z+2R 5ɻ8#HLUH))w$z:7갰 Tk} K)7er|%%prK qrԹsCk1b$"Iꎽ!5D|+]IJҩ=޷Rp4lq: 'I2gBӎT" !W+O_ffKp j_Q,3˶zz~BM$t0NC#Qb75hAb0b-5U]p/)@TǴnictG@2$hԸHqYE'85IpH"~F>g!Gh~4RӉIX|͆{^oIRT:* ,͚Dox[5R͜"j £%d8ɤS'%zg֣ݑ%9㘷&ݑBca\Y=LHxsS!Hr "<݋qj nl* 9;ReIm3W G?$ &g5H3Jc3]P $?$o 2@{,y"PpQ=H$.wCo}+&{;ZKZCzCGK;S'!\뎟hŗOnY2b="HiQ = H\bM1!d{> 5V"T=5*RӤ^ٌκvyHyRG8SB".8YH,W%_%؇RsZ$ӎDLK+ &pJ2F2$|LH)M-E|Nt@6iHt"F_pp[5_k' 98EhўϣD֥9T 'T?kYpAH$]~z%``j~E|;r+ 9IE 4uX4qw&B E&e(!7D6# tA%.Is7"," m'hH9_CIN3)P@TVb#$ST4֢Z3LBKpG.o7X6Y?d6iCqv(dž4i5.‰n-4(V?"/SLQaȃX$t?HL5 N?H0ʋ=$u/9I$pwb^Lj JSQO9ҩ`!]x CNiKC`jk-.㊸ [1nK/ptY$lJGK:-&^A&D?.!DN*oZm B#U>ΩwqX`ET}0CB"H*B)}#ky>kU$Èg\2.r r7w>E@Tj>Tʃ%ye<-ZHx{Ot $=[&D XP0༩ 46R=H Mu$  rʞJ*F)z=KU(ftrZG;Q"j N6ĝMRS0YCaD)ȍ9UąCKgzJ ^T=T{ƞkjQ*ATth޵$EYA De>P@BM Gul;ڈԏ9zقLd< Q%o<{xo0IPO{&h@ZNpتmyEAV1|-QD⇃e"=g{_QjJ\"hRL]\xk˄02^ݴ켤fMqڪ@YӯnKb"l2,uy;AP;id,JjGBtle`5FD &An:)&*7;' W5RIRwZ)y @I@8#r)-ّW.)p݈NMKi&ohv %kު49QN┤Hje_HM.lR(ccsP>U9"L3%!G o$HY#^TS6M4 qPlh/g/,yHɝ! /43DvSP­{2%~DP&F%dPQ̒HlӎϼYD!or/yCs3S- 5ű'F )Qx\MsV}~pwedzP,wЄ,i_ESkO Ȝ7gG}ŕ8O!8rN[ؒI$+H6OR„1&`QJ ;CȔaDSaф =6=ebHR@wVV T^=_* m HVsrS@c\y\ץd~HRzeQ\h-A|C #|tt͈7)fqK!b逳I̗d=yD]-+kI{9$بS/Fh5I(pښIWIUϬH^~eBY=秘*>"yk$4im~}򭃜ִȩ.6ҧ10V%f)}(-,ñS+#ۑ˄{. JpK{HY(EwFi~rpȍ,eϪ*jb ~irq$! Dc~ mfkdΏ_~Ի.nGR`CH;Y<9%%#Jxec,zuj]r`HpCN5bxYavxoV"KBn '5IC5=݉dȞKp,P~/Iձ G*ȺlseބېŌ00 $j IMh!8,Nr4i_&dK'¿~& mUz(,hcN(GÑ7jz :*#!TbfQQM/e^ߓ#Z<}C6NE<|bv)[w^涔7yVU1jUMfx?Q8>KVSXկH_h4ol, #9UK 'UtBV8aDFqwJ>"i*?96/hJ?3@DߐOrij*Y#~<;AD51bHVOKk q`<@dH;ƒjD<|x?N] 0`YkZHSI <"ޅ\CD1Y{t!'!)mѓu>R"MCޚ EZo_?|,6WSג|\E[ 6OOd x511F0e:j(\b042a"9 יF'w 9Z|*QB 3yTѪPՐ:[\S_p (d0kECF] 㓋=DK'YI}dC]uk`|d ]BC6\O Q;r}SjZ8CO"p$o{fq JG$$[IrU6ٻn%Q\\Mkd}@)VA1bw4=-΁-ȹR߸'rn!/;&dY<3hd壋T]2y*(=9[C%8PK`qԭWXL'\>wdP9jH1KP?zhh;*phH{=lA$Ō\~i(EQwJd]Qf'[=sY@Tj#6 Oc0RUZ;08󟆋-F I1VHs@~ 9 ڙœ#@:Wyj_Lu$J#_.PyhЩDkn(2MR[}'$A=e{/rh}NfS4nk>0 )Il$򁨮LgkZ:$nm$f"> z)&B(C&h/ QƜ;{#73XIM.DNZa:{(Qܱv9}:w@).K"u,ʑphu$,R&g&ȆEnxBxwhuxHmLBi@20#o? |)Yd6S,@8_ ']"Cd 9Im!(Y(<'irvhWAkP)qLPc.q:.htH$9EPߐPhCW S7_F\XARONo_)hlߓlڗ5&BJgz䉪~+%CG0Fd\WnH[9 ! ,y*K @Z\o *иGi }\aߴ'$-:| I5P^s@qoɼc+|㔌I!H2tjՓ<ޅDj`9y*MU3[1|IQDa,*||*\Аj.vW jQUNAcB "R60$:?30L `|0ˋe?+7s.tEM@r 7$t&)T"8(Qg>F!> C3nHs])ωv!ɾiP#zd0OJ6-GsnUvqdZs4QЧ~q2R*j#8D *>{"B}Ϩ=<9*}'^EDpVBGʀMKdhk6wmv bjK/x =Ax,?h)7#Gҗt|n+Ɇ-6R{ J}ЏEБw&\s<䨲%'@BW+[o8IIռ۟+|^STtZw( J"EyFVM7R!H!\.i0]"Ɂ./H4]hsʀ4X nV$ &<+*0*v^:Ph?_pyDTf];ף>i5; GGdI]rh")jHl#?I~DNX:тx6:`Bӎ6"_)Al $/$ã-a% $u^xegJ *QERW<,hGFQ Ԇ2;_kR]t>7v0A@t&i{Ǣ)MCF{8Fe"vij"8Ay4@ԅ@[I>#-2$FZ/R@'1?(pls֊F+8t: Ii=АJy`VŻCJ4|pbdC՗,$}?,eWpsL %ezL$,A" cɕN]go 19튟K?J<åD"`z$9)QYјF= D}ZDqyGYˁp$lJT@yzYJq'0v"QIvo$1Q[/%"5x1Ñ(Ɵ="E_8oCE~w E?DtP&-rզ{ ZN2 xvN Qw{MImbl| J_hI{$Xw^L lܑD!30;Ǒ4h}$sqc] D Oɒe]O 2[ }z ܕPr9R >頻bvuRܒc'B~|Eh䷄bzP}#B~~ӆj?`H Wx>;t$Fy.dkR} 8DY%m$;Eڄ9H)NEFZ.{MJ>CBږRFύj">L!q?k8d $1Yw$z_{H{at $RH}J֞q!/d͇#}`#)MbCɄ ވTož [z:.x+TuT! bE4RnՁӬ N9aj/xOGz9oSK&J/PEm}ߖsD&Lwk"Yq,b[2_DF_)CX8NsԕH$Xy&_#pTS%r֮dH|{F(Q70&(E,ArQ9Q{~4*݉MiGG[L-;Ϗ Y Sל:Rglb!#o닒6HwU6/ɇeH5k|33Lb×#6ԵJ" G~POK~# SsP!~#hy]a5͝yM>$!It`cY uGP^b+ZΦV0ёHnO+/r 8Y: )ܭ*Ց3&uW}-͝:tcHx-@|mZNOM6ɿ?ôG=@R ȳ۟H8ld4え/d6<)sŨ d{]y0Kd#܊<ؓeƢUd +vS#"}[O滀]R榜"t! )wRG~ض{I‘ہ/THw ?q9Ryy7~"kw'R;c"k|y>Mu>@BZ9w 6ϐ_@>S g9"CQ[<&{{~n,pz*HZB5ɆR@ócYZ_T8=:j`{k|d&_@43(E]kTdU Α8ݽB?x5c Iu\h6iLˤUt@6TW*hCEn<ܞ T_[_磮Yi}4P#'3)7N#ܩgu8c TFє,-ܔMPHnM,]9Y(HiQV%iy &ρrv:PND>F^7AzbtV$qxZ|/52pi9G l9$^u#?]c7`,3Pk@`^5w̩fҖ8_ <)d@CzR_{0gP,[dcTZ|MP G )/c}żSv_6^,.HvבfGRR]Ũ9ذ-iK?OףIbZi38 [lAkHjbE $ϴ]q?T)2#ɢ5 Lnȥk]sU_9[ȮV@OW98bm\lG#40dZ&)n- SD5; bb"Is{g+f"QxH[F^2wŁM\-q4GN\ (tdpT! LUoh~őlIkpᗑH]0{ 7'[BLHIB%L ϐڡ:/y_=1?1VΎ52C:F%3; 4)Qwu"XTH)FNy,ő[o4mn>Zc 6QDϑMA3-xe ύ%܎ wՇP;TqxE/i-)uX‘jۦIb&r(tWIFt92#'VmtL5Z]S }LsFGQLxG{Em^,1#a֘% k"nQ/:ڢ^s? ֏2i5U܃N4 Zic}O50aE?T[F4ݎt;'ͭ%S];v7bf%'qE%HCyaɐ5יִ:V-ɔ`2>r<C]*C5z  Wd /-GCn~t<:&R59Ԛ>H z@;y%*PKCr*i*y/OoPγ#tP4hDr`9 ~S%5>МHlwXxإʼnG6u_AP2^dnuPib8iLyҳ ,J@M*Hn7JaW,h4qStCBx)LTO.w9.k{޷AIHypTa ~sH$*!SZoc2<\1 -rk$LY생LtnY5G7*d<>uT:#}4XϽs$''~d[o=tWi@"kG:CYCQkytLduZE!M؛%J&V+ gL*/5JC%92ܴT.匼&i< lHZDbU$~3RiT@G*"50 % >UkEzD \H@ G':61SM]-CՐDxNPPiMz--M[H(ζ"M+HYьZpޱDGC=, 0ޛyb7ߚ?Ʋǟ?]KdWTGd(akzϒt$k$8mPԠkܜ6⁳AJ~DF}.qZ-lϾpWu%RF>}Ƿh}:w|K?-1܄eDk] 9[\d!'=QcĿPTӐӐW>yp'^G. <Q4jqUS"S>*Fƨ#$g6+ٴx9[w$J؜5y]\LG@}E e%X)B0@XawIFmǜśӞ-LJ:>ĿR2 h6ECzk"GuGCNs яXG>H(+JTf|qMAm_'9'BA8I]RA'6<,^R?0fw$8䜉K%RpM??h8"S>O%zz7ꎸoO_C&ju_>M|<. |*?ES}Z1ŋcH ~FtW2fmE5ޯ]ãVu b<ʣ)GNz:֟H*_<&bV% ki#A~,%g#*CeY32E (Oyv^~yI] I-g̣o)-VNu}33gaba$ 1.rR"VamGgA,'R~OK CkPحHצ%-mB"2#?._vp8exc9jħCX莳NB.H7T3Kk=`gߞ5cx?>CeMԿEiPS E !Vq'˯V AJS ÚN`:en_fYU2yTba@JJ"cMBz=H!: E  (>yVoJ1(yRxy,9n2Xk=բ6l!+6Jn2|/?%Y,\@+TA ofLNK#<(g-k#^2N> *O|q%Qן??$_%M1ޑ` >4THbXj=%H"/)@NEp;$SE"lː{$rj?{$RpJ*ؐDDŽt_1!{H*Lfg:8dbcPH(t@XՀTsjHlEGO*] t*F_Q[Q IK]VvD 9U$܇T)Z쨆#k &&$:%sr0F13!&hWKEO @a-HRYCٰYu$rIB,:Qaacth^$8Iɺ5yYs-DƨKʐ[8T$kY͵ʇr{_$4 DlM`4@aY[;ȡ4sRJq^蕴G% iV $G^ CqF"ikb55Oռώ"':9_ljkʧ2ei !LΌ"lXאyL\T_ BO̪N4&! /\'n,Vʑ5@?-FA{7}7 :Fԑd偐L\bKo!5Mü&F!α)Ȏ8\o)G ZjNY>{[ь D/I=[3RKl;S[UO2v$JܿmGdzK#k"m|O?qN?8wVEA!LkJdm[C95,',%i#dyY#!xk,-K5IZJ>鑇A_H10$T6@ERّJdO{B3q'|DCgz0h&XC@B!kX;T q6˲tt-EElG06lIqԑ(Nd;iy,yp.Hv K(_$}}Q# *;;g䣵<2641g*sG @) d4s. &ҨkxF)Z(D͑ӈKyH۽&q41'd V_H+YC(g~˶سw ucG"1OFHa}ǪU@=4I`ȃt#1Fq+I|#WgܑhAUm|8\?a$&ź| qV0VҩnD|RQk1iDш/F# oD*e0g">',iϒ3ual;bfvdzyHUA8޼I>#p7 Ё^E՗u*5G##[x @H{7x Q..\ЪY|Dh5!ZK^$G-TV@=;gMcӳXjI:6Rg3j"#58p>HByJ5I |͛9A^ 0QKn Fg \A2o,sVP85MngO?z $n )-1C79!g̭ಞ )#?:[tK >Cl#QAS~l:aF '7 =h׼lM)QWƒ9}"vg۳[G-H٥U͢lS%Df,ƒ# 6h⥮߬z`0W|pEE\>9YfGPRSt ݑ k'#G;~MtQ;X]H x-D>6$a=XI =uEÎP_:9υm~,1$㉳P4&\=T#!y" Mw ǓGbp6I ȖkKRڅ%۲I;nD5j X3(DЬpFuVy:7eG"Cw5XP;[OGZd LDڽT3dD-1J3&{M9m/9>[K/`izJP!Mp gʾ}1eWDfEȉ w%\mfҒ3sKňDR#X=XUsz$`w>Q"W"m+^'m~JN#brOb9 ʜDrqq: ?*6ԍ<OhxN8?6 Z/r%8mE"$HsSR b?{3l mrI䆹E/vH>7"$͆ґO IYøk؏weds"i)7G$_r' c\ih=i(a'l& R4OFZՓ LsadI;7pz) 1tp4$!yRI֥>ba/h㷘DTao_a'KIp\/8r"HtG\^d||9ٚ@@rI!4Iw ȉe69_$ ?K g>}$X*G"9ڦ Ǥ9'YKD\GBX&qlnɔ.AϟMg-~ . ȆIWo")"CP%`T"axd =9n-h@xt7ǒQTR;nI PFrʨh$u>4HQH\e00ft=R2yO2Kgۊ3UBmq QH@ǙjF%=t7#V@v@^SXTHqbRm)$[N|P\>i!?q M?{ A I*]ƨMP !qL@yP ɣE9<(2XWLh= N?n#V* a ESͩ@]۹EJ;-c,TaePz t§|cQ>y%9o8hd˩t߻ͻh&wQ!yEа|8 n%m9A6:ZɚD1S#o)Cʪ>Q Ϯna~v1 M.>Wr -3.^ێ]32%s97IĄ՟|Q>Y-CHK!4t_S = lMX]}y{"E:cpwuw/)^\:Cˎ_T rdGEDzC;j,s ɄSoA2)&;FP8_g9tTMMtxR~B_9k/9~}"&k5|{m(r㋯1FԎp1XXI)@t="lKX hkN;q`@]r,vk"p)$n-ұm# İ~pš.܁<$.͈;Bqց|trnm5> e8Ss_/~#CDݷʢqfߞ|1Hs[/_o~?FIX3Z1Fw;7^SR|-+M$-e`Oލ˙+>&G *r묐)lDj:=޳99lom$;]brl IXHqR-PY/rtU$ǔW"sP>+fY ,Vɒ?.aY y-н A.3I#YMhP47j$mbl6M>˓]fe5&Q\́~|v|~?5Rkwskl|r{!QoUh"osW U%t K blFTa/nLhD 1oZ z,pJ ERT} C+헭[e ʰ^CM=M8LނlzAr!xdEG2#D~#!;BZ:O>eHҢ 91䴍vR:f{_i ő"QF(6 8.f_*5GB#G Wb6ӕbUjE˚Xſv+GAgy/Rğh[K6i DOW[Lc})B*5^pLxpGr2tQ|UңaOU|-q{+qZ~c({#6Jr͒fe?6H,6$ʈR3Mtو@ޏef9VUUMiD=Ȇ#%sEqs%T>h,kDKDW;#"/kt`IrdoT(hb+T,AZ& uogYvЋ($8hH5t99v1jz CC!]0!6G/z G`kX2 =vcbmeݟ;Ub{:@l":'aM[ׂ6s oGyB2!QU4p@N}SrTDq>ipre&1)JuxwѳZ!,[ ;IOG!eErJqX"GgRV퇏<^[]:;[@>`HP޻w"xJ"R65Qç)r?qHZA'eG:O$iDEѠz#jS Adiyv+л n9SҊ8@@q ϛ"*B s I3)v;#+dUvd@!* d$>ch 57J']!k\sr2)$ xr X6UP7p*m &!" Ǐ\yjsu; aS#߰[#԰15e5n'?ûG΢W] %JށΝCâkoSKt*Ge+M@wZX(5]K閻9F&ek*hj(IW Y5B=ydHP:H&0#qV/,fUV Y"")V5$&Ӫ!>(`oȈ @nDBFq|V"i4ƲWG![Hˠ}>a o${v>+caG€w ,:4M(8ȲM$EQ?~Ż""C$WhT0,#ܥghC0GEZ'9Hֲ~zbO$Jq0I|B+;epہZkN{sYퟝnO`C'Q7Rl>?d-m@171}rX8ۦ'ے(~쒤q/%g1"fBHS@%k:g2Y RPiDl > tBk-G# qʹo =Y6y'IG3%9pul} &C@R:eGV 85Dn3v@\Xpל@>6{D;FځT+=q'0t <26djNxJlR#e3b^4qvYE(;Kw̹<Wt/&nQ'<ޫOD+!.EE 0Hs_GK]dV<;>1"~a!>b$Npm'G\٩6rj&:<=sI%GwIAcX (ŭȭ**kE$ q-͈S=CY-()}3@8ir' !{Ɋݚ3``AD"oIZBp!I׸JSBBą)[GTc/ Yĺ Ts(FL_Tn$G-NԊ:#e"FP]w_$^2':2Ե'jt߅b#(Zoަt"'84y`v5#Il>l+eEq *7va~n5m!i tw4h3gšC?fQlt(DoH+[Pw7RcB`P^`'P~x_@3|9tPL_"M4~ID~ՑN32C$(?DYE ̼Z w.=,;m\",w!ʹ f^Iz=t4rmON i33]$!Vy"\kP?q bl"pvk!R G׼gHrjyLEu6=e=ڪ(|. zpH8xvjsFˡ))Çv0fz?6TUpS׮%sz ZwmV aH 1mR2pC51Q 4GEؤr2<@6%(J>tOh㳼݅{aYFHLPd"S '$)_=;l.!sHH|vN)y @N5}!2$2]4f= y7;Ѭ2!Hv*rݩ!a"J#uCCj)DL8YfK/fH@`hTˁ]d3 U!|*ݭ_}ߍĦ#ɼa|E4 Y%tZen$zI\<")F E8x$eO..iHhHYu$n_bDHR͇΁!2hz)72jJ㈃:֍&$Q"p@)Sma"(y)ZOY&|SNmyp&A@U1 Iu&igH |$IH$'*F 1%{ǏS׷696%H : JJ8dey$}f"TkW\@J&,sh yvu$ik-MlfW**)d[(lJ<.s )*v$Z_'Rxh^sPb[t#T1GT*~{@d{j41Ђi9-qPK2ݦxDNe $$I0?l-$A6S7N:6"2ѹG'5җ$_?ibb^c9\ԑ*.BƞgU\"qmmr !F'3g<% \%/KP<˒ʁ_fևHA휚C%~|V1CIratע[t{_"m.8;!)9p 1cs,B32!Ǚ(=:]AbT  >7iz$rg}A"D=x#NN*7|ojQO&g[W,$7!wg"OYY"N>OdYf%uyAK.NtܺPJ" V"d9CvgQQHKB6*;Glj}[4ٶgv8< @.'-CBH --=? 83GddH*Xfo~P <ڤɅteziyIBZRoʿ **o곛dcSɁX^K"뾮*xG5rf'G\vPg.G}A?ڈHow1)ـtS6Pt_qJkӔjjI=ڮ= Rg+GI'|ڋ-]F~؄h. 1ـlQ` m qMw 5U9jaf6])U㟥$ahNJ̡'\"KWd F"!5[řUIfGZtFh_$Җ$gnNoG=DRkqI\;\ Hc@EwS]4g  zݺM;VG2!;qMV/4\hPk/S!@XcΡJ1dPe;+1k]Z2(}f9]%o"?Z"Zq^KL]v&<4f\ÍJ"9 @SЮIJ!$L B񊐏C-_t/޴D$J Yc0 2VVC"ܜi>Ȼ\(НK$%48|N:=@CpZJymP; %HD)X]HP?6A< LF6o:%]%ZyC{pEC37HmɁƄ^Bve\w,|K˵ $|%!]|Eh9zp&OC9Yh4 5J(t+SBpeّ䈠@SyڴդIА9{<-Xqқ(O?r%#XgPԩp}w:i8~H.^ 8q6r˅.\~2C'+.{hYluN[.xGi]cOU7tj@,n E߼9Ln99)RU۫Z@-tE.\ڨi CJRfŀ94SƲ=E|Pte+%ٲ)I/6ڈp~J|IĖi?cUH8@!rQ\+Vr!ݗ率_&f^U:L5:G-_pS%5djZKh^RbVH PmĝC6~ ¥yo<ڃm|J(pl {ዢjcPpcc|vJY(ґRp}ՑA@Y.Q y>ш3OKx&D"Gr[GB<-Rjɨ@N$stAArN_/~seJBY;,1l=]ʋ .J ZB(an*Bbzj2-> ǥ`~ ƛ!dקJ*aRږZ"yqwL-+EA# M4EӡuH)x&c;MGJNpQ?6<,%ff;>OQʑk*f p rC_fl\=ܲ"7'_0j9S" u4Qaش"6Cfہ֢JG٘wfW ?s5}{E'=6Ln@4mWMVjH$~,˶ @rT+=fZ+J}lR:?wk#TӼZe`y0㔟{Bn%-3XL̦AV5'v*y :h=R,D3-NC267YHҀ0򗄶4Cs0*5{n I_Ϗi\Gn-#|1O#(;& ٘>'Ɉv@.IP\r)NamHҟhkG6^fyWeUcN{qT 5Rpf;tlbHZtjV9V J9gm%d {8(,l8I?!bQ>p$%WL?&q[ΫEJ83{ox4C6N;&谬*Rܒb(C\N١wks9/A߹\C2s@ΎknZ̨?$7e5z9jq<<-S'MO-CҰGkxN 9 ϫcU>i AL:mDӟH(S @O_yL>zQœLH5Q2$;2Qƺܺp`T_/w,0(O݊#0-?qe_%5k)Bf|NGB }P2s$ibBcHTs"RHC{ @Zx&]Sߞ>JG 0[")ޣ x VSc6##JAngyXA- Vx(O CJz }6[NC KZmd&g'Jr[)tCJ_\FaE`E|8z;~B!;~]ҟ#9q7NJtFG'ҋ;4AXv"mO|65y*]ߖݲ5^J&(%Ja#PB@k Q?PX%}Ru H,(怨}?KN^=kt'r649iկywP.{He{ԫ1m8_ߦ' H~]^=Zṧ{U.'H POŀ,h,CD+#_ 9Tvãqآ/C$'|k;mEf0@_aݔ^8.Mt& Eo~}2,jxHYqo˫rYvȽ Q}GNf|,H>'M<ñ2CЅ=8[fJ&K%rHD.uDĄ!Ma4$IkH:! 뤐$=$duru@bŠ~kTx%DRa 7.Zc4a#l$wK8HK}H}pGw@>_/%R")P_G_` ]yQW D| En y$I,P$\G q卖i=O`ݕ+G!9@*kעmp0"+cu@@wvN(mK; n)Q$Z6Sh;EƒG6A'4hŧBj9T(Bl@YJGr!utc"9krΦ`_4+P},C'3mCFҫ:ۑH~p5gsF RBwSBE*vLЯ!nKSMQt;* xCQ69:5QFhQpy0 ޯMbEJHv,En |v&Enِ 5cPA(Bch4Q;߻MJ:wy?Ap$OtS^Ori&v+L-R$[%ҹd{\;/Pidʑ3̮K^P )GtQ9|Y8 _R6ӕ<Z2I@e8;?-ݵw8WNB~ U:dԑLNϋ8X|;+ '1cvzHroP~^Ndwd3Vō/4͐^̭ ၐٍ\:0 ٥IL {X(]:N[z&iRS}}X`H?8^$U@DRUrf ayr]8euKe'Ïd9~.a Ry;yGҝԽ'{dzאU OiI ! H廤uq (QbǝHq-iFcI:+y;!hZ(Xփf=؛Fv\iM-m{#O4h"?"}4^o> aK68RRI$RSlr"cHJE(e6m? kvjs!IpqG"IV.3oјM@" ɧA7|GAс$/}칩1%,O0.IC]gf4X2Ej_K7(°THl4+!,H?YSxq(f< U+V.b5FcdiH (VHU(%,Vځl$ H罪UIq{9:#(o65AE Ag~+70L7;FKJ'Ya$SM iDy+d _VTI1Oz(rJܓvoXJt/$>Nْ XVfw\(.N:}=l@t_;]aĐNRZ[P~I2D،A*FMHz)QI3i Bi/h.@54$\4YkH8J&ذ7|xJe,eCmo̾-TŖY"@@c%!G<&BqHQ@PǑЮ4V!HȞ&M!GXE/εG秽c8raosmHZ>T Ĩ~%}hΧ̡i䂈:qGbs"tR,Gn}&~ ; $$4Ks]f&E6mь5T~y<3+q vJ(!yːpH<3"0lMSL\Sgc_^s.YiDX;U![r; I%sOe–栓f؍AuCyHg&%OLxe _¢]>*I,$N$}ҹ\z"!rtl]u ;R̂ 9үrP7hc @8GX9JQleKQz_H r H8G՟[}cH/UӘXoTorX"á d5V"rRDɚLk ̂+$ǡ°tAAvrH̪7caqi̹HzYǃsHr _rh~x{*,G/9*iXAvPHpxO %HǥN!i&YI49_p$*C+I|دӢF+[} ")WH^yh"diR{Aw)&@sZs){phՒ3T :{;lj#$ QcY~B'uƯcZm<:Hi[ADG8DrdX,݇N ,R^qԸ#K fJ8E/mt #lCfw5,'uư(mB2 Yfަ="Lš&|ʞ'Lj~-K Ґ|FGTDn=y nJ$ըn'8wdJ~ i6(Ekҡ꣮g>:Aڱd oP7JdS{J{m *?o!e qwVӹ@O_WBo HbB{A'ec|*z%bg[bSJM! <#1"6I /H7NdX3wW$LHT5 {~PL*==E]ERX%Iq9.HpqzSdDbH8Q&vhjHruJre__d*n:HdB@u;#.V $Bb!Q`Nz "oЗqR3㔅J۸m dhyl|^!ny6Zh'!5( VE8%à"Kڹ%4xk0F !G#&YlyFY(Xt:$N.abwH,܁jw)gAD'ڌnJ䱍h[C*zz:\ 1g~S>]L`3)=* 4IpZ {F~_ zl+D_zj8Ƚ]-Ayzd y8s[Mru&*i51rqo6 a( %e9չۥġɑBXibn>l<~HbbUDP Cҁ@TGn)̧#L&0$B &%Q*h,~f4 t͵"\efm$Sp}伩hfYa FGZ_HkPLWD*zޮ,C%jRXvHxð?+|aJW/1gӨy%χa L-` uWG"?*$nw7R$- +|yD.R S~; mhq,$BH訇gXo.Cn:v>9!曤%Jf \~:PI1^5LjSpZ(si%ƨHMxGAFDu F?EBYI<-noCW~kE~o% lE/Cهs0]TwΩΑ7%h@k{-NEyt>6X||ӈg7$v-.)ڝ8.Pjmv¤cP/^S,¦MXP~8"Hˑ#O'xE!o`yv;7t [1ȻmZH5QzQS91qqB~n)鶉$^1Fc ND,ݳ"V'a} TR>J1?Ԑ $F(M-,:h6iLͱoz $PMH;SI$ ENBɴ yɍwWN{w9c}g E"bo!0^:&rHBjÆs.@p $|X5Ipq$rPA9cD3qMcNh)l!7dJ!'8OPFh<9RKmpN}Lu׈SAfY%)H\F]AI㧙iZTm $1Thv}w[@aȽ>_$UXi=/ ʕפJGW|;_3$4isTg@,F!Q\:;ʫ#):5zĒ< K tCPOb!<ňEԊ%Ip{w۫$SNJOART;k9D: H{Eb|*#"(!I+ȬHIctT<_ !AM >ĿA/nrfnF//7UVC@') y dԿC1춏<"DtPV]TjɅ%ק|y/)-wN;?t%~ z(] ܪ{LQk).udۨX͇fGRFwjH3ڝhGw<2䧻?5RoMjקщE=d2­wu`IG%$4XHac8I <:!<M:ّ]5c9&(q 8$H(vNl@h9X(lq'’!$p"J6k#IT Dj[?r7bo輻m@vFF6uϧj1K=:%5I4I>h]D2C2@>Daӈ1ᑉ (柏h:;BwUv/YKw8?SkIİC&YUK,ڬd}ЃݗN(2"XR,4nz&`|W'[bR>4¼"~3x±'g`|{2G]b=DYgPH"[*RXKStr$;>x+'ǁ0V!E6 x"LHʣ@'9mzQ3g4ME1j* WCw@8XbE~ZFڢ K˩8F yeɷUՇ͑꣎ FM83ÐJLMuϜAqCd/J2|djFrwEܡu[JMp=ٻYs+ S{L]EO$ x$j w)Mq*,Gm@XyueISNj]NCD'4rîg&D)t(!E˝ U&\HdqĈ+^%MRg&t1M4BPFG<сLqc%ޖS 9fp۲a2}¦C}me *pH9 !>svЧ!$RτkAG-j&r]^)#aW8h= xi߯;+aȅzk1 .@RБIj\j@lEp G*%Ґ$ܺ0񊎲q P/GbGulUh.eEH"e0`SU{'6ֲϯO1@9He ;JN&)Fٟd?ǛIg[s&IJooGR;e{8"5 BS,Z̆w[B:ΑN{lv"Fa@(d7@vdz y H%~>qSm,|B%$^-h6VW\!O<n;Qr$c8(4cC2ƓO& MYvR19H'B.g IHT+KiUj~bY|v8xCX5đΩI|Yɒƌ4x&|Yƒ`}B%="dEJҿh71HYq`Hd 04Ֆ|)Cʚd93>xmt+^:GO 2+ 40@'Ȏ[DUJV?+[ |GRX&$ , I d4AK$ǔﭖVG b6޺l]~brNds~?ΰqb#jvtU m~DV *(K٩`4,MBKOje9(::b3naȥ*ZI$oKt}QfwI=1%ӫ@ӞdF_G#8JG@~%^١ b{ۤS)׉f9Q6Q!!JQ,=߆FS%`hiLD5_6xvƃdHR@S^ 2q!ZifDJr2%pb;i?!B8m b8wFir$j`324)_. m07a _xaEWE79Ծ"p6>9jK.' J:W#߽*_MV21[(F7Th"ڣ YB`YTuD тT%O~_!($=dRpH(<HR&rIb9Ȫv@i`eyו:*bjh/-yIc K<~1,kNhJ3{W*̲^Sڍ."FO^fGz ; w8,鯝.!]t 2}mO F@euXH~9N:;lR.".w+tf"ɲ6(~ G[IÆkC-X$Aƾo ,8' d|{E:zC s$r)obc/u*~Ց2ݜ,g%j^CR鈌D.0+;֕?$m!'!._;7:VC-}#LU |"'bK'KSڥtH#0&ʗSg(-r  %KK$PK$mF\ W~&A((eXoѮeIa7<)K@xy-+%G_r\h:2G6ĠiĿWnH*[n).4Ĉ[ǯuXUz"*1gSd,Dސ?rls6_ŋ]yBqZ\Ls!0A7^^me3fL9S*B^AN!ď/&}B$w_*$orNMa b!2g URexGa(ŕC*-n͕b7 K qtV-DDm|Ф l0sHMw1 2@/9Fdm'-2gNo9FȂ/0EQRkݎYHzl&~ ]| I28fr\S~-tiykq!9 mYvYGzKŪHm>x rZ@,W.RKF#9퓗*,C[4N͑f0ԸrI@Rפ2ԗ8yMjBB/HxĹU}6(3 [8Dv֧A!u71CШ(K6q0/DRc=-$ٲ!( !)A*Îǐ`G]9B7r3z!ԀF@}3*%KőZ LDGHqi=@ 3$MVΊE ;kmejkDuv>.m}$@QQ ?w͡,JPޭ)_&EHp$v|v)h[>I r$ַF&_CڗXCZ䓃B=2y-V2rR"Reu$OcyO褭.WH~$?GnDQ4]17kmhF|LoYo~$)EBmOBBf<E=\vG*)`*'櫜V}DeA̯3jNAjsVILŪg9)SwF:% F9'3x=hB8b2' !(vjmƞ0d;,ү:!)T N`3!x`䆁qW;.EBk9sdWTuR.>Ђ~Hc|r D+uaj(bqHh %Ǒɖ#ǡ¦.ti*D @P&'?*=-շ\Q6,wt(3@CLZn٦KsW#RG|>=0R?>HC2'a仼S_PE# <׏H4l8]3Gj*2Pܷj20.i4Q03Ζ ˽N{CM2j%}AR (h fޥP"s57>tľosGߒ'e$= 2p'DBGwI6#1_(um|{zQ<~jDr!C/[.bk4{D+0$cH*-8fԧbHT :W"9ȁ+Q"(!zoe%E!'MP˝HE xiTI@V7t^!u~2 hO IvZ $Va_MYA5qŀKvvl!]y$達Bݏ4n o|!JE`ǯ5OLdkZ `r5j m t:ǻ=92P[t7'Em.|tctM\Mr# bV(W!aTLmGtMu GYҨ{5B(W'0'Ʌ m[ÁTىK}XpOjN,[OFxEVĿi 5 /5j+;o՗7svL8J<șg# #O:"7ܔ#U ~CRm!@i/V*rz15@jqqtH#{M8o_/]=\nm-x(bI.O䖆2D&]b% BMHUcxY,T/*as$!kбZZ /$:P'_D]GÑ#M~'ZZfT _S0"}HK$qpC[*ßWO" IlH"6%糠b-^D{MT5nFrqGFk6`qVTN%CcԴRҌhHRHRq.#ȃFj9rpi5HR 8˵X@Ggg\JlꙜt5}8x^$L?=f"nPFi @5QO^U6){_%_ȭuv%9I\  ZQx9tXU^ \^}eOlSiD2 \@"9Abp >Je$I[!N=#eL o 9k.f ώD+;$ӹcXze;%i4}j"pym)i+j,&\NpKvAʛFp#FHN!rvi>Is{+@޾oǒ 9Wi6Fp6z[a@x|&_\$Tm>G.uۜF/}N ±vi+b ^1YB7+b{A2k0wEHOyo#uZUsX3|$OkZ%9 = $*D.@ۮyme_LMQ{хCa;4POj,{G l4ʡ=4i2XHiXmE]c,<_VM(齡a_9޹m;Gwaϙ&o?@a՛_q8EP2r?ĭIУ^-E"P0֜8&2 ^[W["9Zd)RhH.b^R#j*CfcC(>Kfll{DqE~\z@w HJM7GqQ1$᎛dq'X53$ȳծI%\'!8~}IlYR |N%Yꛭq\dSr<b]#jaĿ+gTeU1G тg2wcdv0gU(v'UWr '*XLH{,KŁ HXGA18!A[foLFE>ϕT 8N/w lcvpCHD«(j_F}f* QC))fJFQa* SrX:t7Hܼmyb>rGRvh&))=7$ 9`c8{8nE$a^t(̏BZG -_:$-PXCn"_OxD4R!v+#VBJla mpGfdEH&⁐ EN6VyAG &:9by\H$H**=7~/O 6]ȔjxH?J_߮ ى9&1S 0fk0-LKVT!D6{#D}y, L;f}%(S쵨hIv2n~M(`=nN"H%H9<$T3Iޑk{!v4mrȾ]a&b+"0rbL^]$fx]~gtTGiU&/Uv%{7{_ P]6qk|Hd=^=G4%~e &#=GR4$!S륭mdfGY`vyY8$A4V'BPIЋ㴿X2F3(wGr#**33]bVӊEH;=;pur$\#8LxE7;4G^ a|78 p~*D,n~u0I|⏈HOAl3r~'.96d%:O5\X' J^I!9WW'B'f(r9r?1zًVv>E+Jiȹ.%x8pm, k3zÿDw_?] p z6a6'(:Am"ee~}'^rIS\_&E5E۶BGR1,l3dK; 3Bj[vnPbtV#3$;La$ >_ gh6}PPH3(1 tB!Iqݯ Mz^tgΆ Mb"겄n+Tm-_s#3|lML~ ېP %'G&䲍HPl0+` H(5Ve3CōQ{kRH֢ŋs! *\71 $*'r$9(uΊ1UwвrF&#-N\T+{+up1/kt' [D@Dَ#g=&*EM5xIޒ;%hy9)~kIvyQG"nS fe h;tHȭ|_^&?Jc|f.ikBgT,!n%$C35'fKfk1H"RGbM1eC"T4dqkW^--6,&m3* PxǑv[$O4z[D'Gt"c<+L ~)4`HMʻdH^PQ'YqV+VeP26eF L ֽ&}!~8f@) 5"-5ͅt`VJ#{!82DF uqn-sPa)Jib`vXr/9 A,S>Dn\٘1q=fE6 = y#}^%/6b{;,t15+}4뭲GJm}CGyHFBv!aUNDY:K 3j(i7 TW 7:g'ҜwydjPO~wVʤ~J}})uN545%&X"MnFo^+uBCtKj z! lz[-0[[]Ե8mXIE*ϟ,x~'})S!}SF}HA鰦Q=BٽY8`? y>B[ 7DnWD5EI@>rcg Qs}eh7FS#e5,K#(^D-]XL}m¹bkzҰ-{{Drz QTmJtD _`Mwtw6߷w yuC 6GI}+/ZR.mbJUG*ɍf"qr{̤9^, +ys~DǑv>4DbgK$HлQ% vO*2]@C\2Q!I=bF-yJIʣCfviqpܾaڮ:ק&:s[V[݅VGt8F<3PR4>&Α PYY6NĨz8$S'SR ؕq 9cNOd/ρ?'f$Qo!]TڻiPw끤qy=.HFoFxv^"#.=z4eOaz*H3XEGS}9#EVrp/Rk-Ν lKP:}ȩRE(e&8I"0nD? ]᠓GT8v8R!]^#P>Y|C/$ɃrN. z}hND]tYO>Ri=6ѧGi-?Q|A,M"F`׆mH 8С"7q:2"|xI:_G. ٣ ;D*{}R/݇IC-s+͋)t3t 7SS8q DTU+H܎?E}lnqE,2Bd-nHU21g#Im#YcV̍?᠆~Vc>пzl,  7rY|]!n :X32SdoL[XrsF'*4 8L A!=8u*5iŁKaH 숧n!ݚ1JHJB̀Ք;Gh GSDŽR/֞}S%~?35ń{zk#6ćA:L> nug G@8Qa*DNIqRwrd5fO/2FKD Q3'd?QW GIeV e՝Hh+*vbUiMAHt&"*3 Et)@vsJUHWhm*A5rH@0JoŊi^=r8~EiEfuDo^/*!)lJfȊ8'|p, X, iC$=W7V>Dhū=_%%$Cf$҅1dd:ZLGAGVl~'=:m|>i.FHM37tUSmJί9h|᡺hSPoَk21x c1!HQNUCQu_ǭ|EN.B~x535$VANV$9l3DKыjnt!1-)d;s*ghrߧD=sv-!oi9D)KA(g )ɯ5|3pj$C EHϩFUT@Rh4Tq>مiV`|>h_߷Kcl" s}x<`~viK2:IżCNBh$OwTA! Ng[:6Ӑ ?[:: =I[: d1؇IOn}F$N8%=_(ZԌ%xRJ` hk!;@"g`uGtGN:ߴi'VÐ (Rq _+"k;=DŷKvݤm4OdEH$tV!ca8Um3T=CnCV%Qv*~&!wjzefqb:@z1*zC Z<6EZ=w%~not)MY!їTk˦Sb08>/*1yY JPZY[KB&C9@3Y`9%& xV;VF(bjH޴;}'݌OAcπ~] {M.2YrؤU aX9Snث ;4G٤QU횴FBZ-Tj)b}-bY"q[^͂~gBV/܍2-hr7,^fqL5-oP74ҞfAPso 2ȲStv$WT~'¡8[(y?ɕgZaI=p"]C~~n$,G P1ι|")V[7FG۶֑|2v^whB9Af'$d1Z95d y# bܐ3A\YP"u5SnȊX$* %h]1}0 >f;i C럎DC41ð;^: V8r.erq(ߎ\" Ϸ2LuN$S]uS7_v(2"?6k؇؋7t 5d9R0=21}6(r uYQoZWa>n h6GNH1 e7\Z0?̖%ZȜPT2`cVMTXaőo^x^FL,w#QeP| .4":j`!+d7%"6 IlVm}iajlyYcCu`~wJ4.XD8(0$&l~N보MW;N%:+m\67ӤGZѩE4)N$TzHB܀J0n/׼$5GH469Abknc9Po2eo ِ2@*FP9 dwb!մ~ѡ&*'uĿUD G؊@!'{GJFq!;a- rZ)7Ce3q/aaxHk{h$`RPCuC 7#c|~LAj!*|s?l>@Eatow!ŧFQkُ(P]'ɑɏUo>hrxhE3_Cv}fq$Aʑ$_"S W d䠧:61bU*ԡΗ<@F<V-eҹŔ IpűOzΠc&G$dUZTJ|(w$cwD*sR_>Ps-D uE'Id1UV:I@M r}HNDє ٸ& ۜ3sS$W8OLdd1 %ܒ8*bX5b@\K6s|}?ΙޤHqB='֭@TS3ARq.f(-X S飉:z:MyȬ˗cg>FV5OҪ1a4] /^D@[1$*m5s"{HهXH2hETpij %fr RF΃RD4 Ot3H8-C$jNZR0Z WlydY:ƼeɱF4TMr ׻n%rk%Z1}}# $K(f@| *}w5㘾Nڼ?M #i,HzgAϓO4[ h>ٰ]+JֵV 'pU( T 0Mx8ŋ>"lm*_7?Pd4g.0j:H+"D9dD\POV7o~P]~x*㒃8?ZmvH488U+u np'(A9!<S?U/VJBHZ|λ܋}fNOy VVCӯɨ??E (mY(RXBkCMyy?]Ao;nȰH2B.J28zJ "N0!IhK]Y6fHn@ᣎ u3EK Zv! >;.K3b0!!6nj RdLӜ+5BHe%.E}8 !gdtrg~[, ƫtRq.nZ ~m*i6T[x U Iy"|FW7:eWJ]syZGT;kʀc].hqK2z>kթhl8"Z5h/O/NNpM$/Ew7sж!) $Ҷ%MXآ(nQ*Ћ>8s 6HҠ`dؿ.,\dX.'[>!&VG)$#TƯ$ ,uǐ$\ǘG*#PX=ꁤ$m! QLQFxgmt5K]#ÉPQ9 [9*)ӏ7>q(~>#X hRYUEU 6k65єq1HʥdCqԇi>TZn}=9nHZ]M;k9GRu׻KJgwY9-2+Jz4QMj- NP? |YsA:tTcI*4vԿ\Ҝ56v5dȹ-dAWb?42Z-xjrǷ){yظ%,8_H+zhYF׫:wqEvӍ/ Mmv>jTJ| Ik{Xi#BLe(ΝìQwL>ICkyv;ǼfDӑţ=/AWGPvޗ< ph!$8#v]BrAğ7Ҳ {E=@S8;BNllI&9|ӎMзa!Sr%TVKdb /t{I--vVBpպ41'$8Vaclu GPVrU" * ) GR^[;%x%ؕ_WQ@$*1ejZVSR FR̺;~}@'B } Z_sуĚ,9<6)TQ vEvG_ҽ,iO8LLD{Ҩ"5)4yԡA,&Ll@'Oh8$$Ep.nh'W&*S$%!|sftw_I(?`#YɜG-|r:C}b_2LT 4oYɜ)ek|@ܭ9HzX:,$*Oy7ڏԵ&өV藊N_!diK[%5>K%mH! +,fCDr$GPh*wCDGrSHdG7 ~JYR|G]~OuvodcPHDޥgKKZDW9ü&fB:i<̾bZc TKӳwBV p0M hC;pUJi'D _sMT ,t|VZqӣt0j2d/BFJ$|)ZR˻d,ɖ#aC5^%N,I|GLJ Z|qXD6o -!G W!ɄC]c#BJe(dH@[0H[+.l[? hjL@(Q`aJd7'DȰX.htcJ_ pY>dhlQ Yx^~;q? &gVWnb,0ЊԮeŹNOyJf\6AsgkVC-/ I{7#Na=$HߢbﶉD¿RãE}Ny)HF!Z>!'Y3xOBs[ni6-M߁d;ҁs&H?tNo؋zIe[`԰sCHt,䔹oGNr~!? Rnoi2^N\wpZ/eQIt;0yM3 LҐ]29=:PlsdWac_״H/&@C +oŢMOC=m;Q2FPN'!ћ6t8/ SeI=_wd["i qEtLRvj<҇qzx]Qm5CZmHw+@i29rƠ_%ˬii2u-{!V>Ix:7 c(׬r&TG?6 de!4o:T*~ۖ>!ͣI#k!q|(qһ|fF1/,!6 ^^F5 Mo{m%@:"pO/0xxC^hT5mv>PnGIu*h+v I vq8prxBp8H@Q4%M1hG3l)ppF>6XLG N@!3}ZQ)ďc4W+BoRQ.o0/b ,ؗv`7O$y6'Rޏר ?dC*  )^Mvbrq֙^ t:q*yDjQ0݁O5d:Ť87)k~Qp1M6)cy<"vpf_4 ;簢+%r+=VHa$΁̈́E`u!N10TlMz")h{jyHFl*8gϹ&O#z[L⦥W wH!/&ؓCQ{5f.ki 9])Muȹ(JdM83I.9vUdOE./$5:=b}YyoY|GMK,^msRv@+a4%e \ 9[DOD#eWI5toA\Wt$ܓ\e-WO~ -}Bj) IE]c@EȄTrn݃t?P@GwU٣ @QjGȇ$#DB+7έңB2`G.@Wx.MoP xu!ѳ++댽.㐶J@ZQ3 'GR") sqb9G*> UU~zr}eMnPbShrE<!Q.7{d!c9NHqnɂnI1+Cix CII8KBHlͦw񭣫{]9i{ݘ 9YKniIAuՉ6}@+aH:/yAmwG"47_';b7-3<rX͍ 1<Er1}XGJ4Cиh*hHh'1(m⍌E֜HՀD7.8-D?heZ& R# B- 'znW8p!DTU汐tmJRW;GIkNDxP&Q&ߔ^́wwwIBx\:zQW"_I)aQKI)"!G8ldkW Ik7ٺ:k?TjDmr:r򉶙{"GglCZF QRi y$#8K$WlR[sZ}K;ψ@v^x G +eYyCjMФ`?;" +f"uݭ#ΐ DMRkH:#ŞEɳNH*wfA_4;|Qn~CV%_^;lw4ѦͬrnQH! d q!\o=j,_Of_G?rwBX:";QxHo:r#sM rBλflEܻ#'Cuf%;4&/[F~҃jEv, ,yEx|ݕ{WCpР9y zٗI*ea)= ÍۉDU {rYBE R&0(G![ ]$Jԋ[j]ͤۤ!-t,p*V3?KѸ@u&fA21pSoXչ<_tS{JWIR43gqIN/Y%V- %SJ7J5ZpTY#gybLSoqꅬN!\%v#Dn!v$D | ~|ur:H8uLcx* !_w%9MF}r+ªtY*\CuA s&ms$[AYjRQ ,$0hf$Hj R^s0d!TCa{LTfdr<'m:YQ RD!HDpLQG#zO_/#wb,@hiFIlqJHq?1ל:jccD2D5 j,+z~<@z&LdiL䙎CXeJ2xd;ȷX);WI œcћI|E AhUMG .kh0:N! MMe&>Wo.Qpk̀iaOnM!D?f155rmHER#Nj dǿh?D2}T{I<ƛ/(`1yW4=88iЈv$ 2rL#[sJS7z"iJ\WU>jlg fp Ԉ8)VRlcCjyi4&(?:z{4r0 Օ:PtZtuHUM._XeVFmr(m&̍KpW"Q K}pRq6u/ z=Vf7KR[{!##)1Y?&Ih-vJ^sՊ "婞ӽLkV"EJݞCv:dk s6CI^$})F=WNڹ5X%QӸ3zAQyHsFNɿ pEQ7'@v[` HN:WM)Dƻ:a rA:FEw?r8!v@7@a 3o/Pdױr#W& p8hsʩ>פ +BvDzY3Imx༆䆞1$!T[I~rH/#;:o-1=B,ӁeXJ2Cxv;2yI$B߯L*J#'`U}-h)z$9ooL:^dYME\x8Sb-ӳ]}rgϟ8:MtӁG2Nx-N>3\'ݽezG0 )#.ݻoZ =ٷ+0==Gh$i! GB9@X*'CTխH  !dݿx"|?rDm#V@ wȎ_AP4_7R9~}k{n{.*TDC.ѩjP+jYPu@cof"ɪŹŒI!]27٬Ȼ:G NT*TpJ;5[49Z?锜FJ^#zE>o",a^1(0̟3wfP7ŠSsǎ|)-K7y%ssz `+ɉU}W]zHRҗr*Ce<@2صtl $) ~]g/$ Y%r\U5-A]/ ? mݐh&)8'O,r&#I: jqd'zh3@˞cB.i|̒Ljxff'zC':{d J2XIvȎ.UCʛy>əz~ȋ|alq8dB%C"]O O.|"M$ %WB&dkns0=f;: _ y Zu; C0Mϐéڦ^37jݭ[s¦iv6KڿHQ7_hѬ,؅\/6YYjX餢Ī(V+y'RG/^3Tt iu壃 |?8/D-i?PnoXk> )CZ] / ;;2#,6jQH(Ɣ:B_d"ݓMzk>Кw?PLjx J}Hڣ# rD  *cՑ+nUBNގ'ufe=&r[-qN$Pao)o"I-A:]J{>c+eN2]M7!s焘%]HLyE`F`s%P2ZDNTo4; . 22T k@@pUpj:(Wf9R叆0u@NRWHוd5k!kp1sWCBlHWfw19Lz%wM->dF PG6j_ 3 Hp1ihi!۫bRmY'_𥩫9A{&mlL;! Q&^9.D ;v$]92X^ I%SAPKbdu<})`EydB=U6&x)R@EXG4fih?߬_eW|T2ji5\Oԏ۝i &֚/]P)ԄEʦjbثį/. ZHF>DFY}VFwI!A,msl=+@V:1/m9MVd3&պ"CDp('D{/{Q5ⱇ*;53-jJZ2JY_̕fO5$P?^;/Mw '8X#I mOv)/C~Ȇa<y,+KmA<,TW@?Z3$s,}srrCh ,=.]֥G& tI$봙Hģј/%h:ѹ3@iBaPvsC=Sqڂj ;QHe!QͲSL-,Z@4%M3VUaձ?N_w)4kͦ'4cR94υdH8)1 I*=ʧȻkD <$춏RH7فq$+h&>[-+˾IM,hR㍮!'6C5vmDouR~^Xblz"Q% );Ze@?$[prDQ !TN&XGm+IҦv,PJɀ:M g,:ĆW 5r_B* lơIk^muvPLK&%*o|;FcACDLzJ}H>qg1Ifm)!]]s>-`$Nn%>PbVl $ L fצuqm?# 4ۈ٨ۆuDZ?=&(yu<(o%SUUP5uZkbF0Éo*HNK'] !i>I}Ҙ][)d(n9Z>|$H;ק??69 $CV"Guda}U2/Gw26HCfN@ǎa~@"l$,uH.[LHt(>u5@H D \P9󉶭^FpH9 QI 95χ](펤prPD_ۥ8% e>=4N#y4@e۱ySJXn PIó M=sP7ff>)BxO쓸9!w/s +QU(ܤIz;'e4rH\1Ll~}b C4갫qQ5@zxrӯyM׋#aŦ<9ɗt )bW@Ng;MYb?pJ #8yXZB#jD G崙IAcXE:PgdQx 4~<Z?71fDŽ+ A}wԱp]#ZôiZɩ weMV;H>@ YG#Ǐ2㤃oωqq?K|`͋qCP N#Sdle=-Z~H=f}Yg+6U#Dƣ5I6c&fʢU\HV^I;AaX$t>E :]bl\8}^ ݅!A-;R5&o4͎"kn8:DNs*>? 1Qy=휇TqG s|j"+oh@?`<8OzU p?gZbbh"gGC@Oo#Q_l4~ PY$.&|g`JCjsJI"wy_$DxF1-m4& =otҟ)_-#%X0F[ B2톬H?J"!wz@hnV; І**cѴ aBsEcԈZ:AI5Bܪ ZEGEL$5pC@mAhgW3ESBBb4P@b~dxa}Ax 7%gt@jW:)D9ͨ3TuMr1HFVo!3ܜ) !"nՌf='@"5%᭲nCJhRޝ`] PWpUjl |f$ ƎE5ΏKsr=c&p2Zٳ7H ?`?PXd=aH].W2RdC5S}r-\rx9m-@J`%aioVZ1n=g;tő$Oɳ>Hҧ ?%؈sq DCsV@1dS-j@[%~!uǻ`._x:B bMkmnDN⣎*!Vۼ4_yqL2fpUUS$7ܦ&^WǩU55? -YX.p6يJZY XǏۑ۔߆aLij3@ZV3͉4? }~$eM/?K":ˎ]h!Ikމ2)fE $%U\kv (S0Jˎr1nB0p?57A14+߻?;<R7&DjߒgR U2wqIz8|m] Kry/9i^݄{Ō !z9ҕU-zTsK`Rq"rkB)4 n&BR{#"!ӓfta#47&6{4nO"&HK@P/·{JXud[ꋀBHʗP6=7 MGj~Na?c?$vYda10:R=.(aM+.+)·ehv^K`UXK yJ‘jct R˶go8 1u!'r٪3I4D\?2w{ @"Я)AsJ #(N{c C|<U}ViX޴k:O᷂N؎ۤaP*\!x[ 6DD~)Pq~ʖlK'#Dg})>,:rơbhèT>f$ ɚ-|lHsr/0iDwy;H?kK\]K#Ee64Ȟ&27j8YCor(ABH0XIU|&{!Q#_ܛ,C1z5f=2N9m’ȑPeKHٸO=$F&T0+^E@ȾCP*@Hu$ 5#(:HR&|PJ'gs#kYB.G"dE;1VĢUˌ3pf"c}=vIҔH.k m]{{-N%pMp 3PD@/y1,|%LP%c-5G"ү\r&<ɛjY7 Hd#ל@^SD:rqDQu~Q5-NʜLQx_>sa/qIOd5"sH9]5cN n-YG5gƪ4U'.bM.L1Y_6]: rD TZD[b5٤E>y^T:AiOV߁(aT={lΔf-'"C:]W6p"-κ1\Nz 2uWʙifB(o\|rulXһwMvF$8( *2+H9TL|PP#H3pjf,9J,C $ Pߠ+:Rˬ)>B"G%w}3Cj)GUIXӄL;'W;슌Å%;T'GiKV΀eƽ'9\$qIG=U$Rv%>ɥ U>8) Ċ 8$ CK-=l870`wY]OR{=9j?;'#s&rÌLU w|C'?rK^,^Ae]iHqyآ$A(&@MEa X{x'iEiQiËc~ (AЂ"\@6}Xf Gh\<|="@oQ9Ŧk,54e>GʡC &qG/yhإZ&1059$1(qro`d?+?$4\`b}y?έHzI% }MkYAXz>xh8T%TqZeΘE곎HyDO䔮DS̀܆!ѰiNSHJW*'$G6!.(w r)e8d7l]Vց4+DQ˹_$ؙ=>r8 @~]zB ~o5b} *^ | Ja{F/DU ^tǙmr=ӄd#HƜ™K""Ӻᩩ0Cz[dW pim}q2$ Frgn])2- /,׉KJ<Q#KP>&!Mќjc{ C)$])Y.p{ZZLJXN\b'jUD S!uF;HҮ+]䁜Rp$8u.9(zez(|F_dBr X-~B p|@XP6a;2REnDY3wgȉ`yϜGpYt׷OH㈼Y\|(D޸؂Ā>ݙ% $i@& I( )"x{t-_\' ?ng~]-h'.C=*â{ΠIj(h޼~>w#E EsFpOzlva tGPA(>&h k (c[ܭf0JHԋCaI?3 mOPEn0u0Y3$< EoDP7(Q'weBOX?P@HF;#=p 0(Eh?M* ,D=b]~A @C2.)?nVhQ7B6KUгdFm$5¹CVC\׭5+(\̵dQj:Հ:8)9I;mxҨ|ZKD[A}iI9/z٤. 'W>ho:pG=nJJcD@iL5s7P.4ܽ{4hxa=LBN䱨YW{ޯިp$ȩ.숽+گp\_ -g]!${@vjFr P>9.I:~N{  KP!uͪw٧g=Fa%Mͱ<7Z)݇5op E=v96:+A ڼtV\']b-*ɝЀP.d1ܑ;N >H>Y"+Kjb@HDjwCF llV!=[Xu:Ԁ"jͨS1Mߌ%q5]IMR=2'aHD^U Sx"c8ĕE)e;qA&04ґ[&n}"CʁQ"謁&f\GwIzHXwJmu }nq1 ̹SEeߑDX2BIZ}4 љ~(k6 H9CXlw3"6G9U lrF)h+R,BHn<:?Bs>BfLQˇG4xW8V>&0څJ'4#]p\q6wD4e%ЈTqHM4\x ~{En'ޫ!6ȣP8͢b $R9i;>qXHb"Ijp7Vn#lkŃr>tL\I_O_-h&r^'?q b;m(ۨSQu1MVM #YrݓMkP?]bX%]p cZ8N u".pZO*=~>9Zn6&_S/$Gza;Dbz/oW8FqCQZBI0RĂxu ʐ|H9' G=L(;451\Xl}Qm|Hev䊷:yWFkjܕ|T#'=))M_|]>i,aDZiA_^ LF.Uj!9hbCIL(}f!~a AtXG2n*t]yn3ّv"j4: != 3 Z}dU+:vU P|Q:B߰GB.1)c!o m+hpDdET*Y| -HKU#;+FD<8ēC1~w@EH>=8-5+BF !A;G{Y89pބ+?D&ay;qr%o ´& pP%g]&`p9]U(7#c䓾*@n3TGvia5]/E$$T!H𔧎CáS#D7FglsyE:DUe?_DKw{@)tgIQC /B+DNQ%m.4$2i{ <DoEmаԋA:|*!*$x\؟sSTkƏCr@q@S `F"/<rp[fB#=Z欧.cvWVnPύG4cُY(3oĐ p ;=i-eiS))/AARb* RlFl>< 4_]&j%~lӐ]1o7e`|GA!Ӑx-5rgjiσ! a ^!$&LDωB0=Ad#iI'AZ̐ok jfP3QPz/9# k_ǵ+;Ҩ1 <*Djx*"/GW+vgvSCH⬚ J阌Y7BoiSUt '; v${$ǝ˘(?wqOâ%B45lZ8HIZy!Bߑpȼ4KOSS@Q79i7s_Lي~1Q꿍wm 5ۙ9w%xxCwT[9T:~Iu9)/.d׼]:=dondJRf]YIC~ȩA\v$֞DѸ U{;Rݓ8P!ߓL6!jV gYh0@ ^ Xз\PI^HZ 1KdNe̿z.+e &'Ã\ts>NqSGlY?N6 iRWiR}K7CVE]ΥEdLy^O#V5G=`2Tf䴻fSW(#}=՚ MX^5`w4/-GR6Z!"e!{mIy<%:pgx:kq ֦a)4Q\xbN.vYebȲ}ne}pǜDžlk`W1'mGb7O.5fN'$P>e[jdfȥW$Ic$Q$cvΐMrjl#ڲc"PF‘boKGX@148ԢqáQ®&!iCZ?d&-Gw>{$8+1E&xfMlX5,"GdV{OԍH9i: ]R^Ҟ&b2jmnVۚ!1tBaS#Dq_IA$}M&.(dJi7 D&[HZj'Ǹj ![$obE̓[#|:ZUUm.D[a)dJЮA> QWF_XWє SM"*lɤzlȣRW׸I)*\+ES~hfڇ+7U2=<|GllҳUFcqFvCnK1CJThL%9v8Ƿx4|5_;pADE;]Xi!AƋ .nrGn:FyȢSSI,$ƑH#t#%֠,dDݎx>_w*(XBy9"vhr)Ю+q{!7{įْ C[=bk2D "Q^-i#<[/oM\$שQ15Jd(e<*|l'BCT$t6?t5+,.59rJfd{~ YRuGύ"B!qR&9r!u@E`!i[^/55g pNFiqI8ev˓Knה+|R+N"Lg8~OPa7UBDr>? -Yr-t5_Cj}%w)ʰŐjFЅXK>jCJQKE`U$!ͼHse3vJD'P9l߅Tpn?@D_QG|;b@Esr roɀ?P =k]MQ唢o?N8, ;Eˤf܈g, Ba85wrtEg&\ rVJ^&xƽłD,Aʿm"g's]cn6q,E4덜Ü:dڮlGbM#_0NlG [D[͑"5HVZĜy~(l4 \D,s<=\- =m1Z }*s>Oa~q鉤u)ss8)Nu,.#HR@$XK&1//I5gޥꍯ!Uڒ>Ʈ*/y̚_$s'pTG"?<)t{>O*wZ7̴ #uC2+sCOcE @vr}wW$mzL܉ *bAqlZ  _䝁b8RQwfB qHdg괈$'FAsIGLQ@ٶ9PumIIHHOŐ8~ye왦y@ x)8o?dD܊}-WKiCytď-yӗ]-pKBHz1=@~08,8q `qq}g?[0l@V]j"(zv tB;FjEImH/0$[UvGd @ H-Mps*hLI؆dq8 (gxHp4RW&[,8)Kzh+~֥&R߲0%\#E׆i!49"/0sUXW^ $[4z?/ zJ=cCr{j3+ 4 /EٰL)؏`!2Jƛ ȉRo&C^>:mC6mU1KBQ*Ln dqP@{CӨf38лN q(=R$ Pa?64J"9խϳ $(= $P*vHc.[jiOn&T߉1(2Mުq ԑefBGH}xߠǮIx{*۳]J2mz!yb%S1C'})Yj?X2R ]+"ZʛF$OV O"衒U[&`aۄS6(rU y9ıCEtR;mi)A%lkH`OqlLD[f]A L(  Sn <鬖̩Rʓr_/@0Qo"y!bod29YNCT"j@"ϾOJs5勰*URR !-~n_ӹ WGeYgN76$sxрSU^^ܹ$|g< cr@OL*؞F[>IAf`Jؑ+֏nN8lZ8tn7Nܘg@G"ݒ%SXa#л>o_ArkN: yAUF!I~NV$ʛkKٺܮ; pUWl-.+52UQyvH%X4K݆ N>opǯ$hV$ID2OwU|H6×' R557n|h dxK<-œrP ıCkU$I#^ȦG)8tOm޸f3G%I՚Fj=0lV~ANXb yqVIͲ a9fcCDWekO#rzqmGN$蠉@3V/Lm~Ѿ5$i̱ztF)j}BQp<2kCƱ}픹q$@БK1ęETm]JG[CrN6UipxPPj@PA1(^3F\$C60r.Xhvߒ|v Ͽ,]Nm퓋WϋJ_$߯=L{(PTFUyu8KvY_è#k!Ø/ ow>QPQu'YQ>(zHD0EgyH!U iK;@j6Q-I~g~#7n9F~:؁$q = Iw߽My4贐=*Xy>;]8~Ȯs\|$pc6Q SRف2%TW8be@5ZR\Ǜ 4($yN(d.g)'I¤d9&PX[3 q)wɳͬ yKQTbp˝Z})sTIԛax'^2KhF8p*H+"=Ix'ԣ2"r0I?, _"Ro'c#>^$k^$} |pIh@t",}N1VeHHr`'p]H|N-H br$d̑ݜݾǯͷ[ I(PW)rCKt";q*䯫qwyl5K^P{f{Dg)%Grճ+N[ nbDGS Ty30ev#Wp{<;y%@Bx2V\ X5EDDv;cbsd0ycqxn%'/ð,J vATny `NP[U~}&/Gkzs۲ƵPM_?m,Tf,5SAyqͥ(RR H!m{ y@_ .'Ң)JY7񊊬kiҾTq@ENdߎ$t>J!7]FT>b2Ba-)O/~H+v^$%LW@K*@vFpduJG_5#*ix( MS$xpoI,#A9>!3h L~KcK ~N v˵8[ )MY@E:yoNr-O߰(|=vMG|lFOޫG?!WS,a\T#Hm~3 ߬J.#.\ ER+9 cMS5rDO$8j57>G%xL)/T]HH>kK:K})5٢ ;E =ŝPfq$kȖ@cl}4mDNʟǑ 34̼X;"f? $F5"#uUp~ M)g˸u~n)ԕy8O'2p)?~%`AsDrB'(&72CuRH:Ao5@ Iv姁\/.!LkwPmSG1 :y(Z*?ߊ @'W&N1EP '_Hȥ ݑ5efqcF S K.9}ԥO[< $0lplƞ*Bv_~H8d: Zim;`rџP"I3pS%fꐱo㛰KSZP7 OP[BΖ}=)\gU2xw D޺MO6KE* 4ȉtǠ9@1e.6ؔ [FiKXEiuFΊkI2Q1 3s ~WR9:]"7TKbS?<˻$dʑV#Pt@ }+J@C.eLЖ@6Kke3|e$_xː0fGs.>->RR(<2NBBV.oƭbe{Ȫ}҇3 Zkp$y?ѷGk: ٥ORqgXGD<&yٗ#I1y'"D}< =ͅhKiQvEkK;Ssq2k1JP|؉eNnIЀҞ.?Co*M;tyv huĴ"ϖP;gΦ D/-mYdh9 e9ϝ/ۋ3x2B#ʼnByXu|:Y}bG{IdQ w~;8;u9uBCʼԔgT΁EBj7$#rui7)"H; `͏5z/r ?np3T}Ŕ#}m "72O3*:wEhyJd:Z=e&?P|pI\hd^FFcy$t8#OfNCI4&7ϦjJ:rA!LϴuC6<6MˑL+um6rD 23yr JaQQ )d~tWe»0{T4 {[@OTBi' IqG,CЇz!'f:r+MuqNC߻Qލ9ZEvqJ9O%&K䂪@gN&:GTE,NIj~Ccl3@C=$r(6lVf9n h;nXM-'Y[ ӧRŇ iFy8Efף( !z^DNxfҿhaEo9u\$:\H/DD&|Hї*B8/I G4\kUi,ID=}<$*FMDrHmlBEwurCcIMT& C Ŵ~T훟O]5Hˍ]"1^ _+%Ql>AOH}׌W)QÕs4ЪPT]>dq&u ȾK8SXDSWv,8驞߲4&R?G+y)1B?`2Pji|CVU" 䣙ÉJ/Q*ٞjH ,:r,AS'ПxRAK#("RY5h iA {_ggag&QS<fځFrK8#!3H *?jJ7xv??ҍfK̰V1w;(y",[ntz՗+ݡ 2xW|k*ODJ2'=mMHs)fA59%i3&,nR u'f#[xcG"(Hb#R:ҍ.'|=kfYbITH+ir]fo -ǽ/MM#Cr0G{o ܏KHheĀBD?CpX4sxSBppŽ@tǠEkI+@:)[W]H@ ?Z,E:?uHtI$heDh> vH%rpxf=I R1wcB h咩2j z{(tAo)I2](h=BfFq6a|3IyS$)YhDi*4:Y β!D5љS_:PRKGXiKijG*E@!}@rHǘ[%cH$+ǝڶ9yw?@"#%Sx4މgw+RY> ĝs9~,hL[ uˈۮ#9P9qLL9y0Vppv J-!`ᨽ(~Pk&_RZqɡ9/vd7H)IWI!:ϔm')̴qɁmq^MrQSzi)?# =pVWK#_Y4άâ$xg7ˉܐh-Li0p-Sh\a0٧ɡze5H/9DŽPDW㉨|!G7SKlCҿ@-:yet|4nIJǎ֋2'f9)0`z5?0H:ڭ 'G C[pK:߮5]`J]+SڋP'-,W}H)Vh4j>[{e@`n(1^ & TMhZycцy )[H_ƭHWo* 94 RO ki!Qn.2A1r89 c49/꠭u9wrwIFGė٪du{rH&DN!ϻmnZ6|_db-E°XYl!UFHs,6;au`!HX5{x8C+iƉK%a xj{TD[ $c6?\6ϕ[wmNY jm q`\J2rllIan, \J࡚|Q Ǟ2BI H)!Y]yzH*>W>…Eg!M2E#Mr/i8v v}$Ԇ?STC7; Rlݗz3@$늩q1}Gsw }K$BJ893fc8ڹ*L§NX#0-π@I14 ddf8VU$D;}- Hq>#*_\h .WX)qwIc*^G1]4_;LIŊ m ][1cDd0lHFX,H"^TAg85yNMOnF!Q8<~:b>ARc7̰XBad`UBYD&B#,C#$v"+iRmt=y̥@4ܨ<Y&Ɇ*3Աz"{߁#xĂoWPTv_'ri|y9N3sn0IP!S }"QqfCI~{cxtbPKA.s[&FZT-=pW4h.|xeHwd1PYeu^c;U?RHme1hj yŏ{@.:1kn3DYbUW/bxޯ4%d 5v`~'n[2s캁pON/ Gd)JfDD roJ :KJ 3-Vo)Rjx/͌&?U?D'v0Si lF#:R+  f- !lRQfXC&%FP lCB}B."4jRНNoti9 mŁ3 9N5T'MU@R`$r4IQy|1H Dum.(՜EȎ]#]#a)^HU$|YPQև;9'LOx$5" w3.r Z#1Jƈ,k! QD'bLbH "vINj7Gonic jw0͸KmUbXLH"{'% Yn)9R}d $$Oq*\9D" &Bw"Ce成\ɥZ'}{Tз:Y{f`T(QV(py96'AG(+;)} ;6-|*ioGb{pZSs YIF )ґU*N!ft #>rwGUwU28jA{@1w6͢{8Ņrvj$~Hl|H=?WtlH)!|5P4+Oeg@D"S*‰ߐtwfw,HbCT \֏7M|GJU"Mdb=2%ɏ|M$Lz%[!EwCvF=t|B;2 l"',n3% ˝1DIt)H}ߙqdrDsn<>yO4 ǵdĔ2E.!8(9Xo1z6O{!9rNøՕIz(rն2\hM @5ϝ.HR@ LI'OoyDcCYDp:-Hz|#Ma{.y'i /逥(Bj=bT%zRiL*sG)A@lِ{.σ pX${9RrboPt>1–ȻBS: ?X1Hpݬ*i)lydUlZ&`g K` {j#*,I߆UBP Aս[ yv? T5Xx3Y ؒ)I Qi (7xyF`<fMkc:RY 6FizK@H@̎[ycQ2 y߻PzHΒ6@bCY' i\`c\\o"m_:PJhdB/#~쬾׉\o~PXkvI/KDd_&}.Į>%K"țDeA*j~4I H~9 <!!!K"DirHĐtq<=Fh$}N6'4"TxLwKl{]HMk!_vQ9vMJ,&8l uDO#<1-n/I"~OH* 2J蛜 lz8,{ 6vVĐKG08{[M8EBJX%Y1&«!N3yރ5w8 -ϭͲEB034/ c-iHMt`z7z96Ԁв#Au!UIkkdIiHBBh9EIoR:|͕쒙ǻ%Abk NfaߒJnH?1Ñ(V OqE&t2+AFgH`eCF @u2]CWg]Z Q II5q$a&]SH`U9̡7ͣb)Lo!i({ .C\Fw~:ާߦd{?SQmyIZNCBER>h"ՃR$Se{ aȩq$,gED~) ġSSOlBrq(MvT&j^@HP[@.Dr/@!](i!.ayG H}(T 5}t_Am9J#aaZKM|xd~!s>Rn!EI]BÑԜAcC7P`U }VF>jGpDK™FmP' bۇ,sK9j .Y^I:X }F~g34Nǫ=:]Ar% gqlQD˂7"kg{3.Q¦h7$wSIgE`ܷ́eDqH?Dρ!ɓ׻$JK^Ypb5k>+9rziv+B &!M$u]#wk$d5JC̉Fj.Jz&csf.Qaq IPz#Qu~~X(ݨm ;_!bJcmב-jdu %MdRrTJĪT,I/I !ȂRD8 $4xx]xvS)MBm[Fwi'WlhB_DLMvn 7s|&7Tt*5R{E|$ZkzӘRb*_b蚟Laa‚uh@43ޯ Lz- :gyj_ٖlHhшT ߃8:Dm4B4aq+UDqE%MnvBT( rOLwdz2LRI_/Qگ>QR1VfRG8r-,b0'!4tp|"b!PEbwh}ڶrQ ݈o5^X u%_;ݿ]q/8?(7rmr8y*-N;u5 %Nt@MX͵[K|zNKz[ԖpJb9 S㤀k42K1 ֨=l9P't%^c ‰Q䙃O~25 =J& . isON,FI*;KP./|=}f`,"Ƹ d4k ȫuLILOfZd#9`ާcJ32d1} D*wtnJh&>+#2& ܄b&1!Ae5d;܀G}|Av7'k)=Ejg̀rJ%q,읺7#$c 5~a8EvATR|HݿCl/C& Ti1BǍ{YRT$ivx NgKig9rfJRáHtSjѦȮ?Hz Uī!h'BCst!(?葦}勥Srj s#!'gڠj}/c\TĄM= 6!C'!KCGkA' 512䥥KϮv a@R ?>}CYH(TSlXܖkA.wI`t1toI>#gemb_@HI3C8y{61$(5ZRis-bDF3%bb9]`i6bDH"W5%ujqvb y"ZHi1-vgo`ʃ z}?i^4:KA|I䰈6ŧi~oHK .; 9~):W]9s<|QͼO&x[Mz;"09\grȦb:I>d+Y! |r\_nG)vg6@-~Ց#bҮآ|v${;2#=c5;atCY:XF'[פ.HArrnT(6v"TVD,H$dS H4D(,e(pq4sm1'!ъCw_7  hz__"h ); { cE}%O @QI; W\aD"=:p@) .D 1WDb;DR.ǔ +I;a}:% 919M:-=lqt QTKL@C%ACnµ7D@ Z $Qb-H5$TGn6OE2ʚ!1@u6@"Wk%(R$$ jh(G@+.zd>Y@!+}|pPsvy*TgXK+6EY Ih&]ה^~([6 |1'2&--HBӄMkMЃU>k&='h)rWE)"rľHL|7IggmG`k8Ɍ#j:TMf̗ju fdzXMoO3&v1gRxH0 oL+oCNwMG. 6hmb,݃`:?*=W<# 5M q;T%"*$[)[ڒk *.Zvs)U 8~ iO\o4!vIVL]~//ظgc>Xw9۴W_.FCB~L$p|3aLMBj8U5wg"#%%㚢C݊J{3On={J 5L@gG!WoPXE]a6FcdG%JYzaGB9ǒsE|c9Beǡ-Moّ¿e>Q{sLK sz"6Sy)a"1%Rl/#=saлV!VRa|շ~LJޯwA,@$PhAQƑ/@W]$VP˘VlߠŰf26X8 ƶJa(4șIox JPH37(X,_R w=T{8a8%}z,U |_biKAuk?cvl@q _7.$};÷6P1[AN)SOuo{)gz6ŭЍ{3 $z9} ݹ-2ِRĥK4d#vP|Ï5p[jYrYU8 eޞKRV{zG=oMZ%Η4ctU4 lL泶qI E#AVX9nI#嚡6\:LiV/PTk b;xq퇐uv|.Q#m=OST=9Z,O-(LIf U < G+fZ^G8`#)=R{NjoUa>F5vr0>ҊMQĪ6Qdѵm4K M/Ok]*|]5@L7ߏIZ=%PHhgHH$Zzg]3n#~m~?_g#Y3'J?Pvd39ѡܬ"یwM)fʻD9VRb!)wP\Aߦ ZԶ) IS7C| Z%+l<9 Hy{#m~IԸ&s %/3C%K軦{!`F[vEwd*G>D|zq@㊎F);A2;x9ujdӢ!j{=dUc,bGPEwYiϞa0Cbj@zܘ5Ro# Q[uCNTJ\dl!oi a<׽9ADnM:H1SUOGC^<+Io9x&=`N%Q~[4H5)99[%ݗf غHPn+i<`s(/VՐ<;8vG*k*TQlIe+<4lwC׮يDbY{A!{Y 2P,V3׶ħI?F>~~H9eH>NRU,> RJ- ~^T wdT1!%4oi?@f?$2=&dzΈPFSfX O)Kӕ7~ eJh>F [Ʌi0J~=˥$tL#fs'BRUUqOp{9uuJ9tO&!|Et02scTu|XHO ilJ-dlI*3p)TL ʐ1; Nu UۀTkϝŁe"Zݐ:*KDH)6Q42pP0$^XD]نT0(x Ik) ˑ(ktJ8کƧFG Bv4kBKޞg[-sDaQn0HOhD'2cnMVWW2萔u'-h2>e{grJzt2=4 5oK%n%MKRmE[Hac$=|Y=!#2!adDքJ 6y!W[LYMF]sv$ҼHI8Xh{A461~A"L~1fAMF qTCd ȑdE )%pn5(%+c;:(*Iam:|h4@N>7FBѽ'$$Lyqf#_?2D[$@N43|<<4е0Z"5A.?(Ί1yۮ%찻|P1aY`SLG`0 =Yh԰Y@(K-6dq7\ļn Efwvb5)ëƪCJD> ZB *Ic!1E{{LKe|$<ӄ-u[ďVZ!cF;P庁\oU.o1\N&R݊>òE? 5%y99IdGTqÑP/**yM%_S0(}}q\`bɰ ReO3'HλDֱ̞ vGyflGt9@@x+@(sY@Kf3QxˁE~{teAWHYWQ.\-Nl mc>n‡4DI(#,BMe Ӷ#inn:(8,daZ΀$m I%:ڧv'PK$t$MtnW*:ںW$ːSl{H7;Xq҆g?o:ā;Ȭb3sSE 4m4d@ȩ,p떨 v¤{JK)RB܎ z'>v!n &I4> ΍;.kX<u!ࣄCmiκA*< eN:b Ő\Mt8$rgUVHDMTy[A.ilyD%rϲdEQ*)QnNf_b:DȮ ,JASB.eDZ|XH7JNvx !PDWO|ՁJ}$.BɻTKE9ԑYsX]z;]rЭ4L"$f*&W @r$5\>|n6A-Y(Y׭3&h=t`H)R_o?6tzVK$;Dk=˿GkIw>ڗ RdՖ9A#N JPб& I,E6+ ;O&TՒռ]͑Ye?rbtRƯ/1_v.T-,ޟCq%ŀdAaq.,ӧsP'O1IE2&t:RdfA% HB C&i`++rP6j0jr h‘#;'HJ F98s#yF~r$U[?U+%{ӆJ_e]F@Cn$`c,>X2-_d7UP,D_ЅeXk6~Yi = Lq̓_#g6 Y.$i_ʞ~`&Et G=}I^̇FT x۫4 E*+95FzABYN$-RnIduKfR'YCB;:w1`~X>H&<Iw #1ҒEFINӟ+ABHtm I/QYIYÆ]!E|QÖu\"m#ǖou׷J j$S%G׫$?Hɩ@qDBt@٣wcBVKbPA&Hbm)όgs|pS0ϯ8)`x{%BfeJ,YP!|Է[qRMr$*6DޏLHPȷңIoSAg[!uv2T] 9<Hэ[hßN3X7$RsRx$d(,f:#@)9BsK=~Ae$'>7[!O7rolqJ(5Ȩh$-[)ߒN@Ws-~")Wǧҍ`K.#eìAga;м_2*@y~2kfHn/;⫤uU4RY~C2w=n~M2_ۮ)"?!s&{^#@tD>#>+iV8tCHh&ׇLxͪ|bQ!(B$>dqz%;[ kІ m2&zSD:RU)$.wI^H4oSdl&I{dqN $7=y),iDVA~cRNwIhۨ-x/Dߡa?E\$\ZDHi'7 qP^!{}_G"OfSH̐$6\#zC*+0>?IRs9 '{ԭP›䶞eĚ*U!q h'RD|CGO !YxXzQM%ysi˅h>b0#*F7 ȣv\HŚߦkbhO% 4'F k P*T (]@.q))kB2 d5֥BiU/H,wgS"3^g(&,d1"\C^o5ʁÁcP :+U>y0oIv Fbn:R+C$aN/_&3Ȑ8)aVW* K<_YorWr"I$.dԲW\-v#* Qvfٞ[)E!DJ'烙xِP'WP{~/rIfM ԐqC--CXxCa_n|[+1!|=xK|lԡWqgVNȰyytym 495xE.sޡ*2l넌c vz2[lf:t:O={G[8V&KCaLi}R*w̅`,J :[P*Y_`uVn' 483]r4Y~|Aʈim`UNxU{F>E*#'l<vO"Zp$kP{^YBMc>d1JdSgI_ $\c>it'O^>%p6}@ڣ+σx XQcBvfu| do I#B:ugZ%x7MbFq$RDë,|r }EP k4[[ 'ʈWI"EhJrC!L!sne!w⥳3Wko("IdB/ HL*jm뚈T/6xi !'A°ߧ1tqzL9nf[ l,_"oHlDEjzB6!o[vᣁ$su$#qnY2MRw 5a6v ~r>t&!3UqҜf!~QDc~R{ %zC;Z٥mU9hɧ/Cfmk'7 &<'6[=%CZ*s.Z]0 =QhCnJb*SeݐsIH=yTG_xӯdHtXq> ~'[ّΓ̹I/*JJ0bMbOB޵3yz!EFu!Pv1dL4qTK]!T#"m5̸$<'j)]>@J{A/8.D;d9YF_M% %= %' H!*59Ut#e-۶a"L#]pw-6rkSOQ"ѥ]k]ǻf͒8cƼH1)2w&6"yWpBMM9}S(,j~2p8GNubn7@gmntra ;ߺ.0yS= JrHXkj hw d9&.j\, #SDP` 08LY !3{FO$|8N *1=.\6R^#ij-)&uD7fO)+bw"4@0as {fDMXɎ$,nq9r,\n *1Fmp!ͯ .s"3 *HwKRR}$STmck@V$z@HҠ)`}vgom%9l؉{uGu@1wwSZw4ر}&ᾃ؇rt#U8vfTP!|CX!]w*F;Q;mzT^R2(JnAiAP-LB:Sʏ3SJRk`D0 ŀ%^ dS4c4 V:WU}!4RۯtR0B5~yT8hs y:_c+(  o$4ll3H:PI-߻f!ɧ-b*UW 7vc0",3b 3u邱#e$q|"U6N*z}UꧡpD؇qe%*! ΂d}WryPwHeF=F߳PRݑO)n;sJmel K!iVG' DrR* rB532_R"Mw{O6'%GA!P^)7B_H5|%L^]4@bHIs&yM$%0d)O6lF[9: iNl0k@o' !fboCJ:mISR'p^8z3w).$Gu:8P{ɰo~ܦ KAXkro:@^nH5wYzv{HR>P=$Fx%-t kޯʑǞg7T$H{=7DZTm,#Av\<ޯ>o33/.psȢӣ^meBY2sf6vq:j=[~IKc\.WeY@ Ur7U 2Ducx~.X[_h|V(lL9`nSRe<9͝cWڮ$r㓘|YA\G .I~G#c!?OIԀ; 3%U-H%QGET 7bHߠ:dH+$V'oI=y!O  EZԞ+-Tәo.'7" ^ގΖȳlG/16k(Q"wP}D)H\]lGv];/͑ PPNh8!\Ô5×@!9zm"+Ca<9p6H#wM NjIɺ m_pDT.UIbO8/ҜEgy20HqEYF,îc# f?cbQauV,ȵ$f֩j^;Btf>/B7YxEH4g.׾'L5H}k$`Ō㳤f(M5Ӑ9\$W1/5) ''mɓ ;Ur;駲6{kE8pho8D \=3pj8oCYGg!^P*ꛆS'P8ђpȔd=julA $Җ..Ð6$2uQױ"e7mMw̝19ߑW'=iuiOGT"[FX/zN.J?9{~;jQV,.Fc/̉tY;}~|(724C==|T H3JŠ㧇tUdB Q>k!'st;"71I"<\[iD>gYՆ/))H%\`⚰ݰޯmH5Ny%cf15id,CZjC'or<.+3Hފ$4S.˖N׸d( |r=~<[nXrxC>&[GE(+%3*,+6R`3!Γ*2N|]T#@S?# jidw^ |;S_rzaBCͩòvZ{Z5(CZM\[,:ZewF AgŽpcKް(r_ygL {,;D(rvII PG5Lj1͟yyy'YCuѨ5pևֱ7/ˆ[?N#Aoّ=E*J!?9UH:,vXD\ǁXѶD_T/'UUyA#L8Pǩ%S b13ADH2K၃g_EUrAI0vwĚ+ƇbG\`P]˞vPC۝f*)%YT 9#T$,1L|% <؂Jz{fIAG|cҔgAyo?3JPUFɩ#PWE pGr}@r_eL\Ba(ң&< c@J 4I! _P[=#2k/PZ*_/TJ_A=>)jdhFI3ConL"A)܍.^! ;>*q2qP!R̟ϡ,5 mFŖTS M}"55;ՒER~4B.{[ \98dx$Z]"U $tRǺj ?XzѠ 9epB(iyq €t$WÁqڛDxlhݕ{S~C<ߨ/E@2 &SycLt$ uf2A_|YG A 5!N~xkM@q͚P! В>QːciuHWZc7ONW+@aa6LcXGA x["Հ#-ZƩ8ȉ~ YER3Y#Bl~uQhc2ἳb/,kD }I&v H rŧ\i9(J "hȉ"1L- 7.앥tBIH^-Ialq$}*NHҀe7i#yjdOImQhDPvtT'Kggin}Cq09%*+;XWVx%Bmn6liPL隯]m%˦Fר&@DoF5pqd5-9 SZmI~,4u~4+t'&)mGa2d0WuxGX&ǫcW~5d۩;?87a'J@MAҊ3sZK4uø/-H1GWkY $0 ; e+Q'- & *Ǒ!-0ѣ_;o~Am}ޑR*gϖTliA9nGJ_f= J2pHFYVОudQONDG_ԑP%yoOMgp}4$!Dڦ7zχ@ IABji[I-fc-%'f48 _C]bViM57HEe@sFMke!:OaǁdZYMM@Z+)ZayH x+r0QE乬R8IthԡM=VnTV)^FfKZ*i;Ǩ`NhCeA_2}Ig 18dJܣ Y.bH}~]oF[FYdbIlɧjqqNY݀r^p?hAfW?[pM?dQq5sj{׼`뵹 9g8i?"FrvWO>*]l^؇-AfpG&c$x9ߠ@)vK}z}[>~華r4%si;{İ]P#իǑ"0*>l$V>=gr3ܻ"W5-_%Nk#387>o`>s5P^n('y#?ֹUmݑ*"aH vp҅g19'< u8Q 0b!EF~B_|ޕ#C7|<9;43hc1E47Ak#3pdjOmJwh. eQ'krr*D}MZ7a#ZỌ*Wd*(HIjב\4Pf)0r}d?ahQ1@KaO.UWGցZ=\$ԧjȎT_a] wGJed39MAC_\=;_cz0`YVGlxߣS@hep6& Y2 R[z %,t;Hj8VtUClUB^`NtNICP:rNh}c% T'shu#אAا ic*8dI6_ŭj\t?N/#rg)"Ĉia hB[?:Ar!g2$rR_éAoԇ!fёW!y޺~pS_,U ɝy6O]G+)q;]XX @Gz)g50̰Z۔/:?ycya$܈.sn2yA R; BAmK g*\\^9h蚤BR8oJsBN)#/dRgHRr2>tɉH/3 >sOf55ީKځ"X;HH EϮ[ }89QA!&!Daj HW_YLj(eT%t~ ( 'ϐ#>P(<6$ꆣJ d8\iyǎ/]TsmPH"IܑK$n!pMD l|E9.9͸b$!G J#qE泓ڽ)Įyh7R)g$mS >/I]C*|o<ɼ 90,6)!b|d߫DcԒq͑zI$qN O>:wtH+#TЇr R6&+!Ӑy:5fxk6;SPTd<+@Ʉup.O>zEzq8r%2 PRWbz&>CZѨ6d5Ti wZRY!9'۪٥?F,ˑ&eפI&bzQDlڑo-ڲ|O(r1亀ttm3R u!b[UW<"YZPU\' G\ʅYfITWSql8 [`aϻٗsh~8}iA8|ERy "n"oӧH Y :"[^.C>myge7y_T R?B1Fs( ¡[&]R[E 4jb#FDhT2iR&OSm:%*zpjϺ/hqf\C 4N"ewKDۻu_ςyҐzM䴾*!*Cn: ZNLw)saqVx'ۄ KI솼g!>D4fTsD@t]/CEl>ζH )>#4F"Ms%eN1dDžKneH|9xBVIyBaj ? $>z#¼$?/ i@D}"a7n -'i heG@pK.m8d/U4yaʐ"pLo$/h x+N#: k0O>HŖ"Cv4.$`H*=ٚ2jwxN[mc#C n=uBQ,{7G"맖͘q%M6!bZ-UhAOKN4ҎbcCï!pR FxtS3j`1FԨ`V#+Q $k 'LQ. 9"U@C<z@rΕw}#l(+`qr0ױȭU_H9}c椲hD#X!4"7S9'q΍7)[(|Pl݇sDUu $^m_Rw7zy;2QS*cvͳ$ǛJ2 Z,)}C 7ÚDC!Qa)6-У?\sBN"6!h?uV9?nsF: $)zNąu9@yL 8}gHe I}L5!h"b;H`DR n( J(BNN0 U`ODg%)ъ&uNx,>JRxk;lD!AJ}H7LYhi>t(7SlS!VcLƞ;Æ9^)^N (<5OV\ZnX H'~}@q$cJb/t7AI-At!MKfj'{~lxAސ~G84:X oPOl>V4꣧=J M$O1T/S4E/AQD(I€)ݓj(eOڵ<"+;k,#=KƝF# )ݭ7d%,'$!9LJrŢ<#RB$яUi!Q"a ђ| ¡X%;:ZRl(-҄S-V Yȯ]ΩN4OCwݞȻlr(c YggD7]pz<Շhq @@dA{W;PxnUp$듘z>XIғxR\pQvxU w{#:\_zA giHILf_(:d]̿Ae9^((}U7Xo@bIk_.tKߠHWr>Xj@#_1rc9=+eYa,߈ٜRHKևl=_VЎQVǪ0cf1J(&) Yf[9oKtCq/s؎u8#Őn:GW{"jCrǁd>JpP$S`|A_7/U֭Z1M^ZJ 6r {8Ku=Drx.JuMJg,t]??r>Doi7)>s,}i@~G–P!")RHzϴMV'pLG7{&Ur)a\bHG;THbGBnH4)_:* ~f$>F=EGqXKȐDx$G' {" ?${H$zjscn.ZM7"?[ur,-8v֢"yEC>$ΐ״S6dnBnc8i}ӯM_exӦS&8 GAwcYg\\g%;hA b@tJnnrtF/)NE,ƈJ[4 , ,#NfȊ}E_~kuJ0 g%h=JXyλ&dJPF7$kdZ2ۍJFHosJ 4[γg9E+Rк1ph\4a# *km.$Ӣ9~k:򨚊{"l9~M\weoj|Yy;~mHf&߬J*!8; l)ȔmCdj%Wm/y~[CLJu^s(5CIZ2?JAS0dUJ4mUO_ 39ci[i}$*Wי ۍHt+^Coy_U$ Ȕ]2jTPɋ' D+~Ʌ Uҕ"ٹ"2D-щ!$%cI!Q|6"N `%sJ ';l2jՎIkY"}/ȈMW4[P@X aC_#C8 v_0bVt!* RUV6 \;Fg?H/eũ'+~ QڢW]Ȝor/An$횋 15)HKtL2zycGFB8ܙW󗒢V>^3ETУ%)PЪ~'R~Gnǧx*2/=,dvWcF;w!zMP`@S آI]*F#HHӇ,R9nXigdn߉~lف$X{S oПNّܕ5:PU--!2#g`>Q3U%F~ 1hM?+')*T~M6ҳ͞ˏιoU&M<\_JڈٚH][t9qE֙)}usDhuj-馃$5R!#ȧ= -Ml>NNԅŊG'N @eXboZ - oJ'qjun%>}gS;YW#Lz4l~ᶉS6Of7<_vLZǛsw/d)# [bup AI[VbFDw@2pt@埒'G7 +DeW_"s2w,+`b=!w2\^ߥIO+zXO '|G |_A&|)KCIqb0sm>*rӻI%T&EVש>NxCp/| m72hh8w\UDqM;po+L6[]n4b\"㶎\3#>rI9N5:H.5&Ѫ": ' w6 }GaŁ5Ty-1E8P~S(ĒhdeK"O57H I=ܵ=$'ocg&q&h"nMnfZPDeh;O WEKi`4/ 1d8# e>@<$_QC♃v3Xݡ2̑NN4Whwoy}nځȝy ZQ. a v9H6EsL$Mܻ11KlCR"9@(&jAH23SV;DGt{{%m̐OʲKUGGǘ D8r9*j <cm$;gemӹbJJH~'W,!gxaFJ5@gHD4!AtHRPAj)v% =&C|I?~'ckM{ )Kf$!ci*-p.lƆdxH^IXDB9f-R٧g~:GR2dG;v瀟Y]Dbywj:4xESV_{"}92BMR a"Ñ0Yԩ6;.4)v=$S l#>)2HT.r~VCbzWޣI?3i%VK>LR+,:}#[sdo#7$Rn5 $]>n&Q.4fCki9uMH-H"x,昿$Zi Z]sʻ ݇V~K2(9UrYDVAY@`$cS9oSJ0PY!Os ŚA~6 ڑ.:}9h!{K1kxSeϵmH썐O;"󯎣[mOiȎPi\d)1r $ \ JHHČz5VWR;~}ȉ\Ȝ'$*ީ,"TER8UqaZsek҃O#q7H℈ _q5 Hb!9& Y~S@ {@琋P41Hخ395^ ?Ohuܤ$MW!,e?( $'#c0}N9.bI(kJ}> ^6mC2)ONnP'gI] |t4 wcXy J1A K.\ wj",1I4l]9wִvCB QgCR?jPsB}\FvX vuDV9t :mWKp\;~ٸ@yyn 冮{ CAAƟ[*;t侗NJI."GKJ8MdԁՕ(mVepVד/uґBCR4TCf;Jm"w|}w9j\!U;"֗r U|RgPLkR;\{LAb:~QX oѡi޳`PQ%,9%91H(, m1X+_&PW~"ɔWYuO9^}ywy IsY}JW'vh=^h!ZibӶ*}yjZCf]Pv /T,9m6 S ߕo_?jJ[R(cimj42˕JF1006k%4j54-v6c+$~sې Il)G'SH+y8Pw͘݌&XChHdL=ۨâ!GLY~lO$yB9v\XJF࡚ȦTݥ2N/SC eG.mgj3/@f}&zHLtdNb#+EU2K88#cØ7CμσW"$z*{[ $C*I(HLJ|V>H;~濳#)d+3]:',-L%7 ZnLz≰R,)l8M1톈*gmȅiymoNj" C `]UudUlʿeFu*Z ;<'Cv~Ep-{ Dm 9$в6nS!!?4.m2?B lݽ%㲌#D'DLDk\S~ t4q.9Ih/SKG9QT1iIr tev^'8Um:* R@SIqٲ15^Wkb@t;2t?&9d#qʗSL2)py.$س;@5 Ku+ڠHCk0oM h)DnEn9~#jӔX<ؗ[SzG̕.8h _MNzǧ F;,mYyɊNCdaqq$Ry1E-p ,[K:)GjEU`FȏYsB"@mH'I*̑r-[C,}æHB 6h'˘ cbMxՑUZ@0ST9ķ?KWT7̕(z 9}Bu >zBeQuAQ{*6Zռ&4{BI-kMim9 Y;GzFѷ@F zCd]R'bCM6y f_"Y!%;ȯH>mHx $;$A]Y\$xwJ7>2W9tm_;Q'ot=`YU$6N"%qƸR]ykJ𯎚Cj6m4;N%U[PqlZVRn15@N ][ƒ 8>dHwl ~4ď>kRFGig@~'Z4?:ySDAx\g }迾knJA"NO= YCJ'~$~`mEJGs/Ѝ;t:_$+k" ʐ$SN:Sy},a$߈r)yw![0`\ A]DSV>k;Jo8BN9M}d'*Mlӧ쉿">ޏl_&'8> q.ٕ'@dB ȇލ5F(.S"Y .v>0y׻T umnѨee2exI:~XLt7% ?ɞA-$&5dvw0^g"h0rq,tIu|hx>JK]baHz1ʈsufH='Aw !c Sٮt `38ø>T7xG* H6 xIBDio w/jŒ=`9k<VMD$@?(~EHM::XV| ᢹ<drޯ\TG: 7Pg?"a5eՃEe|`\憭޳rHDɌM'fGn."{IF;5%z}(%~Xӟ|HCe#NBrBlF[}5`> TGnzybs5ڒ~HK C; y|?ƿȅ9@grCq{frXnPs[ySʺ[qVQV=7-G]໖:LnSƃ\q$3wED9:>q ˸ `unrЉ{yM\JAq$C%5>GͲ,o4}dP(7@B"u*\o؀uF?uZ7ٖ%2Tls/9> KCzN [3$ibihGɐPz`R3d?ûQ53H&̱`b|Ŝbn޻%pߕG׳ȡZzHUwI ~Ն_IfK7G %C㤯ZjƻoRw|$0_Rèe !T@ܙ[!i*%)Z HZ^@atWEQ H.V&x$pS׬Xz@6D\3.c]d|R!j.zGԵq9ɯ@ۯ3'cW_'M5'9Kjg?$CyoxӶ#d眘wH}ԡ~>'.M(kODg4 rrfkCΎÑ;Qs8|IN>rtOUՓHhf㐠ƑP#26uG63|5dEM yM҆<0~gmZi==x^Ԗ}IȦs^Ae)# x5 DzHHtl'@a#醕zK$}֤kJ։ONB44nD#"&(5ܽ;A9YY#ԨHG1}HwC$L@hTƤDʃ #p޷DJ,eǑ2Gld]ӑwA:hʼnl]w"Y8(ɨIY[#vB|C# a5_^Y!ŮN TJ2^*\>YLD_cĝ'7tm4wk3-[4!X! |炔g )Tp~n$4/'HFzrx㊄Ű&GB:R_Iɑk2DK |Pc@rĸƁL]rjw 4~%*fg 9E@mҁ QV?C1$9qPw욅.JO'+ޜ~+z"t&]ILI1> !i BEugK >$j IH!eqmwZM>];4qˑ ˑ8:DV*q|qr:;2Z!BsRS/e 9I?!,H؅#{lIE/8LOgNȏN1QP8Jr1RMH?R$;mC.Z U|r $= j~HK9Rz|Q>6_S|=#1vT &UW@5ݹЛ}F@NI$ m*>P H}(|ďD CLeN y#UyzHkU_ H%dTWʂ>Q U`HB6lԵ]}}'p8DGc~ [BRJE. vyuCr eAyV,$% ͟G~s _<"M喣3Q S5-40 H,nSy"wHHpW1Eȑx!KE !<Ս4DК # ‚1сyOMfۮk@H΁㻘 $DˎD"DRݲ&O)}H1eN[ J9޲?ȕ_}ϝ+d%wn 6C)R{*zv!J +lHlBb{>_:|i͗"A[q 256;Y3 #+e8;^ߏÐPYīt庅9~|ygd& @"ĕ.Ǜ<js|Zm=M݉D?څ+iLҊN\3kHyH9ـ^;Zs#1)<:J7ק4vqO1yLPڟ,s\wFg/?ϱ|ʿ㒴`@:5cA|(޼z>, s8qU8I|͡e 0Hp°JE}<(<L˥o̠t}k"z>gB#=Dk[Z3l} JH8\H~sZI,5{{#I2&H]()E]!/X$C!8a-&9Qr<,hÑ:Glج5)߽$IsDj1{[=SA@r&(?i&uUiY?t_.7dC~ZiILB)ҷԷpr MDn+j6[e? 6J Sگ76>nOeD#P IQ$[-MZEc ͍ Jq^h%5Օdpi$~ܩϯ\gG'nBՉ\ ZfH{y@51ܝ*Y X%SVuKx{"H{2$sf12 HB:$=Giv:=%ВB>g -(q ~^J5ѡ,è6t賽*Dj8f;jPΩS4WB u̧!qG(г œMj`&\Y*/;R!_pH22}1 cfІ5g # zYo/P 1!77d'bІNw_ʬ#'7}^Ocҵ٧TdP۰evpQt:1yuVZ1oл jj7(D"X֕R "(#~TIr! Ñ]I3frrz xӪ<থЧ 2¾iH|ee.Dplg@%$Ht`+^ 9%YCJ|9(!LZzl HPp!( (@{l5ǁnu`$rV9#iݣ2Oq 45Yu,HO^k!EBxJ:/)xv\qﴛ#t-$C$.9ԯ'$mֽXR )ĊK M!{_{5Fr֭SRڀiwUwk:B9o1Hĩ|=]…q)iY^Xm.P'a8"PTG~6΢ K9k!(BeJ=?A)k$-A-Qݡ Ze4Vd@XQ r͐Q6T!9F5 ~AD#Tjc ^ U{IS"8-E׎D'mVX!ukBuvOx-$À%;d~gR5C(B(<䜖FUy!7w$)tXe-Ygi-<Lf "<# g+!(UK7$"-S%ԇE!-6bаJG|&XsP %_JU6>5iFيĴA+'*wlxܜeT_I`>- v CͦTCN:~N?,N/B?.R9!sLfB|Aʾ*s~/蕲 E{h͠C"9]hV1ƠlsX!̾O寕Pfm# jZc`lV:T-=yn]NIJ7G[dC8jH4Ikݒc&hQal&KQpitAy%E_“~9nLf$}-l* "ʗa|t !LJXNW4i;I[+rQŞI4` G;Cd' rQəwR3\G|8`>N䍓@D]oGG lӐb207,o#˾.U;;[ykekRD#킼Ce9^D(KUkNIsLnPSfu#m!W~h~I$DbtGkUtb-@d>21~ǯc˫$i>m4d&IM3R`apU_!X9_RS{w!꣕e(:9md %=5U=9"XK3$뇄‚()Z#sa?;t+I&.NBOkKڔq6+;u$$)ֆ#3qz0nba"gHVe, ɭA-MV-Hy&Pj=C2>+$7!UOĺG mFHRTWκe/-ϳwE}JʼWp^q$KxSM Xvg@(QIX:J6Wjb]nӟG*uҩlPDUVkHӶr3a@IҥRq a2c{EaS kxXOдF6ل:{=n1 j-dP={!Ǡ(|t5SITNr ~Ѿo>Nvwzڠk':1E&/tuvKL? Yc%z#HUr sF4t8"9R&j6,x%j >E-P \۩G0]iNNnQ;z=&P:C5QO73Y\S@8;U@y*6V#̅BLJ Dq$ *XȡpZZkd%_'(8̍~&ևݱrQbGtv.!JEͰ'WSsxO5A?ڱoG5$5رV% Ғ̛=*D, i"e]A2d1l؁D= 5!)㟒r ɐ'\Rpz)~IRARDɖj;dtӅD;i": Xmյ *\0CZP_ֲD̕n;lmn)t~4@!SSQ7!1|"F֣z9,k~$@oCpYذ~3 dGHZR~nAv$@wVK0̷hJ<_>`pvɧ$SCR*׮5(Bb4oi m@"taMG9c}Rjn8v|ߟ}'Pv& PTF\67- . (u`a圍,UYEK"o!G)jm[SM_#D%RA옹A`mֺZ`#2O`k޶{Û^8юэB߯c.5|HGH09Mr#U-'{L 3A.uhy$q)QG wPxe$F#WrơҐ> 1 A94%io٦ 5`M5:R2wϓ ` ^Ӫ_y>rqE{%q+ܢX715z%mk.%/}@J~#߽+_ܕ:]aȼ %c#`"פِn< ؤ鯈]%ĚHS^DzTnImI7 RUr GP~jOIܗ!܌kܝ~RFd* zu#H:Y/eH5~OqwsQ:ތ6R(yAL+4݁);cgn-KOrnZJ7 dntihLe(t"F@% ȯ~A!VܐI<Ή6]A{Ez/%͌C+,BM“+O#`C.GIy@|!!+*'ǮtT8YeȭO<4ޓ> 2v~oqN4,YI8p^R'G;IJZ\ v=xB|uN:}k"IRgG4@ 5I,7by"ɳ I{8=|E7~ګau4(<ȌNeJ4(R9F*{hb]IQRNU3_Xw2LYT_BSLUM;pe 1k|&pBO7$Q0N-I,.,""uZ*PּqRC߁hHnC_fR%ط'YGҙJ?dUj#ƫ/Nz_'-kߠ0|'|i%jͱLWEg gY%!(,7 D̰*Z)J<}&ͥq̡EZ !{h>|P 0uF6,a('kH*9J[WQ3V HrwڞphO*d4vDV,[uCjGkb%GGDdCdb9ռK)@aH6]=3^6w:H#k}vDa oJOҁ%뎬CʦD%K pdHG5;ӈBiA]q 0O !Y$LfJ45ri: ?Dc*^~٥ EJ~ͪw 9tED %sIgwͣFoa. ʣm44rNI}&nW(oAN'27PT̟a@0~N̆KoRw$b+J9!y' 5/3ZDMI>n>;x9񎨐˱!,L%8r" /ķcJ:NI>&eJ9nN$m_8(Ap&'D!UU09ɗȭkg&kISZ1!_ 6v9SQB8x0o*uM5IdĹjI,*VlzC7dg@ꉘ2|cU}o V۔f, R]LG޵ʗOQHX/V#ɸ $U(C tk}!qIko`n8]Rz\V ] |Ǜn7zI gރٹgfmG^6YrܻH]z~7$?\9GHɣDiH(5&jgj Iͥz9LDP2|oH?S9f\kULDDD)0Jp&$[=aG۳50}s0<;t}XT%ΛAk#e=$ʵwzHwt ?d}JڅD+#:/ݛNN1` ᄂ2u^GTFKꁘ EGO´6 'B&]a#Q- $vE܌f#N|>VmJ#2ݟղү/H48)IyMzs2#b#Q!!\qkok E|>(TpI9& ލlrP Sb)7u[uj!%: o;6ZIm˴UI"4.dHJ޹ҲEvuktZ;So=tz 68 l/m xW d}MWz&ts(KzzP6SZU>PY}2:+ejB3{_SڝY| i?smnZDŸM)<n@% /?P|hE&?@ RAP~sדD@e_q8X{"ݠPE"xFL@N)MtkS*]p%M8N,RnQ'p/TszHw(4vI9=QCV*E&4c/wez%+Nr+&)'NچK\HXj}+/uP͐ !i )Er$̚'Gd:˂?z21|j_ ZH*/o.޴߬DG Iq%Adi:d3ENi(翷thgfK>Ѝ7d5*=5$B!qV'K% SPXZZiPI|{T)樁\b萉Dl#}0g^*!Gr)"]9k{8E՚=+aD:1q`DN}8%9Ehd/46THΩAOtBh2d 69 fg@UvRa'S6،ܖRhp̑Sh%rQ !Ց@r4QNځ䪘BQܓ!T2$BԉSdoKWDIC"h(ِE.jMdy ?  OJ}@ B پ''lL%s|+ڰ2ٓwR"SQ 8bto>)/o4$:%HU]9Vy$.ۑPp>""QߐGם{l8t?RGO=J @-9Iq%+sM X- , P6Nj e2MڃHĩit1&Qb/$ڤm1={׮Qn=dב^T:g<ȓ*jwOy2t܃r>GraV HBuPې07J$݁`XNbh&4_@vRR26smIUzbDg#Yi 9U+뤜?jVhi3Ab!w !1"ωSN`*0lƲaJBv" >XIeB?T,3-́HH=&ĉwSma #9̨Aq P/M%% (`_ޯY%$R \i8ctpTn Y{AWXOg 7Fe$uw#(GK&i7ThUq!4|rm!ǽ&#i ) 9QSi*dt;;"կbTgSH(ŊZ&u4s;9 :)7erxl3!O )` E Y՟D+/tV_z É5BEjѧS4Lg,b `4 ^ ۻKKB_&nKZeh/w)YNg/G*O{"jpP0Y <y&F8Jv.Q/I8)3Nt ǑCf%h'3* IOKB1,Dp/ሤc 9Q16~%M@{X/\M <:w%,5vwr)?:Rx|`h71WNg9)DN4IqL2&Hl@PNH'W*ʰb]rDClWţt'5llsw΃GyI=>iydc3n I=Z!1uxU_amc"M+m}KtJ"WCy)NK~ V?G1`h3@ ľ_)"wƒC'\DE6T#f{QNjQ]l7_&N$uNɚ0 ˲k6 ax% V 4O}f@:pYۑtߎ~Hn҆2Et+Wb0]'Hu!X,i̽`rm";spt~\gqґء7ݯqڦ.="QnK`ɖ`Z<H3TLvO$!V-dacŦ~GD56x ttŘlvC O*e!%9N>:2M稑8΢0IH!{73~H ?PP k^{+!%&dzk 7n5J"f@7E;?mp )񲘝Df5SՄ %֐!ivo-w~w.!& SkkL.| 9ZNd)ѕq $Ĥ]AP<$gȁoI| @,OODIq4( awj>9z;9DPfȼ{?n'-3eH/|<|kx~,lך ? $`s?U @sL$?')zKsx{$6ހ r5I=t%d{λQCbn>5IlGY2Ñ(©zOEecXl0{G^Sp'x[VE#@TgvhQsP@-9 0elsɝ4-iDԗE!XC]|rβ_8;q?E(l_7HH" z̥/!JTψT*@ISFX69H8"A(.G6ZW{eu+H\ 2 0Ȼ_fh)zW.=--mjRD46W;[sH5CoZj >"hI:o.Zvc$񪗿`CWkCA7!h!I"w"IC\O Xm;~d\˰.NH0Hl"Lb{2*D#  G[AV!1fǡ%$^r峽 +rmK\AssO(O³?;l&!Gwv$nS3O{"\3X#̈́N<;F[ }!|tD{#ȐNPZyQrߨŦ%C{Jn+< TC[ &64-R"nJ+}0p-IWKPD6EDVY{jDLb׈TT%KqDs ::l) ڴ=t;>YT4~'z麠ufMC`w`k M(RόPl>s 9iK͏)NuhG砌C]H6N'C2y7vn\%Tܱ1BH㾟 `+h\h*|{\-DN%?{XۗNBR:o|.GBw۔GO~^GAׯЉ>v!b%h)P_ӟhn2Ba( oO**oQmIG9CYm^03fC;sG7([Vy 5 q_DY(hu"DFc7l}ǃ c6VnPSE0QV[& ) qBR˸``Q$GyB\Q9pBbo )w rKj,sQ lHT 8RcYdZ:Tf!jiS0^!_9Ң$h5M;QPdv o.GNfniQw+ɹܓu :*'Ad%r/7-!y ov1(ǣ4agt>?z=%2'uWZ#uX~TT*:ղ+exjd CUŋ}iEE+(33Dsom|Y/#a)뉒Dv !zYCA%y}8SgmPP $6Ux3#F3;)(h>|JZO]?$Tfڀm/sJE GvNBR\P͢/d4UC xsGv\Tސ5Ѧ.N&@꘶fDS")y_vϙViHIԉyQ2$0yC|kgKdvs $I5@w<@/eKnR9"yD.~AR/{kE09~?Il}oy* IHtWC(<̓VXE)( V{RgO$Zk:3 uzGn䶰iioSBi.dڼ7jzr2jy;pw,qNʃ0S:[_C?w4*<Ȥ:o}TIZ8/;M%%˶V,T\Έ]/$Y,O!zg/D+בoHׯ5NԞ4L)gʘϑHۜ"ˌr4\<:!mxd,l 0V+R?yF搆d&QfG!zޥd?R/(1D他Xh4 YVy#B.ƒےr7G'k3~1vMֈ5<8@R~C3eV?m%[koδr!! e )I(ijc["76roys%Hvg4[i|K Xytֺlj CrőC  .F|İ-DHLr: ;_aK Iv?[dKb`ra{ ԩ3(t!7߯$Y仾@N> Ɏo% XaHu-KUVܜ|//E1_+oϤ`X5es.DK4GmT!#<:=]WG2A"䳫U'rD._kgKTWڽz'WC\\ *΁?<@BFv2E.?=qo}#=4~wZd5cZ $q\q|>zm`N 7Zy\mB) ɕ/nASk@.u$2'9K8[ڈ9WtC{N aq  P_2QЊTL37 'ccumzZw +sن\cAtZU~r8с06|zͩЍn]V[fr%Б"y=Z d2i}H!5;!eIOz!y@\NK<IաݑXae9&89Iۍ> lOYPBy#CtַZ vlQUsE72AU8v޴T)/]RB^vHaAOd3$#O4Ti̳SXBR/|)EF>ᦴTg$)FaBrao%qC ;rt?٦*Z<ڻu]/z$.&u &ft&/B"-c[:؀NYY&7Xy4Ϭ22n>-U2%[è J$dRⱓwEG /]Wp6(@bIbHr|26ȥg_HZPzBXdj w:}%'q,hU8!V#V-?Lwb 5V?*6joE}HEƒHVwDU1)eu < /J q FlSoI1yc;RCڐX}I!:-f=kV̐HCCZο5akpXDnxN˔+s"EdBo0JtRP}48eIA8U 0H{I9@c3>6_ںaNQڊ͊{iYt_@5qvHGȶLqƧ :}';Ɖ7 2Zq[.ģzaG`XMcȣK^&TE@W[O$zN- s }L9)1%lS)ԪDnbNHZ$rD?&IƸ;o&m貓7xj<~M[ZNDgNp|Qw5UJգ!6. pwX0͟QO&BpȯJǝ<}W"F'j|*DxwI1]#B>$6R+gwH2r 磸 BP1D%3@ !CIo[|xB ~3[_VM*!C},TxiUfxhe nJC"E7[s*VwtpY"I B MIEGBM+fqtD_+:E \vG^8;Q 9)%ncx^ OD+84/5X|tu$w9%n^!;( 'c3xuK!y{f)avOԱP% ~{'H&Hn!z*E:Ip[61_\g)$PO>Xۉc3Sj!Md}t)k2U#FW58h%<<)O`̃*9m3ɨ$٘Wqm"m['gLۑ m"Ihّ)Qr?5Aӗ@H %uyc)Uث3w7^G /C= JBy" Jfy"5gL;5?U?G)'Htݑ'Blh%wj .8|&pL]"#$R; K>5h",6AGrB!HÐHפQlx" P2%RF^sgjLIʊAH&#LOI!w^#q?[b#-{V&r#΍(WU3XQ`%ET/j d}@6U' j`nlowƼ$:Gtru\x}yڳEoh%QL1v%:"!ScFA%G nJ7y ]Ł;A">t6u50mw$t iBы6,$yH *  Y&^jrS.K٠D.BQ(!>/h 1ߕÈS t'@Tٌ٧dW2^0jjf4M"m-Xӱ b戾:{tNz}빛9x.✼#1|qsPL7'є@Ld5z"b%D"Lw{״@d/j|qIf*az# C7jW}>4նDTpM#t(pGNQTPl}IGGI.{%!~%Ͷ^mC'~"3 N;a[[yxN#vCm[M1ﺦJ2ِOy;嫤QK7%P ;N3@KyyRTzxi 4R 'PGF-G#CgCضf:bzQa/8QbAWac5XN We7N;'QZ*#'::%0X93_H9dA!g.9pәg a U\C1ș?HYH;N@O+\3 î\Hy1GC:_$*+22!yWЇfWWlj"oQ,~*|߁i6뛁wRi%$}$ϸѡȃс:٪;ǻJa&;eUyD!$w}̮ f\U2U"ɝHA㚦!R-D2ffM)#&ʇD6gD}%yaJC!i] H~%$ݛ|P T'{)6OBx'r hX'8OΨ^'p#{_IB'2GJE2t$eL3Gn0Eϩv=3OUGi^< lRa&R8Emyl5¯ewDȑtE00XBQZFia3-vUn@zd.SGN7ܔ:M )0+$2[=HArj.O7' _`X3։e!=4Vi9.@]?)yQ!1\!OaMEEu:0`DkI(k3TEy $:h[-0i\RZa#Q>AEBvWuTZd"3ߋgģ)D_ɾKsHI$= č:rCB-%eV$1ȠZ[3"U/I%ĶÑR9~NnIȦ? _zh=q5U3z®FDaiXKNr  F>jWdP&'Y%㱪;Efc25S8ȅ*ys9|Y:Zlb]pŋfɎ")m΃7^ÐּBRwO5"5y7F Gʅ 8ȉLڍK"s!u`_˂I-kb1ǸH9@R#b#>`$g5WtD9 /yuy2oFnYJN=͕oC$\vW+"ILq],0E{bQՏru~1>^"G1"Ճn5b-xP_$`*o,i@d*g!\Ja3#NgcrY}A*?sng + 5cE370I:˛D8) RWq0N?y)1PKI֢+JD`zJR}SM")4ÿ93=N)È-$J]0wYC)e${mP[ 3/n>!R5:Tz&uϺՐ[=漄q/Tc/K:ViX!P//԰`toMиQ- & X%A"!EH8Cc_-ٱEt Nw I7[sTt )vhk4C!'eN 0ʰw'X $*;'1mF-2J(_h ]򓈨'TtP,V`1{J"1$[;z"KG/ qd֌Pېl@8%Q"B-K!ϗG1-'v\J!ÀCpLn@}!3wl#Q&&l-ODXA%\+$T~; NPLǐqh8g!MM~nVx Pf;Il;ђBBC P%ZユU'b`OJ0Բ= }m i}}f><φCJ!BR1ݻ)Ot+/9 BkM%`}pGo|G^ ;bZSvDs;AHrp,mqdՒ*'^h##\SܐDWCK S]L奡:5vSіd9Yޣ' f$^%U{?HKޣO>A61$tz\{P!XWX:RbeDZ o٢>@:RӼM'kGrz3gƘ͋$y#3%$ll8z _]w); Ӈk.mC|'? " gGFwQ/@~\fd~P{"8S_er@XIqsH<;8:Mǐvv$Eeh$b0}E._ȭwNX$iF@x4UER5;j<62'n_G7$eaߑ:R. 0>"҂gFo8~HA2#f}8gb 8Ie(3E) 1?yT'9/r8UD Ѫ0{P%G↔O!B:+I3,Dx Ỿ,;d1[x7{u@=Sb\ KCĄ;;  6߽rnoe_ּf_r$.=;ɼK܄iQ3D!Yw ;yވ 9#l|$r [ *^e @v;rg$ɞ u$Rd\nFTBQܜRY%Blh{3cJaB4(#~'d\6jFb|7Ł&<& 7)ߑ"gK6ވI24<۽ޯ5~%V )lNm"|ITJҟu i!r.>3h왙'Li ]ݜ✦1w\-wʖW#/3spdIPȦvI af#atӣHzfNy3*wƑ:x+ߋ,]L w$^? 46 $tWMSsȼo7@,EрDs2E@A=*}$`hɄV.dgg?$l{Y@4ȅHdER/Qzʴ}>Tbo8 w\[_ M4Y(Ԝ4]U}[#xD+ǜiGTRH :W7"hYb/ BB( 竄\[wNRNr$+JՑH=q#èJ+E.WݔCdO- fҿAQ)~yQq F lғ}lX+?cJʟER8oc_HDю &^k}9Ln{.;qmGB=5<+lSkdY ٩Q=u}}BlmT0:j (բBb|v=nolZl󤬊s ;ܱ_3ׄI_FknXÑ8tT?Hh:SdbڭPPz %O&-sIU*]R(2eb˺_ݬvor!qiÀb'x(_|8F&8C7prp@1 HW- ؃vGtHVl٭xG²NffsOwq,E8@y#A3'wZ GV1Fv~gTP.J0mQ"pE83ts@DvKY}jK@7Ho!/&13+MYwl9*A)=NéKZVmg?:3>ꊠMSS՘HQl¨ 2'-z7 v&Y iʕ.R>wBnE/>BIe<k|q`^P{wOIpt|{E$n*hP=da9D%&,t%9 gb> ^Vc'4#K[<-iݙ C#?5C%9TR k{Y\bRl KҌ_(%  '>+~%ò|l#:]-c[*Wq%`ȨYmF~Ԝ%n9 $0ӱfK@ßu|.X&%-͋6 >z/~&_~+r'-R!C~sߐRcUB%䖀L_r"4/7[fv\;zH*Plwy[fn&\_Cb-~)XhV PQWXZwɟ$z?_Kuž7o&rț*gHGҨONkJCc)X7wFT؈k{,o>&ypBQ"-B]W\lfx!b*kkq@݃߁b'bf qݏQLLyD\şhr9n]Sޝ'"z,y3BBG]rb=o$9hLá*E#K,0#P6W/$U]l1ROBa-6%qꐑ"0>nJ>>Tp5ꚹU$d!5?SҏxKXpBOg/[#€L9ikށ,s$L 9DCRUEېG65?Ƣ fTD3܍e -+g<;`IHϡ{,bOm:9^h# 7#IIx#pź^Dq8- 6%{D6?` cJt~Dq\tC V?Xf'ϒ[.pW4%r{YTsdRdO@%/%C8cܸ҂ZRȏ ۃSQbvPĖF]#HiSF]#mPj 7CūH8A ىɺ^ ّDq&YaTEvջ5iL$B~ ʨOyMkV(eIik'@FmW1a}YwH:VBf*]i oPH)MT @$pY7RĥI B:t-u0Z+z{xU @x6)]bdJ?!Gb] 'Ȋ"Bhz=in?,|b>-/]} =?9i/BLWt t9RII9cP~ϣ/:҂[k!5/ tIjUɱ +!#d'.,UǮ[){m uDBH5?:\*{I>-O:1i{gdDfp~KeB{pm^ۼ+J՜SUHT~_"^9dP,ܥ>SUWyh;QS81IHGLFX]ۑ}dyCe9$1w:?a>L2g$^,R;]S𥶨)Kb>"3^jM:"^3B;R2izfW}]L`BxPU^SDg?Ek"9;=$F+]cʩ81|uثJ>il e7Ds ]vjCj{Kix`83x#z1$}q0xD᱗)5O9ʯHjnwp$ݗGٷ Q{ (~G*/A{,Db `P:0O>F.ض@~Hʼn'2Z r]"\Ht@Cj h}1 wl~ :G Zeq8j{̄+v6%s4G)[CR6p ˴Php0$5s$Gn"Jq.I&ihCdK("WOd3o.޿|NrYפ?V9Deid5:@riH+Y7(RELu$.ؼІ L{f:SY ˜;HB0Nq$O}GIqkD#u %t'}7JY>8h/ߙQO3 "XRԙZY mNʲGeC82A!GZK idiLM'H,>:)U4vM~TV$!Z@)+eŗN1}DrDZnv7Gɡ';ȿ |ApaG"6TĮI8-G0Y[ɝSiŽ|wd̗+=%@sqovȣEaF-r|vBaMu9r)Mv4z dk*|kj uKN[p"`dRqEKV},eNvޑ$ ,ֽu :G%=鳧{Q/yHe1d%B*OH8<=l8G*@O_[ -i\bsw|ѝjhG12bPK9rP 4hOiA7#1#:$'0 *4'uh&&e{WkcR; TVaG=}8&1w"yY*%q5 })˱#Xdi.*߭AZt?V 0Hg|aj|S'?Bk='rTywvNU1}>dU@`a 77-xt?"LXQt8ryY4^~S&.̬STO)R.̧@λØ>y>4W${#7|O%ۜ,]adNQaIs3p̍ 4no<īخ.7CBlk LC&Hr[$U ".]#yl$HRlj~H(l$WZ ynSE1(,H>=#5:r}'Y*JgH8iU]qMHW񑄶4TTou^?OeK&oENe13_VHCO~zWSȁ=O{̪dMA}6qwKgwuln r~ئ/$fPr"0iˍǐb*e E !%OD.֘lŎ]\}\jM}q\F7=h꿳7N|IÍ>I"?RZao״NNZJ16|,p.HTguS|eN8"9&fG)0MtBFViIs8SjUjΠ~U3PZ["[xf8vɓ¤ M4e+Z6ڴKJP6ԗ}@D޼J:5#QXL$&Ewb/axwbU"BۮpCeA)$ >9am*?bDN;tP ~gC~ #~#)QCu3Zh-AIƫtt_bG~'_B;^f" >T`;I`ȶ `D j.̦Ɩͱ[1 BJ{+l0Si 4=7%9r퍶M55M` Oӑ)dq:$o|!?: cţ軐'iAYCL$/ I*쇦DI\~*a`wyDB"]06$Rز r~U-_"a-$cwfXS,;L锹F\O3-$FFB!ՅbH'e}MiotDώ2$ {twjjr$$7PpH$Fɮn@؃UEsl ;Ih^-#/J˷?Ɔ@r@ޑ804Fq#UBrS49js\4 mr$ϊ02HCTM{YǾP.߲TCrD%$.ۜ.K*@BfMkjàp>(7"0xJ" ^$`!ԋJ":{ѱQdjCU ǥHH#AwH