diff --git a/CMakeLists.txt b/CMakeLists.txt index 04baf360d5ae2f0a42e918d5b33920e525fc2dea..5b47b0af82f43123d5c64129267ee396baeb4105 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -227,6 +227,7 @@ configure_file(cmake/nheko.h config/nheko.h) # set(SRC_FILES # Dialogs + src/dialogs/AcceptCall.cpp src/dialogs/CreateRoom.cpp src/dialogs/FallbackAuth.cpp src/dialogs/ImageOverlay.cpp @@ -235,6 +236,7 @@ set(SRC_FILES src/dialogs/LeaveRoom.cpp src/dialogs/Logout.cpp src/dialogs/MemberList.cpp + src/dialogs/PlaceCall.cpp src/dialogs/PreviewUploadOverlay.cpp src/dialogs/ReCaptcha.cpp src/dialogs/ReadReceipts.cpp @@ -278,9 +280,11 @@ set(SRC_FILES src/ui/Theme.cpp src/ui/ThemeManager.cpp + src/ActiveCallBar.cpp src/AvatarProvider.cpp src/BlurhashProvider.cpp src/Cache.cpp + src/CallManager.cpp src/ChatPage.cpp src/ColorImageProvider.cpp src/CommunitiesList.cpp @@ -306,6 +310,7 @@ set(SRC_FILES src/UserInfoWidget.cpp src/UserSettingsPage.cpp src/Utils.cpp + src/WebRTCSession.cpp src/WelcomePage.cpp src/popups/PopupItem.cpp src/popups/SuggestionsPopup.cpp @@ -423,6 +428,10 @@ else() find_package(Tweeny REQUIRED) endif() +include(FindPkgConfig) +pkg_check_modules(GST_SDP REQUIRED IMPORTED_TARGET gstreamer-sdp-1.0>=1.14) +pkg_check_modules(GST_WEBRTC REQUIRED IMPORTED_TARGET gstreamer-webrtc-1.0>=1.14) + # single instance functionality set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for SingleApplication") add_subdirectory(third_party/SingleApplication-3.1.3.1/) @@ -431,6 +440,7 @@ feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAG qt5_wrap_cpp(MOC_HEADERS # Dialogs + src/dialogs/AcceptCall.h src/dialogs/CreateRoom.h src/dialogs/FallbackAuth.h src/dialogs/ImageOverlay.h @@ -439,6 +449,7 @@ qt5_wrap_cpp(MOC_HEADERS src/dialogs/LeaveRoom.h src/dialogs/Logout.h src/dialogs/MemberList.h + src/dialogs/PlaceCall.h src/dialogs/PreviewUploadOverlay.h src/dialogs/RawMessage.h src/dialogs/ReCaptcha.h @@ -482,9 +493,11 @@ qt5_wrap_cpp(MOC_HEADERS src/notifications/Manager.h + src/ActiveCallBar.h src/AvatarProvider.h src/BlurhashProvider.h src/Cache_p.h + src/CallManager.h src/ChatPage.h src/CommunitiesList.h src/CommunitiesListItem.h @@ -504,6 +517,7 @@ qt5_wrap_cpp(MOC_HEADERS src/TrayIcon.h src/UserInfoWidget.h src/UserSettingsPage.h + src/WebRTCSession.h src/WelcomePage.h src/popups/PopupItem.h src/popups/SuggestionsPopup.h @@ -583,6 +597,8 @@ target_link_libraries(nheko PRIVATE lmdbxx::lmdbxx liblmdb::lmdb tweeny + PkgConfig::GST_SDP + PkgConfig::GST_WEBRTC SingleApplication::SingleApplication) if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0") diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts index db24f1fec6d38bec28d8b00b6bf9c45916085cd9..27d739f2f71037dce27acf266fda919ccc215668 100644 --- a/resources/langs/nheko_en.ts +++ b/resources/langs/nheko_en.ts @@ -404,6 +404,21 @@ Example: https://server.my:8787</translation> <source>%1 created and configured room: %2</source> <translation>%1 created and configured room: %2</translation> </message> + <message> + <location line="+6"/> + <source>%1 placed a voice call.</source> + <translation>%1 placed a voice call.</translation> + </message> + <message> + <location line="+6"/> + <source>%1 answered the call.</source> + <translation>%1 answered the call.</translation> + </message> + <message> + <location line="+6"/> + <source>%1 ended the call.</source> + <translation>%1 ended the call.</translation> + </message> </context> <context> <name>Placeholder</name> @@ -1796,6 +1811,36 @@ Media size: %2 <source>%1 sent an encrypted message</source> <translation>%1 sent an encrypted message</translation> </message> + <message> + <location line="+5"/> + <source>You placed a call</source> + <translation>You placed a call</translation> + </message> + <message> + <location line="+3"/> + <source>%1 placed a call</source> + <translation>%1 placed a call</translation> + </message> + <message> + <location line="+5"/> + <source>You answered a call</source> + <translation>You answered a call</translation> + </message> + <message> + <location line="+3"/> + <source>%1 answered a call</source> + <translation>%1 answered a call</translation> + </message> + <message> + <location line="+5"/> + <source>You ended a call</source> + <translation>You ended a call</translation> + </message> + <message> + <location line="+3"/> + <source>%1 ended a call</source> + <translation>%1 ended a call</translation> + </message> </context> <context> <name>popups::UserMentions</name> diff --git a/resources/media/callend.mp3 b/resources/media/callend.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..50c34e56401d25f33db5fdf41c1fb1d223ff6cdd --- /dev/null +++ b/resources/media/callend.mp3 @@ -0,0 +1,49 @@ +ID3�����TTIT2�����AnnounceEnd+�TPE1�����FoolBoy Media�TSSE�����Lavf55.48.100�����������ˇ˚@¿�����������������Info������Q��2M� "%),,/258;;>AEHHKNQTTWZ]aadgjmppsvz}}ÄÉÜââåèíññôúü¢••®´Æ≤≤µ∏ªæ桃«ÀÀŒ—‘◊⁄⁄›‡„ÁÁÍÌÛÛˆ˘¸ˇLavf55.48.100��������$�����������������������ˇ˚0ƒ��`s.¥î�•ÏC0–�� 9“ÇÜ¿�r4t@Hò +√$≥›ÔÑÂ≈flw˘,\¯}‹P .~∂Q–}@ˇ/Ô¨>]¸?˛ íÍ´Lé«∑ëÈ]5LlCrÁ‡†∞ÂñÑ¿˚∫fiçw}{◊c…‰ôqÒ¨’∑˛ÃT' T‹dˇoˇ˜˚õŒ¸ÍSØÙfl˛ÉˇŒ:Ùo˜[˚∏˘ˇ˚2ƒÄh·qºı�!04≈)vÅã‘Ôq)édªåõfi§Ÿ›ãÇÊ√∑Vb#ú„éÁ!Ÿ˘£– +ë÷èÆ≠wˇ,w€˙ÏB&jk©¢Á£˙~˝fi∫LÍ@->¡"b*·Ötd‚–.,Q¡±6mZqÏMôˆ|†O´fltª±ÏÔ;÷2Ò{•?˝˝ˆ†≤flˇ˙è*»K¶VT†dˇ˚2ƒÄàm q¨5K∞˙.¥ˆ©v2ÂWàâ‰rÂí˜Ór”8‹%a®(ñ#(¨—,¡gQ†§í˙J‹©¸›}õ¯¯«˚z˛À˜~ç"∂ˇˇ‰vâµ »¿ΩQíE¢–◊pCŒ÷Èô™CåºÄsyíi¥„™≤´ø◊–/[ˇOˇÕ"˝∑˛≠g—Ç„0«Ax“œ’®Kû1¬Xd�Â*Xì1ˇ˚2ƒÄ % i¨5´±°.5à5v ëH®vç‡bRì%Ñ∞öÖHcÇ,˚$≈&ŒSEåëd~Æ°lˇ≤™˝‘n?∑cΩJˆÎ©ÈJ˚%`Ú{ˇˇò÷%œ*‚q∆Äöâ‘g‰yŸƒmÙ˚±E∆â<*ÖÑËÍŒ¨Ÿ-Ufm˝}a|flÌˇV´:£°ÛËtz__™N‘Ì*3˛óˇÂÂ∞Kmr«iˇ˚0ƒÄl·y¶5K±ù¨ïóùp�…—Ëf†n>ºXYi∞9ãÉåµ√Ö +tn≥cåf} +hø´cÅl≈yñÙWo[/.ôˆπ䡸Àm¸|˙YÚ≥ˇ¯¬Â"< +PêTì’kgJ‹ëW√´�Ûº‘çò≤VKVh_: í.ıõfìF ›U,Ë+∑«⁄¯Ë ˇ¸‚ ˇ∂ÊcE¬Ãt`ܡ˚2ƒ�êÔV …KÅÒ4∆µvâw≥ÚX…(n�Cò®9">âÂ:GY≠*.Eâ—≤NéK“n«NbBÌ€„◊Êã–flˇâd©ˇü†˜&NÖ˙˚˛õ[� Ñçfi$ó“∫å πj(CÖùiS[ú† Ròçh˛•£I]ÏbÄDÇÿÖ&}˝"'…££˙ƒ~fl˜Œ…¿]V{Ydåˇ˚2ƒÄ̶-K± Ï5óµt�p®5∫J[Eê˜!ΩJpˇ{nÓ‡´üU∫°âú_œ*4k˛ˆ@·d˚¸~⁄)ÅœˇƒH›ˆ–mR&‘e≠uF¿£QP6f#C¥»º1(âÔÒ#BVV”ªˇ„Efi°jù‰∞ÌÉqkVØ«Zâˇˆ∏˙(ûRøÒ⁄ı©#Éoˇ‘4æ∫!†[ V◊Tmˇ˚2ƒÄH(Ìuß≠K±ô*•πµpŶÆ7`f+Ȇ∑Ôƒ"ÚΩ7˙ã+GËÙ .9ÔÔUYø˘øo@¡ÙQp◊ˇ»ê«w˛vÖ±Ô˙pÙŒÏÎ?·@~.k¥◊¶ Ÿˆ2)§W/NmHȉ+S!D»„H8fiuúfl=∂˝W&V´˚Á€§N=ˇ˘±büÓü,`(ÃmÓ“F +ôˇ˚0ƒ�ú…gå5K±öÍŨ)pÃïÚ7RΩ©LÀ‹-«°§ÕR+AùóIGßFtvÊ9uF<„[\HZùÎœ}≈œ˝ø +„üÁë5≥£»8’Å"„'≠%é«'ÿ|H�˚7ÈÔßÕÆízC=w|ˇÔ5èˆñˇ2œÚ≤jM9Lv∞¸Ã0?Ïvbz#Ège¸Ø—H√Û>•@.?ˇ˚2ƒÄå’],ΩK†ÒÆÙÛùvÍ(s¿ µ$`Øõó<M,;cÇiW$ˆ<ˇçòv›7Ûˆ∂Èàfl„ÁÙ˛1%¡Ç_ˇ<ÔflˇÌ«∏í“◊+lÄ—Ò«∏∫•«C:®˚ër6P %Ö §Â8ëöe@∑ãQy Ü≥µ:ÿ(OˇŒ+ˇˇ~è¯ı†‹èõπT*r˚Ç0§6ÃG7Oa Gˇ˚2ƒ�X’uߥ´∞ÓÆ4ˆùv1Dyí»ãf®Á‘âùcß'ö͡+*jÿPoˇîA˙ˇˇßÒ˛FjlÂM∞TuDlv9◊—Z%Rd©‚“Ò¿sõN®ìù,πHyÒ•ıÔ÷ˆùVƒ¡ˇ˛HÔˇˇsã'«ïÄLèõ=SJ�—q8Jçs¿. í–°b8Y[OL‚è‹3_áPˇ˚2ƒÄGúôq¶<ÈpÊö≠5Ü©vÉáf©(ÎtøÌîˇˆ+ˇ≠Ÿ_˛fl’ïå•r©@0X4ÃÌ,[im∂oqÖ¯…úÕC%¨lâˆsBpIx∏mµUZÎ΋6ˇ¯Ò˙ˇØÚ%`\évªùà�ß-Á∏gê©Û-™πæ™⁄892p'ï1À;#û£‡Îà¬AóƸfl˘PK_ı<F9køˇ˚0ƒ�Tôo¥ÛÄ1ß&´√0–��øYS©»Uâ D8n.‹\£72»zăã@—Ëò<á(‚XNff&ANì.∆f•DÚ§‡‹j±D— +0‚>yÑ·ù3z‹ø¢‰ØıïõMÃX›'´˛ bL¶ÇHæ£Dã´Øˇ∫Zó˝Ûä…È^∫W"i∞·g"ÿx¢d·á‹≥K(ˇ˚2ƒ �@ÎçºìÄ0Át≈©6®∞íGœ<÷_IG ß˚†ÅÕO˛ª˛=ˆˇˇÂ>=ˇıÖY%ï«!e!CǢ$N≤Xt¨D1ÅÇ4∆/œ¨T ì¸W>¥¿ÈÔÔ‚Q WˇÎ∑ºç∫ñˇ»gˇ˛2©GUµ≈#i ¶N∑S´OUj=p;/öN<\Ê8—7í΢QHF\›äÖ fl¸Nˇ˚2ƒ�GÑÈÅß®Î∞ͧ/¥ˆùvj ˝&∑VˇˇÁ∑ñˇ˘$–©j ·0Ω2∂¥GTv͵î•ë†k®‚‹:¶≥S}S™.fl˘¿a fl˝w¸ˇ*fl˛fl﯀ˇˇˇ¶ÅTfiπ‘Èm±ÖıJEn¶nN›lY…ê&T^éAÄ&r77¸®H.ı˜0‡îyQœ◊oÕıoˇ˛è‘{ˇÙ…È'ˇ˚2ƒÄÄζK∞Óñ∞Ùƒ6˛gtÆ�í0*Uƒ[íh¸√√UÑ ‚ŸòO]¡Î0ıÛNéÀı.É®ùÔ+ˇ´Sø¸ç°Ufπ◊kçÄA:-•XÇ¥ÚD‚†<"`W0Ú„—e3ãúN—ˆfiŒÙ/¡i5˙ƒ`⁄9Ì˙óR/ib¸Øˇˇ˛F…ˇÍ@D‘pÂ* –.AÖhˇ˚0ƒ'Ä Î}¶)K∞Ê≠pıï6»A∆ŪiÚq¶∞˛l˚Úlˇ§$Æ∫xêÙoˇoàxfl˝yE BŒòaròU!+.cåüø]°“ë5çÓ9cÍ ™£‘t˚≥?ü≥Ü¡J$Æö O˝O˘Vˇˇ4¬™K*äF–Ò<D≤Ål≠°£Bêà +>fv}˙#ˇ˚2ƒ-Ä|´a¨-IÄÔù.¥≈ùvâü≠üÍ‚8ò%+’ˇ(-(fl¸°u~•∫øˇˇ¸uÄŸ^π’kåÑ‚5±wÆå∞õóöÉ"8‡–¡ fÆÍPN|ظB,¡¬Ê∫΂‚Rü :˝E˛Øˇˇˇ Ç¢)†=ÂåÈ– @gËdË∫y*üyÒøÂú˝Ù©)HhP!∆ ÷ˇ˚2ƒ5Ä`ÈyßùK∞Ù™eß¡(ı˘«8ˇ¸ÊVÂ_'ˇÈÖ„^π’llæÑdÓ5ß)˙‡úܺÆî&≈”[à(è´2ˆz∆�•Çáu}∏å:Pø∑ÂD'Â4ˇ˘XUqÌ•v∏�…êôó#ÀîUå±hKçŒT}D‘ÑëéÃ+Sfi˘ ‡àKÄYµzv(:q—ë'töee/æˇ˚0ƒ=Äp©uß≠I∞Ïï.¥ˆ©6ekpı}L·q{œ’§ +ï8D•—>£flQã’1˙<5˛ëên*Ǣ©W£Ëqy˛ç&Âtˇ˙ÄE˜\^Ô�b∂JvÊ∆°⁄©ê\ãÈ“*©ñπìx÷Ã\…˝w˘ÃF πÔ◊JóÛ¥∑Â4ˇ˙ÍÖG›’¨∞�‡_¡åkó\·jˇ˚2ƒEÄàùußΩIpÙ+uá©0∆:±S€b$_îÀRflƒ§Füçwù˝b8¥5›‘ºØ›K˚ˇdÚÓëˇÙ0˘èÔ1íŒË^∂å¥f%∫%H3ˆ'«Í5اr”?_ÂcبNˇWWˇ≠K(ç¯ÓG€˝U@≥∫Q$åµ0 …Rë¶+EK°∑ -fi¬z£,pq +÷º∑'õˇ˚2ƒLÄGDùsßΩIpÈ-Ù˜ù6öa3K¡øz7WWˆ˝pó´#ˇÎ�`VŸaƨæOÍî«ïAKs$Œ+OÙV…‘'éBhñj∂m$tø\çSo8–¿D0U•Nî⁄≤ø÷Éw!5^æb̆U‡€d'H ≠ÿHN3‹‘“Ö¡p∂wƒ∆¢∫ÀaàzÒ¥•fimÎ gɶˇ’ä∑ôOZàˇ˚2ƒV�G ùiߺÈpÏ™5ó©(ü•QîuE∂á∏ìC$födö¢x1ç√J%1D»M˚âfiÊÓæ%aÛ”ÙÅ(fiŸyfi™Uºfl’‚'ó�2÷Ωa?‡NËf`Bd°lÕØN†∞î#G]åô'±°“”ÕC[flMç*Wúè·Ëïèı◊Æt˜ø¸∑∫¢GH�‡Ú∏°aˇ˚0ƒ`�Gx≥iߺÈ∞Ȩ٘©. ’ø} õàuqpvÀâDpñV)&¶1ûÒÊ'ߺ(@_æ÷≠KyüÍC© Lq@§Ä4¥@‰⁄¬5+˛™r«ib ëÚ0ZaÊzºªP¢ÖÁ‰ÜòŒfi±$ G˙-Êfl˘^⁄ê,%¶PK∂¿C©ºgJ∞®µ»-Í€¸Å_<4ñb&dîµ}ˇ˚2ƒhÄêõQ≠=©@™u•ù*ã∆âTÆqæˆˇ†d∂˙oº∑ø˜ãªø[ëÙZ †ÃuA#hqNƒTDÙŸ∑ “ùá)Ü2ãkëfYıoY»„í±˛êP% áŸ2˜t-‘œ˘o´ˇ@Ç3√¥Ω' ˆ≥îîÑæÃËA|{7·.¯Å®Ãª„ì6â Œgñiø¶à~3ˇ˚2ƒqÄhõQ≠=IPÒìkuáù**v“MÈ_/ åp¡$�*^gÀ¡ä&˝⁄fÖ∞‚Öq¥f˜"ŸNöÈ(èsì‚øÁp\AcÉ˙µ©‘Îñ� PÌ”jZ(�&YtHdïe2I∂q¬m)◊zÕg{IKŒqÆh≥èo0H;Ä‚%D—ˇkÛçîÙ*�0Fπ`ˆ¿©Qˇ˚2ƒyÄGTõW¨0ÈpÂËıߥ‡ƒäòQZ':ú/@`≈ÙºUALÏOü ‘§œ(JS]HÍÙêG¢ +˙´s*;Ô†�√√í@2˘<:�: )~‰@Ë: ]3ÿ¢>≈∂6g:y¨3◊V{„˛rêÄ‹áØ#©ÙØ´˙?ı’�3/�πÒëËôyx†@–ƒ˙Ö9@‘?òˇ˚0ƒÉÄG oO¨ΩgËèh5∑µ(nK≥O∏‹’z $ ÂjvoÕM∆0í.w∑SÂ=��´,?øÄ%Ifimr�цùn∞ˆ⁄°∏Éj5ˆØ¡›+ºw%∞™Ê__)Hú%Ïè*EÚ9fl~≠tˇ]JVÄÅ«∂_ôE8-∞∫£AáDÃÊBÖ3MNÇJÖo÷≠Q÷Ɉ2[ˇ˚2ƒç�xaE≠Ωß�ÌãÈu󨂩{S´+ÉV˛Lâ1™NíÔ§Ã˝j¶q–…I6òL#aèKv1w\,ÕÆ{#ø.yKflÏÊé)U≠ÊŒcØ…V'ÅÏ2£µ∑≥æÜÙ* "åqg¿YÄü'£2ÉÎ/}Hñq6¥Ÿ^ï.sÀJ∞5%Âú˙7¥KB»0ı=öfl÷@Ç=|„¿ˇ˚2ƒï�L_9-ÊG� ®µß®‡Í;9á|É2∫:F∏Ã^<x¿psH¬Ó◊8˜ÄÃ≈ÁÍÆg˛2)¢�KneÔi=˛å•�0Œπqˇ¿*VPe5‹«-™@)ãI‹cÌzÁºÜ.[ú¬Ë!ë2îª˙∆ ê/!ŒHøs‰Jj˝dQí∂l1nÜ(§s#{`&„°˙cµ•º≤ÆÚˇ˚2ƒùÄGòc0ÆjG�ÏÊÂû‡J£“1a∏…‡USZiÎF¡≠ª·ø!´ëVœˇ“ 0˜æaµ�yÅù3∆\JeıRR1¥®ôFi\vƒj\ª6yÅ¥Egù1◊˚1ö∏~2ÌÀ¢…°^ËëÄ!MÔPï+V∑≠π>y5Ü54•õ*≥ä∏”öY¡•S-#€“.≈PVmUˇ˚0ƒ•Ä|_KåΩG0Á(µú,‡f°7Œ°π`‡´ùu îë¡$ëÅUÅÁÄÜe©5°9#“¶áÙ´É'\ÏàrRH"4˙ÔÎäDHÑM«íÜWfi}_GOÔˇ˙�T[bCÄOïA∆d#!«IàÃï4È=A«¥è;Ç-∫˙fl¨Ê¥[5±fl_˚q&íöYëCú›9J"FÊ⁄ˇ˚2ƒ≤�,aC≠=G�Ê)ıáúÊ◊uÅÅï·;Nx<G1£Zkev’◊>0&0Z‘„Œ™¥˙kÂóÌh†¢‘ ÌÏˇˇËCV°ªt√mÄ¢ãõ8Ç¡–B–^˝@"\ûü’4jò©+wõ±3ÅUmDfø‰!¡X\ÇÓZÆ<ßπÚ…Ë—®]aEn€UlçÅr¯ ‘$£fiJ åˇ˚2ƒºÄ8_C≠ag Úå(iß®‚ɻ§RÂVƒ°�§‰6¿ +E◊EYÅd|“˜>Ùõ]œQ^Ê[ËÒø@›©qRÅäY€F8ħB6�σè©>Fún˛ÀÎzÁZÑFVµ“g´Ê Ñ�sMáïV¶⁄˚¶Í˝ ˚Ï≠F+ˇ>@)ñâƒëç +≤£¿ûíÛ±· +€kAwà,ˇ˚0ƒ≈�Gà_G¨ΩG‰Á5¨,‡‰∞)%„LÂoHå'ï6%ÄŒt‹Ï®„Ω˛ƒW´]∂œhZ·ÎXœÙVLrUÑı—π\ÃKi‚ûʗMıúB·L°Ç°$ó2∑“Ôˇˇ˛ï*�0k∑a¥`q6¡îê‡6k™Ç¬¸ƒSá5«ñ[r<¢Àßÿ9G=◊oπˇú¨jˇ˚2ƒÕÄú_YßΩG0Ûå'µß®‡•Úll∞”dµ,„¥"ÍÄEù∏Ì@]Y™ ä¢ÔkvUY�y#Õ”K3"YìWŒŸØC¶bÙcgÒE‚eN•‡A¨Y‚ÉV4J˜ıˇˇ˙Í�”.—ÏmaY4Œu†√à +†Ø¸“œô +AûDÒ≤˘¸¶_ÎÛó‹Å6ÑYµ◊SˇyH¿âYJΡ˚2ƒ‘Ć_WßΩG0ÛÂôÃ4‡Lπc¨R +µ"€‹œŸ%˛üG˙Ä0„‘}¨�Zäè‹YlOæ+Àb¯≈jSŸ)ıc¢.3sXr≠R?˘‡¿§ÂA±1$ö£ÜÑ áÖ$û+„™ ∞”éo»DeëÔPU¥ÛEQgÍ7fl{[‘1Ü“˘∫Õ�°„ªúµ7Ÿ¡@ï�t¯D@� ê,ˇ˚2ƒ€Ä|aA-=G0Ì+4˜®Ê0T0àÒ dœ⁄ØˇˇÚ‡Aì!�@ŒÑßùN&sTY_”Ö\ÿÀ})JÃ(2h◊.j∫xyògS1œ˙òT'LÈ@(tUË*{»ˆÙ+ÔÌıSˇE�∞õ≤¡j@2î¿Ÿ‡4Àr^ô”Öp‘Sà∆êΩ∂`Ç∏ÂÜ]t¶)è<Ì”ˇÈMHåçˇ˚0ƒ„Ä»a;≠=g!'uߨ‰W¨ŸA©H±Ù;|ã󗡽`ñZ5sJ.mn/3f∞^ö Ct…ÜßÍs¨◊fir„Î4ÎüÛçÉê «qiC⁄…¢\≤‚’˝jôà— eÃ?GA + +∏Ù§¿/È¢»Ã:åÔYXdµ7ZgÅ∫ˇnÈs?‚≈d• RƒB°ˇ˚2ƒÊÄËo3≠·gÁ5߆‡ÄY,*÷áÇm8í>’;vP^ˇ©}®]ô@´N<—)e*2˙?;�<≈~ÿ1ò©jÎu5è=æˆo}ˇª F +'Fí %«è�„W1Kß∂;M!√$Ç«cdf,"Ñâ7ᇢ$òÅ´%¬¨/üÒÎÌ≠|_sUæh"l>∫∫~º©2m>¶ˇ˚2ƒÊÄl_?åºÁ1!•)º¨‡ù,˚®-[#@,ÃFâC"0√ï°4–—�D0øQ”#œ”¢®éflπ¿¶/˝õ~=óö˝l$'¶»≈«ë7fiÕk–‚® Û,Wı3›±vfiÔ˙’ÓK` RÖ™*ã6j’⁄–Lx∆ä·XÉ∂•E¬]Àπ¥YH<ÚIÙF9ûîV≤ˇ˚2ƒ‰ÄHLi5≠=g ¸¶µß°,µ§ì{ˇŸ“a∆€´ŸÍÿ5RL•gybÌb 4"ßàTòF^∆ÛiÃoœ˝—@ò®.%Jƒäã/jÈ≠ì6mÃflˇˇ≠4�KPN~lÜVähq'JÇƨ°w‡ΩÔ±-oÁSDD|€è¿Ò(∆N\¡�–!�yF™©j–œˇ˚0ƒÁÄ `i)M·g�˛å%©∑¨‡‹î5˚«õˆ◊“(Pç�ï/SË+1ÅÜ›OΩl™V ¿«©#Ü„’Η^ı;=4꯿Yeªêƒã’§[R(8N'˝?€VÛE)ù´� ∑˜!íÒÊñ∑î'{`◊Sì:πÒkˇ[Î)ß®K·{Ê0î(√T êDâFãVˇ˚2ƒÂÄîqKß≠iq*ê•)∑°(HʆŒ˚øÍË�¥“ç«ÏmQLæO*S⁄A5󆑌çMBπ„åœ≤!à´è{ø~–· –Ú…‘ +≈≈àÕ2‰ä÷≠9T)NˇPÕ}Í•Î *iLπ÷[ñ€<ÿ]“ áÁ úkrOœ›(P„∫ÎY¶ö£�÷N∞Åûó(ìosˇ˚2ƒÂÄ|ô1M-IAé&u£°(“Tx∞ rˆ~èÓ“!§‹∑X“„~p‹á‚ a5e÷Û%´ƒ,|2Oç]fiçUt∆\(ÎÖ`®ƒ¸2ç˯¿\6D˝¶O•Í{]K?˛Ô’Û +§∆HS´aÕ+ì4ófi~∫›‚\Ñ’RIfi∞ÔÜ3ÓÓ;Îı˝îH çä¡6Q“›÷9≠d"’ˇ˚2ƒÈĺg$Ì·G艛∂°(t\˘%l{˜%Uhö@ ÷,äQÖ«(~iEDÇ î‰ù‡F;Á˝˛cò‰•èœxt±å…≤¡Êä8Î e…£ÁÚk‰fi•‘ñÒZ�iO…ã—qʶc–%onfi^RˆÓ49˝”÷ÈVfiͨeUB‡Z\T& + yœ!b∞H”J˚eÕ*ˇ˚0ƒË� a-Ma# Ê5ó¨‡Á:|:‘)›©KÈYÀ +UR?{1ÜdR…\=ÇÈ êmŒW¥GÛ:˝5甯ëY2Nûàm"≥jJÀH Då&y¶ºUÏÑ\Ω_ˇu˙™"[q«´ ìeíW,ÑÓä≥B‹›‹’¶{ßÎÁ˚?˜í«•®‰Q®¸˝[R¶‹µÔ;c'VÔ˛ˇ˚2ƒÊÄ<_&Õ·G &5󨇡±íIZ� §�◊@=oî™j�^xøAœ>|Í≠˝Ã‹+‘+‹üv∂ÆÄEÉe–a‚¬F0+yfi¡v\–Ç™|π•íË`çÌM +•Æª[Gås’ƒñn0˝«_â +ôfI÷∫›-CÎB&G0BTs"Ç9∏¬@p;?eU%6mπO˙ˇ¯ˇ˚2ƒÁ�@y&Ì≠ Adâ≥)(@†'ú–òÅ—∑ï©MøT%AåAÜóRGàuùS5p£∫„e:KU9CrO¶ıwNÁ^{ÓÌ‚Z¯¯ÓØ/&Ò∑!πÄÉ7Ɖ®„'ô@Ú +I@»e=éDmaTäÖ‘Í)ÅdòÃyGÍ£hÖ;„|Ê00‘bPËÓœuqì%D¬X)ÄäPµ˝¬™ˇ˚0ƒÈÄ¿_"M‡Á eiî-(Ö9?ŸM&ÄÜû/FD"NKcéÌ�XL°z|°IÔÒ¨ªø}v! ã$h2ÿ“<™ÏÜQÏx“l®aeN÷8é+ÉCb6÷Y�Xx}hã*(†�¢e[‡—˚ŸZ2@X†≤UÆ y}æc’ŸPÓ+=Çcö«W’L. eoñ∆ òƒz]±Vˇ˚2ƒË�†£3¨° aå$I߆‡"⁄Ó∫`Âeœ§)D@\QskH ”ñ◊áã¡;#1«zk;W˝Ó’„~C˜A·ÙÒÆ“sÉ+PeF‹äF$5j««Rˆ zUEtªj<úù0/∞¸ÏIZ—ü´�rD‘UveÕíô)Óf≠Ÿfiƒ≠åP≈D#\z£Ñ:5e7n—V’ˆæZ√¿Ì3ˡ˚2ƒÍ�∏u/LúiA*ï‰ µ°0—ì-çü'≠¶¸+AnQ ≤·9HØ𻻣l≈œK<!≤Ê™lA©Æ01ñâP§XRNÄÖZ≤ˆ%$˛9Ï≠ùKY-[#ï&â≈(í©OT{‡ tπbEÕñ∂ˇ#A≠TØq¢få†å;√ŒWbÊ**)5æ{vUkòù6fli„qmˇ˚2ƒÈÉH,"M†©Aèd§ï(‰ÓoNó˘¡üÍé—©S(‚’1a^ +L^Ë¿°è”qÔãn.3áŒÍgv˚+-êZ=NØ 4@∫,•ËˇæÙ≈≠ö +7#ˇós0:®ø˝ÿÕ9*�hƒâd’G(v$TWdÉ`ÿ¨›ê‘õ=v»¸ ò©{ÿP6ãc0Ä2Dͬ«pX&í$vã +3Ìœ ˇ˚0ƒÈÇx"m ©Aç‰ù¶ò‡d£©£¨�Q6‰Dò6R¨hçÏ$9¿√!;˛ê¯˘ª·µxwïP3jìÆCÜ—TD"ÿ¥®áhüÍi⁄d/•€_Uî◊¡πüµ#ÿL*H΃áãí˜l∂¢˜9H•<iŸ>›xQÿäÁÚ<9°Ì)¨Su)v}O¢πx´‰�Qπ‚ˇ˚2ƒÈ¨m -@ߡèdô° (k˜Ωʱ~bKìª`S«lmq€"Ìew9u◊�rflÿøëdq‚)∂Tfl1éR#Ó‰a ç• +(‰ÄB'õÄÆK«bœˇO˜)�©T»¯±AuŸîπX¿D¯DhI˜“flV– ÀP|ã4=¡ËI »∏F^‹É>`"C¸kgS¨Õ\;Kªˇ˚2ƒÍHÙ] ºg $ßà·M˙ÊO]˙ñÆ”áÍS2ÇNíKòjs)’®Âz“Z|÷œò�∏ÄgÅ�fTXpùö°Aß% =¢ka•,ø◊Efi }T*�� â µA‹QsôFÙ‡ƒw]Û1˜æÚOU€Buxµ√]y˛∑)Ó&ªí4"0¢ñ!§âGêHø¯†˜Xˇ˚2ƒËįk&Ï¥GêÂ)ì (πã¨kñ¡Vcg.Ç�fiöñ‹ÍÄ1ÉF∞uYÙw¥WÎLwlY¬flaaÀH7∞∞“R¸Ö†zã +÷TRˆWù¯Ç=é;=}]Ôõ[Ô]Û’R�äjC·0„!ºÊÁ/±∂^F;Le{ø·˘ldÇE[fiΩØ≥v8B¨d¿å∞Ûö—AéeCññ◊°˜Iˇ˚0ƒÎ� ∑ ià˝ê•ÈÅç(=àò≠U„»$ÛΩAıùSÄH\¡ÀÓ~jl*,Éiá7L:p8úNå>+ÀVäÚéÆΩáQ¿ÒÁÊ—…¢∫Î~îÔ˝≠¬•}˝ßü’ütNa`óK(’8˙{*Ø4˚√ÀÍ∞î≥2 ≠b¢ë√t2Ö¡ˇ+±:ò*©èV∆§YbÆS∏+Z≠>ˇ˚2ƒÍÇ ì- iHÏ ‰ŸÜå‡~˝à¡⁄ó»w˙„�∆àÍ2I/MºÕÑ Ï∞¢Á¥¥≈t(-˝cN2 +8P£B*dÛ·2W<N¬Ê–Ú√Äèr◊oÎÁVe”©�%$H0Zl#ûnwπn¶r∞;"]_C3®ÅIô‚∏ËG[n7 4˜<´gË!<•∫L\- ëVzmøˇ˚2ƒÏÇ‹É#Lò…A! „≈ñ·∞˚õ≈⁄¿*v¿qV°.∂6–j,°√„£WvÒÄ˚≤&zV˙≥…Í|±ÕÕ√;ˇn›Ø„u|œØ∞⁄w∏5Ñô*∞8Ûã€Æa∆˚q´;ˇ~≥ +¶‹∂ÌtdÅÚœûflÀ|r/»swÜܢæÖ®dÇ≥¥tKΡ‡íÜgh[òJ^˚ˇ˚2ƒËÉHá LòiAc≈•å·˝ø†�%R¬2 fl©]∂áîÑEå62)…rç)Vgub· ÃËf ìõ!E 6Œ!¨DN•LÚ√MÁ∑*pÈsÃfiflı€ı’Öˇfl™�)"4g0˜ +µzÑ√4∑WÅóQ +”*N0 ÑhÜò7Nã@ÇÀ'±wã7Mtj∆=äPõˇ˚0ƒÈɨW <g +磅á凱u�uÎç0ìjDcía(j—ßNÉ©Õâ@€Ê™[se8Lr#£^∂l‚*tË–)pô,ëÌ∂ÑXg—æ7∫em‹Wv2ÿ}ÚyüÓîÓ◊™ó7aôX<∂=]0$VX…öäÿ@‰”˙F≠®™åy∆r4 ·8‹6bˆ‘}ñ(·5m˙c?˛⁄¡Ææˇ˚2ƒÈ("Ï…A,îcEëô+˛ˇåÇ?ˇïqÖ5n� ,íh•Ü·Ä‹uK‚π .}b.∏<»=n:†¨.E¬a…AF®√Gá®h˝flµHÛ©ø˚.¢fi∫ìæárj≥!Ä1r«B¬rd.m∫a©≈XZw +``NÍ17(" h&Sus>ë!QÃåÚCØíjñS}^˛ˇ˚2ƒÊÄÅ7ßåia/cI§ +∏Ô\◊©˜o[ÿ˙#ZîOEä·íbÜ–*úwP_ɶ√Ωº¯÷ÓT⁄ƒªÄgâì‘‘æhT˘Ü8†jrPbÍR÷Ù9”m/C6Œ]3�âË$^àVîJÂBD¬òÃaWòπä3t’§ã4íêz∏™Ä@◊4UÅQQ`(d‚ŒÇ`ZSRˇ˚2ƒË¿["Ï gcAîç)+Òñµ„÷ìéèÎÑsÀ3¨¸U[‘/πÑ˙wFÈ/ô¶ñœ†K…Ø0≥ëJ¥∞÷!ØÓdoô°ÉÏÔaD√ØB@ÑŒ≤√í*qu;su™â”êA§H•∞ jGd—e–@k•tB» cíyRäª0ó,VJϯËû9rôgˆHf§Ø ~òu°ˇ˚0ƒÈ�§W§«·ådËÙ‡h0.á�ûc“ŸJSö…¨Ø•ób≥d∞¶ ±!tqQmàȯ!0톷É"vóÍ√CÊÙfiV™Z∫Ö_fi<ó}è˝}°øzõö◊j¶Ang3t∞d…πÂaŒZ^!L:ÛÒfi{ΩZWô_ıcö�`ópgÏw}íæüwGÛ›~佡˚2ƒÌÉâ¥ù§iI#Iîò‚=Í/nÍü<fi€æˇ˛�Çå£l∑Ö°ã÷ûé†fl¯®\ J.ôî‡1ì\cX{EEF±gM±œè”ˆß“ˆ˝{ùUç® Üø1∑u£CÃÅ«Õ[ML¬!Æ(N#Êó$°Öóe3«∞é{%û$§`´0ê°$‹AöKn∏Ä{h¢ùL≤®û∆îˇ˚2ƒÍÉH‡sLòiAï£Ñç0<≈ÃËbfê©~†´¬¸±�í PF®9 x©††≤3⁄ “ÂØê}ŸH†ÅÁ&ú·É… +ÑÎ,≠≠Óäkéÿæ≥≠ãæÒä��àÒ*aâ}õ4ÚÁÇ!µPòñ’#•–j}éÃ8Ä∞j%‹√Fr3{ôPj©ªwãï.ú(€ÈM˝\˝æ4ˇ˚0ƒË»‡øiÅ#É )ñÍù ›Éá;YøSo"∆€¡Ñ≠Ü˚G‡@“#qR—@LrGÀŒ‰NIP˜ Ó^ÀµH&‰Kؘ[O‹fiºÕÓü±EÃÚ4⁄vµ{e™�Ç °Û¿%QñxØ`¥††™ÉŸ√1µBƒŸhiU÷4¢Ê≈üè<Ö\uZã:™Åƒ⁄8z«ˇ˚2ƒÊ�$]$«÷e(Òå‡4cíC~hë€nH‰ç)ò· +£§tHÎ=ÕW}¥S!xAQÜFVBDã,‹ëâUı6!˛Î‚ú™‡5‹ˇÈ=<l+ËÔ˝[ñêú?oj≥lÁn�¢{ÅaCZãÙ”ÊVF£Ø–b8ú—˙l∆…X�.;úèˆm˘˝πÔfi˜Ú”◊˝‚p\ûˇ˚2ƒÓÅ +î—§kàÁc‹Ù‡o⁄æøˇY37�fòhgLâjD,dË≤–F áñò§d•≈d %º{-∑_}Ó%g“€" +◊÷Auç·€≥÷w'≤∂_"4´]€˜Û‘«|›∆u»P#∂bsÚÀ≤Õúûôû‡ã.n˜5 dfbÆoìÓy“u$£[U÷¬¶kŸpe.Õ,´çˇ˚2ƒÎ |yL$iYÜ„LÙåôÀí∂¸øLfiØ≈»o8��¢NL9ä≈@l£ã ≥ÃÓ¥è2Kí'äM3{ª§dM3rOß≥W‚˙¸ n߈ôˇÙ≠∂”ø‘7ôo€˜�RÉ⁄ ÆÈG‡©óP6:ë±®"¯dí°Kµˆ1B(#€a˜ˆ5πp∑F»«I⁄å%≠ˇ˚0ƒË∏]gòg$bEÜ +µ[<IßÒåÀp "ÕB]´D∂í®%B˛Åñ&Ãz>’œ& Mç…ÜE)Rôf∂X„ô}≥=›•Lõ—ÂX˜>m¨≠€Ö†LIÄ4��ƒg°ÑvÚÏÇ&-Rt ô'atcûù&ض¨;r‚ÏÊı}ïƒ˛xèêt¨Ûªu—µˇ…ˇıˇ˚2ƒË‰+g§ƒâç¢@Ùò·Oïn⁄∏›Òy{pI* +�ÇS¢]¡¥áÄÿ2n +ó*æB—øgny®»o`ÎhüóÕœ‘˝›ˆ9œ∂XªıŒ°ì)ΩOä˚¨∫* 2�à≈‹¸¯&8��� �∫¸≤'⁄Å˘≈≤ÅˇZx +�{,WDˇ∫(‹˘Èl2mëà◊¬˙ˇ˚2ƒÈ‘ÉGòiI!båÙ 1◊`#}~&" +ÖB°P®T)°•ÎUDâ +ôå˜i˘ü:—ççò¬®RR"òuR/¥Ôr-Mã‰Âȵã™ÖU?˙*¢∑'∑,ä\��“œfTõ~/ú»Ù?%Œs™àJêË‘°u≥ÌÀÑõ2C°rÑb)x π£ªfà ]vG+Öõ⁄ˇ˚2ƒÂɉ'fdÅO!!¡Ñçq˙ÜÏtóÆ*ñ$:kÊ∑±–åÑ—ôªÁ±Ÿh˙5(lrõjÀ∫*’§˘£Xu(ès-ñò®·ª$ƒ-õæU¡cí;´∆'ENˆ/] Ä�5ÍÕdE£)sXåk≤§⁄òw0¬4çÚıí>ƒq≤#&Ú7®TH!kN£VåUé Õ]c(ˇ˚0ƒËX?F$ƒ»˚„dåôìî +a…2F∆3Xj∞ˇ’ òÕ˘¶2î≥e)KˇZÛ3û™â%[˚WüÿÈ√âJ™π¿¿$çE©â%UΩ™frMôó ˇ˘öÛÍâ%fifXïLAME3.99.5™™™™™™™™™™™™™�I�¿¡G#5ÜF_ˇÃåå»Àˇ/ˇˇˇÀ,≤…ZÀˇ˚2ƒÍÄú/ƒd…öa@ëçqÇk,ttÃöÀ–’î9 X(`°C‡ò'ÍULAME3.99.5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˇ˚2ƒËÄ»Ÿ!åkŧ Ä° pUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˇ˚2ƒÁÄ»Q#£Ñk¡°flÄ1qUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˇ˚0ƒ€É«ƒÙêAÑkÄ��4Ä��UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU \ No newline at end of file diff --git a/resources/media/callend.ogg b/resources/media/callend.ogg new file mode 100644 index 0000000000000000000000000000000000000000..927ce1f6340a6d9c65bcb03d244b6c3346060443 --- /dev/null +++ b/resources/media/callend.ogg @@ -0,0 +1,79 @@ +OggS���������l•É‹����biÚ¡vorbis����D¨������Ī������∏OggS����������l•É‹���u‡Tnˇˇˇˇˇˇˇˇˇˇˇˇˇ2vorbis ���Lavf55.48.100������encoder=Lavc55.69.100 libvorbis���title=AnnounceEnd+���artist=FoolBoy MediavorbisBCV���cT)FôR“Jâsî1FôbíJâ•ÑBHùsS©9◊úk¨πµ ÑSP)ôRéRicê)ôRKI%t:'ùc[I¡÷òkãA∂Ñ öRL)ƒîRäBSå)≈îRJB%t:ÊSéJ(A∏ús´µññcã©tíJÁ$dLBH)ÖíJ•SNBH5ñ÷R)sRRjAË ÑB∂ Ñ Ç–êU���¿@≤ +�P��ä°äÑܨ�2��†(é‚(é#9ícI≤ +�����¿pIë…±$K“,K”DQU}’6UUˆu]◊u]◊u 4d���@Hßô• ¬d Y� ���F(¬BCV����b(9à&¥Ê|séÉf9h*≈Êtp"’ÊIn*ÊÊúsŒ9'õs∆8Áúsärf1h&¥ÊúsÉf)h&¥ÊúsûƒÊAk™¥Êús∆9ßÉqFÁúsö¥ÊAj6÷Êús¥¶9j.≈Êús"ÂÊIm.’ÊúsŒ9ÁúsŒ9Áús™ßspN8Áús¢ˆÊZnBÁús>ß{sB8ÁúsŒ9ÁúsŒ9ÁúsÇ–êU����A6Üqß Hü£ÅEài»§›£√$hr +©G££ëRÍ îT∆I)ù 4d����!ÑRH!ÖRH!ÖRà!Üb»)ßúÇ +*©§¢ä2 ,≥Ã2À,≥Ã2Î∞≥Œ:Ï0ƒC≠¥KMµ’Xc≠πÁúk“Zi≠µ÷J)•îRJ) Y�Ä��dêAF!ÖRà!¶úr )®†BCV�Ä�����<…sDGtDGtDGtDGtD«s<GîDIîDI¥LÀ‘LOU’ï][÷e›ˆmav›˜ufl˜u„◊ÖaYñeYñeYñeYñeYñeYÇ–êU����ÄB!ÖRH!•cÃ1Á†ìPB 4d��� ���¿Q≈q$Gr$…í,Iì4K≥<Õ”<MÙDQM”TEWtE›¥EŸîM◊tMŸtUYµ]Y∂mŸ÷m_ñmfl˜}fl˜}fl˜}fl˜}fl˜u Y�H��ËHé§Hä§Hé„8í$°!´�����(ä£8é„Hí$Iñ§IûÂY¢fj¶gz™®°!´��@�������(ö‚)¶‚)¢‚9¢#J¢eZ¢¶jÆ(õ≤Î∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫.≤ +�ê��–ë…ëIëIë…BCV�2���p«ê…±,K”<Õ”<MÙDOÙLO]—BCV�Ä�������0$√R,Gs4IîTKµTMµTKUOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU5M”4M 4d%���¿bç¡Â !%%Âfi¬ìû1&!µ^!ëífi1Éû2¢rfiB„É Y�D��∆ «s»9G©ì9Á®tîÁ•éRg)≈òbÕ(ïÿR¨çséRG≠£îb,-vîRç©∆����,ÑBCV�Q��Ñ1H)§bå9ßúCå)ÁòsÜ1Êsé9Á†tR*ÁútNJƒsé9ßúsR:'ïsNJ'°��Ä��Ä�°–ê@ú�ÄAí<OÚ4Qî4OESt]Q4]◊Ú<’ÙLSU=—TUSUmŸTUYñ<œ4=”TUœ4U’TUY6UUñEU’m”uu€tU›ñm€˜][vQUm›T]€7U◊ˆ]Ÿˆ}Y÷ucÚ<UıL”u=”te’um[u]]˜LSñM◊ïe”um€ïe]weŸ˜5”t]”UeŸt]ŸveW∑]Yˆ}”uÖflïe_WeYv]˜Ö[◊ïÂt]›WeW7VYˆ}[◊Ö·÷uaô<OU=”t]œ4]Wu]_W]◊÷5”îe”umŸT]YveŸ˜]W÷uœ4eŸt]€6]Wñ]Yˆ}Wñu›t]_WeY¯UWˆuY◊ï·÷m·7]◊˜UYˆÖWñu·÷uaπu]>Uı}SvÖ·tefl◊ÖflYn]8ñ—u}aïm·XeY9~·Xñ›˜ïet]_XmŸVYÜ_¯ùˆ}„xu]n›ÁÃ∫Ô«Ô§˚ ”’mcô}›Yf_wé·:ø„©™ØõÆ+ß,øÌÎ∆≥˚æ≤åÆÎ˚™,ø*€¬±ÎæÛ¸æ∞,£Ï˙¬jÀ¬∞⁄∂1‹æn,øpÀkÎ 1ÎæQ∂u|_x +√Ûtu]yf]«ˆut„G8~ ��Ä�Ä� @°!+Ä8�è$â¢dY¢(Yñ(ä¶Ë∫¢h∫Ƨi¶©iûiZögö¶i™≤)öÆ,iöiZûföößô¶höÆkö¶¨ä¶)À¶j ≤iö≤Ï∫≤mªÆl€¢i ≤iö≤lö¶,ª≤´€ÆÏÍ∫§Y¶©yûijûgö¶j ≤iöÆ´yûjzûh™û(™™j™™≠™™,[ûgööË©¶'ä™j™¶≠ö™*À¶™⁄≤i™∂l™™mª™Ï˙≤mÎ∫i™≤m™¶-õ™j€ÆÏÍ≤,€∫/iöijûgööÁô¶iö≤lö™+[ûßöû(™™Êâ¶j™™,õ¶™ ñÁô™'ä™Íâûkö™*À¶j⁄™iö∂l™™-õ¶*ÀÆm˚æÎ ≤n™™lõ™jζj ≤lÀæÔ ™Óä¶)À¶™⁄≤i™≤-€≤ÔÀ≤¨˚¢i ≤i™≤m™™.À≤m≥l˚∫hö≤m™¶-õ™*€≤-˚∫,€∫Ô Æo´™¨Î≤-˚∫Ó˙ÆpÎ∫0º≤l˚™¨˙∫+€∫oÎ2€ˆ}D”îeS5m€TUYveŸˆe€ˆ}—4m[UU[6M’∂eYˆ}Y∂ma4MŸ6UU÷M’¥mYñma∂e·veŸ∑e[ˆu◊ïu_◊}„◊e›Ê∫≤ÌÀ≤≠˚™´˙∂Ó˚¬pÎÆ +��p��0°≤�à��åaå1çRŒ9°Q 9Á dŒA!ïÃ9!îí9°îî2Á îíR°îîZ!îîRk��8��ÿ†)±8@°!+ÄT��É„XñÁô¢j⁄≤cIû'䙩™∂ÌHñÁâ¢i™™m[û'䶩™ÆÎÎöÁâ¢i™™ÎÍ∫hö¶©™ÆÎ∫∫.ö¢©™™Î∫≤Æõ¶™™Æ+ª≤Ïζ™™™Î Æ,˚¬™∫Æ+À≤mά∞™ÆÎ ≤l€∂o‹∫ÆÎæÔ˚¬ë≠Î∫.¸¬1G�‡ �@6¨épR4Xh»J� �Ä0!ÉB!ÑêRJ!•î��0‡��`B(4dE�'��C)§îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRH)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ©§îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)ïRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îR +�êäp�êz0°≤�H��åQJ)∆úÉ1Êc–I()bÃ9∆îíRÂÑRi-∑ 9!§‘RmôsRZã1Ê3Á§§[Õ9áRRã±ÊökÓ§¥VkÆ5ÁZZ´5◊úsÕπ¥kÆ9◊úsÀ1◊úsŒ9ÁsŒ9ÁúsŒ�‡48�Äÿ∞:¬I—X`°!+ÄT��•sŒ9ËRå9ÁÑ"ÖsŒ9!Tå9ÁtB®sÃ9!Ñê9ÁÑB!s:Ë ÑBÑB°îŒA!ÑJ(!ÑB!Ñ:!ÑB!ÑB!ÑRJ!ÑB °îP��`Å�@Ä ´#úç≤���Äñ†RŒÑAéAè A Q3 BL9—ôbNj3Sê9ùtjAŸ^2��Ä � ¿ (¯Bà1��Aàà ÖU∞¿†Ê¿DÑD�êò†Hª∏Ä.\–≈]BBÇX@ 88·Ü'fiÑú†STÍ ������‡�‡†�""ö´∞∏¿»–ÿ‡Ë������¯��8>ÄààÊ*,.02468:<��������ÄÄÄ�����@���ÄÄOggS��¿≠������l•É‹���Òv¨:#vXW\"seeh maa^!r_bbac^c`^XZ\_^[\bfnquzv|xÉyÄy‘Jìvf—ÆLÔƒçøèœ˙¸ ,Îo››Í9÷Itg%àaÈ∫£æ0€y«¸©˙ŸÏ†å˘QLU䓢]-ÄúH†∫ê~êÑ ›ïXÆ(éÿ:∏OË√Ïd�ö n +íÏ√ˆuõ÷«D©ÌN¯&q2¿ ,�(Ò“��á +;h$ÚÁ[�ã÷† +®Ú¯�D‹ƒec›‹«‚M;ïà÷‘t˘øÁ◊≤$ü”—ùºñ ;]†¡-î �lî¿Ó�úT°ùfiS‡ +�+_$qÂÉ˙9¢gÂ∑˚ H‡î�%6‰P»†=˙Æ�ÄR�±ç∆ Õ�†·Òìú˛ø~$≥4kiPpzù†–Òó<ñP:Ä-`%8÷$P�>;_!±gÉ|å_æ+óÖÏ~?8‡î��∞ ‡9‰P�ò@%�w�W���∞Öç\:�‡ï2∞fl*V>úXò�,ÿ¿6p쯇/�v˚fiy!πß„∑˘õ˜B»Óü«3�Ä.�à∞C@Ö(p–flfi»�õT�pÂÀO>€=m∆∆ˇ´˝~?›G9∫]Dé„Òo√ÄÄ‚ ê‡ßÄÑ[ê�tÌ/S∑&p�†új�QxYÉUËT#WÚñó�tÌØo?5Åp¿¡¨®~:‡ä�ä∏�∞›`ÃVH.≈�щ¯ˆµjÇ»Ø4¸∫ÙÈ?ˇw≠Q´Ñ™Yq„ßÓö≥|„@Ó˛:ÖDâ{Ce@â#vµ9soxêO—ÙqŸj,˙oä¯&q|º/øw«mQ +%Ã�Ó�˚∂�mÄ J∞bmEë@ŒÊ’P��Ë¢¿@ãµµ˙ë'G∂≠jª˛2h‰"◊√∫¶X�ÍÓ0�5ËS��ÄÁò‡^∑ûÍ¿Y9 4�Xoì~_ëfi¨<>flüı_$.÷Æê√’}1��sÄS�ÿW¿Å|@lPqënLL'�88�ØÄ[�†p�Ä�ÔJ˛'�??46e† +ü‡kÅq1Ê‘�Ä«84Œh†Ä±~flA:Gπ~{Ø~¡ëË•S1ë<»ıü�<ß$�ÿV¿¿;‹Ü +N€§Ö�P~Ä≤�p�†@��P≈Ù—Ñ|†Ù˜��`ÆÄ∆ »��U‡Ñ˘˜<(�‡VflπˆŸÊÂÒ«G¸‘€∏Rƒú¥‘ é �∞¡>6! +÷'‡¯“B†�†@¡ó≠^n7\fiaıæÆÆŒÀ{±!���ıÔ3ÿ¯2��ˆ≥Bt�…›8j¿=ÕÆ2ÄE¿ÑÒ∑∑&‹pôY�'¿u>[>9≤q·Õôúll�tÁ·õˇ«K ƒ¬3„[)ÅüÍêßA'úû‚hlÈ«'ˇ“ï@Mé?Á:‘Æà,K®˘Ÿ +˙Êõ ÑΫ0ü_U +ਨ—6á©s™µibÔÔøÏ~k5≈∞�Z?ÄfiØmßıù˚8tYûjêœ�‡í�†aÔµÖh:<ô1h´&�î —G5¿Æü|≠a §∂mÏH∏B~€‹µázS)qö,¬� O�t(�0MÄ�p��^€fibÁx5}¸ı¸èƒ:€Cn“x�/‡∞¡Óa´pÇ˙`*l�â†ö±óÒ<@"Ï%Åh*7óåNh∞� åz≠� À;ġ…Äk¿¬ö‡,�f��˙Ɖ‘^œÀØÔêÀè"#ôT}¯É>I�Èë‡Y��ÄÖÜ›]ÖBQ·öTr�¿∆Öl�`5�P‡�[u†lî•i†�z‚úUX�ÿÿè憖,¿≠Èê‡ �ˆ⁄>a€Ø߈˙Fk˙“fÏ~Rµá˙˝ı|ø�@7phÿõ@(x8¬œ{ÏÎ8RÎ’i3tÄW¥Ë v_mò(∏zË��‰Àg¿ô°€(� +`·l x�|Î/dfi¸wg‡Ö‡⁄Úf†_¿∑¬ÍxÑÔÎsß&ÄF `s÷ö_¥ê!m≥⁄˜∂�dÈ/t‹¸øîùhõZ¸√�ÙF£øΉ_¢m�|›È"œ/± Që –ıÌ·qÂLu◊!æıfi]3t„Q∏Áqw¡r∫m≠-©úà1"=úÛ߆ؕ5P!˙™Ù∏ß5ƒ+?Éífl§ÌÆz¯“ø˛~pNÏAâÜ�ÎqL– R®,øGôÓ·|Âl¶fiàÆûm ¢� +lMi¿Ê°∞¡FÈw»∑ªO´˛�Ågœ5C2‹N�eÄgO�˝H�~ˆJûpp_‡~ª&˝Rá>˙¢oV{G—ÁÌ Ï$Ï˚∂9$°B‡Ñ7LOܯHC?UN�d%â”ì∞�¡˛» �Ä?©‡5˛‡jw¯Ii�º,¿;π¿∏¿ûª∆Âl∆∏∂1=∏÷vlÅÔ°jö@�∞m∞OB)î¸mJ“Ö⁄¨¿Ø0,�Ìä?Ønq�Aˇ€ä�ˆ‡ê ˛ŸLzò�Ôöò¿˘I˛D∑�C�Õ�n�&˛ª÷m[Ê>=ˇ‚—Á∂]õˇcùIœ�h4p�tn∞‹ U@»É‹· +§aƒ@àí�Óu∆-�˚£+�7£9éÒ�˘îH(t– –x�H¿é∞ ∏“-êÄ�>ÃvÛ£Ã≈ZÎÙóÙ≈⁄Ë≥ƒ£flÀ¬G,ÓÉÄS�@�r8ÿ U(Œ„·Ó∞Ø ≤†ƒ���d��PÄäçk•∞g©Œ≠˚�<f@è¡�‡—$�‰‰@—aπ�4fiÀv„3Âëèß√øßm«XÚ1Æ•7,∫ãéÄÕc�†A~Äÿ +åã4`ˆU8�̆�,��†”:A`U``ˇ�†3†g,�ĸ$¿ƒ¶ÔP†L† ûÀˆ˝U6<∫Ì?á¯Ô +ô +?^üŒÍv +Äc�`�´'�;чn´c< +]T√‘AU�Ä��÷z +�fi†‡Å◊çèÄÔ Ë2�PùÄM–h`–�ûÀˆıßL÷\]ÒÙ< ø˜¬FKÇ3¿÷H4∞�ÕÉõ +†@#(����p†·ÙÂhfBÜì 5‡=*fi;£�pqxÄfl�œò‡H`¯µÅ–ÅÊ¥�Z3Å�æÀ.„fÆYRØn∫À=Ëão>è˚G€@�«�Ä8�trSpÊ +ÙõÖ4≤Ç5Ć¢@�J��p¿©Xtt�H^7)»cÄ≠:ê�˛EO�ê¥c<Ω#A%Ë�˛ª◊?≈òãèn∏”˚›m8xºû|¨ç{—X‡�«�@ÉÓ∂ +Ä3–òéó‚|(,�∏ �Ä��(î∫◊ �í˝�w¨∏ ¿KÔù– †>È–sX:x�檫_±πzÙ√i€Ô∞˘P[Ì^ht%ÄÌ�X–V +儈Ü_˚+∆���ÄSqâ<∆L,�$ç◊¡(Œ5¿D�èq†CH ®P�~´ß_u‹®«2Ïπè¯ÔN3ñ««?Â¥Îvãˆc�†A7UzE*A4P]ï†p��� r &�æœ∆£AÄ�Ù˜–'…:�‘4�à H°iò`P�fiöNıwôoƒ’Ì;ÀøgèdŒ�;Å`;�ñ≠*ÄZJ¿”ÜB���@¿ ÄiÀ-u¨3ÅlÄ≥ ߣÆ≠â� ñ¿‡0t≠�°&$t‚∞<` �>ãû˚O9\ä´k“fl,˝ÆäXØœ∂píÖ*êX‡�ê«�¿‡¶*hág¬�7∞˝åņº¢ ��X���0ûg@Ä¿&`Ò'�T° +ÖûE åêMˆ +–x0–>{û∆_Ev!^}πh˝û3¢r∏¿v�∂™PÙYt@5£P��@[¿C√ÊF~{‚pMZpqÎAă&‹Âçâ†YΩ&ù…B≤V�p`z ≤' Å��>k^«Ô‰‚ÍÀâ{Ùª"¢ÚË›⁄b—ïh4∞Ø�7U°¿πíÚlfiRx^���Ø&,˛ú� õÄ• �ÓYă£Õ€ ôç.4¨íHÄ L�>k^ßÔö∂ͱÑKÓ±flµEØœ«j¿N"ÿéÄ√V +º˘ÌƒB°¬a†����às ∏é“≠é�´£p`BôWÃo≤Af∂kê–&†∞<–<�æZûÎwë]®´/'fl’ø˚å†úvãé�±�lU°PE–∫�¿�*⁄A����¥�ÜDÛüÓü(À�6 /0ü∏t˝:¥∂¨ñ¶,@†˚Ea¢uíNÄÈ%�˛Jfiß؉µ^·‘∑flª]D‚qˇ`> ÄÌ�8lU¢9™∞8 +€')Ö���dqÖåN÷Ç�Ñô:صõ;–Õò¬Ï4MKhS∫§†{—ÕC&• ^/∏uX��˛:>ßØ"€äk 'fl~«ë8‹ãD€1�ê öeVI�Ñ$���ËË—é˝ÿ„·ÇÄ)°èı6†O†Øuÿó¥4|(™ۆÈ-¢–qïí/NK/*&ª‡‡y;Ä√ÒÎÚYÄùË:(�t˛*fiÁØ"ç‚∫¬-èflª˝àƒ„u’†@�¡*2+pò}ψ°� + ��ÄÇ<+ Se›«DÄÇ~|Pê∞‚…`.wË∞ÕF!KNöı@Œfi%'€êî ˜s®Ö∂ÔÎ@˘5Òò@ æfié’n≈uπ¯¸ûéƒ<Óf©!ÿX`;�í5å¨Ä<€`9ttÖCaS@��†�çr +÷î@W‘=(�–›çIø'πåR∑m®`ÿyŸ•$w»•h⁄ëÒ‹2~œ"å˚Ñ≠:„2kıÆÒ∞Ø�êh�~>˚GÕFu≠ȧ}Dz{ëÄ3¿N†ÿéÄ�±ÑQÖ¿/l +�� ¢¿Ã÷Ç9\Ió$ò#–$lŸtõèå‹LıÇqK.ì¿Ï!1#ÓL»ä±K∏ÉëÀG(8ü!Ñ’O≈S(ˇÊóÉœ…kz¶@ +^˚G≤Q≠k∏i¯Ìâ«◊_rX(∞�Ù1�ê ·†D}j∑�∞}�ª���ƒNuM¡æ8± ‡v"Üè√ʯïZ™É√ *«FÊΩÁ\ ‚ÔIÜö¬œ∏eDüƒM„ö4Øïz/íì∫æ&Lä‡~˙ΩL5 Í∫‹8˝—‹"gÄ^�†èÄ`çaÖù`) a·p��¿ �;˜5˚Êö 0†ôl€ΩMòÄË∑ò ÎÛ≥—_›7dò§›≥…ÅO‹ˆÎZ¯iv£±˛.S:k» Ü“†TRp\öଷL‡µ ¿ûÍΩ,ÔûrqΩ¢˘øç~«Œ‰~‹‹u Q¢ÿ7ó† Ä}˜Q∂√à™< +'0�∂d˘��íæü�ÈÎ!E˝¯uÍv–u¬%.ofi∂a;iïvf9«fváïö≈∞%Bªõ‚ÜïMˆæ —J*˘) ≥ F¿Ï¿~ÍΩÕœöÂjΩLjø ˛˚ë…˝x=1ÜÜdÄ v¨ #ÏÁ#DáÕÄ∞õÇ√©cÙ˝<f�êÏ%S∞çbXŸ5«„øEzt¨Åî.L¨k(DF[+Çë < ·µ4yˆ¶8/ÁX~äŒQèD|x—ÇAÄwj›·VØr�/�$>⁄}å◊jw=:Â_˙=√Ã`'�åÕ™�@^Q¨Ö]�x∏Ø‘Ó%∏s +≠Ïuì=•Ó_��ËoVLÄºÆ˝Î&Ì[ÅPflêÅ9–ô‚:Èng¬ï¡k(ÑßyÚ¢_Ût�≤«MráJ%æH;KÉŸIhë$�û…›ˆ{Mπzº≤Òì¸6MHŒèüˇù• Äfi\í ‹5ø‚*∞]Å) +†åMñΩäÓ�ˆó�(¨…fi]·t„£L.vgªµ$∂z"VÙè}0L-4¡aäwPA.ëfl–·⁄“DxÇSø +w‰z ‡&#˙J 5áJ«Í›K� }Ã◊aìªÆ®}õfl∂ ï3@œX�∆ÜIîÖZ�XàMX˚≤Æ9¶&0TÏeµò‹’$ơ≠xê&B©ÍN‰Â›'AÕƵEÑ¡\@]A‹>1©Œë%€[‘‚Pî#ù˛L'•◊$Dfl8Lßê} äF◊@OggS��¿]�����l•É‹���G#äç,zqÜsu{|ÉÄ{ÉÖ{àá~ÑÉáèÄÜÖzyzÄÇvvrnwhb\bfaR3˛ôΩœ◊öíZUy¸π;≤èè◊áõî�@oXTcfl»Æ–¢U≈(l +(UÙt”òdm +�`ê�R1enrËQ}Ö5~ΩP€[kπë¯<¯V�¢)ôÙ…˝»˚=∫ ŸmCÔö”çkw‹ïü=ı‘4œòC$¿AÚ�˛…}Õóû¨πÆ®˝Ô|–˝∏ø\≠±ÿņ7\IP¯“fQ5P +ÍÙåÉ{{ +�êÙfl5< kçê^B4uCÆ>˜…Àgı›∑1”Dœ≤´ÖπWS6ÈaƒK‡%eflNC˙ı[qÕé›s¯ÑúëZá\ÆXN«E≥pvÀSfi…}Õóë¨[ùt¯Õ0°9lÅ`lÑ√¨¢ÔvÅS‡¿ÔÌÔÒk$~™”⁄Ÿ(>ö�ÿgò{ª6πWı˘È,^€2Fÿ!^ùì%SAb!´äãY< ˝:˙ÅÈÁɪO:tì¶/To1ÌL†{�^…Ωçój§zº≤2KÈœ≥L§ŒèØ?Õ÷XÙ4Ä∫%Iç‰ò1ÇÖg LÖ¶P0b(—ám›“��_VLì¿fi…~⁄Õ$˘Ùeß'å”çë¬˚ÜÅâ‡◊ê ±"«9;¯NŒæYÏMEOZÆL`¡R≥œz +‘ƒúò[Ïwe≠ç”Fí^^ô}åGë§πÆNõ*flßâ¯xË @oòÑU®�@��A߬úd®âÜI·u‹ú�^∂ú–îÇ^›G∂ÚÖ◊ ò≠≥LJƒ›•ÛˆD&¯gø≠}öù#Bµ&l€ÇÀ v8®n4Q^OL�∏Bûô˝ôÁ$£˙◊%ÆtÙ∏0ÅNT�i\U†ü€ÀTh¢(ºQ�!#Bé—¸v$–TùªÙ© ≠≥/òÆR#≠ÇÖ¥D∞6GŒ⁄’#ëyÕ©Yõ•)¬xø6·úÒë-ú‰ÄÒnõGì4¨�WXÄ|~…˝ôÊöõp]Ω8ããjè}Úç∆�†nIb¯√~¡óB (\�°-MPT··4óB˜‰ ûHõÇãIó}·OK6’VÆñ–6nák32;π«0jıŒÂ$Bõ≠ß•©—∂>B0ÊÒº–nï–∑Ç2Töz(@ª^…˝öß" ∑æZs)6P˚d“¢±Äfií$Q`‹ØÖG€(Ö¶ÄPù¨x‰as'H‚ĆRrÂ˙°€¡âøé"ÿ&î‹©JÙ&û÷Éfiò}BÖ¨∆)!èÇ∫#Ú§„œ`∏krÊ∏,Ñsº2wÈ|i«ãz@�>…˝XÊû©[_Ñ÷Zé˜ »„˛V≠!Ëi�†nIPT úÒE"∫[∏ª¿X�¬d(ä…S∫∫Qß∆BEäáóÿÔ|ïÿ◊œo®˛/dÆ7ʉËææ}6ßV ô[3È_%h9*n"Fì≈ ô”P%ÊNyáò’áG–@A…}ØÀ2ÓÆèE*%ÕCb î3@œX�Íñ$Ö�†Ö(NÄPã‚+Ç∏bUäÈEßÌ·˘¡&†FâF\wÀà$∏#-·™#™'—F‘ÆM˜Õ1q'€”ª],28Óˇ;0—0Åfl .K©úM å[G2©Ns∫�?QCa·>…˝^ÊëT]W'«§l Æè◊gŸ`° �nYdû5¿(’ hRÙ�©T—ÿ≤DÀ£S5Öc˘4∆'•57ŸP√!Af¨Íc‹±Æùh…àBÏ6;µ≈ÂâwEk-%´πjŒfÑæÇÑhÙÒrfiÃØÛ®4ó%è§>∏€c≤�>ô˝Ω¥.1Àu©I°˝!±`± �d£·®Üï8Ö*Ö≤ÄMŶ®C¬π6ë…_ñ&Ä≠∂≠ÆæÖºTÛä*©íd8܃ûõ˜Î{flq”.§’ÃìƒßsJ≈�gNhrÖGÅÛ@≈éV@9;∆£ +•LÅrÄ√…˝fi«û‹-è^’ ôWôGË<,6Ÿ�Ì$·(p¶‘0M€&∞∫‚ÄC(W¡àK]b¿¢›(ÙˇÎeçälv$ÕoîtΩ5b∫zT FëâÜcí úâJÅ0st[1€´°#“Á4ÔØnD‘–ÉZ<‘@8¨Á·t&˛»˝‹«a√¨Ø(+m@…ıÒ˙báܧߗ�§.IïP3/§�u +¥X•Aq Eö‰Ãw s +=tÍl(â¿©È%I~[bÛ« öéÙ(^xÃ6©ˇGs¢ã˝´!ØÂ!VÄ}CpÂ∫è'>klÙö1ªâ>ÀDõ„'–¶Ü·ÉB 4æ»˝\zó“≠è• ì·–3Äl ≥*T�–®0ƒπÆ�·Üô≥$úxeåÿ“Œd^¨cFlù]7vò¯∑?,Ã.b0Ã&r=gnÅí RÑŸä'[,bò®–2 ˝Î*mOZ†ï +¥±˜-Á%é£tm`ÇŒ™�æ»˝\«!‘]èU÷ +›º#E˜˜pC �§¶Ü√ +¨fiú§¯•ËQ©ß∫KUBrÛfiK¡LŒ^=ت?ƒnO>#≥) z≠‹±ÿûI≈fWit˙±»£©Ω3≈Ûa*ìÜ»^æ…¶ùı˝i.k˛ 5À%@¸fl=lèÔ∏æB~vÌÁ Ø# +�fi»˝uîÅuÎΕñQ([Â7É∂Äbù`Ú∑mdai,JACîÓ(ûiª3Îl±∑% ®PõK÷Ÿ˛fc*Lˆá…xü'Àπᨌh¸}W_ Àuı’úDW©ôT*?∏ #LΩÛjgC7ïÃÑ–Ø&CûX>Œ0*»9«∏Lò·M(t�æ»˝8ßnÑY–䇸ÿ´n[�¿RÉaYÅ/Æ¡°ÙIÒÅì%∏Vº%`‰‚˛iaz·ŸÛ2˚sı°Ê."ô¨6úø√^⁄}'HwZ4P€ù≠k⁄BˆG~¥€·¶h'v1Í61K©ü3åIÂh ’´˛ |∫Çú}ô +�û»˝\«ï0Îö—§‡˙∏ÿ´±A,�Y'â≤@„q^˜ß€¢mK:∑@£≤ísc^ÿµN“d»U€®_œKÀZè.°??Vk9›ï]ô=›¡O”Æ˙zˆFúl°3wáOû=b/1Åc"ºäkmlÒù<+ÎŒAQL8“:HÑJ≈=]I�û»}≠”&¬,K≈–∫%]œ�=£(' ´B X®∏— ä„�”á.v–EíóDû*Õtoj UĪʅN∂≥C)–Ùat^ıüHÆ≤VóŸÆFŒû>?íˇ“»í¶kå¯bflXPCÍ!/‡ÀPA‘’|óÊ=Öö±ı– +ëΩOJÂõuÑ"W¿~»}ÌÛ&ÑËW(Ö‡~º>é6Q�uIí∞u|;EKùÓ +:¨∏( øÌ≠˘≥bˆnO¥{ÅTñaÕ56=X’Í™πŒ]π-Û˝x≠Ä€•Ûëªæ˘eƒ©⁄Ác¡3KœÎ7¸så ßÁpeÍU¿({Ú.À» XdJ øD∆fiö∏"õô≤√ôÏ�~»˝8ÊÖU≈(î˜√‘#A$_o�†Xí$®¿1⁄bä®çùU%⁄◊SÄÍÂtÕ°ìòF5›œiÏÁáTbfi…ıÛΩ]¥≤Ô™.>yt˛Và·é:ߘfå«æï!WÎØIƒçàUr-ê4˝}}ÊLãB¢≤áUÀÏw<ܶk…;‚0…¢é<ËçÎ0SA¡�û»}üÛÆ[aè˚˝P' +� IòÑxÁ≠"9Ù÷T„]@y·iπ:…9œS‰3ô¿Í’cuÁ]G—ï܆jXùÑL˙Ïgv«ô™·z +Oïj”=n÷{1gKSˇ©§‘$,#*°M,,L‹5‘Ûz.&d≈¨ +�X^»}NÛ&©Ò>ˆâN–ËɆHí0+–˜*v)wÔ" ï7(Öjt7⁄¥á≠Â⁄Y1∏∫(.&~4´èL #˜æé4úƒaÆâ´¢í!–<H1Ñ[7çùrc®≠˜ú…ªg˝(‰fiZ¡6—kÂÇ◊˜∫3§K4öÛ≤¿~»˝ÿßSb™à]([̆Éæ¿P¨ Rù'∑j˘Y…WÇ∂ +x·5ò\ _t‚HG†˚Â(√"+˘Èyì „:Á#3ÿfi7&g∑õî¥∫àjÀQè…hÅp∏Ê(?âm≈d‰·HÔ|O≥ÓUV:Ïœ@:üÈ÷s[°õ$�>»ΩÌÎÖõ +fa∏Ôï��/IDT¿èˇîÕΩÁ¿∏G";*Ç8´€∏¿X”l€fl‡fi|ª◊"U5y‰oú˚ºç≈†∏π‹r≥´π|!F~√Aa|ÕÜøÉkÔÿeTÍfi^…8%K¥)Ô¥Ä√8†SZN��~»}úΕjÄ <LMÉ Òj �…í†*0µ¡tlòÕËå™T fiÓ⁄À±#XјÀhò`çú|Æ©nõÜ=êH+8˘'ßØ˛-'øS0ÈHà7:£Œm∞;7=NˆÊŸUOéñ;nWî·Ω>õ∞ʨƒ+ä% +X�>»}Ã몀 <^è,X(�Ä%©aV(∞•Ì“ÉKÎÓjKʉú +IäkÁÍ oPµy-€Ö~HtW¥‘ÿuiQú∫ù™‹›ÏfNfœW0Éàøk&œ…*ª∫ï!'aÉ2˚g1;&}A9µöE˚^¥Qá&Wéa»h�>»ΩÎEòNp—Ô≈�ØdIÇ"* #è‡ÎàÚ„ˇz™Ê<EÔ÷SO Œ8… Âvî›1äÁŒfŸÂû?:ŸñA,∑◊UN«ÎDK«∏“A3—AñÏ–gFiäñ#(Œ9/dtOWB∞"&ë>–êÄ�~»}˚ +ÿ¿£Ø@"ë�$YÇ» +¸«ˇs=úügflˇ®˝‡™Cyô⁄ÓπV ™£í&à© íS…ì≤æÕ◊xŸ“≠Û&Œ›âRz&–ƒ‚h_´â´≥óN∂Ùpßs49π稗ßF„3uî>·‡L%ù9.7ùÕÒ[hÊØ4�~»}˚W¿˚– "ë�≤$âQ‡¶_X≤‰‘=TDu∂•W∑∏òÓé•fâJ1)N∆SrÔKJıØ{çãóÆ∂Àø√ü-∞ +fi∂Ø[Æ◊cŒq«sôò#9ÊÃ$√ê˛ü†˚Å!?Ée®æS߬¨å}*N∑'w“î +Má€F2 +�^»}Ï˚ùR¿.T:¡ï–® +ò˜œº⁄√f¢˘8ûäÉfi&3s>Â∂Qh¨véYÓœ˜ß9ͧêô^ZÛ¡wlp 1Òv´ºû+≤uMïGª÷:ÆÀSwt4}`ÓeÒ:‡Ñ2T&òìY&¯¢H� @~»}˚U¿˝.‹�¿<·†*‡&|%RfiÕNï5∑tL°¿!¿±bö=Û„n†“‘.æ„ã¬dÌê¡LcœNQõ÷s(£≤‹z°;kÏö€Œ«∑ÇSÆÆ–áb:N'_˛¶(ıåva*ZÄ Ä◊�^»}Æ˚[]∞¡≈Nj–u[ ™P–= É+nø∑ˇ¸[ȸ–©oØ&b6™=∫bo"∏ÚU‚ P´÷Áh›®õYßrg§�íûÑ»”HägN@~jô j/Ò≥“4xìÅ˘:˘4≠ákz( fi@~»}ù˚;J©6ÿ Dì�@í™™¿∫µÅ<ÙÌ-◊–™‹iVÍA8yOÃMŒ’8vIfik˝ +‹ïË$π€çlƒ«¢≈«t@∫∑Ƙ=FıA&t|∆,o2iqÄ£¬RUÉ¡$+Å’ö%†x–~»}_ˆ7M�∏Ël5KX +‹ˆNïÜ~π¥Xú´N;ù2‚zö∑∂§Ü≥TßÓ†≈—ÙÈπùÎH*ùéÌØÆ–t≤Ì’m;ÒL∑ãˆokpœl—JU≈ùÉr›á{eÈúi€z0ø%L‚Ze0ÄŒb––Ä�~»˝ÿÆoö6p°,hfaU(†©x’ùõJ˙†ÎÃçö™GèÍ„ ⁄*öxáõmæøMü<àµ√:F‹3jÅTªÍfiÒ≥pÜN;“êF&ù$·∑A˝YHB26ë±:¢Aë†á x�~»˝<ó7M∏–ÄEM¢*∏_t–µïÖ9c‰ÛV.“`ïô÷Ö˝ü«håÇ©·Y5∂U+Ò]ˆÎ2ÈdØû•W=ü£[8]9®K\fÑ·HÔiy +`2*õgí +0nt�Å�~»˝⁄.o¿NÑ�údâ™ +�øF4+«Æü3’ü˚Å⁄ÓJâRêYª·ƒ&3ߟåÇ¥}&¶œÅ"ò—€dQ¡v@ÆA†øËÎüw@8B⁄_9∏ëL@�~»˝⁄Œoö6êÄ:ë�@í® +�o™tzΩqZ)Éï®å®™ΩgŸ† +≥v≥bµ≈◊ë…£˜HπÔñqn(ËBv9Qf€—ƒq◊8«ÃˆBEiE@R&&û°Xùî�~»˝‹.oö6p†3%KTÖ}ÇQ|kCˇ^‘äQ∏yJÿîp=|B›ÿÓHÀZÕO8V(ë"∏Õ¯êñ�fi6b–MõŒ–t„äUȬœÜŒ¢=]ït�Z1Q&4Ë�†�û»˝æÃ_∫Çd�K ´ +�UëÇöˆ∂:VÃ;ù§Õæ˘ ®V£G”/gÿõnç+5)’åŒFgkWê¯NBò_FµŒãTr+¥A>€S—ª�Û{≤fly@t, ‡††~»˝˜®oJÄ·ÃU@˚£ëïdOY$ôt√Ü5œ{|≈újv8∫ b´‘øP”∑Æò¸ÆiüÕıqèπÖ•g·…oä àC�&X�ò¿Éh�û»˝Ô,_∫6� dU‡…k«∫)⁄·ÅtkGGß,öíx�4:�(�éx–�xOggS��d�����l•É‹���‚íÇh3û»˝Ô,_∫6� dU°�^Yb´π◊쓨ßsô:Ω%FZÍ5`bLP�∞�:†·Åû»˝Ô¨_∫�6��T(Ä�Äg&@ �4� \ No newline at end of file diff --git a/resources/media/ring.mp3 b/resources/media/ring.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..36200cd89d5969b57cf75965e7b7701a7c001e14 --- /dev/null +++ b/resources/media/ring.mp3 @@ -0,0 +1,214 @@ +ID3����/TSSE�����Lavf55.48.100�PRIV��{��XMP�<?xpacket begin="Ôªø" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c137 79.159768, 2016/08/11-13:24:42 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:xmpDM="http://ns.adobe.com/xmp/1.0/DynamicMedia/" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmp:MetadataDate="2017-02-18T23:04:06+02:00" + xmp:ModifyDate="2017-02-18T23:04:06+02:00" + xmpMM:InstanceID="xmp.iid:3cf2aa1a-9fc0-469a-b653-ee95ffb4e3c0" + xmpMM:DocumentID="xmp.did:cb51b63e-ca04-4f65-8452-7ad843fb859e" + xmpMM:OriginalDocumentID="xmp.did:cb51b63e-ca04-4f65-8452-7ad843fb859e" + dc:format="audio/mpeg"> + <xmpDM:Tracks> + <rdf:Bag> + <rdf:li + xmpDM:trackName="CuePoint Markers" + xmpDM:trackType="Cue" + xmpDM:frameRate="f44100"/> + <rdf:li + xmpDM:trackName="CD Track Markers" + xmpDM:trackType="Track" + xmpDM:frameRate="f44100"/> + <rdf:li + xmpDM:trackName="Subclip Markers" + xmpDM:trackType="InOut" + xmpDM:frameRate="f44100"/> + </rdf:Bag> + </xmpDM:Tracks> + <xmpMM:History> + <rdf:Seq> + <rdf:li + stEvt:action="saved" + stEvt:instanceID="xmp.iid:cb51b63e-ca04-4f65-8452-7ad843fb859e" + stEvt:when="2017-02-18T23:04:06+02:00" + stEvt:softwareAgent="Adobe Audition CC 2017.0 (Macintosh)" + stEvt:changed="/metadata"/> + <rdf:li + stEvt:action="saved" + stEvt:instanceID="xmp.iid:3cf2aa1a-9fc0-469a-b653-ee95ffb4e3c0" + stEvt:when="2017-02-18T23:04:06+02:00" + stEvt:softwareAgent="Adobe Audition CC 2017.0 (Macintosh)" + stEvt:changed="/"/> + </rdf:Seq> + </xmpMM:History> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?>���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ˇ˚¿����.��� ��%¿��¥±�2Ä��lM£iœB¯πh W]¨Wô∆g§/HÅ�6)5)'&B·4§∑_≠¡�à· +EHÙÆ∫–�$e«Ö’ó˜ÛÃìÍp&bvǡ˚¿$Ä��.���!§ #Òå5pdòò6°¿&Ø˙>∞∂¿’ˇˇÎM˛≤˚–AˇˇÃ wn‰eœı¬å4–é6tœÌì≥ú ÉõOPQ√0P‘26YQCk\Ë·;±Ã*w€ª3¢ˇ˚Ä¿Ä›)ï≠�/&©k;êDâ©z√≠u∆Y√:Ñ“£Bx±§ê +0¡ÜÄ≤∞3É¥tŸv0Ø$ïê"ê-ôÅYuñ¡‡ƒº-Ä�Cí ◊zƒkè‰≤íQ5ÑlQ¿∞ ¬$≤0˛5ÜpÂ√ˆıá3Œ§6ˇ√Ò∂p…)0Á·Ö#X∆±9ûy˜ˇˇˇˇ˜ûzx%Tˆ˚UR™™®îìnI�£å”H(=c Ñc/~„y“¬√^ƒÁ◊Ç ≥f¶áÒäǘ1t<-S˙�0 î�1ÑhD%π0ïa‡”¨Ñu≈´ä +´±ù1°b—îhj‹˜‰DÓÌ‘Xìm∞'E‹&VÔ +ó”0…ü¸∏tÌ|¨:ÚÜ∞ÛŒKS¬üJ8L^ w‡i∏Z1n ›)f?ˇ’≥¡!ºüœ˝àÒ†Ü[O7/±»“ÚÁˇˇˇÿèˇˇˇˇ˙ƒÌÁÚ‡™•UURSI¥ˇ˚†¿�17KY‹Äö&©7=¿�€í��¢dÅ¡˘ù>ÅÇ…ûÈ–ÄÙk∞Æıöˆ<≥kÊ1±C¬G¨≈¿tD@¶W>!mræƒï√LRóÓŒåå´7N^ÙÒÏàÅ~YËoœhò"ÖÔlS@e& Ï◊∫±bìxW*Õ8VmÃfi÷J˙/Ñ0Ô*µÁ°Œ«¥x{€ƒF«‡ŸˇÕí?∫Ë[∆;pTìÙËŸ˙ïQùÂXÙmz∑Ω +Ö’≈!ˇˇˇUøHX‰9flˇˆ˜‚®Ãºô≠V€m(Z)$íIç≤÷�c†®Ç—Ç!®ÒÖhgÅ´1ÅP1Ñä!ÅÄ?–ò7ÅÄ@ÉAlƒpïÕãÄ™Xsâ%ÿJ04HZX¶LD6-zuò$^“ˆ∑…jÖÚ9I(ò¶ ,SqnÊ�+:≥E0J%⁄xQ~îr›°X‡È9ËOìˇÁ"*ÉY⁄fl˘ùyo◊ñæz£4_ˇ˚Z1≈ïÔŒ?|≤k˛∑ÌK¡Å∂Øœ©Œ`ñfÕıˇˇˇ¯@•`:úˇˇˇıgjHOmJÍŸ)0¬†ÊT√ù¶‡˝¡SbÖ∞¢‰%ôõ±9åÇπá@ÿ6ê^‡ÈèësWLG$LfH†÷"‚Ö#áX˛P"µB`B¢∫$¢Â‰Åˇ˚`¿&Äa!OΩ⁄Ä*8£ÈıæQtÅ `hPâ≤dàπ≠O08O?¸ƒºîƒrFà1\‹Ò¡ˇıû¶9¿� ∏ãìgøˇ¨∫ �°Î¨äk}BXëdÄ—®·¬ÛÇO�XÜÎ&fhò\`bÜ8DDH•ÿÄu¿°Æ«%«Puπ.Z#ØN„˛òÓ≥Xk⁄Ô`3[„@v6!�ß`[¯'4 öXò"áø3/©ø˛>√¸<à…üY$F!˙ãà”78M8 +c—m˚ˇıÜ~9àÄŸnG$åÅ^6¿@©±ª˝ô8¡âÇ&Yfô80: 3uˇ˚p¿Ä!SMÓK¢#˱‹≈u„∑ 7ô‚e∞(WCjøVíõCa`R¿>˛—0Ê˘—aØ#Ç—ÅB≠3ï1kÖû©trF¿b…{‚",√Ωëös�� ¡sD8ëÄm®r…ıë9 $0 � ùlõ"Ô˛Fè˙e˜:%°™S¶»P*◊√Th+ñy&L“Vî¶Ïö‚≠@Ï(˘Ó}$©g·t˝hTÜ©˙©T≠¨eN–¯.“RN3t∆xí≤j‘Ä*KéÏfi5@b-UÀÈ&-Íì§ÍóÎ"°y˛êc‚:—(ãîÇö‚*ã<flà2…SŸ±Y X¢ôd~% ¨pŸYòNÕ"¯ä¨Ñ$bÅú%¶∆Xhb Yï Ü> +ô|Ó»‰f;ˇ˚p¿�ÂMéjã©Ò#Ít˛—tM £HÄ”£ XgÁõÚ&�;©rj∆ôã8LÏnNºUááód=-Lèr#õO#¿ŸΩäº$E �¯œ7«—$i˛t:÷Ë�∏∞2£¬««BѧÉI/ıóML »ÆÑHéQ ≠ˇ˘â:Œ‡Ziÿ4�%©um¥LHÂ�‰NŸh‡ â:[@8eLb†`ù‰'' ∞M Ä¥Üxv.ÀÂó3¢Ë≠X É</#fà†;H +2qE.€ÙLM‰—Æ≤(£Ç¸p÷HØ‘õˇ˝Ã»Aá*ˇˇˇ˛êã5@m4Ç3÷⁄å∞û)Kô3«Ä�6PalIL&∑”ôBÜÂ√A¥‹ÿsgÌMˇ˚`¿�EQßÚ´™v§*uÕIu´;çu√ë¥áıÛr V¡Lwæ1QÚCFR!( DÖ•F Ú¢-˙ãçˇıë1�¬ARÚ∆`¶,≤O RÇÛ3rltëÇÄ |-l€ˇˇˇ…@Û6—7#)‚Q…h∞√�bçaI±¥ã&"ÜÊ�£@”h√ç6NbêTf— +¿ótpHs +fGùñÂflJ—^±hg%ˇò-c.N\fBøAº†a‡t$¿ÄƒE&˙«hc4õ˙ãÜ˝@‹†;‡•“¶òº»∫«˙âëqD#°é�íJÊe˜ˇ(Ÿˇ˛≈‚yÙ4ˇ˚ê¿��MSµ…Ä+cß)w;∞�•ñ‰æV̪`˚©)c"1∫0f +Ñÿ˚÷¶m=ì.‰8åLéVJ¡Ï1Å'iÿ(�Ù<°.PÁí-»p"∏‚+¨ô'MËñ`™ÕÛ¢{pú4R’õ迆…√ÃÅ(ë§àÂÖß)∑ËÅk7“pXѯÈ$E +,“Tænò◊r +f˃Åq¸ÃüH∏Ë6„TñìI§€ñ=¶∏�`ÿàe˜¨ ´˝ÅÅ †!)£°∂féçÈ«¬©ß�¡P�1∏czLO⁄ŒÂáKCtîsE!u¡¶Wòi…íò)‘yh•›ÁêPAá:aÑ ∆ +bÕåò reÉÜí&!h8¿E�?∑rï∫%zEʶ“óÔ4ε4›Täqœ¶Sû™∆/ˇS˛\7˛K"ˇÇ∆>Í„•˘ß–µììflÔÊ Ãœ˝6o˝>*ɢˇÙø˚õQ +ˇˇˇˇuh3õ∑¿Híä3X⁄h±]+Sπ*ïrŸM$ÜsT…Aˇ˚p¿�≠!QΩ �)Ú£©Ù˛—u°≥�L0):"‘ŸbBŸÇá¶2" +ä(∏ápÄDLa "º∂tkò»)ãhπÜx9ÇÂDÊê�Ô“Ç–’HÈ™ø¢£ÚJ1!¡›>0PCîNóYZóO%ˇYâ*lEAÄ¥‚ÛˇZˇ¯dÑô≠aÓ÷‡GmS)¢Ù≠2åÅ]OHÎ/h@áªäfi"Iõå†kúûu∆]v@√ÿ;Cgõ≈å”ÿÌ¥ˇáŸ{÷bê"r1!êAÇ|cbˇ,ò2oˇ‘jl9ÅKÿ•ú3/˘“ˇˇÊ ±B�ÙCÄ∑˛tÀˇ˛òë«nè◊7 +ÿìi¡⁄Äb2Yï™föt",ô1®ƒ°„ ƒD# 42“É6õ5Ë3�ˇ˚p¿�qQÆnã™j#Íæπ@6Rƒ?*dT0`Bb0QIÇå»#fåŸRŸT÷_•”àa¡ 4Z!�* Ï:p2Œ¿–∏s∆À∑„XùW˙ÀÂJI�¿≥AÓóPC*K˙Õ©ßˇAáÃEú‰>Ts3wËöıøˇ:x2”;%CFÖ≤Kø¡Ÿ[KsçNo +0‡`8”¢Ä4«∂O‰ö2†Rpæ$–ÉÑ,“45 4¡¿9Üà dfâLå£chæö$‚ì5¢$<∑÷ôêiÔ˝®Pi¶õê—Z¢Oë�P)ö÷ÂÈäü®¿SÍLÀÉËìXèGcâzFä<›E¡±ˇd»h‡H)€˝∫∆YRLéG¨µÄt¿}Ã@‘ƒ@ˇ˚Ä¿�=5GYÌ� +I#Í∑π@∂¿ ÃbHBF¿z†¶4`é”Ã≥¡‘ƒ¿I¬V¡»åUá≈êQ1b‘xø:≥‘J-Ò”oÆj`ó8*∫ÌG;lî@W3BÂàá=ç¥[z?j∞2k≠ÑÄdÁ¿)Ùèzˆre≈%·ƒÓÅkÂÂRâ‘õ√ÿ[ÙEèÍO±_&ÇÙ}Qπfl““pÕ˘VºQÌõDyµMˇ˛JÅG!ÕˇÍˇ≈ë≥ˇˇ•ˇ·T@jflˇˇˇÏmOÃ…%(≠±µ&∆»�0¿†#Ä4\e“˘*∞4�`Òà≈«≠»õ°daËP¿a¡Ú BÇ ‚Å˙ ∞ÁòɯeÜhzqTá!g(PA˚ Ë6‚õìíQ&KKoe-øÿ…q¯z�ÁddP/dûª&bN†ˇ˙㶉8-êÄ&øÙˇˇËát<I�7ffˇ˚Ä¿Ä QÁÚ´¢≠£™=fiQt&èõq&ŸZ9·¨ã7å�ö”≤ /kP ◊8¶≥ÄÉâ^t´åAÒô˘Lq·w!mŸ’m:Ú∆oøF6äÄJÂóÅ!X)Hÿè7A~uH!˛≤˘qù‹ÅâÑB…$òÈ=Áá°ßˇL…T&◊ˇóˇ˝�—CÌÜçaôÑÖûƒ”D≥.˚úOÉÃ@6å"'LG_åbÃw�¡–¡Ò1PŸ¥£iäÉÅÇ—ìôåÜòàa9çàÜ�&�}ëàfÅJ�·à+IÑ°ÒPU�≈†mç ∑Ò ˇB¥*ÍoP‰öÍ(°{≥qÀı#ô-ˇR%‘áÿrÇK37Iˇ˛¥ÁPeõmæ]v€Äörf∞"¿8vÑiÇ¿¨ŸL‹8%kµ•b`£c +–]N2B‹1ˇ˚Ä¿Ä-Uµ �#Zß)k=∞ƒ∏†C∫2@ÙßY©2äHáƒU«¢.fEEí!)L}Y üI‘+Ä€ßM÷Á˙e0$(≈L^L‘≤ÄÙN!Êf˚h∆4@„}H +‡c§˘.±‡=†ÈâÙÃ≈¨BdÕˇÏ»&/√‡.Q$ı4≤ ™II$õr¿Ä@,9°ppúàPÃ1Œ¬H´<"&òÎ�âÜ�+%ŸÅà.)ÅÅê+òÖàx1ņ–pÀ∆|)†“aQV∑FJ>$èFP0î†+ +ñvfl—¿∆,Ï,¡b�eÑ›ˇ∑mªiÜ��^ôF=gêÀIÅ™iò[wó∑pfMù@Ü5œ¡´z–M>¸q´z,®ıæ/÷$�áÿ$˚%´ˇ§ ])’r]ˇıR=tK{ˇˇ´Íœ ˇˇˇˇ îøsúˇˇˇ“€k\Ö"\nY#íQ∞Ê2``–>a�F`‡ˇ˚p¿Ä±!WΩ⁄�)‚$ÈÙ˛Q≤*`pÇ≤&R\” SÇ”9°Å`¡ ¨h†0£∑Å≥¡âÜHÃsC—z¬íP∏äbÜñ±x®lY" +ÜA�ë�bO:É¥ûòw?—8lø˜1I,»x924vîç…ø©‘^ttflZ$…U2¢PÖ◊W˙7ˇı–ˆÿÉ$l‰h§”e4pC@≈O˘? +¢)J¬L쮵 (�†{∆¢K*´çf8¯=ÕmîÂVµ+ó/oZ[Góø⁄´$úFNXGt˜H®Ûˇ˜ˇÍ7‘h#03ßàô0ôπ,᧡†Ój^$ÉÚãÑlyˇú.ˇˇÂ0ºçı7®e}RI 6™`2&‡$d|åªd f*a⁄`Ä∆ˇ˚p¿ÄÈQÔrã¢F•)µ›µ¥‡ºL¶ + ¶ + cêi §fX'HL% ¢Ç˘1(∆@CÖI�bâëÖÂ*�ãö$1òH8[‚@¬ÕÖ¡¬¿∆�a¿Å®&%!Zâ8π˛fEÕˇŒàHVzѯ@Åû9DbíÌΖC§˝iŒÃPÓ'ÃÀÔ“6}h”OÖ¢ñ—i"‘r6‹¥*ãî≤S§¡∞ÁíΩ}*Â\¨˘y±ƒ∫L·CB°…(∏⁄&XØÓΩX˘Ü€ùöä÷ï—=Rõf^Ü“∏„æäƉ5Ç!≤ŸIÈ-≤U–>fiL�“RIççlOà†K ø¨ÿ/?Ïxµ¨g—®€B}≥|k˛µ·…#Ÿ!‹&KQ”Œˇ˚ê¿��u!QµÃ�#c&©7=Pe¶„u∆‰∑ÄñÓ”Ë�x<|b‡V^∆j©ƒÇïªØ7(Õ@ƒ°ö'ƒ„M„∏˛)Bj…ùxzäo7˝˙t◊ò –Âg˛_7=‰Aÿnq˚}¸˚˙hâfl/œflˇ‘�<y‹0©ƒõ¨˙È`i3ˇ˝˜X*£Áflˇˇ˝ı•¶¥‰‹]i∑&fiiık∑µ‹ˇ˝·k◊ˇˇ˜Ø‘5√ «πÉEì$i$“)"A)ïb�9ãxÎπÅ¿ +§∂`fAfiUB}Ä¡‰ìå“ÿ¡ß ⺡Ïë 9∆NÜ"@ƒÖ∞X6 +'�1,Å�@$B0ˆíA@ã�Zp^‡0< � ·aeD8ã"ê2X4,àiM¿≈Ü∞P.AbK£∂,t"�ÓÚA áòÑ¿¿-Â,Ö$4˝XZytóYÓ@FP-Q"˛„–7Dˇ„ +Éç4˝!6 Ò‹0¡¶ˇXå‡6áTè)&ÎXgZ&¯Kûµ⁄ˇ0ˇ˚Ä¿Ä!)O˝⁄�"⁄£È˝ù—u&»ì} &nB$èÇ�⁄!{DÍj\+Qcë"≈0PDÉ4À¶¨p}à/ê]XćÄ∞ +;Gí€ØŒ˛ 8G •srë:Ë$¸¢u˛ëy)ÄIæ£D¥ÇætΩˇ˙ÊFAbK&ô˜SwCå–Qà (JÉ¢AßÔfã∆¬∆ ∆¬VA@bÅÜL({„AÈ&Z6]—†4+Ä∏hê∏�!L‘‘≈ÜËå,LL0qqa#.…áÖàÅTΩ`bs±‚‰72œÑ!@Õ¨\:a$Œ°ˇ˝R·”3(EÄ¢�∂eÅeå•G,ÿs•t…Ò».ê2∞ “±Å±<MôB<¶Aăaò"Á >¥[ˇı"ò{Bh(∞˙ïØØÓ*' Â`≠…c=k•ç)´‡±ë’.� %ÙÑ‚˝UÄ+Iy]ß}âD⁄ˇ˚`¿ÄÕ'S,a̱Ö#&=ÑïukrTHö◊)”qùU“Ö2ñ‡¨IRÔU[õõk.´gXFœˇˇˇ˚ı¢zkßÄπî[lfi)%˘l—pCùßn‘[ñÕIT‹Ü¨üÀQM‰≥à˙JùE’“ÜÕkWˇˇˇˇˇ¸µ!HñEzûÅ¢ÔÓÔ∂÷∏⁄, l[Ø3�«ÌVÅ∂“âVÌ ±55eÍ5Øl>§∫2è∫‘Ù:*±# π≈Aï^1‘^U+ +‘PD£""Cá–,>A~7©‚ˇ… Sü˙ÿÑÒ¶pPm¨ñ∏⁄DÄ;É…≈à∑é·T˙-":íyÓâ»AAÚãˇ˚P¿ÄÕ'ߧÀ°ô££Ûp[ä9‘…g8JjªÕ7Û%≥v~~«â◊∂h/ù0Q›2∑© +Ot¶Ôd@Æ˚óŸˇÂd•˙∫^Æî_∂Äíe∏⁄I?Ô`ô[mÅÖ˙Ì©Ú9ωµWÕ§<R¡§Z∆ièAdUêa•‡Ω‡©vuólQÖ> Z∑&jf-ÏÕ$ô®ëNçdòWÒ)ÁíCîπ”?M#ıi˙E3Z^ yÊâoTå®ä•W¸=ÖOå‹¥÷Í +£lF°ÑÇ8îˇ˚P¿ +ÄÒòÀâf££ ≥ qpÍ!Ö&(Ɖ!‰= ‹o¢µtâz».í„/£úOGˆôÜJ&%UÑ“óú:!ß˙≈ûD¥ëb(≠naágê» +1toØü˙≠éj|©U¬ÄsÓE¶…∏≠ÅÓ ?◊ÉVù�©.É95+Ê∫‚µ¡Ü¶w–AaãÒ`UEa\¬Ä$Ñ T0É‚„é0ÖU;e√≈çUhØÜÅܬ!„¢~`‚1‚�Æïó¸'ä•Ç‡ËîX∫ßZ?$Ω&tJHˇ˚@¿�§ÀÅL°£ ìpÏÍΩfÃ?w;(R Ôe mFJtû©€ Û≥§õ•˛r¢Ì-v¸≈ºù÷˜˚Uh&¯≠fi’øˇØü”%ø§Ñgñ8åKW+/ú8ïWàAVèh‘G0H–S…M∂(È¢'ü£è‡àÖâ∞©ë#=–Eß#â∞±EÃË,$¬&DaÉÑ-√¢flCbBl~w£ÍVtgeW¸ˆFÓ†hC⁄ˇ˚P¿Ä +ıòÀÅ_££ cpa§¨ª ^hu1.I”W™fS!QáÏ◊!uø¨ê’L6ó≠ÙüMA≥¬ÍfOÌwàÛöz7?b Í.€[†õµK«í>∑î©›#ø·;Â\Õ*øÁ ä∫âÅúEßö¶(≤◊êBIºœØ�Y«›76”Z∑¨KKÁädõ%#4¢èΩ◊V~b€Oè‡ÊÈ,•flË'EÑ+®„zçß.T≈>$…Àv¸˙fl˝˘�ØÈiZT;s—·ÇBbÇûõ≥~∂RÁˇ˚P¿�i$§Àây$#dìpÕª˜õ>´≥∞f}:ıæ†@∞[8ì<!†V(®≤p˛7ˇ8¶•FbŒà“øGiD&(£æª˛⁄T‚ -Lã˜ˇ˛Ê+ÍUj¶•LR@!ºÎhP†õ≈2OπÛz?´≥GπdN¢…úîjÁÓX‹H•¶%8 + ‹˙+ñ™-äD‰@Ö=õåOL_ıª˘¶œÆÆı˚RLx¿£ù`h[#Œƒƒ‚œ†˛ˇõ™òGEgá}ñ4ã2(…‚øqE~ˇ˚@¿Äa$§ÀâS£# ìpíµëߧc$Yfi +‰•7∫¯Ã5ŸÀ÷µNQñòíúI§S0.0¬ü\fiÜó[˘pfl∂∑ˇ√œˇÃø˘'Á{_ˇ!ò +jïWªÇ÷@XóèÊöñà +÷M>æ˘Íi\É“3ËyˆS€<ùπÚ fi©Í∆–ÿµEY®°F¬ª#∫µ_5ÓW˛ÁÌˇˇ‚7ˇ9˙+ˇÙê"UjèeT@ˇ˚ê¿�!'.Û+Ç™£j}Ωau∏bYfe…4r÷úVwΩNGZÃ˘*Ãú( Ã=LNc4äÑ÷Ø3£ÿŒ4Ç „S*è¡ %K™Ë/3 ÷ù�ìå®>1¿Ë«# ål.1 ®≈¬#ç ∆x Cõ√8a¯�“H@Y¬˘¢)Ü h¡@*F!ñÉI3CkÃ≤_+óÁfi2∑òøÄa”Æ/ù˙ÚSÕ؈±√ù˛·0¿"ÈÎ∆fl«!¸pH ˚÷˘ˇˇ^øfl¯›=<n7 ”3πy˜πα∏ÆF%âeácEÜ∂ˇˇ�êH√‡@®!ñ®(©/êê¶D>c√©zò´<Ÿ¥R÷¥π ]÷övìHF0¿DTÕ:5*µîf"Ì2„N5˘ñÁº∑ öfBYö µjWıŸ~]“Úé!˙§øk5Ÿÿ±‘pcƒÂK¢P4Jó, ®˜Æk˘rôå&[≥&∆S≠Ω–Q2µ6;˛Î˘¨ËÖö|ªè&:¿úªøfi≥ôä‘Pπ,gS�Aó,æFÓ€‡ˇ˚ê¿�u!SµÃ�+¢¶®˜=¿≤5]CÃrG8=¬¡ÄpAz>Ö¸WåRX≤(fB +ª}T˜ÖæëfóÍnhÀˇÔfi¢§¸[∏0Tìñ9éπ˚û"=Ω˜Ô∫§Çk} ˇÎÈñZvB≥ÂID≤vW@≠ËA √ü˙¸Ø –ãˇˇïBdÙ–ÂSz∆mÅ∫ëZ⁄√ˇà.≈y&Á˛˜€ÙãBóVª ÀıÉi4\íJ$§åÜ≥´�ÈÖÍ*òÄAå•äÉ»"Ä*Â0€ì ê˚0P1∑¶ Xbr4f&‚Bb\gfê≈ÿ2ÇN 818¸8憃q°¸∏√`“!ìú¡lFúºÍ“◊–ê òH<a†SÚœW©É¡ Ä∏íÎÌP0‹U±Ôzå´´ôÈSœ˘ß˚®Ë4,; qKwSDZø +'ofiöûbêŸg2‰ÃÔÉáR˚flfl˝-*Ãæuz’„˙Ø¡?øÎ∑d!øˇˇ ˚œSdo)ˇˇÏˇ’S§Îœøˇˇ˚ÉÅb@M∂ *Võm¿õPÃ∫ìˇ˚p¿Ä≠'SΩ⁄�Ç£Í)æQs˚wa94©{9V’®çÊy‡&Ê'‡±hÈ™‘!0t•ƒÍ&ë¡… #2NóG$:°ÏÜ1à#�¸¿0zD≈NÛ5óK®’HıNä&I–Ÿ`õâ¢ô„D|„˛É˙ê08EâÄBh7áK˘¬£ˇˇtK ¡$Xÿ‘∫Õ˛%ƒím ›•i‹LhÎÊ¥qKSÛG33�#2ÙÙìgÄÄÅŒêFÀ≤‰áÄ]��NáѪ·ÄÙ3TÎΩ⺠P�& ∞ëÑq1…≈] IÄ!?p`q?ItÑ„T\4ı∂≥3⁄ÃɆ�"„&≈ŒA≈º»äCI@ä3c~ì˙¨¿†9Çìl≥3wÍ?‘û˛ò˘ÎÒâ"*Dˇ˚Ä¿Äi!U≠Ó+¢î$jæπĉ≤¿‹E‰ïf<öqkFò^)_�Ä�ΩÅp£1ÛÖû4¯'�ê∏H§„P≤ïäÚ®±è�?3∞”k—∂≤ƒr∫ëq^MejD4 ƒ.a`\¢∂¢ŸEñ@Cˇè¡i =bR|–]PÇEPfllOïÜ4Ú&D…P˚ÃÜ@î"√àÇÖÆÜ%dû}ñbÿ¯&ü¸¿∏xÜXÿsÜòLïUVŸ∑ˇÃ˝ �éà˜0ËdHÕ‡5o^Ì˚@{v2Æ”ÄëSp$’óç˛Nsn⁄˚˜j§¢≈Ïaf)@KËzIK©Kÿá9õ}˛flªøxÀô9cX^Ê˛¢¯H˘fXXºÏ√≥s*®_¯¥ı-9±ı:öQsˇˇıax)º^µ∂T”©˚Ã◊ö§ñaá?ˇUëƒúÁˇ˜<Í3∆∑REju˘Ω„@mò“Å¢â)$úëÎ5ÄD`∑§Dˇ˚ê¿ +�M5Iπ›ÄY§*7ª@ö7Z ‰!ïc¨ <Js;çìKdS1 T0ä1∞4ˇ§6"ã@Œ!òŒ +å®Ñº∞$H‘f0,fóÌ∞(døVõoÿ¿<}ˇÄ!4¿ÅÀoÍ~/êÿª,aW +Ÿ⁄‘3-PùÈG yC%˝8Hnµ· ◊∞`({8qÀ|Ω£ù0„Û õË%ç1&˛Œ˛J9.¨˘*[>ÿ¥£ç≠7èµØö‹±L)ä√∏‘‰¸VHgˇˇ≥ˇP⁄<9ˇˇˇ\êë€igq∂y†+ß)Ø6“µÖe0JÌ•_Eí0"3nN2»0<�‘2�rÉ–zƒHáóE&4è¢Cô/ "ÑÈpè""á ®Yh ‡w√�¿aƒ¢EVK,∫(∑HˆÙTìôÅ@‡c”,." +AI‘O;$â‘Øˇôe#B<≠ f&≥#gÚ.{ˇÎ.óK° ‚h`Æ€J7Ë⁄H†÷§´Q¨ê^s|£¡Ä+'��∆ø.„QãM?”3 ˇ˚p¿ÄQ¨Úã¢N£™µº…uî7Bz+*gQióçm 17Ã�KtØg—Ÿ~Ÿ|≠wøñ·fÎë‰T≠¯eCú zw¶ΩZü¢⁄çY¡`�*§Ç ¶aı§§˛`\1&\g�`�mh—oˇ¯äáôqHí%"Êé… …j8ËZbÍGlLiaÜ2P +OH ÛFcÊ„&„'f\C@£ÙYî©j{)sI=L‹Ô22‰≥Ñz^ȧ˝òd™’2N§y-Í´RîhHMé¸Kà)Œü®0πQ∞ÔØ�yål®@v„ñTˇY.∏q@jAˆ5u2ˇËø˙ 8 (|´ÄE„qUU¬¯VL* 1∏åÙÁ√ÿM«—\-I;∆`0Iôœ¡�â".«˙é≈ˇ˚Ä¿�ù'WïÃ�3~&È7=∞�*∂C$sœ>„;¢Ïµ`LFv),K#’Á„v⁄·rmQ˜ˇˇ:x⁄1sˇˇÊŸ˙oπ€“ù'S¶Ú¥µÂ±ˇø¸9OûˇˇÎ|¬Pˇπo¸ø:Ó[ÈÜ∞√ˇˇ”ISaœˇ÷∞Õ[û»√bá†'Íüu˜N% d¢YM≤€⁄[��@c0æH0#Åà(Ã%HÄ√\⁄)ë»îŸîx]ñã—gm¢òAÅqÄâƒô•éYÅ∏AÇœAìø1Ÿ "p$’®å=∫ѬSiŒ®]˚£Ä˜b(`A&baÏôß˝N—ƒµ≠≠fi”ÃI°|˙v ∏å’V›€!b® +ïˇ·Z ‡≠˚9@7~µØc%˝∑´ˇ˛ı∫̵ÎWıπBF%Cõ=¨*~÷∏0UÛÁ∆˚{˚BÃ}Oˇ¸Î(íDwüˇˇ˙Q¬Ç†)… +7Ë⁄i1uˇ˚p¿Äe)QΩ Ä!˝#Íué—tj¶+MYr&nµWKÄ»üÁÑ 0êåÁ«ì`âå +hXàc‰»éHÄÁÃåx≠äd@R"∫,Ç .bdÇåÈ$G±:à4LAΩ@B‚d∫N:õ‘^6Û"Í*&àpÖ¡b¯ÙG¶§X….pò˝˙œ ò˙`¿µçøòì_ˇÍ2(.“ +jëëìœÖªÙm6òï)ÜrZ⁄¬75ÇGÃFùïWxP$1ÊR0@#Ï‘Ω€ÆŒ[¸Öàh¥€<ôıyùáEæg∞ÚÎ∫W‘≠0)G0¯Ä¡|RAˇ8…øˇË +D �ap$Y/ẻ∫fl7=˙»„S`�+ˇ±:flˇÍ‡çr¿z¢JRFõnAãH�Êã∆*#ß%∂Ê√Bˇ˚p¿ �UQÆÓk™V"™∂πêôÅÄ( �Ç@—Ñ ñîÕzå÷Ãp8«LxhLæ&: +$``E@ÒLmÑ8Íb∞Û8Tj]Ñ∂E$ä,¢Bh_∞=|�⁄<úQ]ø¬�/˝DPØ√¨(p 0DU¨DîèÎM˙-ÂÚ˘π4P�X´‘À~d^zãܡÛ2˙f̪,,€eˆ…∂‹3W¿P�0:°8HËEb ØÒ^—/vñ¬[ck4Õñ%a∆≥ë öóD]€rh‡¡%íÀëÏ≤ §`HóÁøˇˇ˙duÅÌÔ;˝¸È›"$È'9^ûáÈ_∂Ç∏“ˇˇÍ0∫È˚ˇˇ˘Ê—“Jû˝∑ ù?W˜]À}0÷˛Ûqü>ˇˇÛüõ÷÷�UUÅˇ˚ê¿ÄI9EYfi�7£È˜π@ !"ër�›≠å +L˘tA†iìòi∫C"¬¿–l—�%!≥#'D∂jdê¥qF‡y≥L`�4¿!$òħX $¬†bÇ2c� ±p™ ï™∫Õ~‡Ú¿5≠—Ñ«Bfê1,B∏∑{]#v$°5ÜCpI0Yµ»ã¶ãX\*Äï˚ıÀ‡b‘/œfiWVØGC§ÿ‘/†°b¢Éæ Åø7Uã˝Vkè…r@•øπfl˙æ’Ç˙B;ˇ˜ˇ≠éCˇˇˇóÈ·ë5«_?ˇˇ¯,0à∫»‚@Éñ6‰pF◊c>Pgôx©âR%∆^)™‚à¿Ü èNj√πè Ÿ†±‚8ÄÜ]™":A\º-‚RãÒ⁄lEàxŸH≤HAî1P∏BR¿; Àå»Ì)ö§íUú6_Ùf%Á2"¬‘xπ1fñå ‚.UGÎ.≤_ÊE„Êî�{®∑ˇˇˇΩ≥—Äv«;j‚h zïà@˙Bèá‹GAkí7ê∏Áé™èjˇ˚p¿�uQßÚã¢w£Í5fiQt¡ƒEp!�Øæ8å•∆t]’Ü£rπ;œh⁄Cå√¬4≈∆–Al\J§<ÆÇ~Jsø˛à@\‡Ô+≤ã®ˇ˘ùÜlá›/ˇˇˇ,è]û¥P∂DíDÜ∆ËÉ�·Q≈˜@˘ÓhŒ!¸≈±∏¡�¨¿@¨∞ Aìå"1P∞fiÚ£aíåÑVíÄ¥`∏,$∆ÜCcÜcÍÃÑ‘ÏKÙ|~ï¢Àñ`päi&ôj=�As¿cÅ∞8Å∑≈lˇÃ«£^ØY|”âpHh\Åæf/Híˇ≠?˙Õ÷§à@m`µ¶€ˇZ ˇÒ5yP° #æI$ó`ô!¿ÿ}¬†ÉÉπXj)©'AÓ47-[K‡`Ç™◊j(ß +jOTfi+ÑL!ˇ˚Ä¿�a'QµÃÄ#d&©w;¿�ëÜCíÃ0©1v¢SòI>À‹”Ω;?4◊ã`ÀbòaØ˝TÇJú◊·ˇˇÖ08˜<Âq3`âCi%.ÁˇˇˇhXïèˇˇ¸Î≠4“œp∑?Ó Ìʃ0÷˛tÎÕçÁflˇˇˇfl¸ƒRT˝˜y›r7уöM',ñk,†33©0¥@3ìrÜa˛∆ÓÜÎê’ò≥Fb F{°Æ…Å£1aÅ*iZ>hÈ4 +ô∫;`ô¸rUrKÒ"kÏbrà�UÄ’mæÑ·¯08 ò\_8R7Ÿ€D{r¶åb‡¡T2Õ¥ı)Â"yîn7s4flå4òYØóë:†ˇlngµ·†∫îÏw¿BqŒ®‹ÔÌv–ßE+5«⁄.¢MÕ t}ˇô¸flrÈΩ¸ˇ˘?ˇ¡ã˚ˇ˘˝≈≈Øˇˇˇ’µjqÄ +Rÿ€ç0¬i‡b˘=-…y(òˇ˚p¿�!QΩ �)›£™¥˛Qwj≈PÃò"ô˚ÿc b/áà?0.ä‘WIa6é¬\wù¡q +PÉ$1¢Ç$«·^D∂'p:ÿGÅ;ÇQ"$¬flÆÎR_÷ƒ—u8EÄH†F'QpéQ\sfl]fÑ…AˇÎ5d–≥@À %˝iøˇ˙ÑDEÕ¨©[e#(,Õ¢[â˘¿~û®Iˆ⁄K°÷$û>‚k¿òC•)oûyfiS%muj∆gY5•áŸcLI“Uº©a%7 ã +π1õ$fl8j_/æ§ˇËêpÑKìâö!ÁKˇˇ±±ÚÄñ"ãˇóˇˇ√? U@5ñU]Hê‹°F�»13W÷-2 ¿í0K¿m0#c`9òdˇ˚p¿�qOÔr㢧È5›5¥ô’&fv%F`¿�ã¢øå@�0ÿ¬�ÉÖB¬@1çÎI‰© � +Äı˙÷ÃJ‰ÕK¥|¿Ä@ �≥x|9`Îâ1#¸WC/èZ›.¢·_áêIF†∏Y$€÷ì†á˝§Ú‡õD5ˇÈ>≥FˇÎ1b[çJI4‰ ˚]Ɔ(Bõ }J·,˘[a•ƒ§]%“˝É·7e±Í`≈ùæShÒñ ür•π3&¶∞ÃLQ+ì‹ïRÿãI`¶và5Ì◊ˇQ.�ºGjgõç`√Ÿ¨dV +˯ +R�縮!?“6!“6ê*ǸR∆vh7¬å(ˇı®¨aG cª�ekbπ∆”r–≤`I‘ø vñd”Ÿ†»•Ê0ÿ¨«cìÜKˇ˚p¿�˘!QÆjK™+£ÍuûQuåcüçF¯â*#◊&ıY|–áÜAäbÅ= Po£˘?Z€’ˆË"&±„t +`ÀÅK�D‰,∞∑”#ÈàÎ√Ë÷%ÅÍ +LYc“aÛã{%œ˙∆p:SÖ“ÄÅÄ!» k˛3¢ ?ˇ›l˚*"L∑âπ3võ+1‚9“R‡∏HÖ·ä%ÒÑCFç)É8 ≈„$!_(Dò…Ñ∫ß◊âgTŸ÷ø)a™ïà√¨~¨©ï?ÀôAó4â|Ä@a⁄7 \ÄDÚéë¬óR∫—Ùź¿£Å9”0%Õ˝IÃçøÂ"x»t"/ÇÇÉLO˝?ˇÈ¬ÅôÄRJ .∆Q 2z¿19ñ‘b¥|ßá,y|à¡'+¡°Äˇ˚p¿Ä!U߈ã≥§*5≠Âu˛c©sû5Ør4¶,∂œjRi∫ªU‹VíP˛/Ñ˙p” $V:XM7>y˛ì{P&(aÄfiçÚ("V2CÙ”Y}â2B]&ç?§èˇ˙iä(¬≤o +;˙ì놜Z¬∂#‡»·f!1í +r‹ÅnÜ&4HCFÜåÿÙ¿ŒË\œG¡°•∫Hƒ{0±`RáåÖC» 8@*PLbAQÇ£�çÉÅåT@�Ü#@¿FQ†‡@1P5$E¶9ï`Œ§nU{=˜ˇxˇˇˇˇ?˜⁄|.øÏÄÄQønÕM‹t_ßRóH)flŸ<¢Õ∫JÛ–ƒƒ∂O•£~ÄpÉ—;ìt‘ùÔ˝\%›ˇˇˇˇˇˇˇ´©JÊS ç∂Ií›ø˚–¿/Wˇ˚p¿Äe%KßΩÌ©Ñ$f<Û¥BL1Ü `!!)ƒîh +X†‰BXó,'†µÈ&‚bb@C‰‰†·'É»&Ã∫íAb'©√zǧAÖÃj‰5∫}Î?ˇØˇŒ.≠~‡éRÄ}ÜHa�∫'bÄXè”8Ω'Xòõ›+°¿ù[$fJʵ ˛R[ t%Û÷Æøˇ¡flˇˇÒ¸,∑$NquF¯*ãº<;ªæ€Z·� ®uÊ™R*Í#˝eµ√7ÓU:/⁄èJÒe.häñ¥ ≥cl +SìŸ@ãú!x˝2û™„¬ +'ˇÓrùfS¬mΩøˇÚIlÁ{flˇåÏr˛fiÿoflC∑ë^�:}µ∂€m≤ê„T±Im°Jò™˜∫‰R) –ÕÈ $VQ‹âPaïJ£ORˇ˚@¿�)ßòÀâè§#Ûpª3%%ƒˆ +ï,Í1†ô,˛Qöw_ªìæKÃ≠ÂF˘æøÛ≠˙r ò›ËC∂ËN∂“®qjFíkæ¨DÅ:˜yìë[*ÎíR±P¶¢“â•10¢f¶A≠9˛SÈÿ6<xpÁúCÈ≈ú-N +Îfi›s˚˛mL9tÛƒΩôÎ?È 3 Ùö?˛kîd∞¥ÉèsR˝Ñ(k¿˛ö™ñTˇ˚P¿�!'§ÀÅj§# ƒôpÙ}#Ϫ@∏ˆÊÊ´A⁄HKÒqBhâ»EÅñ"°â!Üê4y—^·fioäÓµ9S¨^S¸#cé%ìLr˛_)O∏~-Ø kŒ˛öøfiÀœˇ‰˚·˚fiÈ0U’*Ø»x™ø™·‘0°—åd˜¨äi,⁄Ô1ûvªNK∫Â6√`+#£„öƒa •æ0óº; óo˚xfiÌ∑ˇ⁄5oˇÓr˘o硽´{û~pñÇ˚ë,œÈ0ZïgÙ˘ˇ˚P¿ÄI!§ÀÅg££∞îôq…ShJÎâóJEŒ’I∞≤( jH˜∑=F£*7≥5—óx≠ûo≠ç∫éjÖΖ>†_0ü®0ÇE!H◊œØ‹ÿˇˇª˚ºˇˇˇ˜CqÜ,íˇÍgÁîìQ§äUT¡ËÍQ‡±[@˜y›Æ˛ı£fl!”WdôºIùB˘™Çi‚C6›<≤fl¡lÔw∑&kÑòΩ[„\£C AELtÒ⩡Ô?ˇ‘øÕflˇˇˇfinˇ:?¸≤ß�jïGÎY—Êb!ˇ˚@¿Ä +%ò´âW#cd√pH∂ºÈɪñ_˛∞¢=·"˛òEô©à±éwUuAÓ•1JÉÜ "ËQAk &1�ù5뺜Ñõˇ‘ŸE[‘£≥VıRµ*—'G8ôÛÔ5%§ëAd¥Å"C†ø…Œk6W⁄÷≥ôL.!∆îhÿ‰<„Ç≈«UÖbHVh∞pYªN2Ø¿ßÿë|≠˘=Jøı¿éjUW¸Úˇ˚P¿Ä +ŸòÀÅd£c ìqÖîr√ë˝ ˆaÏÇÜv]Fävfòû ≥ËÙO´i÷´Ó∫0≤ËïÏ|≤?&ÏæEû’˚xœœã!åÍ«_⁄ˇï:g.≠“*£¥µ„fl¸º∆M™U_Ûfií"/6sHfl’(∞#§Â0RãR$ÒÀ@Í¥UᔕÆÚ«Íıü`ˆ…~ÉÊ~If’oµ/)9ŒÅ’y˘Æ°ìyˇΩ<˛iÀfiYiW¬≈r o%èDˇôO–˛¶%‡‡µgBJI_Öˡ˚@¿� +ï!°òÀÅf££ cq_ıd»ü≠Úˆ*‰„Dlû"¢∫£@´˝d>xÂbùª3∂∆ÚˆK’÷ª#ˇbıÕ{fi’_˙›(oeÄR+ëÓ„{i ¡ÁcU*øÁEƒ Z« HxB%Õƒj#w +ì%{ŒËPsñj^´EÇ„º‚#è=s°˙l≠Tu¸54œ…cê'H¥„„ÕØˇ§qÍim˛∆ù≈„¨‰cVñπI%Ïk¡9ÄªÍˇ˚P¿� +Å$•Åq£cdì%peöT9Ö R·∆Bç: ∂·˙Û:ÙvóÈ;À2È ØNF vn‹–+3ñE◊H∂:‘˘«1∑_75R1≤£˛_DØ˘Õ“q¸D˛èÎ ø™Uôî< õÜW≈§\â‘!·˙fi“ˇ≤òˆQa…ÉÑß=ÉïπflÂS]®®∂MìÆ◊É⁄ØM$∞C}°fôÂã;.|Mˇ˛‰‘π„òı¸∑ßÂ/”NÎq¿∫ïC÷ň^Ì; ˇ˚P¿� +¡ ÀÅg££∞îp\C*áÖrÜE˘6~2‹’Ö®êReZ°ö’He¢ä⁄˜™k]XöhñigõWtã?fiüÔˇˇ’”ˇ˛’ˇÕˇ¸lˇ»©N6“eUU¶ÃÖG¨Éfsy-0Z#ö Ú[8QO:\{Nˆ2Çr÷r%Öóî¢Naöb∫“j§ ”lˇstè¯ıçY?≤}åËxˇõ¢sˇˇ?µˇ‘÷”ˇÅâ‚ñiïVUT<òHÔË¢†4M¸Ä¶(V∏fl∞ˇ˚@¿Ä#$ÀÅ\£„ aôpAx∏¡1î, õ>9(&if”ã/){Ö:0£m>§∫©ÖøK±o‹3÷&Ø Ñ(;3≤øsˇÌ¨ˇ˛’˛∞z≤_π*¿2™Uœ»ú@XÒÄ%AÖä!�:‘lú†6afi†@ô¡¢‡ +Á*2Öø˝∑Àb†ûAßiI^Wcª)–kǵ]9| Wt∑óflCÚ˚ÔˇÁtΩk…˛dŸÂ`©ïW¸Z1 )ˇ˚P¿�Y!òÀÅ{$$¥îôqæHÑhûÇÿ~Ö¶{°ßÖòÕ¨À¸‚óg‘•ñQi£EõfiuJM[‚RƒâElA‹cQÇIF˙RZµLܡ¥sŒc˛Á¢'O ◊fl9˙˙OµÃÿB€mí»‰í8DPMeŒƒ”aÈüUÁ2±0evV°&¢¶_/ëœi¶ØJpçLj$F1Œ◊7\[eR…[úiq[4=˙ªÊ~‰y0¡”}C¥’ˇlˇ˙ˇ¯ào⁄ø÷´πœÈÜçxêññW¸•kT„Cˇ˚P¿Ä !òÀÅe£c cq¬Jt¸ët“%Gæß+ó:éVóπY Ù›Oû¯Ò≥f®ƒÊΩßÔ •ÉÔ._xíwˇ8£å9mµ@‚Á9ˇˇÏ‹†+©Âc√•…ƒœwIo§©•Qˇ2/‡@”x$…–ÉÿºÁ% îC‚a⁄HF!g¥EÁ8„|ë¡ÁûõF~g@Aóe*HoÓÙÎÓJ‡¢™‘?üÈs]„s˚ΩKñN5F∏«ô—=36 YUS@≈ô�˘VÍÙ:9 6ˇ˚@¿ � +m âh§#dë°pI∏”ÌçR»%©:dªÓœõ‡PÆÃ"§\VÕI˚j±’yı32]éëãxy;Êg˘öˆ+_x\u∞ÔÒäÙUS+3*ŒI'Ü`ª∂Å5 +T0∆$ܮ߱<û@Ò˝ uî|ej¶à‚„Cé≈˛2¯‘W)f√òí@≈ ;ÜîÓ©/÷˘ŸÑ«ús8¡fl∞Ä.x∞ÆzïW¸¨ˇ˚P¿Ä +—òkâ_£# aôp∂ı“öXflbEÔ±åhÁ≈4[=‘DNúåA"∞q'UQ¢òcUR+LZ£äÅfiÎ!B„(@ÑÌ2J<Z—·⁄e≥ +ÖºÃXTDÆ$8†Z¶U¡EH¢Éújÿ‡!åY´' +∏hô≈z∫@%Fk}0ƒ`Êœ0q≤5“x%ı–Ú]ˇ˜9fló:Ïõn4ÅW_¸E»´¬\≥ê:Òö.å/wπ`jôW¸«DRcYGãH£åˇ˚@¿Ä +ÂÀâZ¢£ îq'è+È®ëóyI—O_lEœW=vûY€•Ìøÿô2’èzqOüÆGÈh3Q´Ãu¥Ã ®ÑÆq∂fliæ*©%ıp˘ÀµR´˛g∑- ËÇ)√…ãqsÿe1O$1√Qe¥%—®Ì#Qå.s‰*VP∫R±{ˇy§≤Y≠€ÃKOw˘øFPõ”N™T¯≤PÆ–Óï*%±†£t,YÖW¸ˇ˚P¿� +µÀÅZ£c§ì!p}‰Åwƒ ]‡R¥?^æ§QÕÊf∂mo∏å<vûK¸éIMXMØc[iÔ=k)«#uã›È—WŸå iXëü…),à˝Kv¢ô°?u≠52otgêÍWˆSUT¡M™fc’ÄŸˇ¬Àãíõ¥3Ê¡§K≤ +*ìA¬zbU ±yvíEîÈE6¢‚§%,¬Ï(„«ƒì40ãyY˚_√«˝≥~U0C]µUr2HπØ&¿VôQ¸÷fΩHÂ∂:$}ä5D˙ˇ˚@¿ � +9ÀâX#£ cqEO˜œ˜ˇR∫€ïGújΩF€føv¨ÿÈ6oøܶÉì˜◊O}ÌõÖt∑"˛=ïÛseÊı‹Ω˛1Œ§õô:)8¡öe_ÒËÑFq2F$í7ÖûSêóÑLı[ ÓØ2çTö9≈LìÏÙ”c…ÜΩMWùf¢˛deÕ„pıƶá9œ÷ö¢sõfl »ÍSıÀ˘ªŒß`fiG¸N⁄á5Û”ˇ˚@¿Ä +M!ÀÅc#£ ì q"≥ûÕ€‹n{C5Á÷ÁøSoÑ-©ù//}≤≤fiˆ«¶õÔT5ÌwwG«∫Ôµöû±ˆ›Ïï∂Ã7ØuÒß˚}“≤–Z»˘=ET®ˇü∂¥PÖ¨Ÿ'$ÎbHÇÁw˜≥t& á$/5gi‡ã|H±Å8µ¯2«DBÕ Ûå8í2 3°É¡fB„ÇS+öüMœqƒÇ»®=pCA©Ac˘Äˇ˚P¿��-$òÀÅk£¢‡ìqøöööT*fÖdéT~.¢¡Ä4Ù‚;Î +Ç*îVåD˙@¢ê£Ô~flØ_Çi[ùJt5p¢òÿ9iµ'˚Zy˙ ÔóAä;3]h©≥;9WøÕ˝õi[Uø$±“5(ıãíT $1ˇ;N;u†¢˜m�ÙcaÆÓ£nÄ˝fij%ùâ∑≠´Õè⁄∫üÀúÒmèïgËÔjûs%rúI1+Ñjéí‰çH>Q/ÖS·è∏SBê9q�™’W¸qâˇ˚P¿�çÀÅU$"‡ìpê—C@–Á∫E≠dò¬+˙^ £Ok¬ïG"∏ Wxÿ‘Ïœ÷-fiÂ(ö3$ãWmRıwç,˙œ•6éò<&àr◊EOqíw+m,!¨›<‹ËœM‡ò≤}m2ò†,´@ˆ4 ≤Mˇí≤÷M~ë4⁄ü”s|¨¯»`œo–ñ†ÂòETµ™cyMÔÌ}ˇÀò’Lfivæ÷ØùßX‘#dgˇ ø≤HoaÛü˛≈Ó~x©©W¸Y‰©áÛU—®ˇ˚P¿Ä}âf$# c!p>†{¡π%q÷=1q,"M’E≠‘pÎAÁ9®©¨Jÿ·úû£n Bâπq#‘»ûÂôOjf*"‚Ãêd6∆/BŒŒs‹‹D‚ÓãU™Ø¯Çà†âcÄaftQx(†G˜É!ö\öíC>i:ã£K/å}/BwÚU°LS[—ÒÊrêœEÕ—6¸õ{ gb%©≈∂±Ë“î»,3Ω·Ò∑4Yc,°@VUΙ„ö !ìwˆgîÛE6ˇ˚@¿ +� òÀâd§"‡ìp€Vµ¢êK‹•+8◊üõ¸ÎÎ63>X]g}}èÒ¨∏/ñ›ï˛:Ú∞^Qµ¨¥ÌM≈/¬˚ÓøQG$㢢tWbòƒÄ¿’eU#)ª•0˛≈û∏≥™ÏQcĆc Œ}≠ÍŸ3ã(r†¢ËŒØ˙¨ÔqÌ´ºu”Ù-êŸÛèç@FAQ/ãËÔ¥a#‰Ñz⁄OΩ/óèi-Ü°†zôWˇ˚P¿Ä +˘!†ÀÅU££ cp¸Òd.I≠°;Ω‚áÕ<≈›]Z∫õX«aóèÜ!¸ƒISXÀ¢Õähúb+mtà√å(ÇKI™%Ûü ıÔ6~˛ÚôSó®ˆßlÒèjd€øsu™•_ÛîP“,Èyȶ^^ +Esó'B(NBwƒ⁄H\‡Õv—Ú (q]Ÿ™Lú?Êkömïçº≠sY®˙.[¢Ø/¶‘q∂ÛYO?≈Æ€|JΩ–ıÔÏÛÄjôW¸˜ß`ìáʇôΩ[éˇ˚P¿�E!ÀÅo§d¥c∞: ÆZ01Bf?)èMÂÒì∏Mœ/ŒaTzS6≥¸◊ìa]·#—,øxû0u=$Œ⁄)M·s§fiZ ú≤÷›q˘tÈC˚&Ø%À-íI$íIèo-tUDT*â≤tráæiençˆVƒqGÏûë-ãîΩfiÔç6¨õΩn'7˙}⁄yyL¯˝±îcS7∫fQµYeˇŒµ˝È#ËÕA”ßõfi¿è,†™Y’W¸˚‡?Ó@äÖ1 1Y“&7”Mˇ˚P¿ +Ä !•+Åb§# ìpz∏âSFQM∏:ûî…w€§˘¡&[ øQFræ§gf~†Y‘◊M˜xä≠ÕQD≠=*î"eÏó—Æ‹∑≈âʶÍR÷∂˚"…,¨ÂiEˇ¥ùÙºåƒ(ò⁄ß^Ó"1ÑdfiVÀF€ÈˆYfi€⁄/dmÑÆà=) ‚}Jmñ¯£∞æYâ∫ Jª{é[æπ"fw®èflΩóÿá∏¶1Û¿ÊØÖ>ºâòVT¿‰â¥WƒD`–≠õ·m‰º%ˇ˚@¿Ä òÀâZ§# ìp›PNÖ¢nKí™≥˚©*1téãƒÿÅí§√.fi7Ø˚‘ÔØ©†Å~uægnÚ_f|Î7_]RÑ˝„#Ÿö∫˚űfi¶Qˇ<ǧz™„%^E#e˘è⁄\‘˙å/Yˆ√w úû∫â[<¨¯(…áƒ˝RËÕ”)ÌØ<>1Ò:RIE<ˇw⁄˝Ω^ñˇJß«»gY_€)7õw1îj©W¸ÚÇ&íiˇ˚P¿ÄQ§ÀÅw££ ìqÀºYRjR–9Ê‚íh‹fSåÀ-/=v3Q®1ìD†Ã…dc,˜m…L߯_‹ôÈ©fi +ˆÚImSø>C1#ê2∫UÒ"·Pπ9ÔÁ6%ÀGêπ™©ïÀ a∞øÙÿ„¢IïzQ©†áï/ûöbM“[ás’[D®ÍqÚS‚»◊ÁØtíÎiÙ•)úÕˇ+T∫ ≤eU b+j)M5KÓrEZ¬’¨≠ˇ†LWÚQ5≥ ©UW¸.LHÊ‚ªˇ˚P¿Ä Àâv$#dìp0S¡C¥ƒ÷µÓ•XôE‹o0ÑL˘'EF—.‘ZΩæ¢A^`¬V™ˇîÊÆtù#¨›]ûF{Óáçõå∑ôIÕ”Ã5ıiÑ∫T7ÌLÌËѨ®≠ıR≤’‹±JêSç)Q»D +æóˆu™5sÆ,¿õû≤{€≥ïi4ZéÒı}ãƒë¥¡ÊVÑ∂8¬Ÿïé… ú¶∂&JI öÕ€,ØI/K?ú©=붌àìuÄøb¶•W¸@ÃIÌ!xDpç`«≠ˇ˚@¿�≠òÀâI££ ìqèp:i4–:#û¶8Tn§ñåÊD¢Bó,RXzâZÉ£R_-mJíÅéTÊZπ≠õË$Íö¢MHˇ1À˛P)4ü‘Jd>π0ÉS5*ˇìfȨæT,ëu—z¶⁄bô˜A˙WRjUûlÕs´9[øQ÷mΩé˜?0ÜcÊ>‘™æ√\›^„Y¯èÙÃıéB™µß≥ƒN<æ˙üôhn˜[∫ò4fˇ˚P¿�Ä9!ÀÅo$# ìpïG¸Â*˘dƒŒVΩ–C3Z!€,mÊÖ.ßg≤'‘∆YäfiˆÊ7ã°Xù9€`Tä€Û) ”7‘6N€CÎú»…?ƒúìË◊Ë6·÷ Ô›-BI™Y_Û≈ïYQ2 Ù°ì3NΩíπcQc®-í•d2ç£-ô0jHƒ˝"ŒG∂âd˝*•·;N»äfK€nÚÈn^y¶Çî◊N≤®ã~û⁄î÷zT[¸¬\ʵ߻hKÙÖii¸Ï'ˇ˚P¿�Y!ÀÅm§# c!pE#Ù(„UK+eõ“�÷¨(¿Î¢Õ9Db^í±ì˝*áÅÖ[ú1ÆPõ4Ú›$Ù≤ÿ÷‘t®lE—∏A‡ù“˚wÂ2Ç‹îŸòOµÆ]T/õ匓XÓ£ùjï_Û≥:$06ì-3 ZÖnêé…¢å¢÷Ib»8jäÕõπëÆÚÛt@•ÂÙ‹π√‘JxÔŸD1 —qy7<ŸÉ∏µø´ã∏s-3âèãcã7)ä4|ç ∂‰Äª™Y©X*%[Qˇ˚P¿�=$•âV$# cpâå∏RÑêS≠êâ“s·zÑüc'(U~lïCοB G(Å‚‹A¬Yp!!'\;dçÑä€Ì‘˜âæn•"∏Ü;÷π»tR‰ÈãWGbÿ†—A√FÉ‚êU2دY∆π%„êH÷ ˆÖ.uÀ‹Á4’z<˝É=¨5Fwº!îú~ZS FªÃRIÏ∑ÀÒ°˜Á=ûFs±Ûw◊◊>‰∑¯e”>úŸÜåøéÒ!fi·@ZïE¿πd≈h≤%ìˇ˚P¿Ä +˘§Àâj££ ìq†‹µ∑Ag£åfN(G⁄ú:¢Bi£?$Ù≤I(£mNi7f†$O+√«◊˜>3≤ø∑˚ìMÚˇØiÌ7Ú˚ø√˜\>€≥\øÑ˙9™•oÛ’∫¡Tol°Ç‡¥ç—H^Rdä@�ë�q≤cvqÍáCfi)˜•RÊ◊Æï„ì3?¢QÀ¸Îr^]µÀªΩÊ%ÖÈy”üÕ¿ÙµgÙCπµÖ€ˇ˙4Çx‰fá)a`™ôW¸Ì4§î(™§bDko22@≤ˇ˚@¿ +ÄÅòkâf§# cp¿íˆMg:fi˚i_¡çBä¡2ª†5éN pê•›X5L0˙á@°F@ƒ—«¶†bEí√ ,$QL∏ú춶•W¸Å©?D>à9»Øi†î$Óµ—"äÙ∑ò<®ºw%ÑÀh,ÿgLıZ]ÕYº{gÓññÀ€£{GÙ +-“)ó^;G©“ç~ó£µOA_ïµ˙~‘Qfˡ˚P¿�� +±!ÀÅ[££ cqj•W¸h∞΃Â:;c‹zŒÊ7(B%ré-I‹úUjÌ°U∞ÍóíÉÃ]Ù˝ø®H©√⁄:•w +A{Î◊+{©ì +«éé>˝íı>ı9π7•◊¸Ê™UœVf•öyÀQ&ZZ≤^ås;õc‰t*Tn÷ΩË|BJåº +ØÊflsŸòûŒ¶ëÿBWÚ™~bÒß÷Œü.˙ˆöiÁƒqÂ!˛Û◊> Á˘(¥N�´eVöXúÍÀÀ≥YFˇ˚P¿�a%òÀâ_#„ cp≈˛≤°ô^Ùı¥‚vXɃÅ2aw$[ìöÙ_À3£·0Bd ¢Hõfi√oíe‚}ªSÌgóˇŸëˇE∞≈•ß’|B„˘H‰¥∫:Ìmf•W¸Â1ôáU)ôãË''ß©$9—∏ ò˛i[ü.c∂ùúxmßãÕJæ∫ÈæµÌ9EÏw” +√˘ÃÖ!f˘)/Ëÿs/˚⁄™[§Îd1ÈË54§Ç§jôVUT:oI'GÅ+8∑l≈ˆœ‹ˇ˚P¿�a#$ÀÅz$d¥ì∞«I¢ÑÖt|¢±ÑôÖ¶Ëwkfi«∫%N•d–m*@ˇwNyx∏≠ìZ·©≠#u≤SœXk¬|‹bPÿÚ|÷ÈU∑Fö¨‹œEO ñ€díI$í’÷ +8õ–ú?n˜‘•]#fl„¶AI˚ ~Plì UYvSºKîYÚNoMçî! +´s"YÖ¸0©πÍü˜Æ +ı<˙I(ˆD¨ˇ©Á_9Sù\£é–™•W¸úåbËÿTTÄê3Öƒ-"tÅ4ˇ˚@¿Ä òÀÅm#£ ì qlêñ¬ãòÊ4YÛç +g∑KÊ\∆Ê≥ˇöm?≥N°‰Üæ”m§∫?ùM´˝õ/ÓvÎo¸,Õ{‰´«)kÿ∏Uî°ò£o•Uˇ) lã2 ¯‹L6õN»&AbgM·zq$∫tƒâ +ò%béa·âüXê(Ãà ÿÕ∏#Îö‚ô0ØÛH«√ÀågÄ'pfPc∞ØÍUeˇ˚P¿�Ö$åÀÅl## aôq§%úDÑ…�§—ÜpIëAÇaÇIjD ¡Ü? ¶û.¨„Ps‰Ïs^πì•+3;&C¸ä£è∞£ÕŸìH∫G ÁJ1.iı6Ä@Éb¿åâ˙]ùØNU∑hÔÈ’L´˛8âM3ƒ…Ë¿®D({(ÅÉÄ( +çD3¡A<¥WS≠IñLÇD逶-™yEvÙ…—‰˚¬m‹ÔAO(‘ʧz?∫⁄ˇBR²Œ≤*h§K1ÃÃ(≥µπSœ5¯�∫Ìu∂€m∂ˇ˚P¿Äe#)£ÕÅa£# ìqꓬÁRÉ¡s ìLaÓiZNt¨_xÍ(»nN&rLÀúÛ{Ï̓MF£2ò‰e“kå2∂ÌÙ∆ròñ=^Ù3Êd;zƒN*6ÌÂ÷jÉfØ9€ÆÌ=÷n5T´˛W*®È≤4e ñi2ú õâπÌf`·2JŒÂÈ—GÁÈô|Í™ìÉAh.ͲŸS ”eEÆ ˚ïhI®⁄€˝¢ÙÙÆ˛E˚v/6®ˇNB<vNpˇy™™® +S(«∫ëè%iˇ˚P¿�ï!%òÀÅl#£ d°qôÅ:e'0‘”ÀB5–ñ—™E„d-3Ÿ;7œxT/WöR?ƒè¥Œweª§Rcf≥ï(Ê˘tA˛ŒÒ]≠3 G´ Ik˙DëÑ‘Ö4´?„ÉŸπ–)!g âÁ.’ÕÖZ!!kUj◊ìPÉuöáZLLc$ƒ:Byõû+T?ß«ˆ(Ïa«-YP≥tÏ<òíŒy®ôõÍ ñÑ∑£≤Æ‚Ü<p˘‡¡hZ•S¸˘ÆaÂf†Í˧Ú9.Èˇ˚@¿Ä +IòÀâZ£# cqÉÊ4O&ˇ¬,™ßΩl&boEVœ€Ûxñ›∑–ÂOÔr€ê¯G_¯ƒÆ£sc'z]ùfiæ\è>€õOÕ≥¢r<”s¿È•UˇMê◊bÀ #�¨í)î¢_ë“t® +Ê°7´◊ƒdπ·1êΩ3Ω¥<Îô¨YÀıÌâ„.◊–∂«™fi~ü≤ñœ¡Ó≠‹¡ÈͶàóæ£&`m€úÅ„óÑj©W¸Ë…‘RCˇ˚P¿Ä ÀÅs##ddôpÃ&4±`IŸ ó? +(F¡˘p0(Å_3—˘êÉ>úb g¢ãcê#TöÿÈÆfjœÅ}XÔû>2UΩª„{´y•jLß*?˙”Ái‘—ãeôo]R‘≥c�*-»DDX ôVÿÿæˇi$öÿT]Ûåìàc§ç§ìO˛RVo◊K>÷¡™+m»”jEöRvUï‰(flŸ>◊≥ùfi+˛a•fiπax¯`çÛ°Jä�™©W¸Sz4ŸQ°1ıNˇ˚P¿�]òÀâf§#dc!pQ$˜.ìH«∑”K‘åìáçIF≠ùtéÃJ%/5√©„‹F}Óπd#ü¶ëËÊù⁄à%ú‘5”rS¨ïcÁ6Q;Û´hŸ◊“>≤–G§Wı+L®&€Q¢P <"ÙFYJie∫Õ›ÜbPlm©`¡Áàdq‘9 àÅıq;M: +; )≈óÏd]=Ô{≠èfiÙ•q∆≤ç∫˙Ʃï®u('细_ÍôVX<?"rÉM¡Ωâˇ˚@¿ +� +Ò!#$ÀÅk£#dcp9˚çs≤â¬8ØQ˚Áy´Sú≠Bæx«^FMevrRuA˘YGOù’Oˇ¶fld€¯œ˛„¥^L4’∏ö˚›FM!ø"HÚ«ÓöY©C∞@–p2i8RsîR(OÇGõ ó« π'—0’c\∂°]ZÜZÄ˛Å§RDÆ*ö»À†‘q$™ +t”áÈJ÷flˆˆW}˝àÑ?g”î)⁄_>a22@j•ˇ˚P¿�M$òÀâi£„ ëôpVUT>ô2çïT.≠0'æfÌOeú¯¡`©ìw¥ö¿”ª©:õ4ı5¢®ìØ DN´*Ÿ±;*P t∫„∆tïYN∆2Gc˝ÿ?u˙F•_”6æµOänh’T™ˇåPï5ûáfÙÍò¿ `¶%Õ«d0U–UÃ≥eÀ˜Ã-]3Õ7>êá∫6%#1U'$˚Q¶ñ}Lae7çÙˆjåL¯<∏D‘N/[ª/≤Ç“ôh#v4j¶W¸Ùpâ,ˇ˚P¿�E!$ÀÅa#£ cqã…jB4qëpÈ»Û=~‰ù–ÌIÕ3%≥—«8˙∑§tÀ$~Ïı2üj˙/ˇaLSæQ#ZV«l*£¶Òq•©N˙ 0æÕwQÙˇºõ$íTSL£˛.Åê÷,yDk–|?r +úÌñÈ⁄˘§*Kx ∂KO,tW∏≥V…◊kCIeæ>/7±◊F$…[,©=}Ωø∫ıí¥]OoM˝¨ŸY/F DSÿ‘òÛ•.忪™YUhÀ‘Œá„åQ¨9ˇ˚P¿�9$†Àâf#£ ìqKı§õ‰ë*TD=,◊oW–»1±˙7}€˘€flVÂfi64k¥ÎÌ≤üflë®e‰§DË[&q`òbtd`’õWÖ1Ê˙"A™U_Ú±YºÄ¸—é%?X„›⁄I)"íP∏(>ê^ôOµkã3NÁÅaÚÌzfÈ”›Ô[‹ˇŸÛíbeÁ◊ñÎ∂¥∫)e+¯>µSnc¢˚ùflOÓø&„�Ͳöö®(çÈ∂a!≈&â@‰/íK∑w\ˇ˚@¿Ä-!!òÀÅu$"‡ì!p¥¬ÊRÃóE +πÏŸ˚ÎÕMj[OFRzÌ‚Á˜ˇõeì g3©eëáfiÇ<âõŒI—TZÏ•rÌPAPí+b≠Åq’å®*ììàî≤ôMπOπËyÆMZÇC'á—™ûã¥9,fl4‚ÅÿÒå-ıøEîT¸L-ms,Ëã&qÜäΩ¬Ω+tp—ØuíÑã#òó$ª\ fièéÅÁÑǧpjˇ˚P¿�Äi!òÀÅh££ cqPD¢ƒ£daQ¶"™yÂ!˚ †m8‘—SJ9C”‚d/f∂Æwú∏@aK5#Ueb≤ø‰[Y:[óø¸äÆ€?Øô%˙¨œ⁄˜ÙÂÛ?z§KrŸ›F–∞Uˇ9T›�⁄√,£Á=òô¨–≠ê‰Ãµ~BX‘íD¢%’¯ d™˛Yà))°EˆU≥C ;5óÇYù4ÖÊ’ûUC\ÙëÿVºm‹ï·ë®ïkO1i>ƒi`¿*ïW¸·ˇ˚P¿� +…Àâf$# ìp à$0y˙`©!õ¶8Ìl¥È™€~i®òåŸÈl≠ê«fiˇß∫ÑßìÁ¯S=∫ÃÕ=€º=ÁoSÉ*Ú}Ï?,^2%~úcó_ı—ó˚ñ≈Æ™iUˇ"—-‡ZEyYÖaΩâ—HÀMá˚»‘ÛËt‘‰5¬Œ$oÔ©ªYàQø‚’Ö‰Cˆ≤5ê‘fiÕhÊã<ÕÒì4ø∂∂4å#V-ˇAn√í«H™ô[¸IKU$ ¢âùfœRüˇ˚P¿Ä±§Àâa£# ìq![q4£-Üêà–jÓìÖ£PǢ/§+9Gõ÷ÍË9“t-gëÌfiÛ‘ S≤1´<„⁄1˛F∫3"≥â≤ò•ñ€?01˚‚u5"Êßd˜NTiyï«≠,á"∞ä˙.20fiú€Åfi]òÂÌ4-3ûóÂ+Ÿ‚ì”Rá√NËÿfler6"k7f7oRm]ß4àŸçyaâz)5<Ûå£Â™–ÌÕ∑1î˝˚“=Lª©W¸ËÖ`™ÀäCr(ÕåCA…k´¢ˇ˚@¿�≠òÀâ\"„ îqq8–;K∞1∏…$ÓO(°Ü≥Bòœ∑(”ôVå‹ÛˇtÈóç+án‰úª√˜*!#;.›ßY’fi∫䨋3Ånê¬ L”*ˇùÑ(™BÁSQ#•ÂûTùÒ0i4é8`ÚÿCµòb“ü<h§!òâËcÌ#ÒÒÜMãSüvœyÈv îˇ2öΩO§¶äß«˘Ì÷€/MézøU”?ù≤ Æiˇ˚P¿� +’òÀâs#£ ìpW¸•L&a◊"ÓDÚHddAL+^Âé√‹;맗É(¸íΩ›≥?®‘#)◊mø¶4nIz˛£Qÿf¢ïˆ!Ã¥û≠ôøáJº|˝∂›y0[˝≠ÇÀT™?Á|L4£h¢<ë#ÃQcߢö∫êÁ]∞Çf»1nßÁO/Ø®ŒÒGj ıï'¬E]i%XyÀ*Pre˘EÒ˙”Ñô>ÜóÍπ˘$,ætˇˇæè(ÛRfi›¡� ∫ïW¸]�Äɡ˚P¿Ä-òÀâg## dôqπK˚9è(ïíÔ–jwä,˜£°ä¶¬}y[B¶¢cuy©¢›fi[Œú ‘≤n&zkƧÊr.WuJ£_·’4nÏÕµÎÊ +⁄‘ú Ú@ +∂-U*ˇûx!Ä√I¶™6*8üÑ◊äƒ=^;&ºÚ<mçò˘Rú+ZÓÎãFÌıVÏ Ñ£∂øt0⁄+ô≤ûdK3˛émeƒøëçÅ∞‚}´√£»3*3ÛDt9Ä™©S¸§Fb∫((âîYˇ˚@¿� +ÌåÀÅc#"‡cqÑÅ•°µæR–c=RA%ï9ç‘g0îØKGfiô»$®fi˚tyGÃûÇnyR˜Êˆ9{Õ|ù[◊ï}*,Õ≈F$Ñ˛›)@É@≠RàÖQ p@"rI"^ +6¡â:Õ+¯M0˚oY∆?ÃI–wπ}|Œ›∫8á63“— éàJ:¿´«ÊJqX˙Œ˝∑V⁄ IO¶Ûd˜gi~èfiíÊ<Ï^b≤≥ġ˚P¿��†Àâħ#dì%pZ©W¸™flÜP“ò0~„Œäwã(T{¨Ú Ye eEI√)˝<»√0˜múËCôïßíu˚õEe5∫é¥j–ˇˆ€›~˜∆y¶á´#∂Ù≤yÜÌË63∑ÆiiZÉ“Ö…¥ı‡&^ñȆ»È:èπ9E¡“êb™úA÷agŒ˝tıäπl5ßGsÙ≠Èø 8œg?Që,ûû∫R^⁄J•±r÷örfÕ Ñ›kõ4”uÛ¬7ÜC0è˛jHü +ïxöïˇ˚P¿�uÀÅm£„ ìpW¸>∑—à§É`Q‰‘ÑE&.®,òHHHp2ó À$wHØ»=~'ıêß4¢ûôÖriÛ†Wç,äåæòA÷§Ofit4bí‰à›ˇÂπg“+KU*?Á≤%Jl ù†ghÚŒ&RK;:U∆çJô∂6Stç”˙5"È„+ï√N¶a⁄õ÷ƒW<íFÈWÎêrk$›MV€$º:ò≥ZzΩ±]≠¡¥£]4?T]ÍÓI»íj©C¸™ˇ˚P¿�AòÀâs#£ cqìi%2àWB™úߡ·YΩiY'ì—‡Ã⁄·⁄©Ωç∑L„ÔJNfiYTçûÉÆ=Ÿ$Ÿü √<[>⁄ìßÓ8’ÁR˜À¬LügZßªä´ ®u™iW¸MHâK{&lA∫ïI›lzPàI√ZY±ÿ’븈√QÀb≥ß 3«0ÆLÍó?≥¢W‰HZ9óL⁄œ&“˘ +cÚ∑RKΩ\òµ1tQjú@˛FP+džílX™ôW¸IïË‚ˇ˚P¿� +·òÀÅd## î!qQ®u$%Ì\ç ‡MD≠⁄%;>ã≤¥Ò∫qHΩklƒsƒøÀj²Áµw]!Ò1É?∆)ÿ˙∆˚ïÿ˙èÓd\wÈÁÔı;˘GºÓ·J•©G¸¶Ñ´]zA ÄRDVä*äd´’°É∑±Éî¡ÆÚÏyU®+ìP√N0j$5R»ZËe:”õG9J:í¶M+∫ö˛G‹¥—¥Ó(tƒ‘=º"⁄¬—U∆jiG¸J–96≥√ó®≠¢‹L˝~«ˇ˚@¿ +Ä5!òÀÅd££ ìq "yi,BŒ?‡«íQW¬ª(˘k<Ó∂[≈‘öl(¯Â kfl{e6GAÃ≤[lvªõˆr∂•»9^70»ÇÒù>˘MJ"ö»2‹™øÁñÈ… RgÑK"›4›ƒ&*“ J}á¥Ô£⁄ãÿ´d*HC6π•'πtÁ6c—Ü<Ÿ¡…jQŒ¬ŸÔSKÈ{ -jTj¥fiõúfÙÙ«Â9›ˇÕ–%ö\™©Wˇ˚P¿Äa!òÀÅt§# ìp¸at2ƒ#@ÄÙ…<̃K()ÿ)f¬éÌ MºµZÑπ¥ˆñ)”ƒÛT‹“Ì£"±∂Hæ•RL’(’vOê‹T˜†fl\ìÎn©›˜˙˛E¯[22î1:eW¸¸DªDs∫By÷+Q‰J‰)å£è̪0≤§ñ„®ÎëÆù'ı4.ßI€“®≈f…æÔ`¬YàÊ|ÿ}]Ißrè8“©FyÜÓ± N®Ó\|—uˆYNV&UÄ[•W¸ùˇ˚P¿Ä +ëòÀÅ]£"‡dôqoCàA,Dz√Êi&˜åwÚkÃbx«DÑfi¬À√2ؘ٫øòâÊ≈ùÖM∫§¯£óQ7Q‡”ÛüÊf|TfiÕÓºfl∫IåCM¯◊9àÿL«›…O∆eAdápɈÃKlÀ4óÒ®I}B›î»FFá0‚u∂”6Ï›gøÔgë9ÀösKMæ‹œ˚e⁄9·ÔKÌ‚ØKBé∏G"„≠7¡ê~˛∏ªÕiâ+±m)fjïW¸À—¡‚±âa"®ûs?ˇ˚@¿ +� +…òÀâ\#£ cq“S[œN¢¸U8m´)ê¨7”ñÙnß˙≥J]6yOë|èìa\„ÓKúeaˇóR¥fi§Û-8ÓGöq©~˙?‹7{a‚*©Uˇ,Å¥ò$ûbDüÂ5tc!®DKìÑæ◊´Ã+*÷ëzß®õúØ ◊ázØΩÀÑ’ˇeʵ´ ænú]U2Ø1ÍíW«_ΩÓ¯§>ñCNÂ9h∫ÄZ•W¸ı=–ˇ˚P¿Ä +˘!òÀÅN£"‡ìqâ"ÂS>ÜIØQ¬…ªné>w*ifi·J^É ívÌ˚:2`‹OúüäfiÜ:F†˙a}RäÕ©ãÙÌ*{]˜£ü"-éîw,Ñ˘«Òö—w∞ŒΩh5ôQAǧ>çœ≥∞âGõ¶Rl(ª§’sÒ–œeıπùÔLº˘%úΩäIPBs øHµŸo¨œô≠∫ˇ/mŸæøÇÍ/g33Œœà˝Ûíw¬‹tR�k©G¸öÎÈ=†Ì\gæ8 †m8ûÛ?ˇ˚@¿�!!ÀÅe## îôq”ãRÖØ•÷ñ^â”,¸¥1V˙$˝¢SBë|πÀª &óHæv<≠úBÛTGL}˝%LNØ©€À˝ÆÔ˜~Î7rÛˇk;y i©W¸Œ[M£´≥`Se8ÅæW%o/±öä∫+Úî‧$¬ˇ* ÂúÁhüzÏNOÑ檺míM¥∑…ä«b4n]vûŸN–¥yN‹‹G+£‹¸pW§y^Q1¿*©W¸ˇ˚P¿� +˘Àâ[£c ìp˝Eö∆câB‡n&ññ≠2véyA©ÎîïjcßY=;DÛ„O^ÌÀ¶[Œ2™#G¥<1Ÿi˙ˇ¥\·÷AŒÃdùølV∆≤Œ#Uœº>ï`≠<)™eÛ∆kΩF(…Tä,˜à,Ù≥˚NŸ¸î∞≥ K¸§nØÎ≈°X~≤H\ò3g)L‘lπÙúRÌ“ÔT—rô˘ÛF‰]iW[âü/˛k5‰fim‹Êû=HjïW¸ÚöÕ4ôXüa÷ˇ˚P¿�âòÀÅb§# cpêÑÈ(©” Ÿ!—ÈǶbÃfl‚)"·#[íp⁄Dñöpfic9ˆπ5èd˝Ã⁄(Ócg)tÂr˝Ù•{Œ)ø›…ùôÁÔ80≤Z√Íôëˇv$4»∆ÄQG{mWÓcûe$d<$t¸tS’=SÕ–|ÃvG?©´LÓçtñÅ)hè÷≥˝!⁄•m¯Éõ]·Vı”˝∂h◊ä'ıd≥1vöiW¸,û1D$ÿ¥%UQ´E¡6dˇ˚@¿�âg$#dcp]ét*üä|I•Sï∫D 6 |Ãf^fyáó∂ZFâ1-dÊcç‘ âTÃÅ‹S,?Òªê≤eAé‹êòiÄ≥ΙYïh™ÑM¨C.âÇ√|üöd¨Èfy(∞ê^Âhw>˛Áø≤νí£∫ˇM{è:Õ∑lŸ›µL¥ …•ô,dB| JÁZ7ØP�ü@ƒ§Z©W¸oˇ˚P¿Äe!ÀÅZ££ cq~Öèà#`Úi¬-$˘tô/Ë“,XΓlGf‰√ì≥”=jLûjöVÆSkÊw7≤+€lL£ùVG“&ØÈ€º#˛¬gc¯¬çÆ{ûæŒ˚˚¢YkISÆÉïT´˛~ÅìZ%ÜÅñª∞-$õ m{ÆMÈâE&›à(¥NgCau@T«S˛œ\≤%2Ûe≤€Ÿ=Eõµ/çÒ¶™.∑i}g3giàgì5”÷\/m∂ÔùDzL(UG¸ˇÆ)Üb¸≥‡‡ˇ˚P¿�E!åÀÅ_§# cp√∞¥î£‚AÑ™√à Tf¬Çcm◊L>ñfp-≠.gj‘Ì.ú≥zÜπƒ∑npñÂ¥o-Èmò⁄Å∑0Ü√Qız§€ö5‘»ûËR´æ}8J$â§H‘jl+‚[ˆÆê‚Óo–*eJ;?ó˙fl¥d‹=˙˘l˚ H∆ˆó¬éÑÆñ ¢Â ™±u4„'ø∆üÏ6‘ÊÛ™2tjû㶕W¸@‘3îÄ¡�ÉíQN¯G√öo±ˇ˚@¿Ä•kâ]£# cqÜÀ©åcf—∏KÄ‚åÉõ+êêH2ÅëÄŇã™A¬¿¬çà8™hƒ1ø.®êÅå>™¿∆P–&!å!ɆÿÅÜ3L´˛}ëÃÜ“BÊe¨“˝lʆsFQhiî∂9üV@Ê{ƒπgå{ª∆¨≠»fbŸ≠ìG*j.? ÏTëMÃ∫=dpÜô/fi‚SÕô˙ÛÇt@¶ŸCˇ˚P¿Ä!òÀÅ}§#dîôp¸¶⁄ña¬b}> +äa§∂Lí˜~<ÁcìóÌŒ•Vπ¶~uûqÿí.÷dÔ∆⁄˛ù˜L"øá·Aı[ø£÷€ëë¶1pºî∞Ê(ñ©|¥f®»GV≤´5kØ*Yih:ÛÑDbUt%m§±?KdˆÊ∫8íî:î¸$º.˙Ɖ≈E\âºΩBJm9ÑDøŸ‹~’â)´±ÆSˇ7≥<“ +îMäFèGUÎö∂LÖ¶Ótπâ%kú±“Pô`fTADˡ˚P¿Ä-!òÀÅq##dƒôqQâ4>>±ác $ˆY§ÿhÊÓzxÓ™öëÇhF°\å∑mÚ‰≈)ÍnlÛkSÛ3∏ˇÀÁ‰!KÏÛ%+rî‚ûæ¯∑V?…vÌüd?ó<XcW3ÿ/Cû;πó}ÀL¨ÑùP=¥'ÊÎãP∫´U‰<≤´ò,ÃÊ≥,(â):Z÷Âı°h9pÌ˘Á≥f|ΩògjO√iô⁄˛˜ßh∑ERÇ ô9|Î!Rù"àïD˝™∫€nœp¿h¶ŸW¸Nj2«§ˇ˚P¿�%òÀâ\## ìq8˙êÅzËR ÏóT_⁄ßRiòFP?)Ï»ı¶;Ô…©‹ù≠é∂ßlÒΩµ˚NrC/^˙≥û˙J;¢≥ñAœo$Æ߬îZ]Ôæ¬ùf“S ´˛t!Ê∑ÜËüp¿Ü@2ƆڬÉ-'Ó§zfõªÆ˝úl?ΩbfJ>Õ…ΩDâ∏B/u•Ô]ȺîõF∏t#|£⁄©˚YD~µGzù=S»Xu“�j•W¸Ûc4Ä©5NÄõ#¶'I…ˇ˚@¿ +�%ÀâZ£# ¥ôq|¥MºiGvYœ∞]ÇÎn°EWzΩU›Ê·Ø]ÕY渚ñ#Lñ: ïW2bÙ∂€!)ó_k|tU»yLüecä…Ô˚»=Í«4≤´˛vqËSfi°gaQ˛™¥fio?ùÔ∂˙'˝ƒÙÓ]÷—hcfóôˆeë∏≈Àî[⁄'¢{ªf”'íw4Ã͢ΩG°›◊˝˝-Ô"ΩK◊xÉ`ZUDTÊˇ˚P¿Ä!!ÀÅR#£ S!q…¢èHöJS¡©b4i{qIí&´Œ–aÄW}Ø33v∂sÙíE∫I¬¬flˇè€5ˆægµ+ï›k"L”Jµˆõ˜∑ıµ˙Hø‹å(π√tëØrZç#Cç(˚V©W¸jcBS òê£âZe V)‰†≠Ã√©W7 ∆Í+ÅBà´Î-Ö>Èí€.'∏Ó¢eFùeú±U?ó¸¸ë§q1pU‹Ì-πïUó∂O¥à√ȆkeW¸ñLÃJ≈UÏoÂ:%§$ˇ˚@¿ � òÀÅ_## ìq€û‰" +1iÌO(b >fıôY¶Iß"eUt´ïâæ?â®M«9îå5Ê¢∆ßèá◊ÃÒÿ©?≠Ô¢S39˝÷' ƒÛ˙x√È™Uˇa÷ÛDÛ@ƒœÖ¨{äí—J9u˘è1'öx∫;Yˆ¸} ÌòÓƒW7 Êfi€éc‚M—Goínjª¢õTùØx≈÷ú_“võ˛Ñe 2]„ø-x¶§ˇ˚P¿ÄΩ!ÀÅo$# ëôpúˆf·F80§AõSFw∫2+Q9lâ ⁄«ÇâÅ7(t≥MRG°rä˘úÁÔ«?oguêNäA+ÉTQ}È∑ì˙û —E/) B?!“?<ì2œÙòd5FıJØ˘Ê#˙±aÖL8Ap™ ã(aUÄaiµ6$Ÿ.?3Öù¨•÷”ö¸”f6”úŒŸ7éS$iVmQHZq)˝W0€}…ıIˆ¯TAÁ¨ç{ÿ)TËπLÎ◊X∫ïW¸ˇ˚P¿�°!òÀÅr$# cpAÑ°COsl0ôëÂöa√'ü�4◊ñwÖîqÃt49®ë?<9éÁ=≤Õ•aM¬Ì>∑ÚTu ÈC ªyÌa^©fiLª¬ãeŒn/>›29ö.œO$∫1≠]+©ôW¸Lû¢¡+¸%ã +ê–8˚‰Ñáç@œL»µ¡§ä∫•∑bã[Ç:»Ó¸zaÁá√¶lÈÿS39.…d-›DR[ÔCs0£´öœQfi2M.æ,‚–º&qi»ºS∞j®¸ˇ˚P¿Ä +·Àâb## ìqX¨.¡F§ÅflÃ=≠1…(#$:?|îeFÚÉ—y{`h˛—ÊúÏ˛åEì3f¨µœ>Ù©§ˇ5—-õm2~§@雲ím∏˚•Î™•W¸§Œ∑A∑åô≈[IÊËõI2†m˚õJµæņÔ< â*∆xh-x^QôÆyˇHl…πöfiõØLjãCvHÁ´v^΄;=˘{)Ø ∆Ïõµùò‰�“–øö™™®.ôY +Ñ‘∞∑ƒ4ˇ˚P¿�ï!$òÀÅf$# 3pÿ‘·2Rï¿›ñƒêËÎ/”¥PU«≠º-ÒËO ·úï+ ¬PO≥ª≥o9‰„©ìré?¸"_˙VrÌ›ÃuJÛ∫ädK,÷'=Ã]L™ø‡1≈ÄhPP$)◊»AK ŒÿG…ºD-Àï«)%:lqI•Æ≤Èˇ∫¯uù¥e∑.#g1˘)ËÀûQ|≤‰„∫◊Ô[¸¿=Ó“ñ‰∂>ÍêH˛Á'*Ô)�j©W¸Ïy ûs¡DÁ—hë¸èˇ˚@¿ +�AÀâ_#£ cqôÖêå≥ù¢Ì=M§7n!—…⁄EπU∑Yà&»› ›¬*§ Ó≤ŒcêÑ◊ü/Ôc‡§÷ûªa∞Yÿ˚6ÅT⁄ö fiETï™fG¸cYIîE™GjÊ.µû»ørïó‡»óNòe1LRWiÆ˘⁄wzrõá¨ï°ˇ∫πFû∫7‘˚Ï|cˆ <g=*Õ:©llõ˛Br€§‰®ÃÆ•Wˇ˚P¿ÄÖòÀâR§# #p¸IíS@BrÖ…êÛ¥ìÁQ„òâ¬J©I˚bD˘Ï]·“÷ΩG˜?¨éCá-¢X“fi}¸{D¸Ëñı ”NØü »_ˇ˛Ω!öß™Kò∑DÈ+ä˙ +s-ÇÒX¥Ã£˛4P¥ÉäYˆVcflø©“£»@ªæï≠$ˇ√*)Â5<Åõçí¸Ÿµ≥“7∞ÔéToF0ƒQ+≈√”æÛf"¶ç#Ú'˘ãÖ2Ydãˇ‚6Ñ?(hÅtX*t©Ïó·®óˇ˚¿Ä»������%¿��›˘ÌOï;©·Æˇ˛XÚèe∫Ä�����������������������������������������������������������������ˇ˚¿ Ä��.��� ��%¿�������������������������������������������������������������������������������������TAG����������������������������������������������������������������������������������������������������������������������������� \ No newline at end of file diff --git a/resources/media/ring.ogg b/resources/media/ring.ogg new file mode 100644 index 0000000000000000000000000000000000000000..708213bfaca2f520c2c3b10bc6b7a53574a909ba --- /dev/null +++ b/resources/media/ring.ogg @@ -0,0 +1,185 @@ +OggS���������ÏZ�_����flé¯vorbis����D¨������0©�����∏OggS����������ÏZ�_���Àà≤~Sˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ’vorbis-���Xiph.Org libVorbis I 20101101 (Schaufenugget)������ENCODER=libsndfilevorbis+BCV����1L ≈Ä–êU����`$)ìfI)•î°(yòîHI)•î≈0âòîâ≈cå1∆cå1∆cå 4d���Ä( é£ÊIjŒ9g'ér†9iN8ß äQ‡9 ¬ı&cn¶¥¶knŒ)% Y���@H!ÖRH!Öbà!Übà!ár»!ßúr +*®†Ç +2» ÉL2ȧìN:È®£é:Í(¥–B-¥“JL1’VcÆΩ]|sŒ9ÁúsŒ9ÁúsŒ BCV� ��BdB!ÖRà)¶òr +2»Ä–êU�� �Ä����GëI±À±Õ—$OÚ,Q5—3ESTMUUUUu]Wve◊vu◊v}YòÖ[∏}Y∏Ö[ÿÖ]˜ÖaÜaÜaÜa¯}fl˜}fl˜} 4d� �†#9ñ„)¢"¢‚9¢Ñܨ�d��� í")í£I¶fjÆiõ∂h´∂mÀ≤,À≤Ñܨ��������†iö¶iö¶iö¶iö¶iö¶iö¶iöfYñeYñeYñeYñeYñeYñeYñeYñeYñeYñeYñeYñeY@h»*�@�@«q«q$ER$«r, Y�»���@R,≈r4Gs4«s<«s<GtD…îLÕÙL Y��������@1≈q…—$OR-”r5Ws=◊sM◊u]WUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÅ–êU����!ùfñjÄ3êa 4d�Ä���°C Y����à°‰ ö–öÛÕ9ö†©õ”¡âTõ'π©òõsŒ9ÁúlŒ„úsŒ) ô≈†ô–ösŒIö•†ô–ösŒyõ≠©“ösŒÁú∆aúsŒi“ö©ŸXõsŒY–öÊ®πõsŒâîõ'µπTõsŒ9ÁúsŒ9ÁúsŒ©^úŒ¡9·úsŒâ⁄õkπ ]úsŒ˘dúÓÕ ·úsŒ9ÁúsŒ9ÁúsŒ BCV�@��aÿ∆ùÇ }éb!¶!ìtèì†1»)§çéFJ©ÉPR'•tÇ–êU�� ��ÑRH!ÖRH!ÖRH!Übà!ßúr +*®§íä* (≥Ã2À,≥Ã2À¨√Œ:Î∞√C1¥“J,5’VcçµÊûsÆ9Hk•µ÷Z+•îRJ)• 4d���@ dêAÖRH!Üòr )ß†Ç + Y������$œ————œÒQ%Q%—2-S3=UTUWvmYóu€∑Ö]ÿufl◊}fl◊ç_ÜeYñeYñeYñeYñeYñe BCV� ���B!ÑRH!Öîbå1«úÉNB Å–êU�� �Ä����Gq«ë…ë$K≤$M“,ÕÚ4OÛ4—EQ4MS]—u”eS6]”5e”Ue’veŸ∂e[∑}Y∂}fl˜}fl˜}fl˜}fl˜}fl◊u 4d� �†#9í")í"9é„HíÑܨ�d���†(é‚8é#Ií$Yí&yñgâö©ôûÈ©¢ +Ñܨ��������†häßòäßàäÁàé(âñiâö™π¢l ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫@h»*�@�@Gr$Gr$ER$Er$ Y�»���¿1CR$«≤,MÛ4OÛ4—=—3=UtE Y��������¿êK±Õ—$QR-’R5’R-UT=UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU’4M”4Å–êï����Ë≈!Ñí£ñZæW 9(5˜^1fƒfi{•òAérôbJ9(µßŒ1•àë\[+ë"ƒa:UN)®AÁ÷I-BCV�Q���Bà1ƒbåA» Då1Ñà1!É–A%Öî2!ïêRƒÉ–A… ÑîBIîêRH•��Ä��Ä�°–ê@ú��Çêsà1c:©tR™Éê9'%sJ(%•JJc2Á$dŒI %§JI©ÉêR(••PJj)•SJ-vR +•§Ji)µ[J-∆ä1ôsR2Á§ÑRZ +•§ñ9'•ÉêR°îíRk•§÷2Á§t–IÈ îRRi©î‘Z(%µíRk%ï÷Zk1¶÷b•§Ji≠§‘bj)∂÷Z¨c2Á§dŒI •§JI-sNJ!ïŒA)%ï÷JI©eŒIÈ î“A(•§“ZI•µPJK%•÷B)≠µ÷bL©µJI≠§‘ZI©µ‘Z≠≠µ;)ÖRZ +•¥ñZä1•c(•µíRk%•÷Zkµ∂÷b•¥TRi≠§‘Zj≠∆÷Z¨©•Sk1∂÷jç1∆cÕ9•cj)∆‘Zå-∂c¨5wR +•§JI-µcj-∆PJj%ï÷JI-∂÷jL≠≈Ji≠§‘ZI©µ÷Zç≠µSJ1¶÷jL©≈cõµsj-∆÷Z¨©µc¨5«k-��`¿� ¿Ñ2Ph»J� +��1!∆ú3)≈Ñ∆ •É)≈òs"•sB∆òsJ…sB)ÑJI©ÉJ))��P‡��`ɶƒ‚�Öܨ�B�ÑîbÃ9Á îíRÑêRå9ÁÑRRäRä1ÁúÉPJJïRL1ÊÑRRj©RJ1∆úÉPJJ©eå1ÊÑJI©µå1∆úÉB))µ÷9ÁtJI••ÿ:ÁúÉJ)%•÷ZÁÑJI••÷bÎúÉB)%•‘Zã!ÑRJI%•ñbã1ÑRJ)%•îZã1ñTRJ©•÷bã±∆RJJ)•÷Zã1∆öRj©µ÷bå±∆ZSJ©µ÷Zã1∆Zk����F–IFïEÿh¬Ö†–ê@��`b1Üús2ësB!rŒIȧdRBi!•LJH%§9Á§tR2)°•PR&%§TZ)��Ï¿�Ï¿B(4d%�ê��!§cå1ÜîRä1∆CJ)≈cå)•cå1ÁîRå1∆òså1∆sŒ9∆cÃ9ÁcÃ1Áúsé1∆úsŒ9«sŒ9ÁúcŒ9ÁúsŒ ��*p��∞QdsÇë†BCV�©��Ñ1J1ÊÑRÖsŒ9•4H1ÊúsJ©sŒ9•îR1ÊúsJ)%sŒ9!îíRÊúsB(%•Œ9!ÑRJJùsB(°îîB•îRRJ©ÖJ)•îTZ*•îíRJ©µVJ)%•îZj≠���†VG8),4d%�ê�¿ÉêA!cB!ÑB ��p��0°≤�H��Rä1•§)≈òsJI)Rä1Á îíR≈òsJI©µä1Á îíRkùsJI©µ;Á îíRk1ÜJI©µc!îíRk1÷ZJI©µkõîíRk1÷ZkJ≠µk≠5ÁîZk1÷ZsŒ� 48�Äÿ∞:¬I—X`°!+Ä<��H)∆cå1•cå1∆òRä1∆cå1∆cå1¶cå1∆cå1∆cå1∆cå1∆cå1Êcå1∆cÃ9∆cå9Êcå1∆úsN��PÅ�@Äç"õå≤���åaÃ9Á îêJ£îsB(%ïV•úÉB))µñ9'%•RRj-∂Ã9))ïíRk-vRj-•÷b¨±ÉêRk©µcçÑRZä-∆sÌ îíZk1∆Zk(••ÿb¨±÷öC)©µc≠5Á\Rj-∆ZkÕµÁíRk1∆Zk≠πß÷b¨±÷\sÔ=µcçµÊú{Œ�ò<8�@%ÿ8√J“Y·hp°!+Ä‹��F)∆úsB!ÑBïRå9ÁÑB!Ñ*•sŒ9!ÑB!då9ÁtB!ÑB»sŒ9!ÑB!Ñ–9ÁÑB!ÑPB)•sŒ9!ÑB!ÑPJÁÑB!ÑJ(•îŒ9!ÑB•ÑRJ)!ÑB!ÑJ)•îR:!ÑB•îRJ)•ÑB!ÑJ)•îRJ !ÑB!îRJ)•îB!ÑJ)•îRJ)%ÑB°îRJ)•îRJ!ÑRJ)•îRJ)•îB(!îRJ)•îRJ)!ÑJ(•îRJ)•îRB%îRJ)•îRJ)•ÑB(•îRJ)•îRJ !îRJ)•îRJ)•îR��–Å�@ÄïbßWÅ# +&†BCV�·���!îRJ)•îRj$•îRJ)•îR#%•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ•îRJ)•îRJ)•îRJ)•îRJ)•�®À¿Ë gXI:+ .4d%�ê��√òcéA'°îîZkòÇPB˧§“Jl±5JA!ÑRRJ≠µ÷2Ë®îíJJ≠≈cåôÉRR*%•‘bå±÷BJ-µ[ã±ÊZk°§îZã-∆ZkÆΩÉêJk≠Âc∞9Á⁄A()µÿbå5◊Z{©¥c嵈\kÕ9àRRä1÷sÕ5˜‹KJ≠≈ökÆ5üs¶•ÿjç5Áú{:¯‘ZçπÊt–AÁtJ≠÷ZkŒ=!|πµXkÕ5ÁfiÉ:flj´5Á\kÔ=˜ûÉn1÷\s–¡!|A∏kœ9˜Ñ:¯�»çp�@\0íê:À∞“àO¿Å≤ +�à� åA!ÑîRJ)•îbä)∆cå1∆cå1∆cå1∆��&8��X¡Æә炶NÚ¢ü–õë!óR1ìAè‘Pãï`áVpÉÄÖܨ�»��à±ÊZséî÷bÌπTJ9j±Áî!Çú¥úK…ANZk-d»('1∂2Ñ¥⁄ZÈîRåb´±tå1I©≈ñJÁ ���Ç��2@ÅÅ�8@Hê� +√E@@.!£¿†pL8'ù6��AàÃâà≈ 1°(*¶Ä≈Ü|�»–ÿHª∏Ä.\–≈]BBÇX@ 88·Ü'fiÑú†STÍ ������‡� Ÿ�"¢ôô„˯� !)19AIQ ����� �¯��HVÄàhfÊ8:<>@BDFHJLNPRT��������ÄÄÄ�����@���ÄÄOggS��¿*������ÏZ�_���.é|Ã!]FˇP=JNøˇêˇ„ˇnˇµ=?B=INΩˇzD@F<CKM∫tÚzí®›¥¸˚'¸˚°€Ω≥x;ûo)’Ï◊˛wQ˜∆Æ‹ø±,9ˆÎºñáéflϪ¸ˆÓ¿® �«ü«OhÙ¯‹Ãmœy[X°∑ÈhŸtŸ©{6Q›]VÖáλÚ3ßB¿§"€≤¨:Ñ´æÔ%ßÏ¢Ô=ÁÌ\vÓπSX¨+AπFí;=¿´M®êP1ò�Ä6»°xÑA¿`�¿√��‰�RóÃeØV>k=ΩɸP"b4˛�FFFÜ!3∆∞Xmm�¯êß�Œflµ›�Yvk•Á <�∆y†�¯A∆Ê|��Ä ¿{,��´ë$��~eÅm/���‡¥��6����ˆ[≠@í��‡∞����¿≈s����Ëéàààw®df¶{óD%⁄ Dà�®��Ä����@c���������~˜mfi��������H£qx��������Äœ•����������∞Æ�������Ä‚��������0=Ÿ�����������‡���������x¢R��������ÿ"��������à������������������@l�����Z¥X˘i‹,á΂\m™i±£g7õ-™ç�º"˚Œ°Ìw}œålVccÂ#˜éï3¿ˆˇ§ûfÉ∞Ä∑ó ›˛á@–@8��g†��Ä��¥˚�˝^2O˘{{◊◊]5÷Õ˜◊fi∏∞π∏ø∑=¿⁄µz≤åv€·˛[�wF/dÿƒê@°7pöΩø a ÇØ…A8�Ñ7∫6ºlÊ(2OÍ^/ø¸µÜ~…!—g˘ñ≤Í;s`?Ï_��Ä”3MÍ’�ÄW‚è‚¿o∏¯ÿD<��Ñè &��@�∫ñ‰»eæÃóüI|¸[#È„ÖÊGIÈ“£Ó!fi˛LŸø«?Ù√á˙flØû€ñ∑ÈoñvV���∏ĸflñ�…@·Ú$'ºø�Ç��fio◊.�Ç\˝�ƒ���†JU∑∞?ÁAµ,ﶬ(êõ‡n±z\�������Ä��†5������������ÒΩcæ���9 +���������������@X������������������fi7dà‰n<;wénsQ=||5àÛÀèAß©¶©ißhüƒ·{iziG¥#⁄q‹¯˙uÅ-ZA—r‘œ~flÒÄ�ĆvˇΩgö��ġ57‡Ùˢ7?¨¸øùWÿ�`\|V��‡1flã ®��l~oüX E��ÿ�∞��¿-≤ÌÒ}�8�¿=���–���į%-fYuÓO/´ l{ÊMµßfl• =À‰ˇ9F‚ÚFKÄ@�fi%¬π,JâNZm¢”:Â^∂¯í•Â›Ä¥Œœ†÷µï]¸lˇ∑√-—Ÿ•fi0<˛\á���°O$∂ˇ™!éÔ∏U˘’É'��PSØ)E��ë'õæ7¡Ñ ˙˜�¢îR}Œ9Uxè«{�Q +�����ú–4��ÄÈ*y���Ë:†�àR� ã����Ä��������–��������»Ï$]E�����^Ö‡ P��ÄÍsÍ~ˇ¸’�X{‹l.˚›+ââ—hü߇ә™™ +‡«^�>W‰7t›∂p›’H…cø™‰-QøÊϸo«≤mÆcûk3Ê⁄úoflºÆç¯oŸŒ¯ÌÙ„˙˜•%”vLµ•÷ò^sjÍflòk3ßjN’∫˜Àº»Œ◊|¿&ûéd{ +%AyT˝◊ʧ∏~ŸW:¢cÕyØÖŸ-s4⁄ßõÏÊlN$ıkøæeÇRŬ$¿V˘˝ô1·��H!R«øh”A�ÄÛ+¸˙Á/$`0:˝ÔÍo}0}⁄�¸˙NùrëEÛ{©ùn˛>yùD™‹KæCM—2ı≈˛Kß(1ÌfißòüÒ•S$X/I˘˘©ìfiÿ§Ö)x[�«èú«ËÃê†BiÀª)q}“˝ΩÓ#´y-ëG7¨&ã…’à}‰qX8ÓGxˆ#∞—º:â1π5ÉÜ–ÆÏ®¡"o‹w|∑Ü˙ÕEÁWǬ≈n©÷/:$</˛öX-R.î‹PÛ0r”Ì2à˙d]·à���ÄcËË¿˚èÕã•˛n( Ω∫á∫Gæóôfi‹µÈ˚˚ÿ—.º˙≠0πb&’{ <üxÜïˇ'∆–Ω¡—≈‚≈,Â<(:ΩUá¡óˆæsj‘¬YÆÙÒ_N?ÉŒ•v�ÄAfiöŒã(Ã3U>`„8≈aÜ"����˛¶$ÜpdZÊÂyÇl∫Çœ-√WCmYg175 �ÄΩ≤hDñß##›Ìçπ™Å>w¨,iò.�Ô�¿%'Í˚�‰�∆øÀ†ƒÑ∑�I=�Í0�Äò„Ú≠U@{ß àâRMz?Û{�Öjpı°œ:ÿ‰·?·ìÎø£πCȘ"∂fiè˛Îƒ∫◊«”Uhùä|Ñ¥wÈÛM��‡ÊÓ¢'ªêĆ������/@§√¢gä‰Öµ¯üJ∂Ó +���«kà2��hö¶—˜Öò€˙iªn±9òË€|YW≈¢®Ì¯F˘«˘≈ªÀ|jŸØfi≠«¨µEͺ5.˨aó]¢O¯:≤»���»ˇ7*"nTTTì≤TØ}≤´À´œ˚1’¶1#Éü,ß∏‘iëƒ⁄«MH��‡!2Em�üú$������‡[c ��������)Ÿ �∏ô!���|ù�÷V‰Üdd3ÓŒt∫Êfi˚�∏p渆/ÃiÍÔˇ±Á¶◊í]w\≈ÓQ:>=4MïáÛú”’0L;~ÛúOè[8HPü˚®dz¡]ÁıÎ5Äo'`öé-�¿˘±ÛË}ˇNw⁄¶˘Al Ä‹Õª∫��I∫>r«��¬¯˛¿`∞)`9ü˝–Á���Ê`��Ãõy›ˇfl”`£+<flÓ–»gô˜˘aä ˜«)¯xJÊ¡ yë瘸üÈ∑Zÿ3¡πÓîÚ∂ÿgÜöˇôô'¸˜X5⁄€Ûè|«è];¨ºDƒ!Ú1BáÛ@Ó›† ƒF¨}$ªr√âÀV§0�@Ñ m¬Ë6t +π˘40†AB[=RÁ ΩA[≈/:]t‰HíÑ��¢Àã1 äˆfl�¸”fl�ÔΩ'���~1öÜ¿Ω s����PóI†Î������•£û<á ������ÃõÃ+x•j•�� ¸¬˘[–Ufi����hö.ày����~™∆¡yvjÎo˙ƒxhoèW∏ù)_á⁄Ô@!ƒWˇø �Äu–A�Ã"«dZÿÔÆÔ∏Í4ë,Ï«Ü=¿ˆÌ=ı=ÿ�µë»Ç€K¡0X�&l�6†Ç���8�î"›"P!/vØ¿86>rÔX∞`±l˜Œ‘So0…=�P �!@ÄÇÅ®¬`√Æ~À#øÔ¯î"Ì:a¨ª◊'CH˚ŸXÿ≈Gá~ÊÀguü“��¿}ù@3…•�·@ �¿�»� "�d¿���å&›ú0á6[3Ä]l,<«ƒ”ÇÂ$Îzö ∫π��*�¿ ‡¿ XÄt∞4ÄigØW*hπé�ú›P„ÊU©˛zˇÚéC˚|}À©hsW¶«ˆÆëgË…≤v≠Â÷˚�˜fl∞€3†ÂS®@ÉÊ©]‡É�°r"Á�| +y?“wpëŸQ/‘i¸t©a`ßoù¯¸§‰IZ9†æçzd◊�∞�Ïw÷π⁄xW�4ìh&�q4�$¿ƒ4��@�Lˇ���p�∫ñ‰4∞Ÿ,„Ú/Ò—SÌ~¸Ù>8=JJ7vJ}Ú•◊ì˘øèVø˘ôª^øÈ3Ÿflflflˇı2\ùê`íø,�êúàJ7êúe�2��xˇ�@êÛx�bÜ��Ĭ�xÀܷ˝œ∑™a∫{Lˆ»q���������Ä@Ë ™����������@0ï�� ,������������Ä2���(<�����������†�����vF7ÍR°‹ù!Íƈ%˘Ô�‡ê/˝fl˝·ü^æÌ?}Ú∑ˆÛıπ€{õ€Óm>¿á¿~xÎ]ú‰W[~ elëü¿πÂgˆÈgÁŒpü�^V ���¿w��^}‡„76¿˝m6���”fiÄÕNíæ⁄��ê�ÿ�∞˘¿fi�É HG÷˝fl~��ÄT�����†—‚˛}eÂRʸ≥m.òπµ∫PñAßÒÕ÷f`�$`����(��_�:���‰¬pä&a¿���������`{Ü��������0�����xm2�#�����Ä�/@•�����������‡��p°’�����Ä����������6��lª������ �����������Ä�����������6S���������®����������`�����›êˆ2\fi º∏4‹˚}∑gìsÇaƒ"ÎrÖˆ~T©Ó•ÛDz%µu¨ÿpñˇéD]Êf/��‡˛ΩÑô¯–∑q‡?òF@ � +ÄA�A�"p`����§&›¶S∫Âò}Ωàôt°tßp¨õÎÊ–wÑûzÉ�0lQBùY +0�¬�ÖÄ‘êÄã�Ä���§„DªtŸKò˘Æ«1ä;∏ˆ≤áçc≈ñ6÷ÀV◊cË û�~Ìa1b¬‡�B†∏�Ë�@��†��x���ú&Î�Ĉªá:∑Ì Ω]NÿæRüfl≠¢'F∏�Uˇ"8 ·6lh&ÿL¡/�T0 +\�h� 6�º"ß�,;Ûv7¨ec≈^¨éÖ˝ÏÁûΩ≥éz‘•Ω���ÇDâXæπ*.Lh���‡Ap ¿†�@����¨kz(´˛˙∂ûÓ8˘gÌ›ºfic´Ô]€€ˆ€á≈≤Åw÷Í…ËÓ6∏xÄï™Ü› ‹¿∑êÑZ�†x¨&ˇÇ�˜ŸúD�t +1∞flÑ9°"c“–§óù∏Oû√͡sfW‘? +†ˇˇç@ª�ˆÄE◊≈_��mx��ªı}�Äh��<�®*����ö¶‰%∞Õó—˚Ÿƒ«œy<pPz)≠Ùi⁄≈Õ/•ˇ∆˛˝ê'‹º4r—Ûëëa˙5$��Ä ‰c�X��í∂R�@ê…>Ä 7>��1√��@"‹Ä˚˝ò◊EY+7?‰¶r˜é∂'S”Ä$�������@�úN∞������@ñÄ�����������������¿Ñ���������������������‡¬��OggS��¿Y������ÏZ�_���¡bˇÅ ˇxCD>F?OLTUˇÄˇÃD<BSLºˇ+—ˇsˇêˇ{ˇxvFÃÛ—ÓŒ.¸h™fl�¿ì~„”Â∑ÓJ}∑˜9ªı¨ÀÆ˚Án≥˝+ª±~¯Î"ß˝Ûj?øR|∂ÿk��œm˘wˇø√ëÓ@:����ª��˛¯øˇ˚¡.pqo��0”]à I¯’ÔY�Ä¥���ÿı{ª�@#¥ ˚˜��:–��¿¿v∆˝_´W.Ƨ¬∏K%SoÔ{Ä%680Äm≈0È\yà]T������Ä���������Ä�����0 ��������������¿⁄�m������ 0›ê���������� ì�����������L�������������∂�����������������^�����������Ä»���������� +�������º�������∞iŸû|NÀü+ßÎ˚⁄ëê¡Ë觔úÀõ0v◊«:ŸdáÉÖ{6ºëïˆu= U…3�zDyë‘>¡@†Q�<Ä�£�`@0��¿���º"˚†U©8∞ÈÆ«\ÿ6>ª¿±6ÏÀfiQA]˙f��‡ Û$˜'^&�¿�`ª¡�@‡Å:�@�����¥&GÄfÎ˙qìˆs∞∞üÉc¡¬ÅçÕ€Q◊So∞ƒ�∏Ù2…`§∫·¬Éçê���çÉ®ÄÑ¡Ü�Ã"Ûi“¡!-w˜oOͻς£Å]>:&KÏ∑nßïÙ=ˆ��v0*0Ÿ·¡Å`@>…k†Ç��@0`����î"ÂA\’m.é]3Ä/¯n«ñ€ÿÄÌ‹—Ù4‹�es ��>�É Ä*®Ä¡���∆Ìˇpe∂¯;�¨˛jc‡Ä¸/ˇ∏]∞ +wèÿ€;’ºÙ›|ʸg∞r`flˇ~÷Æ]À˝ã�`�åö(Q3r;†ŸsO @–�ÊúsBõ +�����t +7±v1U‰•»≤h$/áØˇüw›ˇˇ˙}€ Â`{≥!1z‡�®NP˛0�‡ûK≈��†j8ë(¿R���rZ@�81����L%˝¨GU”û0‚'ˆRÈy„˚éÔ_†9¿%¡ËqÅ2- ‰°'‚5.h¨Ω˚ÄæH´�� éG��ΩÃ\û����vÔÎzfTEP3;÷ü-�™ +§%‹q◊ÚL}tË{-ı¸��ÕÓÄ2�^}≈�Í‚Ö¸≤¿��Á—� Á¬ÃÇ���åufiû_·Ufl][fEZ◊Y˘öø’à*Ü◊lù\�:ñ¥Aå%ÓÏ˝lnM«nÁä·ñ;õ¢é}·ùÔ{Lµyæ�‡\ºı√œ?^˛–õ´/^:=˜Ì +›Ah–}mØk£7À¿¯˛Êú†)|˛s��?„∞Ú.�¿ÎµÎ¡@��@îú0ó��A =^‡â—¸8�H`� ·œ/z≠Ù§∫Qı!~øG‡¨ÛúŸ››]ˇœáSõg—±GÆfl£ÜÀ.Wıq∫Á3`∑tõ_∑`/ÆG±‰A_ˇ∏a������‡Ä¸zM‚��������‘HÎÄΩ>≤næ:z����lBÕ H �@å��Ä¢(ù!‘~mΩÀnâM`©�������e2�íß����®ãÒ%È4;æ€Ø]6°Î€Î`v^i>.ªÊ:H[N©Cæ˚Sπ +ödÉq£¢¢Çä7¡¶òu7ÕæÉMüŸ˛Ÿ˚iÿw±èò�����†6‡ÿ‡?����fi�����Œπcp�xo����vv¥Ü˘ƒôåfi©\Wø«?Ä∫œœ/<r{∏˪Øı~;]≈Ò≠∑Æfi∫Òz}ˇ +’CÎŒΩ⸖蜻Ößy„ÊÚÀ´/,÷Ø¿PΩÎúg�¿äÂ;|˝7YzÎø«O�Ó:Sü��™‡$…¡…]K�ZÅX �ÊÂfl∑d`@��,b��‰>Ûç#�¨|Â%��ò-œs��b¬ÓŒˇ·± +úΩ7asÒ Ω$õ<EyÓj aÉmx«‚¯‘ë˚!÷‰√’xfJ‘VIQÌ86)sùÅ÷U—HïJ˚g6Q§rŸPö+Uu§•y›µ2âèâRÔe÷Å“�êºO7@3\ܸq‘îª|∞$TQ w•CVEQ¢»≠º¨wEÕj˙ÛÄö¯—d¬»´C π<0I�ø“Ûx¯§yÅ/øZiNÅ<5ÊSfl-Æ¿SGo¢fí ���Äé �O6s9ù���‚5@]†åd–�LB<L@¢tB±∏Ûä�Ô%fú±X.tÏK xÆóyv«f€V~˙wˇœˆ˝W€∫,ÎÚW›ç-�…nfi‹„¡4�`ö�Ã"Ûií!≥ÓO/é+·¢Ü¢Õ±≤ãı`Ûu‘Cs≥��√\ÜT≈Ç�`p'H� +NÄÄÅ*ò¿���§"„ú‡ÖJØÒt∑öP:m«ÇÖ∞lQÙ‘tÉ�‰hG8ÒÁ<Å ¨Ä +¬@P�4Ñ��¥ÎD;‡¿≤q«Œ£W}Ëœ16¨ll˛¢£ü‰�ˆ���àÓA‰d⁄9ÄÄA†¿v�·‡�P�l����ƒ˛RìD¯œøˆÿ°;¿’ˇ®◊◊˚¸±«∂ΩÂÌÂîÑ€{πeÉÌã/�¿�‡µ0[ñ@V©≤@!zs3à≈‡˛~T ��p�d +ïëû-ÕÁ˛t4å5|:8˝≤°á}}ˇ∏!Ì}Ö˙öÊ∑�‡�Ü¡flóªÄiû™.Ú�@{ùç`†jí��¬��¡�����∫¶‰F“tP⁄áøRƒáæ’ÓÙ«è2∫óQ∆´√≥Î⁄ºΩ˚ç~¯Iˇ’uÈŸt7”4M’ÂH���XÈü�$g�ˆq%HíÄ=���9�ü‰�ÇåÕø���Hí�Ä����‚à‰{≥8˜=fµkD làÃéhÉ‘ΩO�������� ≤¿����������ñ&í���������������D`������������������‰Tj�\i´∂T—zvß?K˙3π˙•ˆ]ÀÆ„ˆÎ≠≥[âOª« a≤ˇ¿LÉπΩÙÂa◊ù˚—rÃuá}t-NªÓ‹é5βÕÔ˝û��p§ÒÙ≠h≈≤9HíΩy≤�� »��πmdr�R¿3Æfl6��@Ãp��¿y ñ⁄8ʈ7z‘68Må3@�h�Ôêöâ`çx<%íñ;£b4,à«›`Ç���`.¡�����������~:át�·‚��������$@�������∞Ÿ���������`À��������������������‡Rd���������Ä������������∆�c��������˛5Îw“®O'ΩXÉßÌG^JJj +ºA5§XɨDdbåê;s"ì��Ä-���öÄÅ ������ ���Ä���@��|Ë«WÑ���@ïÄ;�¿¸ËO”� ’‹A§CR⁄5∆{ÉHãˆ:m¿Ä2¬(Ì ;X2Ñ≥‘Ã�¥Nà!rπç·fi˙{“ö cÛB'≥˘T/'◊z^◊n~#w0û2¿≠���@ ��ŒP(U‡4����pÒ,�Äz�Ü�ıè�5�~Uªü)PÄ +o†é±πe◊˚Ÿ∏;Œ÷1ÊIª„õ3õŸ§üúúô±b=oˇ)üJYõ°7[y^€ªΩı‹c˜LŸóVˆAŸ≥>îs7µòïÂúPfleeéNÙEˇ˙ú·ıómrH…â◊‘µ7Ó?zù¡MˆmQ‰ÌÜÉÕÇ7��¸d��ª)�ë¿„8Ó«&fl�õC{o√l,¿éÅÄ�pÊ∫H�û�Ä�ê$�∏¿M�Hp¿�∏�√�¿ApÃ≈Hp‡∫ÆÄãª.Ü`�‡¿M��qÄx�∏8¿1�@�◊ ���X�π�8éÄ�@†C7��ÄÚJÄN�ê�t�Ëà�Äël� ������Bá���Ä��SÚ¶�ò������pć����(�����¿�������� �∞d��������^2Û¿�<�,£«“6á≈˜[‹≤Y^ö £{û◊≥ˆ#¶9˜´e?Äe#ø>ù˘∂ügŸ≥}8p8ÿª¡ +∞9`±Z¨=ÿÉ’j=lf)Íùˇ≥Ó3“Ÿ◊FóC◊Ïfl«Å3X7ÿÏ⁄L7˜1|∏Tó≠÷ß2˜¿⁄7Ó¯.ofiÕAz˙∞ıl +`ö∆‰x�ì¿t'AyÎÏ™ÂÙ…Ë∞èRØ°w��,˜‹����`¡�∞lámÒF“g„ºä!ÄÒ›6„�� ‡nv`áªˇ·x¸�ÿ∞É�Ä aÄ +D�0%@'Ä||º���ÄìÕ +�õ êô»ÄDönH`uµB®�`M@D ��p‡b���ÒxÉ¿≈�∞∏∞��8p1sAn�� Ó‚X,q]¿‚ � +�¿��pŒ^�x�� �Ä���`�(ƒ���0�¿Ä��Ä����������������������`����¿��fiSõSa�‹cµ5˙ns‡◊¬ıgwÁÓ˛’™…ññ˙æ«¿jΩˇfl#sp”bÔï˛ˆ¿¢#ÉfœŒ-z€”œ˛M’€ÙüejF}Ó6Jy)ÓfaY^Ÿ∂˚ı˜˛&f≈^XübN£ïŸ;| œ/m#J—“ßA���‡������ÄúˆgD‚fïDZΩ\è…`Û"w”��^Z6pBfiêWH`:›ê�òNIõ 0” Å�H`¶$“ +y3����ÿ��¿ê7d�� 5+��@Ë�PÑN9�h–!�P��#ÄXC�@á�Ä*–!�D�öÄa�∏ éª∏@‚P�T�H‹ Ëâ`��ƒr��®âC"����@eH�Ä»��–�àÄH���H������Ä!�����‹� ����ÄÄ�P���������Ä��@�����fi3õJí–AéË��ÿ±°a∆4m˙æõk˜“6]Gñf7˝DF`Ï⁄pf?0”œK6fè1Y˛∑ˇK+À≤÷oDõ´áö≠ˆÅõ∞Í2∆wJQ*∫Óêãòa≈LªflñOß^⁄\ ¯ùˆfl>ò§â>à˝≈YoS +â1»ØâfiStF�`√Ü�������@����˚√†?T��y∞�6� @_��‡5`∏�‰‰@0.pq`.¿∞�$ ]��ûÄ8»%�` �AsH��+†�Ç +°àD���@�†ºö�@9°�hàÄ��@ v*†2ÂÄ4�VßÄDÆl�ÿ�∞!ì@T*S@��2�Ä��âL����Å�� t†S�����@•:†��P���ö�‡������A��� +������†���������������h∞��OggS��@á������ÏZ�_���ïÜÆ#ˇxˇ™HG??AANNJˇ^FOHªˇlD>CD<RI‘ˇãˇ∆ˇefiS[R¸A:|�Äã÷{≥{f∆ı~¶7ª/f.Êfiÿá Vη�,Ã2–ù”?Xʵı€flg)û≥m3oäÍweı¯Ú«˙[ª1ÀlıæZ≈Ãï]µ>V˙≤«”©©]ª'Ùï˛÷∏ŸN}p∂¯Àläoˆfr¬|ª.1‘<z¨Éôœ�∞�������h6¸¯��hm7÷60�ÿ �j@�n��¢ôÇ��†�R∫.¿‚ıfÄ)�ÄL⁄L�´�o»'dyJ&çå�–!T�*D"ËÄ�#D� �ÄH"®4�ƒ +�" TàÄ@�†� ��¿�Å∏��` ¡\�\�¨*�Ä�¿p∏���8H����»„�` �Ä������Aá@�ï��������–��@������������Ä����������������÷S€ÓÓ®‡·~‚≥<??˛ÆüKfl≤[e◊Áuv»^©Ïewûo•Æ∑Ω√^√3¸?`Ø=ˆ˛flÿ˚ˇˇ«±˚~¯ÿy≈á?⁄µÀá±Û±vyıÒ£›>�·„w˛ÄC≤3€¿uvux¡˝ÓπÕÜõ{.∞π∑≈ˆ9€ã{Ä€Óèç ÿ�6ÿ‹_ÿÇ≠≠Õ‡∞kkè6�X±lVÓã≈b≈ Å{∞,V6�Óπ¿∆ä¿Êp�¨∏���..�ÿ��∞^]j¿ñ{��������� +‰rùÄõò: + tΩÇÇ[��†≈0Ÿ®��¿�ÿ 60Œ÷6ê�@Å"H���������Ä–Êj����&������Ä˚CÄ!`PR�@ +����fi6`åO�ÿk¡‰� �`�–6á�å1���∆°¡�h∞Ås‡��⁄��‡ `����¿fi������ ��������–��–!�����ê���������dƒ�5S√e7K˙Ògπ3VŒX±‡`œ˝nã≈≤…+®G≠�~��0à^Âw�>áœÅ∞‡�(T@!∞!v∞L��∞��dÃh+£fΑioΩı˜˝˛µdya.8∂>ÿ´◊ç}z¨◊°��dEΩ•0h�Hd ≠Çfg b:����P����t‘©„ +H§{_⁄è80éÈÑ{6VlüÉÕ·∞w©Í [�∆CQÇÇxć–8�.Ä∂\@•�¿��l–∞bj"≠B¸Ú“Ô Î\≠÷ß6\X≠¡ =�ÔÅz0¿^�0Ñ»ıõõÁì√Ê8l��Ä ���Ät–†raú1”]˛ãøAÒc”å´¸r±l,lœ`¿9Ù¥cƒ‡#�pÄZ—»I��`ç1`��xÄ»��d‘∞b�T8˛?ñóv7.%˚õ¸N·˘Òï†xˆ˜ËÈ˛˛��»∞®‹‰O�{0≈�–�¿�†mà�h��î¡XÄfiJˇ—_o˝}·Ì¸˝6/Xk9cÚ[}∆ øøÊ–ÕRø+`/�ÄŸçn}áŒÿœ(ò\G�—űH2FkD´¿����¨ +ó�7˜˙∑M•b{íª?Ï˝¯ Ó-xÒÃ}rïÂÚlÀ<+´ecπyî�Hm D‰˘ L†õ•`�8á<‡‡o��ê����§*˚2?ÿ¸?ˇ4’Ç_˘b˚fi˚ÂH1ä|≈+ÉW‘Ω¡*,v)�(jÄ€D>Ó(x\Ä¡Üç‡Å1@����Úñ¥≥kæπL2˛°m˯p¿ız››ù·z›+�∂∂∂∂∂�ÿ~v≤¨P(î�ºP{�ƒ˚≈L�8üØ�‡c§ÿ¸Ø��¿æ��g��‡˚V�Ï©¸`�ˆ��ÄÒî$��8ÿÀaó=����û���¿ÊÓÓr&a}}ª˘¶˘¶e�’Hi�Äà�ÄïÑA√(<������`w ��������@‡#‚X��������∞„©›���������`å£���������@⁄���������<�����������õï)��������������������LO�����������˘Ñ��������������������ÄD&�������@@r�������Ä ����ÄòI÷0„¡´{øflfleœï+WÆ�úÛèL˝¿Íˇ˘ï•î(fJ)ë/SJñ+∞¨Ïß6vq%��…=q�–XÄh��@P∞��dž¿@����î˛lWPA7GøˆébƒÛ-y˛n¸ˆcƘ7ofiæÜzüµ˚œ`·�ÿ�´ù‰∫)"Hé`�¿"ó£ıî+#��hV˝Ë@p���� +ùX˚´0Â(≤HÚ§ÜwÆÁÔ5äq4aÌfl∆[�¯W30z�`�H]µ¸Ì� E¥1��≥��Ä�Ķ@�¿[���p�⁄¶$)±.Üe\˛vü˛≠›ÒãO^˙∏{œ=OÚø脪á˙„ÕfiÒF&ØÈˇ-m…����[ùc +�@r‡ˇÙ$I¿��@êÄ ó*Ä$ �|���Ĭ!s®™\øhM}÷v~Ö*ÄF±��������ÄÖrb����������‡I/������������������¿ˇ‚���������������GTá˘hûŸÓÇ:i€˜˛��ˇ•¯WÂèüW[˛›æ∑Æñ€Áln˚¯·Wv?Æ8ÌüW[Òπpg~¯?{Ì~Ä{∂¸ªˇfl·»��ÄŸx9����º‚ÿ|˜ˇ;‹flf��0vOăÃ5@êÇKÜ¡P@^Y�`��p�����≥9ÁÕÎæËY–XS§~L���àBπ…6Û∏��ƒ–�Ä HÊ™M‹ù��ã���ò»����������¿f��������`����@‰◊<��¬�������p2���������������Äx<������������M" �����∞����������` +�����������†ÇÈÍ3����������†�����l�����0ó#ø’·:k∆€‘w£Ë6çı„Uˇv«%W¥Á!o&Ï∫ΩTdlmØ∏p,X∏`cÈ[MèÂ{x�~ëH≈iÓ�6Ä@` H†Ä +º��Ä���¨&Î�Ã÷x∫G\m®çæèw≠ ñπ3ı‘õåp�~öEr/“Áà¿t0B•»î�TP!ÑCÉ�î›ú€C®ò›√K8fiÂ`a˜ÿr÷Ԍ͓7{���™„àY@8∞6�Å<`p Ä*�p����ú"ÕAgg8Ï¢9¿—g¨á ∞e√∆äïÙ∞6ÿ��PñÅ"�0Ä@ì$��É�����Ì˘¸x≥ôz®6�¨"˚å E^Ô˜xI[fl+>Z8?« ~vq‡/COΩ¡˜�Ä∑É*Lê�†L Ç6Ä�à�a �§˛\”˂̘ËÌGtÏıªüL˘yá{Ûù≈Ω3Ø—∂„Y{8c·≈[�Ï�ÄùzΩ3x'ix–ÎΩ≥·;�≤P’` +¿Ù©ÔÀ@k����‘ âPO◊≤Õ^äåC‚¥Ü«w∫æÃ∆ˆØ}åzÅ˙4ÿ¸ +�>ÄÀ'Gêg�õ™˚�∞q��òx ��ÄÄ �`��@�z¶‰!»eæÏOªäü⁄˝˛ò`~DÈ£?ˆ^äü„?ΩûÃü≈œ�Hí6˜ÿ��H���Xò^v��í3Ä‚ªÍHNxfi�Ä ‡=�An˚�$I�¿.����‹ à_û"‡í-rQ†dwmÜb…¥p�������������∏±����������b†��Ä\�������������h���π����������� ���Ä¡◊|ëŸ∑‚∞<∑ÔœÔ˚∏∂?Æ~�^G¥6Ê#èÒÃ˛%‚2øƒÌ~≥√N˜¨N⁄Tª«h”T€Ò÷“Rõ÷IFÊ…fi¸¬ÿe›è’èvÂ≥*j{f[˛Ã?�@·¬Ô]Ùzπ”Ä@˜˙såi�¸M_�Öwfl„∏{�lÄ˚K��`I ¸·’��&�0_<�ÖP,ø˙Ω}������∞����≈îòQö¯Fô≥‹*5≤B’ü€…uGa“òyJ ŸîRÿEóƒÏÎëúvSCØæ5ÊA}∞î{7pG∞ WS„è[)˜õ?8����$Ií˙fi¸∆í5ˆR—#EQѵ±Ñ^8˘P��†ƒ»»r�éï≤ï2BÄ$I�xQ*íÃ9fi_ ���Äå¶ tÖ���∂˚��‡¡)‡!��������� t� Ç����Pzè—�����������������M”4Ùs1ñÛ�������������‡˛—g~ +�¿ +"a<Œ™ãX#∆Óç1FDJëX^WT7ì¶ÛÆF§3⁄ˇ˜k–l÷ˇO¥πv.ycÆÕÂáo…kÀÛãëQ∫tfi>¥]˚#S«h,jÃmåÙ«ª9Usç9≈ò◊èu.y≥ùsòk∏�b¯ˇÕù:a≤Í˝≤?@’yñ„]ót–òÅ¥<‘ƒ\Úg˘ø%KƒÇ’xp¯fly‡’éˇ∂TÃ1t¯èC�†´”;>ë!Gé#Âd·$ûOL‰I≤{?|}‡>ØKÃÕ¬]ıœÿç∑Jú +SÂÄWœn∫{˙◊}Ã˙cvÓØ—∏é¯≠$É»∫®-=8,B˝©^öÁ(¢¯E~3~47p‰2™n˘Øyͧ!ƒ/->NP’• m¬ªÆ=t"¬ùºvÂJ¶Ω:„E∫y§”È˚« ñ≠C`å7QŸœ⁄‡ãÃ≥ +›˚É¥oÓı°ºrÈ RàÜW“√´îÕ˚ytïÙø˵˝¥¡›*‘Lgê%c∂Îdd76ˇ›ÄE§OïßB±≤«¨`á1“�pp L„≈oR0�HËåsd‹ü'-n{a˚ƒøÉ“ÑsÒ¸V∫@FûÏT«zî!*á!òûføü˜œfwU��vˆß�ûߧYñ<kFÁπâKq›N(ô4$é˚W∆%…J¨ì)ê˘´«∑Üù‡≠÷QÖƒóŒ5Ë‹¸Æè∑„«X5ˆ‚à√Ó��–Á…;�Dr¬\&�f�nîÇâ—˘/˜�∞x� �∞‘øµÅ/˙¨ÏhˆÅMñ)ϪGÏ#≠rÎVYàI‡—ÆYõ‡Áü#;'Á`m›Èà˛.˝7øπ>"99Öƒî∫/ïË&ÛÓØ»_ß6�«ò≠æ,ı›$¿˘ßÖÊÒ´ÿGÄ @�����Ä 8ƒ¸ÒÙ¿¿Í‡U/D(���†∞ëÇBù��Pflüó}◊ÔMXXí‰�‡@��Ú„Ÿ †‚¢`R±‹t·1î€}"C8oO˘=. í`9∂≥}7Pd*�������∞è`√p"���ˇSneã��∞oÓ�����8óØ’�(fiΩ����ìÜ»Ç`OggS��@≥������ÏZ�_���üÑOˇüˇƒˇdˇÂ;DFJHºˇçˇ◊ˇOˇÄVV_ˇˇ)ûW$70±{rg;p{÷)èw�Nˆ;{k2◊ÔÿsqS◊:…2≤+.Ôoó8.毗-Ê1ÈÓÊK√˘ÁÉ–ÌÎó˛ë9T +x�LøÔG��Œ_:_Äæ˘ΩÁãB*≠v∞ÛNÄO4�Ä…LR?˘jˇ§��@Z���uÛ›;ÔR<Ä]g��`æíÒ÷”�0�=��ØÄÓ`‡ŸC≥æuSoÒYˇfi∫íÏÃΰ⁄ˇh*¿~Ìù›∆¢≤E]Té“d›é˘wQÒ+}?œ{,Ë'8;ÀQ +�@&R4~»ÌD‘flõÉE@ê§>ñH†"∆4 ÇTؘëì¨DÇ›ŸÉ¢ê@¢�IVʵ∏*sN•����M´‹áMÈÏí™ÆıS¬{ +O °"���������¢îR ,è&����<§i��������Ù#à¶!���Ät≠ˆØ +}õ¬–�����HΩ˛xmÖáŸ.e����îé‡Ãƒ ��,Í._'SVfiÆñf‹^∫>fljl; ¿ˇ9fiGTÜóòÜ<ì¯ fl∞∏ˇ’ œÓü¥‘ô∑—∆\«›oºpΩéµü≠£ã¡„ıek˜qüNÍ–,bJ±Ë\j≤Iƒfl9D1Cœ1‰µ”P2w§w§u¥1ö/áïÇ«RŸ·–˛§}¯çñdpOaYÑ}6ñ∫A^®TüflMT)Ø(x“?fli™¢da ‚•¯˜ÔT +ëöò€]��s¸�ÇEÏ>XGfi�`Uô‚ïøvùˆùŒÒJ¨±_øúå≠©UÎ98=ø^6jÃ?r≤A⁄jlvo˛˙%Æâ5Q8õçc#dTóC`åØ%s>‚'oIâ]‡ëÑ7ˇBjø’È√≥,¸◊!zÙÒqãUÉÂÃ⁄ Ø.˜øßá¢j?Ö≤”£™∑˝m∫˙êS&ñ∂¥>#ÙÛÖˆ‚n‘Ny˘xä√Põ˛±lµ˛ˆfû€Ì§|πo0}ÀNï¶8Ö0ùŒ* +Dêy∆”æ92ˆım±¯*˙ yö¥”�Ä +J€ÍŒp⁄6F:f1&v>£œ&wöÀ +�@p`ù∑èc√Å��àu‹�¬7™§ƒ∞Èá‡wˆiπ®�“X~≠%«����fiñ$7FcRr¢Áå¢Õ+Ç?$«∂5ï`{`|˝ˇAww˜6�¿ÒA–=åBɲN◊µFH4’ÑY“yåÀbˇá�2¸∂~Üw�à‰&≠�9�fl +¿¶x�dú�8£ÏBÖ£˚U=�Ú◊¸ƒÎØû∫ft>j¢ˇWˇ”¯bîS¸dıJ˃„j/x7›©������∑K?ˆ-�Ígfi/xì,'���� b��^ +��<,„∆ �j4ˆ∫Ä�����Iņfi���¿b∂X¨VãÕl∂(äò sùÂèEs?±Ã≥rÿ]áá`ÍŸ˙Î+bBLe��������†ÒË,EERµ>¶~uÕ˛;ª¥é`Ôh˘ã¥������QÁÛ;Ô �������.3ê��‡X�ˇ·��@q�����∞˜�¸˘°������.z‡)¶\»�w9_òµÆwu*Ò3∞ô(��Ø_~˚õˇà∑û^]}˜C7∆øfiflΩ∫ıQ›Ú˝˝˛\∞ûW¸È“ŸŒSƒN7}S«?�¿˝2_"”úGÎ:‡∞îõ@ •-? ∞=˛ŸO\TF*€v∞°k;ó*��´∆·afltX�.���x*|·Ã˛j5‡�‡¡W����‹TC∞��’4˚Í„èf�∏ΩÄ��Œÿ)����ızwD·Qk3˛ÊZΡ*‘¸‚ï2±>”æô‚âw·¥ÆÇ˚∑Ìü˙ŒÒ˚œâN}Ιflˆ˘?Ù¯ DvÓ7t¢Ô +oÙ©&GQ´%jHVRë¢i§UY˝.|å∑Ư»Q∫@í$ø⁄“ ¶Éö™ß‚Eó¯[œ¯àI„P^™E∏§ x◊ˇI”?óü��`¥ ·=(P0x‘à∂ê@uæ”!à���Ä˚ïã›0ÀT‡Iî:(∞øO���∞ÅòıˆÛì†&:ô√+’Íhõ¡√�@KsmJÖ–b„Ù°`�� !Oß6fl™( �ÄÚ6Íï≥πÈÎ∫=¥ªmÊ°üö>\W΀ı˙å’ÍÚ:|ûΘ¯lSû‘ƒÃ‚ıˇêóü±(˛∆>Xèáë��p�î&ÕBp`v]_N$[÷≤qÿÿ∂STÙ‘õËÄ&]Ò6$∫Ä��H@0@�4��Ä �§”ÑlnfÏÆèu≤…∆ú-|‰"¨¨Â�˚¡¬ +zîã‰�xx=¢ºH˙Ó�àõ†¡F@ÿ��‡�@�����º"è�7¨˚Î≈1«µ‚ÃÏÀcÁ„+>�vx6¨•6Ï +J��v‚CÙc<J(��à4ÑÄ� l�Ñ �Ä∞P�����ºSÅ9 /˘˙ˇ]Ô=ˆ,;Ôû§êóWflo˝œ7샺÷S˜‹Êœw�–*”â0@aÜ–�Dd—‹?§0Ä!êÕ·=�]O’fó"8i§·%Í˜æ–ˇÔBüó�{†.ËW�{Äâ°áÕH�H~kn��ß�Ä•R���π�ê��¿��ZñTô´l2.?-âOnµ˚ıÓú^~ƒ°]=Øo¸ØΩ„]ˇ⁄“ª|zv8ÍQáñ˝u6H���Xò^v��í3�7èœ Hí∞±«��‰�|ör„}�1√��»¿ECYIÀ πç*~Ñ&) ܱ±H6‹/��������¿�7v���������ÄOÿæ��@p����������������0!ö�����������������~Wƒ…‹∏3ëhOmæØFÙN-K‰ò⁄4Eõ&˚OÏôß˙jG¥iä]ö<¬«_ä¨&Ü\Ìafi˝fi‰(ÚæÙflK˚úü]ÍÀyˇ6‡êΩ_M���¯]Y�¯={ˇ¯?;¿c9Ä pt”¶�ÄMüÂÁ�ºIÄá¬`h���8l¨áˇÏ��H;�‡����¥oY=ȶì~x¥«{˚E|¢˚GíÅÅÙpp}≤UO¸Á $HCÕ°Y‚{øVæ7Vœg±Ô#~™™GÒÿ oJ¶€\R ç´(˘Ä -nm-‡M´ßA���ÄËë∫6%›√HÚøzO†¯_?…B�����®Ö@≥ù«1*]"�I*Ä˛ÌŒÔ������@”@G@ÈÄ!!ÉÄA�ÄÆ#��������Ä÷L���������Ït���√!�����('���������P;������· ¬G¨����º˜ôÉ—4MC������Ä �����W6V¬TN6B£˚Q“_B˚dÎ0ÁŸˇåÜ Øù€∂”K√–±y„N]O[Î@jêüXCs€∫—ÙÈ'äÍ4◊f5µ3?)™'∆\…ò´y{˜Å±∞]R3∑)ÜÊÙÛ-Ÿ0@Õ9(ó˛�≤˜À^"k÷áª'O≤`P≠Å4[ç2˜©àâ4N¡ó≤îͪDƒ�ó∑ojh +jmfi?fi°ÂRN!®ò_“ í.K^≠w∆{rûvá +�>zö¯ÍE"öo‰ØŒæçÔrõ≈=ŸΩ|5«⁄¢ ‰‘esù∆˘â_∆–ã\Ô∞M€*∆Zàü„*÷/í^£ˆª™3tÃôÃDÁÖ9Z¢?õd6çëÜ«‹Uj†€<5¸~`ç!"≈Ó+˝ì≈r‡*1Ìÿ·$´ù)Q|£ÃƒÎkÆè3óÉËVœ‘N”ö≥IòsΩ%@È Ú<~lü·ØŸ˜ÏHFıOË“¬ã¡<b„-í±å•ˆ*ñ≈∏∞÷§“ùäv°±Àfls‹&[´Lø-¥Æ#�!˚Û@}Œ¡yk¯l��8∏d„◊⁄-2`ç�¿ †ãúÁO O‘siŒ $"j]–ZN¬„ΣÌ+«ˇS��ûßd<Œ6+∆‚æâ÷ŸGl($„œ4√ë√Úı¶”pÈ(£∂õp˝ïûvœdÇw≤† ÊU Î “<k|mÇ÷iá/#:ʱH•≤û +�¿fi �@îú®è�@ê»:•&LÈ'�ê$†_�Äx�hK5ù∑˙≈ª-≠BúBòËáÓ©}B∂#]˙°Àı∂2˘˙”œ;=sÆN∆8¥ÙûœfQ-◊ö`F“∞;DÖ;‰7W��LèöófÀeÖƒê9}EÂõ?������� +�fiÌ≈NͪÄïÕ¸ö´´������0j#��h+_¶ÊÒ?’1nÉA�V¥Ì}[å˚µÄ∏q0T°≤õÁy2€ØE#û?®∂òÉ0������pÓ ‡ÊI��������Ä∞NÇ€r?Â{∑^=”∆Â…,�vı≥ma�"hó÷gqy±üN¡Îı∫ÏÓ‡? ˝øuËófl¸€o¯ú˘ÏE∆◊√ê{˘^‰ÚÀ#üm?üû≥Gèz<}k…£ûÓÒÂÜá«éó∑n‘G_ıºz«∏€_ Ágø_u~ë¯O¯ �‡<‘ózk˚ÂÎÉ€rΩ‡~<flèK�����\%…;#ø±��r�è‹OÏv���†'êV≠ˇŒRæ4� I@”���pD—bï‡NZ@0ô∏üNW~~‰qÎ_˜yGıõ|˝œOó$≤⁄˚©Ìs= ¬¢¡¢~Ω¨.∂óqŸw…/µó¥@ ◊G..√™ågà.§§??xà!’,HÄ����� ≈–ÈÜÚ‰Ò(ºAÓ¶Eüâ¢Ä√¸ ¶Ñ˙c0H������������]–O���������b7_·04)Ã<������6E&�������������-äɪÈ|ı������`ƒ ���DΩUª†ÈE®¶6 =ԻȘwªù�€›∏›\q∂®fl∂®9[è≤ë�–˜&¸`ü7Ü’SÃ/ÙP’Á~ PÏØ⁄Bœ4h-fiBs�∏g„83ÄêPΩ<¶6PWYäåfiv—øà˙“CÙ¡á'&mX;fijzqvEãz <9BıEñg�pÈaæ˜Æ`ˇxH˙wlßáK—Ífl‘uc‚u–òå›à—⁄wÍsŸF�…fP6Lt¨õ|˙π˚fi—ŒWÛ˜fl∞»«oñè˙¶˛˝:«á≥„{∑û=˝Òç� πùöãEvÔ®[√≥j◊Ûç$Atß� ˙‚∫∫í�÷˝n∑ÿOÕp5òflCöT{^L¿ÄØÍK.FÜëœÛÆÕπX“y¨¸Ï¨o^˚ó’oüæÎyÁ«∂”›+KÓˆ€˝„”∑.b˜⁄π/ˆVj∫Û<Ó˙)wÌ‘*Lu±”úqµ∏4ù¬4uæ-÷ì=ª|£À>7ôÉWÁ>>â|‹‹÷çu≥ø¥üõèkw˙Mu,؉ flLNcB¬)¯≈iksˇÀ˙pi/¶ÈÓ¡[9¥4πÙ¯\w…;ª∫œ]Ÿg∞û<-oµ69¡:Ä÷d∂Üà—ß_¥6ôC-ߘæ∞çõO-kµÿìi[í/l€‚∫%úóå‰|‹>ó◊O⁄`r∏=íp<¢¿KÒ⁄ÿ Æ√«ëúk4Á뜷â‰V∂·�êwµ?∞wu`≠¸‡1Ü'È2≥VŒË flï Äı™ÿv‡Êõ>#~T(’C◊\}ıdrU∑ˇ2ùX∏»∂Ò€ı√UH‡˛Æ⁄ˆ®ò¨µe˝6Í˚Ø“.̆Gc·í:$öœhR䆺˚Œy¨]¸Û∑«vË0‚KÁX∏C¢˝/◊Û\LÒYw^œÿJ•Øö`—»W‹W›à± KºßàÓÑEkºi÷ˆ‰q˘∑¸·ª˙'˘ßúFÎóHtˆ©cx€®^ü΀úï“Ωıë _ç8ËÁºÁ5Úƒ©Yãí„eıwç2Æ<^Öl.’˝˘òo{èÜç±9Kø˝∑ıV �2ü˙µ€’•-#©±Âø¬ˆq…e˙:'��OggS��@◊������ÏZ�_���~Øfˇ’ˇ€ˇflˇ€ˇ÷ˇ…ˇ÷ˇ’ˇ÷4[Z «?0¶�'qkó5õÒȉfié√±œÕ€ãÖyZ9Ωkzöó˛µasm4_X@F'≠”tc˚≈q±j®Ÿ,4Ë ÿe;ô<Ç‘√»§ï•…Efiw¯f√bÌbÍõ…aæ¸>^=˜k:É]ñnk0lÇ‘‡õ∞öa [Úx'œ7¨÷≠ûËk„à%^™Ö@KK∫™Zè·qfiôTÜúCÏó‰p8≥ØØ}txıË_fÁîfi◊V€öß9πú…©zfg∫SE≠ñNjˇj•õ…ì��Ä[XlòÄe∞#c|��¶C¯†Ó§˘3•Wvóùñß_”CVôKçE‚ï◊}861b◊cá,"ƪO≠5ÛÔÍ9qÃ+∆OÔ(ó‘âıÄc…‰ëÚ?hfi¡≤€Ú)[Q∏f'8R<wTÖœm=j5xÑIEç˝ k∫�NÓ◊` â‡ó'£·£˝£Vdo=Ópm I∑‰ N.≈<î}°éª<™ØŒ�t∏UE¿ ¡∆1w,∆èÙ¬ißΩÄ¡ª>òp>f‚¶—dï�Ö°j¡à9-‡,qû����Ä¿≥u}É≈ˆc��˚∑{ÚûSc˙É�Ph>ºµKóz÷gñd–¯W∆c$ÊkÜÂò #M@«®¡,fkmÚ˛¥5…4[¡"N“ü][¸A;ª›LÈ√° bäX‰D¶X„RBw∏Ω;.ÿ”åµ’4¥,XflNs¸k:Ïá”?Xã«÷ ƒaõÉ©‘>à#Q9‰4ÊŸÀ©É6ÕVù9åìéu .X≤x,,g≤{dS›ìK,í-∞‹˚E^ù¿R˜bÑÕ$∞‰∂+ìtwZ¢ÍÁÆŸfl· +®Â%›èùn∂ówèæ‡YYzñ⁄øcg˛™™'b@6 ÊÑ⁄~ߔ붰[¬÷A€– ÌñÃøÁ˘˜≥~nqgÿúÎ?+€°£4æ‰ı∫¥”jt∑2ülÕ6wªnÒâ›±z_xY~ÎÇ˙˝Í@úbœ:~>°£◊ãÂ⁄]c⁄qØé√∆éY˘Nûj5È}Û˘öŒY‹ì¥T√δyB◊ Æç˝ßrÓª+ïn:˘”6MîÍ∏ 3À*√âçy`Êx}Wfi=ãËûÁ¿`cÅ'SÓP8¿é·òÜ·`œ&µÀq1ôxÓg`ˇç¡~ p≠©Õõ⁄ó��äpÜW;Ä∞Nƒü������˛Q”¿�8�p+êD∆¨â!•∑^˙qR˚}«7dάfl∂ܨl,Ml©˝Tòlv∆RmX倱‡Û·ÔnN Ô∑^≠ €X!›∂G$º4rËNˇï3è ⁄ôj≠m≠≠…·‰êÈ∞5Lè•e±ÑZ›Üo∆ñܪ¬j9ôO,èÑ[LóÁ©÷>ºØ-ÆóÍb∑ápWˆ#«√üDöùætó√W•{—ÿè}œ˝üÖ ÒŸ|Á]{ /uß\”ÂÃgz˛œòÑ•W # ˲[ÖùFÎ∞€Ω≤-#Noæ:∞ÿ�≤K@Œù���‡8„*ìŒu∞Ü∫÷ Íh√V·©{7rˆ[>€·7ÍdÉ!S±áºñæ‘ÍàÔ´jϯ›º'ˇ~;9◊EìÉÉÈ_Ô„/Ú›ø◊‰Ω÷˘Û6ÍmùRa÷“3ØÊÀˆŸio›á¡}A„O+µä˙£«œp:Î≠LFÃÒŒøRJ≠ßJß](km¿1`«÷@~‚ Ù{%pl—fl¢Z+†Ç∫Åó]k§�@5˙kÖå„·Ü �lìÄ4‡��‘Û�UÑv=QÖÄgè—‚{<xÄ={5��·…�Ä ™V���fiS[}î8�7®ù≈sJ5âÜ¡ôçÂå!fiœÛ&}˙÷x ñÉ«ÑM\ Iq)º“iKy24π8áNìœmá¶ïØRSªé.GMkpπ84ÕÕ∑√l¨ß,√´VÍGMû¶ûmǃÓáö3p}©{ò§? ûFÛ«Úz4≈° /úÙ êÕIÉ ´ã…º6.¥{WxcN÷lÕÉ|Œ‰¶{ì‚¢Ÿ0bÅt---ÒÂpI”Lèè\Ñ&†!‹≤Å·LZ_¿Kì#+†6“ V[ÌÜIʶìπ¿Œka�ˇzÕ˜áö£vnÌåù`Ù‘‰å gTv)����¯ØM∞ÎÈ Á=X?πwÓ≈ÛÊˇ˝‘Ï[ÓJâ·O·E$<Vuw+,é:flQ °U·ñ^^ès´⁄:ˆß,‰õ˛z0vªìŸ´«õa˝ÇF˚˛Y±˚9—][ˆ∫.÷◊fluÎÖù8S;Ak[ÿ‘“¿˛˝˙KaN·§Ó_¥Mú3>hü“~csÇ‚»"Ÿû€Sª®?–_)5vêo“µ@\∞'ˇ]ˆN B#w�∞/x#ƒ‡`ÄX2€›Ïq�Ä^äSÛ�ùÕpH �/¡∆7��'��úfiS[R¸„¿@Ï=ÒÕa>™¸¶…∆‚*kMm2sÃZ-Æ≥›[˜otkëH͉«åÿ¶ªIwoNzòÚ`rrs?≤?}1âƒpd+-—vÿÒ«¨[èZæH;€q‰ÌÎñ[õi˜$≠°>ŸL¶≠G?ÏöN”#A¿¡∫ø;ñKwM¶;3m <mV•◊<ò£kä ·/ÚÅ%áòúâXÉ‘2˝¸áskõÎeIgbãq¡Yj√≠†æpyª“â¿8aF›È©rÕ?øT´`‰x¡$~1÷Ω¥Å̱…Qª��◊Tƒis≤î˝» ∂Ófl∏‡¢���àuêÍä∫m„‚C≈ì{›TéT˛ï∂¡_û∑Ω±ÃÀ´flqE„‰ΩˇÔflj«‚nzu76m~ÛlÂí/¿878N™ÔË€¶◊s≤Úùπ!6º¶˚¯¨"ìÌÛ¥á8¿J≠$w"û0fiŒ\Æ.XxŒìàÜßı˝˝…®‚ÙŸz‹[`™v‡Oʘ|Õ∆D†}+∞lV¨‡uÊNÜZ$<»'æñ��l’OÒlØoï⁄¡Á��45¨!��¿i�ÄCË÷û5ûÁm÷�� <�Ä÷âÿ fiS[RîàL�‡� 7∑ÜÛ!úÛhqë(ó⁄ÿÍ„ì÷I`dj'1Äò‘‰yh…¨Ç¿“ÜZÀiBmOv%?âöV�Wá…]Cm∆ºãhû]I± ¶s¥;h;»†7…p H«ÿcbi“S•~]¨Á5ëpmã¶ôÅ` |∞PªÆ≈13Í˝⁄+n”À™oe¸œfŒ‰fmMgFHØØm”Ü#rh8≈Ö≈1±flp∂á…∞Yå–›M˜-∫AmÄnFXfiô ≈«Nú™∏&æG–˝Ÿfi]æ∂†Œ�– ».���H≠ÁÕ≤yYƒî¸]±RL5Ì Åêêz‚˚£GËW!§|~⁄˛CÎrŸ2˝≤æ£y*¢wñè¥ø¸òö$πÁä√6Ó6§öoú{¸‰>°üµ«G?v%õXßz•ùaˇ6•’Sæ[ßV“ +‘·+ê”ÿöÄ,ˇ˜˘\¨kwz ⁄D∏qF?>y+&Ät}‡T¨cTæ¨óÎpûJ¸û?P^Å 7“èËe«µ√¸Q>Wão0∆ÓûàVÎ`øn!qAÍg›)ù�¿™ó��p+_��>‰¿å¨æ—éÜ–∞ÄLX¿æS[|¸)F↮é-Õ≈qÓfiñ3Ép‘µ˛ ¨i--∆iûùãò∂–÷=ƒz&Ä]Kɵ√ õifiõaÍ⁄˙<8”z]√Mÿ +÷«IülV6∂]7¿Ê<ófi:≤Z≠ÕΩ•ÈÆgÈñ•}>§≠gFk±Ï∑ƒ•âˆÅ X&˚+ÕúëÀ0,Öi6A∂Ÿ5≤a√ÎIq2\Õ†« Ö˝Mø?=ì8†µvrSMwejˇ§™5<a‡Ï¯èiõ·måê!Z™/|ˇ-°{í” KåL¬ò ñQyÆõI˶õ�ˆ�›lèú≤Ñ⁄·TØ÷IO®˘Wœ¿~8#gÙC����àl ∞êíÓאַM£k›Y√^∞t@¯¸ ø>䈌úu(Ωm≈[s¿úW–#ûDfiÇÀäIí€P«®è≤˜ÀÆgvY˙ãO9›Ÿıó˝ÓcuúÃNh÷4E_£.—gïÌ∆&(nıŒ_ó-KnÆwˆ3”u=jm)˝Ù]Z°…√«÷fiÒ≥”º∑°m¬ı»‘⁄W:nËDÙ∆p⁄∞.�D’ìnVéú�¿EXê€ò.�Ä·<��Ifl�¢ÒŒ˜j{.Ÿˇ��fiS[ãˇC�®ÁÉ3vNèafi“˝˚W˘§fiù¨»Úaƒö„—÷'Oçπõçiûx∞‘Ç‹U÷^Æ›É|,o∂Ç,≤Ö<krÖ∏˘√=˛fi¨ÌC…ÑœîA'ÆlÙêp9MoiÎÿÄpfikì˘ß߸˛vÂÿsœ|◊√ȉïë`2âªaöÓù‹4,rû,mÅj°W>}Gôü*ı¡ÍÂ[˝ªv¯ä¯…·µ!ıÌ4è‚‹ƒLÀôÑË&±πÔÜÄ…•IÄÓz±YÇnø®…n;2ì|œ‰T;IøÍ.v)êˇ] ����»ØÊN’v∑Áè‡`‹ı˙aváÙÆÍ≈óå˚∂◊ÃEIX XÍw¶flÈ8pµ‘Ó6π=Œ[üÒ°k3≠{ôºXPYßÌ≠œHw~Tö‹{B¯„˙√˘ú™H„Ì¿øyıfi¥¿À≠ÙÌáQNÛdRê÷ëhÃ˙{Ú∞>Æ˛±ı≥䀢öÌgññø‡„¡„ŒÛ®ÇkH¯}∂,ø}·'>˘—≈‚VÉT H"si*H CM≥F#8H`,8yÃ≥¢2U@C}õÁ\ïÊtπcq˛0�n„∏�ˆU¡ò"1¨@-«��k≈ ¿�bŸ6v}#�fiS[kî�8�»Õî/∆∂G Cöa”f1˚s6ã•òŒ≠Ò6«öSªÕ…I⁄£ M2ÊÂdfiJÌ&ÿµtw35[gc⁄ÓõÊ–L˜óu©*ˆß}mr +∞NöÑ”MGòM˜¶Ú»¢Òxo⁄Ê∏�ÀtIö∏8>I◊~?e≠‘Œòl¡¶! X¨A¬˙â9LBw(úª'ó6”Óë•¡¥SßÓ†Súñ¬'pé√±√∆BñX« X¿⁄]˜iÆáôÓL'€N,MZflûf;ãñ∏Ä ú˜Nıã√ŒvM˙´b◊ ‘ߌ�∫_∆û°˚·¨Ÿ•˚�y°Äfi⁄•P˚ h����Ê«vêª∂zWÓWB¯˛¬$§.ßÍ“´Ï¥√k̺“ûhŒùù‘7Wç≠≈˘~6[ıCΧ|V·Ûì*I˜ˆzVÆâ¬gÁ±‹ak'ü7‚∂¡È3v1õ¿~P_ÔO;5¸÷ ÆEÈ¥y”®7ê’≥qä7≠&NUP?∆a·k‰1AE�êƒ◊õÚ◊qû†9êÆoö›∂ƒk!˛†:��ê:� 5ƒD��∞•¯«FpóÌQÛeï¢aù–pSÉP∆“c∞≈∏b¿�Ňì ;ö%¥lOggS��@˚������ÏZ�_���ڱįˇ⁄ˇÈˇÍˇ„ˇ‚ˇÍˇÊˇfiˇ‚fi3[í왓Å�“Ÿ6h,◊,G∆¡\~e&òì√éŒFÎZÛ7„}:2G⁄ñVjtÌ:››Ò8a'.º©lú¥π9úIÈù”„çıx§ÓwœÒh¥Øµå‹∑À“√!⁄Áa\r“Yè˝§ïL”˝Êôa¯‰XNŸ`Èæ¬À0ò2éÓvU+=º<Xœ‡*∏±πåã•√Æ<‘,á #õa@¨÷3¥ÿ#”ÛÎIhu◊4=…ÂßoûU=¿@∑¿≈∞ƒ#÷≈í̉pÑãïÙugÆ– lM8ÄñÄ ∂¿›– 쮩8≥ˇô��Œ¨Â¨-ˆ�˛{›Ñ���¿O]ª?ÆÒÕfiø/±ıFÆr'ÁÎ∫-≥‡™Ä +˜ß≤{¥É_7˚ı’vº_öSû˘€ZE:yqvNT}¸|ÀmÎ∏√ÓmB˝ã ;ªZflèÈ`⁄ _˘À8º*≈—÷ñˇ^5”ÓÿäÁ¸©£˚õ0Jm˝7¡o +`§sïv>Ì*�+IJí∏!îF8’ôSï$KYDZ\†áɉæÚñ5ÿ–Ó?»<� †f–7ÔlüË$ ’´`ÿ7�Ähé ¥fl¯b���ok���fiS€ãóf�¿Ä,wú§GˆáÂï3=¸◊G’flG«299≤ôüìµ˝‚jÈh◊'vdÁ*≠üŸé°÷ÊTémìÛœ∫◊flä∞Z€6≠¡a∏kU +€ô∞ÂSõ∆jm]?tßx¸‘i»ÆÙı√`màµ!&ÑZ;Ω§áÈ⁄Ò&◊Ìé‰À…¥‰ß øÆúÉı–l°h}7Ç≠ˆ≠twú§±`í¥^´˙ÊœpzÈfiTcåñhñŒR´{—µinS˚ãKì,ZæOåÿûÈÚR˜0¬Ï∫Í∆`l∫µ ¿.›˚Ön∫ae≠ø*ñtø¿ŒYQ`Ì)¿ôìeˆãÔ*��®?à ��� ãó∆kʃ˛iYÁ4÷Ú¸!‚6C˘√pèâ˛Dfn∑ê‹Î„fll8˛g–0?‹Yñ;Á*H¢fiYµ;ªıN'ºûübv‰ææÛán∑¬˘KçJ∏ZøHM'«O√∫J◊ñLã«aˇ@S„à7‘W2œzı«rt‘v4‘ö˛áHC…bµ êµµ ˚Q=ãéP¬>=ÃÂ<Ö¶π%.`;§¸\±ÅŸ«÷ +{ÃĆ˿¶fi‚~ÉÇ»‚úw–l^ˆüéKÒó=8�;¥¯Ü��� ·‚������æS[j¸Åª‡��Ë≠Ñ”s≤ôÜFÃ˚‘∑bÚ.ëĢ$çû ‚ìÙ‡≠Ó8ŸvÈæ_Úѱ•Õt˙·Ó«]y›ö÷ØÈg˚Øs˛òÁa≥XXßC{[#'v«U·√–∫ŸÙ´q0∏v¡Êå∆F#”ÙÓûd∏Ωl◊4¨v¶U™ÁçWk'ÈáªÀaÛLßìq˙êj∞ƒKhH}Q=Ù$lñ61déXBq§”0|,iΉE®XÜ¡ìiF`:∞È∂ÜBBG´s1≤ÄnBì›0y2ghÊô-ò{0/ñ&}ánˆ/MR'ˇ¯Æ‚#�íV}´ï��¯Z`Ù)1���hãfiYWΩ•èÕgĄ́·Eñ◊∫ñÜˇÆˇ~òµÙnÿmì=Úw3ˆÔWgºªJêªã_¸r=0rU‡LTÆÈä“>£V≈¶gG≈j®ß#ÓõfA6ÆÑ÷g4ƒW!É¿≤ ã∆◊'õ•Ê˘≤ÅflΩıFã∂‹¶ñˆ)∞¢Ø3��‡èÒc´Jö9Œøõ∂ˇ∂Îe›ıo ÷Â~]¯V‡–VÌm∏˙wØáÛˆØ3K¢fV&�¸ÂúÈ:‰…Aõ\–Ò∑+ãˇ#÷ÿ…◊.�fi$ åW®å∞LD�����¿Ü ≠©3�����æSõJ˙°8�~Én&'OnÓ lé1lèf¨fiHñx≠Å!ü5L‰z¥Í‰—‰RrŸ\T7ì›4â÷cªùå¶5·”ë|3<Ÿ§|уj±∂Bl8ÕpÎπ€j¨[7·Õa∫?1dB˙ͧS§Ω{-«µ∞,VFj©}=[üÏá<∞?I£Èfp¨kGíB§ÕvM÷d¢Äú'm+,ŒÑ[Èπ«V˘Wøfl%ÜßLá∏ƒÍê˛á]˘Òc@w˜˝a}ıÔ>Õ‰‰Åé•∞’…•ÙÆ•€∫ßiŸE¯d∏§ì#œq≤ºóV�jr òDÏÚ3'_[�˚AoÏ�Í優 +flU���ˆÉº≠ChÌßè˜BËøì ú∆VM∏"R¨ß˜À ‚4¿ˆF|ì∂éÆщmÂdO•˙ ˙1◊Ê!ʈ*◊+◊∑Æ©Ê≠d¸rÊ?õI}¯æ≥ EŸzÔ~6·˙Cr&¯ÕÀ¯|¥Écüt\»òÔ˝À~çüÏûŒ¯‘ÆZÈ®fiGuX`$t∫õ˛¸p∂ãmäq@Î@í’ö∑Õfiv4dŒ≠∏>Ø—◊>/z∑z_Æb;ÑÕ˝”�^Wú'OFA�Éc√∏ ÄÌRpaRé;��-6Ï’`èæS€ã˚A�¿˜<€ıçº74Ñ[9uˇíoå‘–úÌYpø$«√q⁄Y:t«ÓÓMIX”o`ÚYæü[FàÈã˙‰/ˆw˚5Z”nÎa◊»H˚ÁŒjYú√ÕM∞‘Üè”÷„˜≈Vw8[ÆõEw8⁄÷÷Hÿû¥≈KñÙ<∞Ô˚ͲdÒ1∫Y;X[WÕÄÂ~)›� Û&íåÂ3$Á…∂ëÄÄù&tÿfl¿Ëb≠zπ`%8ì##¥ ©ü=`ˇ⁄µ≤îc8_Ï_G +#ìK #,í„⁄l!DÛÓíÿ*0Ëùè˝ˇ™'>ʉr:¬.��Ï9�£˚�Ù1��`„⁄b1=6XÓíÔ⁄¯ŒÃ%Ï–l\¨°[≥ã-ØxÂá…y]?‰˜\ˆîSgTà^Œq‹C¶˜M}Kòø#¸LhéÀ·‘Èp0e◊Ò4Ö„ÁTË.ù± cÎSı¥ïá£7¯â∑Ư{ÍÌùoÅ{%Ôíe∆ø;õ€¡V˛–˘d´ÛÜz“én˙ºÁØΛœãÌ‘˛ñ∆ÌÔqüa∑Œ™¬[9∫–ѱ≤vt ZÒ|£x‡·¿qá#P—∑.√iTÉ�oπ �` ^�@˚� �∞Ø������æS[zzÉ�)j~˝¥ˆ√≠ÙR˚≠wœô\ªÙè3øp∆v⁄©!Èpÿü∆%vµCz√’LÜŒag)ºh ∞éN6Ë‘É’fiZ≤òØÅ kÉ…√È⁄ΩIµ¿BÃá£Åe⁄û¥ÆµìÈŒ¥<|&≠�â·≈ÆC∫±%¥∞µ09©õ!KKçÀ$˚”õ•ÓÈ4ΩY¥.+ªò6#Awÿût®ˆË^fiû›Vú√HµZøÊ3ÕÍÂ!öãÕTm∫=û∂~Ó˝≠ñÎëI[}#,M”fi]ì6-6`€ûú€Å,129rÄF∫aâI`…ª©S_ÅIXZ“è‚TÍTk†5õ°y&&����˸UÍÒ€√Û6‚’S˘Z =∂◊≈óX ™)p%˛Ò‹MËhø‹2-ˆ·Nuƒ^€à<”u poHPƒ +ÄBMQ∆)¯ˆÙ∆[e©‹≠vŒ$4l´+â≥2fiâ +ˆÎ5Äjzëô›^˙ô€˛iåÓ(ñ3˝›ôÏÌ¡Méïc˝7˛XgtwÂkb≥ûΩf≠øÔnŒ?æV{M¿û›çÕÜΩ∂µ´jU∆ΩãQ∂Äf ˆπãò⁄?˙nÎ=Œ€ª2Ä∆Òú�pÉØ‘Ö��ö¯se¨ –ê¬������fiS[cí®ò +§M��`a∑9ÚcstM‚Ò’ıÓTÄs˚∫e±TìñÿXÅ]Ónjs$ç∂íN-'ıt§=fΔDöÆ?\≠MÊÚê&4n` ÇX÷çiΩú∫√ı–m…õ√≈€’’gz9≠∑ññÿóÌñfD-§„Ùë3ª¥Î§ÏÑÛ‡ÿ,BMw[æLfiø4ùûŸDΆö¡tíó<d€}Ë^JèXLÚdxãËÓ^åtKáÂω,qF&Ièÿ“ù∂=ù&-¡R˙2¨'ˇj¡¿FVX€#@€+◊®T>vNı|ÑW¬$ì>v83π√X™^´˝©�¿⁄˝Ï|Ãb����DÛµ˜©˙\åÂ≈I∞›©…z –‹Ê]=‚FÜdó≤≈ª;œJogÃ@ûè'û‡&ˇ˙˘EÜQk¶Œ’v|09l4°¡ +´ènfiˇn˙¨ı‹“ 3¶Ô+∑]Rª·∑é skU.˘km∫UAgª’Tò©=fiV˛°oGÙ}Û߬/ØMæÍ¢îmûÁ∑]—'àWfÄãG�†∞\w¯˚1ºõƒù¿ÎÁ≤©ûË.�XÏÔ”‡?~lËlp�ñ脃 '‘x>Ó¶'�àK��‡GÕ¬ˆ �����fiS[{î��Ä˝›ì#õE0ûÌòı’…e*≤Î!LhÒ≈åÏ?∫8£©ÀK´ô·˝–lñ.6Ë5Ûÿ,M≥u˙JwWö*”òç≠¡aö„·‘^ÕáÈà_kXrƒj4ÉP2dÿo° ˆîçÖ†Ûp^{uË>«·ı˙ï·c∂Múvå¨qóïf—∫:ÁØsOæÁºI˜ÒÔ5ü\3√0á–4 ñÓÖUO∑,¡ΩN˙EåK∂∂,Mb;1y’Õ$K›ñ`ÑëËÓ€ÄFÿµ|d;q @Vtª‚LÍ.ÿgV8≥Ë~@˜Ø-�t?1���ÄÇı⁄±5B«ñØÛŒ&?ˇÀtc8≈)�Á9ª‹ˇflÆ‘Â@û}jñ˙Gî≥í¡ŒZï≥lûsö∂“’‚”ÒáÊ˚Uç^àʺ∆OofiÔˇÇÏfl=Ÿò¯$ÀȫĪµˇÀ≥–Ûo˙»˚2øEp¢ÄZ∑ü⁄:ïsÓD˝BDÉç: WsÂòWU«]˙ÚŒKüvÄØÒXK◊ÊÃJ�ºn;TCXlÛ∆Cø±∂ʼn O�˚5fi∞flb¢¨¥o 1Bì�|≥g7�&� Xg X*������fiS[kí(DP �flç訵35˜/h$ËÊ—f¢ò≠s∫˜…›\ k}YvM∂‹!|‘y¯¶ôx‘tåLWó˛X0j©_ÿ≠ı–êûù∞Åt$§áÉQb--woÿLè“#√Iì¶âOé÷è9„⁄¡”™Û©=Éi®Ïo ‚ô9l9ÙXß÷`ˇpb˜Ç,≈ã eehµéÄÂ0¿GÇ≠ic ü÷∆:h•ªCªFXj¨K,lG�&GNlŒùIπ`i∫G∫™}˘ô≠.Mé‹≥bÛ Hø™S˜›t„W'K›Àfi tvÌæ:„Ï‚» 6¨›±øVŒ¿€˚w®3<˝#ÆÂ�}∆”eˆ;�g‡åÇÔ*������{Ì„ˇ˝’π®€eieêï.·8‚˚„Ïø£ƒ¯Ω*ó-¥nGøÈ≤.õ8≈ù®∫ûáÕÔXÖ∑ˆ?zÍz|÷›∏°x¬ik-Óç´? ãÑ≈=eAˇwé‡tå;äÉÆ∫ϙΛRuyZg7äŒ˝J.<¨¥Ó0î‹ûhY^∂áfi ÂÚÒVîÂn0/ÕÓ^œQ[y˙»≠e!Ïs•Ì�ëØŸûœ˜sCSîö◊ov8/˚º˜^ÌéÛ{¿rì≈É��ªåùq�ˆo¨2Äç��Ä�OggS��@�����ÏZ�_���Gw®{ˇfiˇÈˇ’ˇ⁄ˇ”ˇ◊ˇ‡ˇ“ˇËfiS[ãó �‹¿]\ì™y÷êˆG≤ƒÙhŒ›˚M„$6‰≈“úLC‹6R_üÚ\ˆ-rn£{‰8¸≈ôõ„Ñq}´’jÏéôGWG À¿Çé´◊#A?π9íLƒ:“XS◊À˙’÷ºôF+S+y”?∞»È`µå˛q9F∂-qd˝aHé§^õ‡Løl∆ùc´"u›áö´>6˝bæ‰l≤ŸÇ&»D΃EÀí7ëfi†;ôË°˚Äu…v?D“›·…3›·•Cã∏4fip∏\‘YJC˜ê{¸¢,ì0\–}:ôfi±›uñv∆Nu“_ç»|‹ÈÜÓ˝p≤Ω?ÔwŒ¿Å±ß¨ï3 +µfleó≤∂µ∫V����ÇLÇ-“∞È£l¨≠_fiıµ≠Åj˝ß¥Tù‰|∞ı ±1ΩÏ(s∏£aÔ?flkˇÂÎ!=£\(÷(˚Ü�èoߨöœÛÏñ‘î–\ı"uE˙?Z =ó3ö¶?Â%ÙߟÒ0˛‰SCÃQ≠›q8;mÖéäN fifli‹Ô¶Ôص\„-VÜå27á¯nà¬ÚÜíÂ+( :èGXN‚Zïqt‹FR∑¿Œ¶ë5µiªr顑µ$•ÕW¨˛…k∏;´=%Êr˚®–Z€�ç>2Äñõk‘p˜Ü¿4æSõZ˙ +�8@}Á˚O„≠8≤÷˙†F=1”géº˚∞ùr˙D£{Η≠˝Ú!H ,°ŒŸ&qa7ÅÜ≤ÔMøòO»0∫∆~ö{y+XNØJ]≠!XDÿ,„ÑLض∂,Û‹ÁÆ1|≠e—:§„~≥Ÿ÷‹}Er`]kÕ40|O∆˛œ yq&sY-&W∂”˘–dK∏==နÉÕìAËXŸL[°ÙÃçP8<ô>&õnÎîëço„c9B√°µƒR˜“0¬»‰/ˆÍŒ[ñV“›g∫oM¬»#å,m√ {L22È0#µ'aÙı©ìæSØ˛øı ◊�{≤Kê3¯.]ÄûÏ&&��ÄÃzëœsı¨xO}ƒk‰+¡SÓØ°Ö∆Ùª.7¿ª.:ˇ%CöXĘŒ∞m›¶¥~™;•«(k’má�ÔflÔÒ9nü⁄˜≈ö:ÈÛÀx]Nè”∏∂*AÌŒµ¨Ω]€PÃ^[Á˝@‚jú9Wì™4%‹YVΩ‹´Ÿjµ”o≠™ø‹P°"“ÿ±ìT˜-"áΩcD0* ”_|˜1∆∏~Ô=fl∆π˜Ü6v≤€9Mt�ÿ/ŒAÿOzɆ-k‘;I‹ �–˙ ‹Ûù6l≠E������æSõS˙Ç�®;ÀÊ˚3µâÖÚ˚ÆócNˇ§Ã…Aü˚Ÿ:=XÑéM*-“o›;¬˘X√]+ÖA»ö%lÈb˙Ì~òL≥î≠'∂ÈPÏ%<}ºÒ√ÿbëN«ñ«£CMpàÁ–ô.Y“π;∂ÇiwwB‰ +8¿0º∏81N Ù·`°≠Ӕ롶“ÕÜ…Lz#mg⁄J™iöEK√›∞4íŸl∫·–Ω9Ioè¨ü=S∞±Mwè\D�` ∂fl[ó$√FÊT≠¸´ßoı{™®S?@7∞flÓ6�ßc@}\aóæb-ê™˝´#ª�µun?·���≤bflZ∏ñV(€ï…kŸ“?Ù[egÃfléµyj¬6? ¥Û™¥Òæ*–‹∆·∞¡m?õ®„˙Y‰®°y›$ùÔs˛:üªm±©˚çûıg26ƈô]πX 1›�∞fl›ué&R◊7Ü•Ù£ÿü∂+˛ó¢£v´ –fbË<l6Ù`‡˚≠Œ¸„=Œ"��ÿ–∂´‹77k]h∫û¬£q6.Kí`0Â1òË.� …\>p–≤ĵ∆fx≠≥∫@•<�Äd:"Nà¬É��¿∆`ù���fiS[Rî∞ H �Ä›=v÷ÊÑ õf%®Ù∆ô/G,÷{zflå∫%Ÿ’∫Œ1ö#·µQ◊Fã5≈ßn8◊Zò#∆⁄…'X÷ó≤EZñKK∞k)ÈÙ∑Aíi≠≠ñC´;~xfi<”Æ_;õ˛€ÁsTøÍ–8£4löV∞8∂ÅñÂ,SàKy§o‘“aKà`ÈÆSñ√<‹¿a$∏õCXBbÕ##õ¬á≠§ÇÓ8È#:û∞K0Ÿ“…õµ∫k©’ €ØBL¬‰“íè,i˜ío≠~Õ˛µÒÂ*ŒY≠‘™ŒZv�¸†≤Kŵ�æ´ˆ;���ƒBΩ—’ÒÌÏß∏Ã-¸∞•ƒÏJù˘Sµ}s¢Q‰/ ⁄R*⁄i⁄F¶xìÒ‚ÉBymó^Ÿ≈öÙÊúMÀ˘}“_ʡΨØúøûÁßΩYz¥‹∑ˇWfióÑÊÛJÀÌ ƒx¸ê +‘óÚ˚k≈”ıeäbW'S°õ∫¥Ø£>ıxcyv‹‹:ÒóÅu¡tˆûfzïuˇ•®.⁄蛜:«I[Qø5L€�poÏ[EÜ«‚4ÿ∏.H:¥�n`�$ÿm‚” !à@l D©<ñÀ;˜CŸ��"ì'&–T��ÿ+ŒfiS€ãì ��ÍÃôì÷@SâØÌåñmlr/]¶c∞≤9;yƒÿyi¿áã±…õËSŸ>]iøœÈÖü•M˜d˜ÖϬڋ!Èr£6$mRG≠S›& ùÈEàë`ƒCì–Ωô.•∂⁄»Ü8¿‰Ü`ì&`r…Í´â57ätXR≠9fKÍ{ÃœOfl ®I=m‰ 1=ìLfiÙ 9`⁄§ck∆˙¯›;._%≠}w¨ÍÖ%±≤Ù≈MãmË$=RK«GÓÒ[!&'ódl`Á∫°ÓùI`∞≤ÕË∑,¡.Ä›fi/ËÚ⁄QFˇœ˝Ï*�÷¬ç]ÄúQflUu∆����� áwàéJ:[ÅS‘fiM≥NÎ@∞R|ƒ,H–ÊÛíóŸiäKú√ñó%‹˝≥T˝°˘˘£”Uç®Õ6óæçÌY6Òn–ûfi ıe]ù„àèN≈/i≥®"w·¢,ïA<Óg?¶,…˙ˇ¿/'˛kÎpcsMî©í±ÙÓö'ö7‘{roÂ�ÓëØXèIÌ¥∫¸≠5òÆt’3ˆe¨à√°üã´≥çË¢6$¸⁄œÜæX∑Ù$cø˚5�ÿô�Æ}fifi&`∑‚»Æ·Ù;–@�l∑ŸÜ‡¿ˆjÌnÄfi3õjíP1�›¿ÒN€¶∂ù”h¢ÕÆ≠fiSe©œÊ›}≠!f—ßô∆dž=ˆSrL%ˆ&·®…IM–ÜGÆ5À—z∏Y8≠|`ÏLÊMÕ&L[Î@+7[J}’ܡœ9@∆ ~öŸ˙ƒ¬É«âc«ÚbÃÂôûÈÅ¡ÔœÊ[[-∆ûI≠~»ágÎßzı∞î¡V€•˝›∞ƒ$#å‰ı∑lF�l£#¬ftâ…%ù ü2I76��¿fí˝00∫‰Ø‘épf-ªˆ≥8¿`ÏYú¸]ÅlØú‹¿◊�����Œ âÇñÉy©›?á∑+Ìü‹lÀÄ[¯ΩΩ°:˛˜flˇêU∆çnßfœΩØfl‡’óiÛ‹ZÉÓ”ì¸=XbY˛sfl>Ωû6 }≈=JflÍ[∫ã≠ʃ{π[ÂõZ∫v2DFy∫UÆ/åáfiÎ˚;õÔ'‹⁄≥˛|¸_-_V€)3Ë2Ö=û¨qÌÀ¸äòêû¯Ù§@ÙõÔɃr¢Ía‚1)xêUA0Âóz ì,Ò£/™å√5>k]⁄¢©∂@��ÄPѵ≈∏€Ã>£Îª¬–�84’fi+`≈$Ñ]¿û fiS[Jî –"‡�ÄÔ‚Hp1Momzâì„›˘4/NÁsÀ-m¥-e∆¶i´mõoùn+Õ·ÏѨª°˝â…WœÌ~¯¿§Õ»§µy_xÕ„üŸ,-Òó#°…•…Cw∏&≠|ô&¥∞ùäu)¡,ñå√ ÷g± Ñ- lWƒ[#›8ñÖ5ZÛ¥y≥k`,˚t`ÑZ[°?<`Ià3Aöúy§b O…Iì≠î‚dã¡ •Yx∏Œ¬_˙¶a Xä?&¨ŒO∑√giRññÿ è ∂ +uÔ0“=÷M7¿Át…G��∫Ÿˇ—GòîgüóÎ�Œd0˙'CÌøëœÄû=£‡ª +����¿ç≠∞q• Ú≤Wå©fi˚KTq ~á]n◊˚bè,ªÊ∑›˛B¡|≈Òû#VFQÔVèmê·ÍR5åiIØ%—ˆƒ8‹uGÿËGï≤|€ÆØÀzl,ÆÿÇѪ؅T∂ÎÙß‹Rœ;m¡kÏyM¥Ék3¬Ô!ˇúrÓ• ’Ñÿ¬OÓ˙µgO–‡Z√äCÙw~qÛL?™Œ·ÁÊ@ÉÄ÷‰Ì©6�ÛX∏ @Ä–Ê]Ìö±Êj�•;ûúZkÌ√h˝,‡¿|a�{5fiS[ìó�8�|†Œr∏<˘q8©∆˝P'€3≤Æ<!7Õ“a0¥Í÷$\õ€OìÙíäYÍ6„êà˛‚xÿfwÈ0†,ôZ ¡íÊÓÒGV;ãã6€¯d≥–iÖ≠#ÉP¥¨”Ik>g≠”•Ùf—˛‘ùáKKÑtº_ÍÜ ÷M–}b,èl¢ùv‘bIõ#óü[≠§&èú∆äNLc†QÙ≠Ì˝NÂ3ê€7È5zÂg’S˛óFÄÙ`¢6,•CgíÊ"¨t#¿“`Ñ…•ã%`Ñs2Ÿ K¿ÿ.1¿»$|d ∂◊û◊gĵÿU�Ä]bت������¿ÁɧÒÎà˚~{≠”†Ê©¨_∆`%⁄K!ı€”ì!q˙Qf7´å˘·[a7ÔSÿÎSÛéZÿ)Ô?˜ÜöúÂ\|fi{ÊF4nÃ7·ó–fÖ¡c˙˜U∞FTGkÅ)˚⁄õµŸà¸o"Å≤"ßÇÙ§3ÕÀ∫J£A �Ôkh•ƒÜ˛¯É0]÷ #¸&í$Ã^ 4ëC|bmÒù‰≥qDm¿‰¿R7�…ØZ= –~wΩ0œÅU‡m’�a|∑Ìs∑ãÌ3x��0r3�`…���fiS[[¸C���y°¢áÿÍ><g˛r¶m≠u˝ìå;±táŒÆA∞Hè§&÷oõ±``”=≤RÕïd[·¿dUw0‚ı√ŒUhÛ‹/õÇ£ØNG÷2ŸéıL'≠:Ωa>x∞ÿ±∂&•≥N˙ÖuÌ0º`ø˚»Hê⁄÷EzÑöŒ† bN√tóµÛa$≠è˝m—ˇ˙fiò¶CáAhû§A˜ß?TÆyü2L\ñ`A–4∂ìgi—ôlF¬twwLnwá'ªÅ¡àÕ$ì÷3Ì≠ë√“§mw˜øí°õnYc �vu⁄øKt?ÏÇ—=≥ºX�≤ÎÃ.’ìÂ≥≥K◊ªÚ.ÖµUg9≥G–[����¬©B•6¶Ôs Wäı.(ne«-gÈ}›∫fi<3ÔtG3 ‹=©˙>Àß8'≠EŒ∫ñY76≠‡Ö%⁄fip9`qw∑zßñÔæ+2ˇ√e˜`â»qùüpîºHb∑H≠NkÔ<º.X5Í€êfl•4ª!Ô.û«¿ÚZ≠—Å~Àw≥\UªN +≥~͉e1ü›π;˘/j–ÜV6L”ãç≥i©SÔmÚìßœ¥Ï\õ7ˆ9∞≈ÿsº˝«^Á–Í��~UcL‹fl1hΩıª√ù•�Ñ˝ +�OggS��@C�����ÏZ�_ ���ÕíqMˇÁˇ‡ˇ’ˇ”ˇ‹ˇ€ˇŒˇ›ˇ fiSõkí·†��‰∂ÌÓ∑'ôkÂËp5Òfi∆‹w∏d=…€s˝`∆É_√ƒÔÁi+a”F7Àó>w√YÇ«§·˙ô˝i±Í∞mMΩˇÃ˛n&ai·õj;≠7m>ôMN±…,ÂMh¡`m0iU»˝Ú`2≠/ó◊µ˙wMññ7”áAhÒ`.ÿêñyÊ≈\€A3¥nMÁ´ÈÃp◊÷ô3‡‡ÉKV=Ö0F&H”A^;ô∂Ê]k͉d”Ñ¡/¬“÷•πeÆ_r¥€45áÓ-÷ëÈNèé¿¿m0Rì0FZ˜Øü˘Î‰Ø +ŒpˆpÄ˝¨tÌN’~«=U�›ø;ü9CL���R�e˘?VE›πØ«Lì⁄º…±;Æ¢‹“uFEçöÏΩ][MıK[ç ØW˚uéq∑aªÓÿ˙z“|¬O˚7’~Zflæ∏A«ÜåQÙ_x€t60v&jazˇlV˚G•”8Såî´Å≤UÁÈZ˘”QW*˘E¢ˇ¡Wı`;Gfl∑ùs«›n1˝·Úd«˛É7∆p··æÒl≥lI˛∏€ß`òV\1√»1f∞JÕˇCõpÄ _Üú∆ÚÛ.�FZê{Ñt°Ko¿ÊümØÜ�¡«ÙÅ5jÉ6º"ï @ËJ´%������fiS€£ó$åÅà�◊9Œgáã–<‘≈q–\oX≤ªO(CÌ„Å!›É{8º Ôfl∂]Ÿ>·æªéÌ 4y¥Ω ∑n[¨~kk0Ÿ 6µøªR≠Ùı‘s∞Z—ö∂¶xíœú—¥’XBm˚≠ÌM†;â∞ëNw˜V¥A^4W>ˆÈºü◊ˆ0î¢Î⁄∏ 3¶›°][¸¡1ÈëJfí–a$Ù,a¥t<òlçD‡Æu?g +ì#kK≠ãövK¥Õ¿§ıEÜ%µÅëïÓ≈ÿf†{≤5B7†iÄó¥ˆøTœ¥‚Ç]`‰Ã$�@ ≈ÈöÅ]˚wqʆ˚eˇ.¬��@ ∏Oıú„€5éı}IdÿvÛ‡πÎ◊ŒW=™ú£i1*mÕï©fi†˙µ&˚ ·÷JÊ˙1fl‰j™Y}€∑„{Ÿ7~]GÔ¬‰¯^¿U•ß~◊Sø�Ùÿ|ùÑØ∂Ô^=t◊È∫òo·‡π~≥˚ŒZ¡üµ≈Nøp"@Àÿπ»ÆYYc≥ãO˝ÉGˇDQ*Ë™Ù^=π;O \Í&ìN√õ¶W +˘<-Ã�Ć\v��ø‡gn¬êòÛ/IÄÀ61ÆX�����sɉ˙)�ÄÊ_f Ä—gç���fiSõSî–EÇÄ5�¸∆»Hk$i&—G∑”˜'`6õ£ª90Ωπ}—Ñ≠ó≠µ√Rkgd◊J˜~F_§GåÛeNÔüáq)7¡·"2eˇêµqÙ`±Ï≤ƒcx Ρfl‘πµã•yÀí[ƒ:2rJ√»awÚ°≈H¥Æ√Òêé`:=Ñ!ƨ1jaiZkÉNqifi0∏Ǻ±éLöM”¥6i˚·R˛«T⁄Z Œvÿ∂n†‚±e™/©É°áñ¬»í-,ùQ°ªñ&ô\⁄°ñ`ƒˆåBwM¶æ'µjΩé‰ÃôI��¿`eª�ĵ»ÿâ����`Ô8~wlEœÆkUb;"Ó;Å`:]Ã]C=8˘B-w∑åq„ü„å=äd{˘πõß±∆ÜŸ©ç’˙u¸ΩZ ¡;2ñz«¯E)‰…øu¢˙ˇÙÙ?ø$?˛ƒ»-.°ì¯t™zƒ«#^™Õ¡èGó÷€ÔΩc∆÷´≥Ô£…+¥nR;Yl¸ fÉI€Äxcÿ±NàZï ◊BjÀ=?0\fvMI∫0Ah$∆îãõ9›%ÆQè�����ÿ∫y∂˘#�Äúó∑�Ñ"��fiS€´ì ��¸6∫m[}õ«Û:¨◊6w=Ôrs‹‹öûA≠áfÉuÀ∆∂û[09∞∞µ]“î§ıˆÍgi5˘n⁄"qp1lMZ&Ct≥hZ–L,2�I6VM_µõ≠…DÀ¯C|Ì=¿—``·Ÿ›ƒ†˛òF†Å�,˚◊'≠Az̲ËϬu˜K#¶i8/£5≥Ö–êiåwMπ!QÀÇë…3ßBœl3#tkË~â%&èlò¥tw«≥‰››6µ4R6¿dz¥{í—ëné)+Ø`0πVŒ�#ı—/>¶‚T9¿≥ì∏Vv�u∆˜£k������q‚±¡t…€”¸`1∂QÀLlQª<>4Ω¶@ÕWHo¸Œvèãè˝‹™≥¿÷¸œqA<ÉQ”Ï∂b�∂±<WOŸXæˇ†yús®º£¬vÃäî¿O2∑UÂ∏S΋_Ã@ù›�Q,≥ØAª≤;±ÄCäxø◊N^]ƒ'g€”+Sp∏?646P©J˘Ÿ{eıN&¿ÍloÒ +›∫Éõ«Ú{∫oå9]fi��\Ì?9∞≈)\?¡t≥Ç∑`�Tf˝)��–Ó'Õ¥����fiS[zí\Ä�¯û˝á+kPüÆï^ '5”ب±r6Ò$wÌs>ÃõW}+c„˙”Mü∂jk‘4€v+ØJùO≤e:'IGÎ◊èWœØ^£6œ“I3ŸΩ [Lñ:#ñ8qc9‰»>.<ÿaÈá§I≠CB\tw¥hhh6táÉ∆JLNò∑Õ*≈·¥! Å…”O≥bïÿi+ÈM»Bw6ãnZók+'◊¯˝t¶›glÜÓ}â÷E∞lùrfl]G;›Kp€‰≈ «¶ua;r:π¥4 ÄÌå0 KlÀ.;ßlp∫ªÏ›œfl…ô]j›Ω£∫_�t≠fl}͆˚Û�����@íifiSΩ°Ùe⁄ˇ¶ÊZ≈‚3Ãv≤∏Ï&µ$yoÆ“’åâTÓ_ÏÕβSP∫kÑóoÑW˙„œ�ÖP|BÇø{mfi∆Ωjé=•8t•Ø9nW„öª7·√D¨ X„lÛˆó”¯oe¡]Óë9…§û¶íÂQ¥#¡Mu8éÚ≈⁄∏ô†{Ù*)§k®K{fi—‹ªÛÍ◊S+√ZˇÒì¶_–6b◊"∆@�Ä!w–O∂Ôz_¿„qi?N–où¨Ç‹z'¥%–mˇ¬ÑUŒòp��/Pm�ñ+6���fi3[™ó�£�» +÷fin_ªsc∏∞]åíüÚ´ñüx∆Õ&‘∂îè´€¶K Ô?≠É$q…›1=ÕHıyC“p+H•Û»⁄kgZ¥.BEwMû˛4”!”a–˝&á/RÔ”∫ß˚≈ÍIûû˚¥` c˘L&MÓ∂D¨„[¨√ñ&¨ù<C∞bŸoY⁄øîÉ]‡õhe,<XXwifc=Ò¡ä5òZ&áãÕÒk¥*>∫¨›q1≤ƒ»T¨Õa«FFÃÁdzÿjÉV=6#ììLrrÔ@7ì–-�ì€˚¡Ó 7z&≠ôYÅ]ÖèùqÄTÕüÔ≈^�®˝æ∂������ºÙ—K˚·˙ÙkV˜ +§€7˝ÆÈß*SúEEÚ(√1◊˚Pì9|§Ø™˙æ˘t´WÔJÒ'◊h£W≠¯˛g ø∑»8∞£Ò¸Úy[„4É“Ê NÌ+Û–´ª|›Óv`5ˆv.x⁄,∏9&[∑YÀCvŸ—LÅa«Fc˝úTøfi¡œr©sµf˘‰A‹yŒÊfiµ‡N$q⁄¥+EÑ�pè]�"¿’À∆Çç‡ <÷�@pEî¡„— <∂G|±TÀ[ù�§Ñc�…âÄ"éÜû/�@À ∞gCfiS[Kî��Äã≈<ÿ$é§É–8oΗú>≥¬‚´¡YjwkNL=$0d∫º–ø}m∞»Ÿ·™sZ§ëeÊòj}ısú≠fiøF˝¿⁄7Åå¥≤e≥Ëbµ¶∂FˆªÉölFjrȉNª`—$KC`Afi”Ò‚$qiÜÕ⁄–dkÉu⁄û!ŒÙúÁ¸p}’?8ì√ã+#êx—fl7LÅI‡�´ÿ2∫⁄êIÅPgÀuNùdí÷’π'¥‘ L¬Z�&t”M20„„'◊|9”˙¢VwdIÅ≤Äjøú·‡ª +����Ä�8—Vb)50vPJúÚv;Ìúv+ì≠A„v Ñˇ˙ œQYôòi˙~Åæ≠VfN˘¡~˜RéÁø—SãWÕ^Œ≤˛Á\‹)ó™j‹X„≥àÚ1¯fÛ‚öÀ∂Ë|8Ì˙Ö4Óª¶åYUü∞Úé9,{窣S¢To˘·¯ìeÆbr"wu‚a +¡‡§gƒ8fiv©ÙS˝†•Á¸ú¢÷‰⁄¿„@Äüa_}ºû ‚�x-πòI'?”|öåªX02¿�Ët‡ü¿˙�ˆkí�∂h�{4fi3€Ωì®®�§Ä�09ÅÆ˚ÆqY£as¨•⁄Ù!]√’&›XÇ√HÍHh·›≤”=uäóÿNZsKskßE°êgM:]µW̧ÿµ±>ÍÀìb´L≤˙OÕ≤ıtd2.ç¨[my3≈V≤7gm€òÁ”p ¶È§tøfläKL“m pñX¬f,Á^lßLr ≥îI∑¬XÉ…gyXS¶Û`9«9˙ó´üV~V˘]ıg'˛$K`ºªñ&ól'óòLëªô‹µY?ë‰∑Ä%‰ñ`íIFà/9¿aiÑÓ wÀì�#:πPù”ÙLùæÍfl:�ÏÁd≠ˇn����¿U%i˝õ∑µ·ı&≠Á?}≈∂í≥IwY]|p€|ó≈ù§QÁ®uÁû™˚ïnöÔt ^¶Hn«ˇ~`ÒÖ%¶ù_ò∂˘∞¿økÈG=ÇØíê$:-Úõ.≤´OX¶dÓO9>ıΩmîëK<Ω”œI&ÿX€∂q,Ùflrb§dŸ ÈHËR˙1≤VËÑÓ{í£≤≠ICJ¿ÒM∫◊F√8C∆NجÈúø°˘eKïÁ �ÿ©ñR0÷j�‹ßÄåÿéÆ·�ÁÅfrx≤≈]�ÿÙÿ"�æSõS˙ +Î Çî[%g‚ÆUªÇëhS~C+§Z”ô‰ZGü}c«<å≥≤g√0liM-+ã∏t∑È8›á9∑:æH3Ë∫√ìÀ#j—jÔi∂MsöÃÒ|Ÿƒ;™ˆW_flIMñ#4!ˇïrŒ÷~˚0’é€Á¯¯∑±Íj√ëÇ3¶÷Ù∞ ıgZ©´ 9å§G.vMé@˜íexhì¡lñ¥Sw∏& OôÙ¡[ËÊ~2≠´‘+’K}�†x Ë>LÇ›…Ì`Ñè��¿ ‘>:˚ßv˙¯IU æ���]¯|®NËËÚhü#ä!!‘˚’◊3.Ë≥»€ˇ≈‰§fïØ#ÒΩ1€RºE´Q/0⁄|0p≥DBÿVD <‹‡íáÔ¸iún<?–«d_BºÁ-Ń;©¨ÅÄfi¶RnkÖç3∞Ê˙øˇ⁄IaL“é~ò¬Â_'Pô¶=ûM‰ÇÈC˛@PM˜üÙ∑Ï„ +…Êl”Q¸?≤Yˆõ≥ªfi5XîÌ�∏/\Û8çgî— gñ$ ���ʪÀ¯|ß·ªÏªM����ª7ljø9¨‚§¨`Ñ&í°����@<'�OggS��@g�����ÏZ�_ +���⁄rª5ˇ◊ˇ€ˇ⁄ˇ‚ˇÁˇÊˇ‹ˇœˇÃæS[ã˚BÄp�ø≠x≈¢Âf≥eZª{èñ“ãïE≤±Õ´ã'M∑ïÀM€a∞4in⁄∂ñ7i´⁄¨:≠©çOû∞î-M7÷µªñö·ÿE¨iö√Œ<q÷`m2QCìkøôÜx;6∂ °°±ø∞6∞ììÛ∞.◊ù=UZ\øªÍLN≠˚O±Ü8:o•¸≠˙û ∞vábxexnh ‡∞�1|X9Éh;ù&áÄÓÓÓ¡ÎPú¬=#KgÑsÉt»vˇ§4¿≈��XÓõÙT?Û5ˇ^u¢õnx?∞iy∆«œ¸q®8Ò���1z‘æÀÓ”<ÓÒ`Ωdôø2®ûfE7Aã ⁄OyuÚÈ˝Ã∑\ÙgÃÚvıK´yïÏÁ©/˘‡‡ÖÛûßsã∂1˜zZ∑_sˆQÅ°°ˇÄ„≤IⲲÔtπQv”{ÎwoÇ÷¶2‹›≤Òèˆü?ÿ}8’⁄OÈÁ°µpUJ´ØÇR˝ÜræÄLÔ ‘ö˝r◊vD@’WF�¨Cc1·>8z„ó@€��`äÀãzé∆4>”≈√a( ≈p¡W†ÿ˙6˜Ólù“–±4÷≈���0º¿≠'ÄŒ_��fiS[Sî$p��Ë~ŸÿïñŸVÊÙ]'D∑œGGáÈ∂&õÊı ùdX“„M'J«Ò‰pCÃø +ù∏2qÿ}ÿÔojȇ÷< ºπ∂òúwëfi’ZÀ‡Ñ-‚v∞;“Z{œbÈ0ê∏DÊ∞<‹ph¨;<M_-¿µ∂%¢Ω¡?G˚W;fB≠á`íÄÿ áÂ!È°!CêˆÎS™Ìª˙Ék™ƒ˜ÿ™j•v2”º`$X-≤°{∞÷fmo§¥ËfWx¿‰ÒΩñ“K·Ixn®›åå,— 0t3b3yXæÑINñwu/9å0…˝Z(`“G‰LZØùiˆ∞ÛLœÄÆ���@$†+Ù®¢. û@¶˚QÖÕbÉöÃÔ’}œŒaê9Hæ1Å°*„§1˚ÓÆc’ómxH-:∫qÌeÎ>gFb%Ë\Óè“—ÜÈ5q={SC≠}=¥∞È/∂Ê˛˛¬Y¡≤Ë’;P)ï¡fi˛OÚÑf=ö{¸¬ªÅŒë…ïV«ÅŒNOK? +∞QÛƒr˘Ê[∫8˜∫=¯ÈC˘$Ümïgù?áoµ9F_,ÿ�,9¥?4∏ıyæÓ^Ó Õ˝≤/pú$˚Ö˚9‚ƒ†N����>8@Û„˘&9�fiS€ãó‹Ä�‡k€∆Õ¡∏æad‹p4œÉãö≥üûº±49qz<Ïÿûvá¶2æqˆÕÕH–¡–6}fl•Ï%UM€ûC´ô‹µ÷Z'ÃôπõÕ9t7:∞úmÇ√¿F¨mOr≥k “í≈◊N2ùGŒZ9cùrÄ÷µ)¬ãaÿv?ÉIâ'`mÓ∏4à÷ãMu[Y‰7¡4¸*g\„= ∫w-ë-]s∑Ök>-9£Êt∫7©ñ.`d≥43“˝,_T7˜êV™g‚_øÊ à^å“ ,a&Ÿ0B7�˚óW—ˇ∑z˙s9ìk·’@Œ(�∫Vê]/ˆ;∫_�����°ÏfiÒ⁄ù/ªÔA˜ +ı¨˝π¶è_®ª_ìˆ9]´äl2Óπ˘¥∑d-:ÍÉoπà2Ω÷Wù{u0>Ú]∑A@9?X-’Œ∫…îñvA +{∫~ÂUhèO∞÷€Ô• [u°VïeUL„ñXYÅΩs�®�flí”'V\u∫ˆ≤« Wæ™wÛ{>Ê⁄�¯Xn∫†•Òi†dJÚ˛~ÛOVlÎ-2Ù@Ω p„“≠Nµaˇñ¿ìa2�®¸æW<ó„oSbÄ2Bd�`ƒl6��@r‡Wµõ,9�fiS[kîÆ¿�ÙΩÀ˛8ü¥r?æ˘,dî5è`j∑Ìπèá∞']•;5s,Õóãñe≥sh¨7√©wÉÈÚiÿºÔ8•Õ˲$+Æñ[7q◊l¿v`s¶á3#Ky»∞c* ›q≤{)Ω÷X∞îˇä∞¬E7°iw»Ú&jY,áj94ùŸX!K:ÈMY[ȃSeÿÕœkï“k]ˇu˜˝ Z[©Gú°e9x‚LJ√H˜pÎ$Õ‘"4∂”n∫ªó«oç”–$l[Xjç,Q˜i∞YÚ√ÂåÔWe” ì�¿+ñv]*ˇÔô˛9€ªFõßgÿ�∫_†ˆ;@≠‹ &���@ºx·>Ä~∏ZuèõÑ/®ÒY‹]≠¿o|ä∑U¯1∞‹]g∂Çû QDçÚƒÏu¯ ÊKŒˆ/>nz†wû,ÔM<U7"9(Ä£ÒP˙ªÊ∑:‘u^⁄^#]9pß-®£G∂Æf˝ÏóIç¸i‡˘ˇ∑≥˙¸ΩŒT{j4]Ó∫æÊV0îNflAÚø◊8˛áˇÎπäÒ}ur®ıoΩÄ�,=yÀ- >ô)` ‘FÜÎ"EX¯c��üYƒB“ÕÇá∂{§„�∏xon0‡��¡ê¥‹��mÔ������fiS[Kî��|˜ôì”C3Ì:÷ØVÊÚH∫u¨πøæ”J◊Iïf´Ç∂0khcsÃc¬!Óè육¡∫f;˜d⁄≠„.ß©Œ4]L2°{x[`ìüŸÕ·s˙œ:#›¿»jÅÌ=åL“br8™Ir˜ÊÑiXZJCz√HË∞Io6ÕEMµ¬g€˝Œ˛Ùà≈ RÓ~´Î‰°≈°ô≤˙à%MöºY¿9§° ∞¥t⁄∂ßs˜"Á……≠ãçço&πÃ≠f“ö∆ƒÙÛ⁄5>~Ê3©ùŒQ£”åP˜fiÕHMz7›£K˜∂�lèpòÄÓb€éå�#`&ëÄ3¬Œ(úŒúqÄ:„��‘≤ΩÑ���ljgö7lwflÆ’aYfl÷mπnL-vÓ„Û€X÷fU;ÚÍL¬˛Üˆ∑gL 6JÍ€,|⁄0Dü©⁄”ƒ±œ∂ßiÃØ⁄Ñ∏Zm¡„≥ÌÿøA˜À™ïÍßÉÍB+Lp’q£–≠©Yˇ±¡C0NûsÌH∞.˜úõfl2◊¿ÓÁ)…‘ÌΓ&a◊J"¯xl∞,éçF;7©A.ÎÓ“Im|ú!™⁄/ÊÖ�⁄€õ�h≥5†möl2»”¯‚�ÕÄèªU#ˆl�4Ÿ����–é»���fiS[{¸#› Ñ9�`m€eÕ:Mo_Ó∫9Òd}±n&Æfi4'.fl9≤∑’⁄ƒŒ€ ∂˜ì–ÕŒ†õÂùÌ7OŒ“ -YRfiΩƒ»ôÅ%ÒÌ•Óõ≠-ˆLZÕ÷«>i -Kh3ŸpìëItbw [NÙ0òL7≠õ˝ÿt‰f:i&7âóãª÷ÉoFÁc€ô¸‘«|n√v≠^]:ñfÉ–¶áÃ43Hùl†‰◊'á¿ +áM7ìrÓ·{X~∏è7ld∫mè⁄'Å•∫˜IËÜ&óó/ñóÄÌÿ›�›¯ÆµkwÏ6¿9U‘ˇÿEÌwg'�®˝†kt˜.b���@°≤ˇ÷ù˙“,ìuï«Qü∏Ìx/ˆÆŸ®˘QM¯˚xŒˆ’∑fil˘S–{ùπ¸+FˇÔY∫u•Ã{q˜∂ih∂{†°p,34ÇßìEıGfiü'ˇŸ˜Ô∑°ÆÛ∑ÚD´\ùåŸY˛ÃyÓ•îujR)›™Ò∞∂‚≠˙’%îÖÎN R—ÏŒ¢≤Ghª=Œ'o‡.XMAÍ™&≤7¿„E.(s«∏ªEÅ?YS—Ë◊_•á∆¯ns¥π˜˛∞cz��∏7ƒ/«@g‡ˆF4‹É6∞…>�@À �¿êÉ“¶ï������fiS€ìó�8�∞ˇ=∂jm7õ«ú«l%¥rJ:Ò‚!û¡zcÏ_Kzqf$q*©K0‰Ù1iÙ≈ˆÊ¸6Á0≤1r“)©{∏Ñ∫/€Úz<&ߪóh;Œ·…á¨7∫c8≠#ªVI1˝¢’Ωp㵪Ÿ,<|¨ãúaì-KaR”=¨˚ÙHêæÿX’"õL◊Mà∂…CΖöZÉÒµÀeı–ȶáfûÑ≈a◊¢°ŸÑ· ìú ûe¨ÉnÒ^Sˇ∑k˙Õ,=ßi÷ÿ“|ˇ.ßz¢VU≠úÄ`y'€ç›Äoø-ˆC̘—˝Äµ�Ï?��tø‘ô∏_����∞#üILÒQ÷œ"Ìi˙]‹ÓŸ™Í¥(^ȇ5*I;kxfl++n/Oqflo?Ω◊öKrW2¨LÌ£≈®Rc≈Í{<™Æ€Ø+{{∆∆ûo˝ßȉD·ú\ÉaÜê>˚x∞Îfl»≥X´3°h=ä«tUߢÕfl”«‚¸3Öq-•u7xuçYºÔé©Sª{ôçSÄ4˜ Ø˘7Z´ö�¬≈‡˜Öák‘Ωâ˜d.pÅ»»â]�\•�$Ü¿§pB÷hkÁ◊ Î`ÀPçÉÊæ®�‹3ćõ7Ä��ñº≈;fiS[Jî��–3œsò‰ÑIçgd=ÿ5π>†9n÷Œ<ôÓ9I:4€g4ÿøø±∞)yıúnµv˙zr6∫7”u¬áÆìÊ‘ß°±æU©i÷.ܪÂõ—∏t∏E´;≤Ä⁄Ì£ÚC˝ÜWg √πÈnÇdˆõ›…π•ñÓµñ∫”äfiòè 5&ÕtÒ∞vö”V#ÁñÂDrWS◊ÜÃ!9íᣰ4&¿5è-GÜA∞fl7‘}ˆ!√0,V∑Ö[alnc…ñL“-77�t≥î�ñ‹i&IÒˇˇ¨V∆&wXÎkÅ3}¯¢ˆWˇ£����Äi∫mX˙åø¿~Ql`„gŸÅ«ëñûHhoCÓ’≠sT√68 %“˛ºΩxø˝5hÒÁ.5˝sºÛ&‘ѕሯC[ŒÀµfi>®Œ˝vTî∞˝?Õ®kÌÿ•å?Ÿ*ã)-flovº‰Èy™ûáŒ55ÈBÖï°º?~rˇΩ?√´∫¨ng5á+˜EÆvl/}¨¸}ªflsÕ+6^ñ�Ämñ�8>æ��∂fl•)d���`¢|È”ú≤†ı∑ˇã˙���èc4P 9v;ø.ˆOLN\�˸U��fiS[Kî��»ƒ¿ò\áÑqY'˝≈õë&5F≥9Ψlˆè¨ÏÍ∫ Óõ%õ ‹ΩD|ÙëPÎÏ—√êÙO°i˜"fl )>áÑÓ7SXö‰X#›ãã©ÔöéiË∆FñÏ9Z⁄Ô·ÓnÜú0÷nññZ¿4=[d…bµ22òå˚%2=ú!KHäʇ#0á•˝È|#≥‡êœ¢q÷µ>æ“Ω§õq§o¿b‰©åLåL¬KiñnÉÓÓÓìÓIZ∑¡Ñ'óÄ⁄0jKw7‹3 ∞L:∞¥Å•%ÌfièùëNYrÚΩ∏‘�?Ä3‘~ó]Z8������Áò~}lö‚∫´fiΩóâößùrÖ~∑ éıp5jO’¬`MÿÛfiV ªT·r°ã6(Ú÷…(:ıúÒv«±w#⁄|∏rù~}~ Ø°ËûÏ-Ë•∂≥óÉeW ≠Œ<<∆ë„w‹€fiB'¶©_’ÚhüWµ⁄q/pÿ.∫€%Hµsv}*ØÍåhpÒ8ÿ†q�`¿„.Ÿfl,¿ˆçvÓ’ü˜ ˆ1`£µF≤‡„Á1Ö«¡fÊ��ºµ�∂j 6 @����OggS��@ã�����ÏZ�_���ÀD∆ˇ◊ˇ’ˇ‹ˇŸˇŸˇ›ˇflˇ“ˇ‘æSõK˘ÄÄfiz•aãl⁄¬ãihOòf{kr=€$MFNw^#¥ìì·õ·√»H8î◊BÀbù»d3Hµ=€,M£[a&c”X∂H‹≤Dö3Á∞µflb ¥®?9m∞úéGtm`Ñœ2b9∞ˆÄ%Ù⁄≤~hu´YZj&O”ΩiñF∞–fi%ƒp≥ÍfiÑ∞ ù˚Lk∏k $ȵ_\Z”…{ó GËŸ∞‘Çt/ñê5˝∂Ω≈dÍEM¬«ÁFóXȪX“I&/∞{쀛›≤ƒ…K¿$ı1ı≠û˘‚L/‘ôèK�†k�dÍÈ“ä∞fl˘›����Ähè•ë˝0ÕØè{˚JXaflçycÊZ≠Pòo5kF9†wW_,l—Ÿ˜kV„Ωªï,∑ùµÔ¨dM?ÃdHkQ+±mhf1+j–~má‚Œ¡u Ä0j{˚ˆ€UÍW‡Æ∆ùõ=ÛWÚQ<ç®Tñ^|>|Ó#8ı˘«≤g,˝…πÀÙ& †kT°W¸/ˇj%{ÉèD∆ıcò«î¢' €L˘Ú=0ö‹E}Ld +KçúàÍ¡Nb‹¢ o +°�˚��`¡h√�∞a/?���fiS[k¸É�†^,ÔÑÍ f†´= Ì +jµïıDñ∆ö °{µÏÙãèÜπ2 ≈ñˆß∆ò£é4◊©æûÁ÷$“À∆ “ǵáÑë~R0∆≥Æ |§€r¿jÂ∞ñ£U›Éµ±V=∂Rˇp~X3¨ +{(ƒ¢Ñ”tà ØnRiHر6¥2óø 'q≥h°]„frH'˜0®©C”tèØIqr$jó˙˘qçs`r“vø,)°•Vwà‡ÃàNó∆ljsÄën`R.�FF&Îfiô€U›∞ÑM È[WC˝Òy�ÿÍk¯˛u����≤2z{McÈVÊtnœS˘¶'pcfiw¨’fiã^|ˆtèÏ,±[ÉÈ-œ∆?ôıáR{œµ‡Q:[üyF˜E z¯·˜wwï„⁄+⁄~‚?ùÚ¡£∞uUg§∞—Ι~π¬¯a€h˜„´K.Òò∆ñèÎÚ$∫|∑˛dy∆≥Îù„ ÂsYm6‹Î~ΩF>™¶kú.˘˘nfiRÀW +xâ#öì¨3XNZ(ØÇÏ˘)Lj�7ã +–‰Ô‡Xë¬*g�ƒ¯\í∫@Ì‹�¿Ÿ:��pnP������Xr>s� ˘Ω}Ïü��æSõK˙ÅÉp�Í9ñÏvsrºŸjdˇH3˘4<Ÿ%í∞’£{pÆ’a∂LÒ\Bêlçto_îÑ„·ÿ∏-¥4=\u?Ô?ìáK∆jg¸Ne”öéãúé˜r¸{Ì•�√p<s<ô€'≠,M=~ˇÆÆfi‹≠ˇX?÷˙Y{—2FsÑlYÌ1˚f—B”ˆ={k∞_í’2åVGöÅ%Tà,uoŒÏbì>ªÄ–$åÄeÚ0ñ`◊e£ì#‹ßˇzıt:ì:®{^,126ïF6�va‡√rZ?ˇÔ‰{89}QsÒ'&���»ê¿MMvÏ◊tl»4ÎØfi‘ó4ïfi@’ڢ®˘úÚÿ˛º‰é]I|sØáßT*LÛ´yÈèÉfl˝{F/˛ÛÌπ”—#m¢«;ÒËÕr0•'Å_[y⁄ΗØ,ûM4óõù;√«È äåa…–Zfl˚_ΩŒæ~>ûVzøm¨˝y,¿è’–`3jΩ‘⁄∂jw%«5Ø<¥e üwÂâÃÄ›QØ9°ı®%XΩb(\‡ÒwË 1˜Í¨ïE∂÷àâˇæ©Y©^â.√P√i#��¿�qÖ�àK√„ +��t˛\»ÎDE¯W�����æS[R¸Å´@Zp�Ä…ãt2¡f€¶Ú‡]õ±ƒ'«cªF‚ôIäs0C¬ÆMÆ‚“»‰Ê–Õ˛√» Ëñ≥d!Ö≈™ ·‡hïÌ6”…Næ˛,Ø∑ñ¿¬aÈÈô¥¨>%x¢ñ%˚ˆ≥ö0Ço ¶ŸúI2ŸÑYRã•”∫5|fl\02r«¶¶K´ï]K»õÕ»plÍ›µ˚„°5∞ƒ›û6¥µÚ¨·âMB¯˝éÎœƒôÄU›¿ÍK#,öï ›Ω$›∑1,Fìi‡∆$åL≤ƒÿ@∫˚&+€`��ªvXÇ˝¡©û¨Âà +l�¯›Ïúp!&����Ö]œæ€ß>¯§˙´uø¿[«-üÏ≈WlØπÊık√~äΩæ9›ıf•Áo¶àùœÖÒ›¬3`ZÒœ›î𧱓–´X“&nfi/äu˝òÁL�E‚©◊õ» ≤µ&ì\Ì,Ñ≈‘œ€‘˛Mw‡˛Œc}ˆvqÊC NÔ=WO F*GM˝Áà°˚A (*e≥`‘Ò∫ØÁÆ∏`” `Œˇ{;∏¬Z≤Ì!&qÄw*à‚… √«�ĺtxÎ^A?è±��Ò¸“¿Ä���†≤“�@xV�����æS[ìˇÉk�p��}N÷Lù814ñ&ó¢°µÓ≥qfid∑Ì…¯hx:π¥lÌûÜÓw∫√œíïˆ˚4å4…©üªœfJ_XâÔ~ûddd0“m`≈Ü◊⁄FX∫_:_l—Ω¢˚≈‘F∆ü–v$òDª'óhu/ç<µ±¶OXJw-ç,ó·eÀh3bªZ3¬≤ˇ„înÀ�BK�¨Kñf‹,iÎÅìd¶ÛZ∞2µ¨/‡ÃHÖ≥E6Kih]ú•lñÓ êarddídÎ"ƒ≠≈KsrÜè◊’™gZø‘®Ï”«IòÙµ�¿dµ˙?Sµ�‰ˇë3 +�¿Æ‚Ã9����Ä�„ áœ˚™OÙ:º∞6/›…ÂÑΩßcj3gÍß*uÉ˙KSI˜] n2≠ΩVÔ�æ·ıtW”_MZYpÓÉÁ’Y|mG߬ùµ/pµ“˝ÂxÎfi©π¨ãèâ3«âø �®¸Ê˙{À€ÿù ±∫ZD≈†ÈËÙ1X∆C籌Ág?I)u©~ÖD“[¥4!êÍsú»E –2O%ÆflM\��Œ˜°€/˛�êÕÊqŒƒ≤)N嫘ò��`CUè∏b��� [a…�æS[∆¯�@Ωp(&^å<∑ΩÎb)ıhpÓdÁ}mVMl?M≠å£{q‘≤\‘˝$VYúˇLkaˇôyd:»Á¿°µŸ7q1>KÉ∏flyù'œlJmö≠IÎôr”⁄ë˝2ü≥09iiŸ’≤\ül“÷I∞L6'|˜¢Í—aÑë©ï÷†Ωc¸√„H≥eâ-i6„#ìxx:[Í‘™~ÓÁõÀÍUá~—Ãñ&8$≠√ ®˝§ª≠”Óá· O•µô‹YóXÇ%ÔΩË^4ì#G4·ë•……Õ$L^.1…§SKKˇ3◊≥⁄^fi5fl)ñ‡;PøT©KQ•Z�ÍL`wOs����MmêYWm≤p∏y÷bKı/„˚6^°â±Û∑Ÿªˇ`Ø£Kô≈Ωçì¥:{«ÿ–WnüeK˜]ÎÈ≠ıç„ „ù≠Tõ¯ÓåˇO´Ø¶¸n˝^`œé÷XÓ:◊„Û˙˜˝Tp˘P}6Œ5tµ¬b˜õÂô˚yëè›◊œ-Ô\W»“«k7Îÿ¬EqÕoªk¯){fi +ìØŸ∫Ó{~m�„£ñ∆6íufi¿÷Àyqüö3ÿ∑eÂo.RòéÛnHr.���¿Õh–XìZé��@ÉÕaB#ûS[í{C��†ˆ;K@á%54èÿ7¸Ói®flx”üô‹>mØfò71od»Æ«m´Öi˜≥÷†{˜‰MÓóŒtidj;ÌæÏfiL.Fr˜“[»≥]/Bìãë…√»Ùã·çT≈𠔥ÈÆ√àÖ‹=˘–9§Ø͘”Ȫ≠±r⁄9\XBm«À›ªNêfl™|4@íóÚ6êõ∏8òõÀWEÛ®ëŒk,Ø[„&x2X#X_•9ÜÃs©ïÍaÁ}\Ì"íé∫ˇ÷ÓÁÜ0…“ +t∑,�nûNm¥22€&ÛÜ…e8]Ÿ^˚ZGUˇì3K˘SW�jøÔÇ˝æñò���–ro%PSKÒ™/◊ѱDt™∫8z’Røm˝vR;‚ß7∑ØhúE©…ÎNZxXÁTy墓π0(Ù-Óg“-fië'˚Ì*#8;8„∂¡l®i… ]¯)9“ûÈ3©c◊„◊¶ò≥“cq’Ÿ/\vã߬«·ú∑'¨�<Vë˝fiä^»˝[A»?¥è™ÿ®è¨S˜˙Úë˝ên«’Ì4ØأĄçh;%5∑û��ÍÆh,∑ân�,\ùÆ› @´û3Ê.d=¿�å√ ‰®,I& ���íÅŒIE·£���hÄoî˘ ������fiS[{¸É��ΩE' Ë=Êû„Ab‰d^ˇ@ùëº≤hflüÕ`rq¶{q8åX¡f12b•æh,#áKiorsƒds#ZY4É’∫ßu†πò‰ÄååÂ≈Ò»“`¯÷fi€t[ÇIV;,“#–>ljìñ∞–Mh®kCtßòZGl-˙ñúp∞Ä∑¬Ô[∫√∞î◊N)Óé>É4–Ω±ù˙&2≤N&¥ƒÅ¡$›0uÔó·fâ%Y≥;L˜sPu™T˛ŒπW∫±96 �#z_π¯œ\˚�N/è0…Z�ÄW|î3∫_ÿ+k°˛p`ø¿…ˇBL���Ùo≠ˇ«¬”›ƒ+{‚Ù‰Õ=~*B∆õ´û‘~]eÃ}â ÿM¡[ø¸è|Ì π˜A1Âàˇ∫,XÂ≠òZØfi˘±ˆù ∆qæê‹Ÿd,Ò´ ‹U⁄’}@‚Ô±”©ˆ>Ùp:∞.È»uÜFΩÎI„èó¢ŒEh¿ûfiì[÷KSeª¬£&Ÿ·sÙÒ˘îx�cú}gI†ÎGÜfl⁄wg3��&áÍâêË ©T∫X¢5�∂pSˇ>��ÄÀ,æ”6@Äm�����†≤≤Å……e˝¡������fiS[JîÅ¿@ücrêú‡õÓ“c=Yµe5ìÎúY:ù∑B5˝{(ÒÃq÷…Æ›¥Eà›K”úCÁY=.∑ÿ±ö3yW%1yá≠◊+9|ć4ª⁄FÎÙS∫ñè≥u8%0˚©∞ “yÔÉÔ5nnÉÄÿƒ∏4B«<ã§fi´PáÙêM¿iV 8öÓ +ˆ[iH£rŒÛO?w:¶æ ‚¢5πhkã÷k˚§6Õ\Ññòô€]6úç|w¬ü}ƒ6Ë∫a €j–nlXÍN¶∆©˛•R√˜‹3˝;Àª +ˆ≥8„��Äfl\[˘���hÏñ˝Œo∞1€—y¬B7«e„”h≈7é˝∑£fi≈cãÿÇ› ¶57·HıÒU;£±5˛Wgı¶V*.o´fµ⁄P}™©∫„˝ ?äµ√ ⁄ì°⁄ £Î˘ü5›@U'ı Ø∆Z ˛Dfi£·™BÁå‘–ûªÕÔIX‡ƒ”IÏflq‚ßçÅt$‚ˆcç[ƈÿÛ˙˛hœπtû¥N¿¸MD΂“lÖ⁄8–4æ ƒ#–EúÃ@ «ÕhN�¿{"÷—*� Ñ‚���@åSÁzLNw;øwÿk][m�����ÿ¸åu>OggS��@Ø�����ÏZ�_���“˚cùˇœˇ⁄ˇfiˇŒˇ„ˇ√ˇ‡ˇÊˇ›fiSõkî(H�‡��Á÷ +∑ë¯∞XÌxº≠°£œë#Ÿÿ∑π<]öÓ~v∫π⁄‘$K¯∆:Ä…≥àaÒ§€≠®áfëècÃ÷!«È˙ÔÌw˙b¨õº4sh≠%Q∂r‹ìñúoDK§K‹h¸?Ê‘◊o”œóèŒÙtÕ]4„ZŸóLÊ Õ⃯94Öÿ±Xc•7ã’3g¸l*;L”VñH«C≥ÅÈÆëº+ó¶ìãë˚∑q1ùÑ•)b;Ÿ<󲩱€Óã[ÅÒ≠UNj˛¯Ω˙u÷úA˜uˆPg8„�~≥ÿsŒ)����lfã}ãs:ºŒÁKÅ=±˚(Vz=fl˝W¿i’ˆ¨±I≠ß@;ks≤F4ˆ◊Ê|ÓZ‡¡÷«mœ©ÖÓ @ø∂Éz” Æ‹=oƒ∫„§A|±°O©flßG_8ÑoÌˇÀì}rü’¯√Í√è˛{ˇÄÿ1JÛŸπv±˚oV≠®•uaÕÔMµ|V∆π%Êë?Ì”qÊcˆ≥GÔ~,b´tàã +◊hæpö7„jÇ �‡ Ñ<Œc¶¬òÍÈ.� +$flÍÔÙ+3/∏Uc¿°Ò∆l�ÄÛc{G�fiSõKí$pê�͉fiØhb4ºyòº∞’`)4í^æKsÊ£™j ∑õârf¿ÊÌÈ܈õ¡¶∑JãÙ‡ö~ºª˝~çëë‡k7ì˙E0ôÆùW˚aıœéÂlçè˜ìXC§óÔ©˙=„◊œ-ç,!¶ õ∫{.vç.Ëfi@fCÄeÚêZa‰’}B∑’∫ÙÊ, ∫eâX±≠3,uÉZd⁄›Ωd›¿‡Å,aÀ$092≤œ±Ù)Ωtìÿ¶*?w˘üiÌfia≤&'óG˜/)jfl”ø>˙¯Zÿøéw≥rˆå¬~�‡ïúQˆ≥�÷R˚���� غµ6•>Jõpè0Ưß4jñ{Ÿù^∆¡[Nµz’2Wl˘¥º±|p¸ıÕØ7íª¶≠¯¶Çˆ˛KÔ1î]ûÜÎO~ÛÈÁø¸>4~àW7¢Z≠-‰ÜüáKáJµ[M?2~V7W¯}≈?ªá≥™}}h÷Ë+Ac‡$o�{Gö<º\séL◊ŒÀt2[!}éj‚π—˙^]…Ëa√ ß@Q#L<∞äxûz]Fés����∏Ü·òǧ§î±`ˇΩyçÛïglØÜ� –∏b€Bo�¿Å5ÿfiS[´ó�8�Ë≠|ØìcõDkåı^âÈ÷≤ïPÏûÆ)ûö4·ì–¡r.ñµ€âz‘é©~Qùi∫yªM-Àô<…kGóч†ñÓ¡f“bë„õ†˚Ì0?L∑“õO√+#IGìÈÜ°ÖÁáÓZtÍéã÷ÄÙr +õ…õ·µ¨ù…TÛnss¬K≠IÚ˙. ∞b]<ad-ñ:ö≠”¯Âºá˘¿»⁄Hl6O!o~{~¯ÿ«*}ï%› #L¬Ävf~]÷N0m∞ÖXÇë´n∏ÊJ›Ô’™‘“í€vddlegLeeXÈ>ÒW2∂u?��∫ˇtó™TOæ����Ñ›µgè√Wº2*tfl~⁄QzæB-ú‹÷º™è-˚«.î|≥L%Éá6Rá.Ó‡:fl2•.flS˚ÁÉÄ€¢ˇõ"EÔdæpˆkˇ‹W˚∑.~Ë}´Y_{¨πvrÉOVÁ©flZÈ^ô˝v¨'?¯H◊ä°©ù&åZá¢◊cÍËP{Ât5fiÃësÚî‚ùÑ@¯)§£5 .&¿%+gƒ51≈∂>eqA*é#��hõ3�˛'k�»/}{ñJWΩ'.���¡|t*˝&N\√�~L���fiS[Sî��Ùπ¸œ`ÇÔò—0◊uæZôwœ¡≤+É≥5RòM”ˆƒbÓ∑ÊûjÈ÷‘Ê˛ÿo19‘Ò‰–ÿá˙Âà•ˆ√$Kã√ÒíZÜL„óñ˝÷…≈a8flw∑¸˙=÷˛nÀbâ3#ÆCÇ∂„Ñ≥>ålxkcÖÓ]°•Ó·““�`Rn¡≥ëëS©I›0…`≤{√‰$-ñ|ÜizdC®”¨˙Ìr&æ√6ã›�∂0y$‹XÍùº‡gXæMñ�v∑å,±@˚'¯Vœ‰gÁS9�˚wÿŸÚQ◊¬.X+ªvïÓáÙ§BÂv—û›����Ä@k§q òür˚˛‡+›2ûéoì÷_eßΩv”˛d˛á˙nÓ¸˘R†EÎJœ2'+º;êgnYı0vÌfà√”≈[e5ë ˙îzL˚û8PÁõç`�±÷Ì≥Ω÷ˇß9}÷܇ éÕ”òÚ7Rˇƒûƒ‹,ΩÃp?ÇhΩU7 ˇ∆˚o∂ç¶flˇ–¸>ë!´4Å]>Åw´‡öõê∞Jûå[Ír�ú∆� „�ê≈œvKŒ=4fiòbPYJ¨Ñ5Bˆ„Bh∂!ø���fi3[™óf0:�‡YóÔë0hé◊'∑j}3Ï∑MíÂèét‡˚±Cø◊\´‹›b≥4ù¥Ïg°kó:-n©ÌÔäUök”ÃÛ’¡:2Ÿ≤»¯∂ÿ,M˚ªôZ&[#,›b∂>kµ©•˝≤Àro k•[ñ÷`2û—º÷f3π+<2]x7°3+±ˆwü]SK| +l∫G¶t√$ÈÓ?T∫{»⁄3†’nô<”Í>øÅ¡d˙bi$Ä–§wsXö<√”…’ßáu˚°•Ó¯ˆÓ∑/uè<Œ$›ìÿv˚E¡»$¿‹è|tÄA'Tœ∏|Oı/«wïÓˇΩÓÊ|{4ˇÑ=O����@‡MÆüMfi€€úpfi3\„˙Û”ÒœÍ(≥∂WGûKoÁo÷¥È`÷ï17˙ _ß∞ˇÊi%?llÁmŒ'|Æ5(ç1∆R2≥Â}߀Vk±Î^,õIù)§”ó≠˝ˇxø˛5Xu⁄¨O£x*Ó’≠h}}∏ŵÔ} 6≈*?Ê„›ŒÈ†ÉúlX<ß∫·≥ÏZ·°∑Ô*W€÷8–få÷ÅÕÔÜ¿Äï-�®Õ@��∑¡8ç§∆ÅH3âq …π`Cc‡^G6AÏ¥>4%���fiSõìóÍ�¿�∏UÕ]M´/=∂vœâKï`F∫S◊π9¿˛Ω¡˛Å±eVÛù{àªéCK∂ª≠Ø7K™u–fl7M¯ötRå¨çaL.Z94I‚ímz◊P-ål÷6◊'[É–2uz^wÀf∂PÕ†Efi4É`i`Èék`•°c‡í“…èPôı°˘√ÕˇÉPˆµ»√x…$±’µƒH\h≥9lÄL+yK⁄!flûåöÿɵìñC∑�®T?˛u∫‘6‹�ñÏNÇoU›◊�©èk˚C�Ä3�����”´pÎߡ,|;vKv6>Œ‹'öÇy6ù<͸Ô7)®jx◊˝?U#¥ËÊ„∆∑ËBaGÕXCs‡\ÚÕ◊ŒôTuYx;◊gy>6 =9βúÒŒ-e™Îû“+lÍÇ‚∆õ¥ù–?dOmnÏ£Q∏|{Â\wÈ’\n[∆Cä≤7ê…b£~û r¸[Ö´èÊ`+ˆ˚ä&�ç)ô≥tÅ��ö,4]Ëïpñõ��˚j@��ß-x�√Hê���@÷Æ‹OD�a„��fiS;™ó��ÍEflù”÷N[ÎÈâ&]wLkì∂Mxsÿ>Ìã=táö–ôA˘›€õ5.èm5ΩƒÍlÇÔŒ„v]N6˜±S≤Õ"Ÿ“vosq¸œ¡ª˜ú¥÷v®˚¥N.ˆW7∫«/MûôÓOK€aëGÉ–Á|~a5+jÈM7Ì,M”#˝‰·êÎ~&ÉÇ„√ÕπÓZÉ≈E∏h ,òÙƒ öÅëC`±Ç5!ê€&óFF†’fIC…gp≤h˘€Kã�j##›##ïæ��∫Iœƒ«ŒØUÅn€n`i{¨˚ˆSNf ñ`ˇ~ñXb fly£¿Z8�pÿèúŸO-Ø-�jø„k����m˛Õ¨ö¢6äU°ƒ,‚›øªHüBÆ'‹VW{Y˚…S8r˝k+6lx<~ÆX9QéÜö° 1ZÁ=ôáÒ€#pw∂√∂⁄0≠∑°;i‰ÔÓÔÀ∂flù|û•ñÀû\õ”Ôg≤› û5x?R¨ i>\C:º–Gø£¯ìqb0˙€∂âUP¿¸‚æÔ∂m��˜≥÷Î∫»rIP«��Ó +˛∆Bÿ§öàjaÌ€ÿÁ˚颷ˇfl@=Ĭ?��ÿ≥≈ÜVW-̨é��Ìlÿ–�fiS[kî��ÍπïëßM»í6èÁAÎπ+£ÔÊı‘Éup&O«Ú<˛RÓé'›÷ì√‘öc∏{±È -6gidøe◊`µ∏yq<ˇº>“flãÂsöL\"∆€o9ã••Ñ•`øÖ’O&W'ΩÄEãM:6ÕÎdkpÑ”ª∞Œõ—˚¥Ña` ut•µ÷B`O®ÕìÃ"á”#ı¿&”–]÷a+º√¶ª#”$öë)·…”¶5Ë?ıÓ‰aX[ììì«∫tÿYÛÎì•˝›ùÑIXZæ6°ÙÇM•{©{˘~Rñò9}dy˚�0…“¨lèé0∆2Ë⁄µØä3∫÷ê]q-æ´�Œ8‘ôõ���ÄÊ–Åflw˛Cm/*◊^∞ïfi≤zÄRvÔbÁ)õ≤•ö,“!üT{2 |?nir¸øêÕ1(P„M’ûÙò <5∆˝Ú¥Ìª>?Í>d4C.lÁÜÕy¸õ%Oj™©pƒoq9˝ÎG†∫flËw¨è´n6(äe9COÔ¯>Ê©é‚—◊◊ù≈ÙdËáÉ9$KÜ£[Ì„ +�`¬j¿u~ˇı¡8\e2oÕç�˚¿Ò|Ô99Ãˇ0fi∞ ü4ø„›�¿Û—Ÿß¿éM–∆næS[íˇA +@jp�ÄìmˆMœqN”º÷<ÆÔoíu=Èpº67Bf≠È∏ta⁄f˝3?#øœ¥Ì 3˛fa;≤2)ñҧ̋àÕû0KKpÊ¿“∞π>=ìÒ` [∞Hxí¡ÓfaÖ…pÀ“”ã•˘p6K˚ BÈ»b⁄ûà 8å§ûq6ò-É~1ùêX‰`?4◊ñ$/Y…›qÙ„ê∏éÅöØX41ú7!Xµi:µÜyW7È5é9ùnæÎËñ‰¶ãÒ◊‘ãa8U?˘™‘F&'≈VGm&_u3≤k ËÆe¿fr˛u◊®^˛R?W≈Âô√ÍŸ~ázŒ��� ]|∑≠æÖ⁄î]ÍO◊'É3Ø;4Ø©*[˙Âáw±9˚Ø˘Ãm-&N‰‹œÛd9nÛ@Sèµ.Ápfi¥ÏCÇö~~w8f⁄%}Ê`ßµZ∑›ü¥Pˆ4ï øòøªw¥~€>,÷oMEu8˙d∫C‡wÀ.∏’ƒ¨vêΩ™Ã¶˘1ƒ∂ü9j±ï˝lÙ°¯'≥m∏"-A‡ïkŒIá⁄Ã√q⇂ +pÅ˝€ïNaƪIm–XflDËŸ]ÄcS!¡ÇÉ�W˙]¡Vq���†”v0·çÿFhk#OggS��@”�����ÏZ�_ ���(flnáˇŸˇ‹ˇ⁄ˇ·ˇ‚ˇÂˇ…ˇ‰ˇÿfiS[õó�8�˙~Ÿ>ëtcÌ>æû4iÕ∫~¥Ùf´]bÚÈ‹ŸbYÌ0ÈõSñ¶È≈`rÚÓÕëÕ‰©Ìar Nä•Õ·r≤eˇfl¿f0πæø˚rY∫íœwG¬ú3∑∞I!r»¥Œ~≈ë≠À’Ÿ"„:üëկŒ2ƪ¨o∑‹∫π$2X{≠,óS,iÚhÛö~s»Qı¸≥g™Rì∂3˘∞z›Ì”Å9∂"#‰`ˇÅ√Rû$›2∆3ackŇ^ñBgn,6Ë$Å{�òv√pœ˝K0µ#l&¡/j©F�Œ¥ˆWwMRflˆØ¿.≈8����˜(€ùÉJ°∑Æ⁄8\ÕÍ]-S˜Ôfl«`˚c≤ôÎ∆G}>9·j*}(Uükπ≤¯Çœ#O'ˇÁ¨§{!UãIcE-à~iß,øJ!À√Â1ÃG4ˇúäµÿMX„瑧{·!M„iM‹j¢ü)ã˝—˛éüŒûë˙uˇìÁ˙∫jL¨Øü?mì⁄≥ı¥UÕ¡Kg._Ï∆&ƒÃ˜®WπíÀòÃ∂ö†üeÎiÑ%˝6@Ûdlc£C'xŒÏh¢áÌ66 É‹MÅkË√5ãH¥ çF,'��:=9K �fiS[Rí–qP�Ä>';°˝Õ®§.*‘y/€†}ÂLû∆9swÚ,ñ◊Ÿ\ã#£ù[Lè∫˚k'[Aî]#◊≠Ï9ìyrÑÑVµvßúfl≤Ïü!D®ÈG”<ßéò.%ét”’ñxZ∑±÷∆èõ:EˆÆU÷Õ4Z5HÃE8W*+N≠IØ©˙*±~tÖ�v≈dÆ=ssáµ}ai K⁄∫=π®-úq&͵39u�ƒ6A¢6ìÈ∂SF¶›õëI�ˆ¿$t”˝ìK›g>U´flü`…Gÿ+ÄÔ∂«‡ìqÌ∞ü:s`ø�˚O¡◊÷.�flïüù8u∆)��@`fl›ˆÒÍ∞≤uqπ“≠È∏¸„I+$˚Kk1J[È{]flWã«ÙÈp^Ÿ[1˜ÖîπzégœV€g1 ^Ì$€◊ßÊFï´s(]>´èÖSÂIÁ™”ù�ö˝è#ıP0‚ÿ◊©™∏«∑£F« Ë5S{)V¬Í.qÛv⌛Ëò“Bï¶fõi�\˝Íòf~;yLSöòg¿Älk jÁ{≈πP3ÄÜ0Ñ+∑çˆèQjÑÜfƒÊØ\|±¶7�≈!∏ÊvüÖ¿Üelc˚;�fiS€G/)a��Äûl'≠Õtkíx3‹<Jp–£0gF∫d—4u 4µ,?¥HÒ:º›K#ì6K˚Ov˜ÒˇGHèº≈ÈΩÑ-›t€¥1ÚIZ?Æü•Òv}¬ +˚ªW◊¡f1¬≈„]∞åѨy∏‡,ûe˚«c<NGåX°Ó”›≈–∫∂?Y:V8C+Ω+Ãf›∫5â&A®a�A∞®âÊi ¨‚a`e$X<:ñëë∏¥·Y∆WFNY„Z⁄j7ìì0¬†6#ˆGªóñÄcÀ,¡H›?,ȧM›c3 +K∞ÏH}’OÁ,>∞]˚˜ 6¿Ä]ÄΩ~ø¸’���–dMı∑y6„¯∫öÂ(¯›_DÂ’]Y√ı˘ı1ÖTŒ…Ω?\·Äfiz˚“/t^Ùç9ºj¸l^û…|U•cå∂<ÄöÔÎ∞S∏ÉXN̪xÒlDr§ó≥!Öª¶≈%“°ŸØqÖı,‰Æ=î÷ÁÍV +[Pï—QXËB)π˙x„},R∫{êåCÒ‰î¬Ñ‰Äé^K.O5UQ®Å˚j>S-ó'∂°1œÅØâr‡∫ ѧ“h¬áè@¯õmû ∞ga…46Ü–ŸŸ¡Í»â€˘©�fiS[Zë–bh��˘Æ9∑y$t4˜©ßfiÙÅ›ÍÂIxs8Êî• ¶Ó¶≠Òö\á!∂'kßÌñ…fú5L:ªˆÊtŒk?jm,ÈaO»∫ˇ"à€™ã4-ÎíKpXÌ{›ÕÁógÉoj@˜ªvÊŸ‚∆Z,Àõ`?#DZ”cÈÆ•¡¥˚åØùNö∂�≤4ù‰I7∂´[¶«íswö%[ã §m|¢{$ù¨J∏5‡0ujâßIy·t∞§ì›K˜;›p&óÏ˙ˆ¿‰‰Kc5…‰˛%ñóƒÓVËe“y%#ˉ(ˇoÂg◊‰Ï≤`?rFÅ˙siè¬ô≥7aÙ¨���ÍùY”V^Â∏é›√;ΩVΈã>§≈Ѫ_”<ô¬YíÇ√t ˙∫|fioó'≤ÁÔÊlunÊ8¡Dw±^ZQ≈ÉøÏÕ¡Rœÿ iU¸Bζ’k•èÚ1Æ â «{Täø™(]LÍ—äTœyÛõû.Ω2®] xÀ) ∫벬S\˝6·¨˘bïâ˙ñ≠ÀùS∞ÔuÂs`�¿�%¢üpjoñ¨>¯�{ÎÅn Y±˛�«úπ˜ˆÇª8€ �§»nîlN<."€Ô�b∆`ÁÚÆ +fl�fiS€ãó�8�ráûlwèµõÑ@OGv 5ÿ +i£Ÿ:M^œ∞lnYÇÖ•;N»a0,uÔå09y∏ıÏ¥∆{mcπü‰~ri“Vü≥=≠Á∂∏-ï……Oáë5éU-›2¬§ıp±dôLBKåL'G“1ú…`¸ŒÉÙjΩu–Ma‰Ä,ö”¡∂Éiì“ +`fifl›ŒÙÿ”œÔ~¨cr—橉Éëŵˇ4HßÉI˨›Tz‰Èaiø,YnÑ6kÛjÄ<<ô<±aÈæ˜ë0�–=≤K‘Ω3B7¿ŒÈÜ…eÄeñ†˚£�gÏ¿~ˆÔ:ë3zF˜;ÄúÓ]+˚wµfl¡Ì)����©”5SáT�ΩñOágvœΩÇ‘S¸Ae∏;1ÆÆıgˇã_.≤fl”HN(Lk6xÈL7ÔìÈù≈ÁÏ#pflN-üƒMçÛ˘oéür˝T‹ºˆÁ(X‚lqÌ??Ωä“f7U˙˛rYd¯QÍúçvñwE<èZJM#ˆÊƒŸV)◊wc©䄫D,Kπ"N∆\¨p�¿§”7¢ß˜:LÛ™ÄÄj˚èêÅ≤‘awÏÍ=‡ˇ˝&Äü|Aä:Xfl��éW,~W†çÒ’��fiS€ìó(q≈‡�–|≤≠''⁄∫ÖÈM◊˚3Ÿ7 —úÆè€ßpfÌ»tk}rƒF&µSm_€i^ÏÌå∆9~oiÇ…Ó!g.Œå4”’ŒXr˜∫gkpf∞ôGiıˆˇÛèé±òfiı©Â·V0qR(‘Xœ›&≠”J¥∆•Cì1‘Kɵ÷˝g61FZ;ì”?ˆ—ÈqÛ⁄√∞5›œ∆‹ú∏î≥πH√°ı’ Áç≈"ªVoA@zpf%w3baìÓñé•VBàπA±i€¶’‰Fñº∫óËæ>Å…nπ‡å– �0È\~T`◊ �¨ïùsÁÑSÄ3?∫�ĵ≤≤ß���� >ت§B‡® ŸVÀƒflõæ£øvØÌ˝{L∑°yG-\#Á3˛&–◊fl}°«‘qÍg'TcÌ\%#EÛȱÕπ>ãy˙ÑpÖfl˙Œ `pØæ±FÍ[N{Œfi≤Øfæ‚&Evıè3∞S≤‘ø^ã˝ÕàÊû˜ ÷“A3iÏ£_h∫(.úÂ8π/>^Â≈Ω\ÄUmUa7¢pDT[È.à~O7ÿÊvª{L∑z„õãá–‹�_3��ê˝∂[eî›Ä�Ø˛O˝V#–Û��&�`¸¬÷ç��fiS[J˙Å�7x”∂Í\;s6È˚Jkwfl€∂Çìm>”dÀŒ√f`ñœ5†›√≠ßÛãVRË<2…ô∞≤kî)√‡07Oé˙<X,,Mû”\;‘Áïß'Î≥õ G£?fleÈH5÷#—»€ÎbÜ„4KLf&Xj O˚ŒôLz'«Îtÿ‹µö˛K&VÇf≥Ÿfrÿ\-e3h—X{JΩ˛?éu©5L2ÀbôÑëç,}ÅÌ“‡û¡‰˝l∞ÖëI&¡Ü”˜RÅ”Õ$�,¡©~≤U�Ä3∞åÿ›Zxµº�N*flã +���� îswC<n€w™x∞ÿ≠ì∞≈ÍnÏSÓˇ{x»”ˇ¿‹APa¥Ûa!€êEL¯A/T4#xFé˙f™›tyéòû�ê:W®hr~iA◊TJU•yÜ»øgG˜ì›{~ü)≠/ÁàÍ&[Ã+0›CÒw∆wÀßcE—íÕÆ°…˘¶Ö^B›Ú´|2P≠èã[kèL÷«î€H)z�0g/`&“G–≠Pñ¿Uø0�ˆ9[ßÆ ��lr˛YTÄ ∞<€@\!üxû“J¨<t��fiS€ãó�)‡��ªÍÔA∫Ÿ5k¬»|‹§ç’Û‘å\^ª…L¶π-å©=9öÈ^ËdsQìÈ›úÓn∫ªß¡˛f}qŒØÏ.aµXbËÿÚê◊sŒt==Î’∫V‰Ó∏a∫X-6}{åXáês˙„1g¨_”© >Xi`ëúw¢Nûé‰=ÀàA≥7`’º\;≈ıÛËá” kúôá·ìúìd"4)Nÿ,Y$∂8¨-¨”ik +å‰◊˜,ôÁIõó ¶<õ'≠∏À˜œ5ì¶1Õ3=∞_�>:ª8ôƒÈ¬9Ït∞ÎôSg–˝¢g`-7´Œ���∫∂ÖJï˘ìXÑ´Àv©„”á@üOÎ∫÷ÇûõÑ"ZgöìªÿÆ^ÓΩì]Çÿ≠ß_<`6ëMV∑ç?ÿâw÷zPïìÌi’fiû Jπ·˝∂d7eømƒÜdéˆuˇò|âÖ¯9Ó‹Ìı·Û¨∞›˝ñߘF˚£∑¥v∫‹dc´`fi∆pÆú”’–Ω4∆∏gc¢íY& +ã,ÖM“®3 U€*-J@¿’6(¿#�\Î?&A@'îéi6�h^�Ä=4gÔóRÖ��‡÷„ †ä,ôojÌöo¨Tˆ åöÇfl∆?3�����fiS[bë��@n≥n-∂%-´∫<rˇh’…:b€ +Ä~¨$∑Ç…3∑ó∞u∞6ƒ⁄√…ñP:÷°›Ú∏¡√ñÒñ°ïçu3‘…∆i N¸4á¶tØ≈§É–4=åVflL”ã?‹kGŸá˝âC+1ØlÈàu’̺2pFo˝L°±5ùµ…√@-Õƒ·ÄI∞Ïã¥và≥8Ü˝Èëìõ…V6Î÷€∑∫ó`–mLj[Òr∂n;µ◊ç �å∞4Ë∂=yn¥˛=ìk™ûiΩ~F�¿w°kÖµkãµæ´¿◊≤kÙ�¿Ë~߈;@ùq`WAÌ'&���Ä(«‘‘ÂîÓDøXKæ«yj øê•ñëÉLVßi∑n?`{yã˙pΩÎı∂≠+„å}qèa?†Í?˘táËW‹$õºYÀ∂˘9EùëzŸsº||πké‡s;ß~9欟düJÓÂü7Ù†º˘3ñõ#tO=ù`�pXÙÆyÚêâÃFÿÓÓõêÚj•˜;Ù[Õæ«ËÉ{¨��¬n·wy–ã{fä¨ 7]õ��ˆ€Ïsæ≤qœv6Ä 0[��ê÷Ô∆∞˝ ÿ¨¥w&������OggS��@˜�����ÏZ�_���bhˇ«ˇ€ˇ‘ˇ‹ˇ‡ˇ‚ˇ◊ˇŒˇ⁄fiSõkí��ÍúÀH8üŸ3.ïú~hy˙fx¥r]∂ÚÒˆV«íñ8`â¥Ê◊ÉÕê)Õ˙g$åéaâd[ö•#èëa| 7c#óßπ4LN2Ù”∆∞H”¥åAq‡}–§?øÊC˝Ø˘ÿ¥òÙÜÑ-s1iÑ>çYŒs9g>∆x∑åPC\‰Ù¥VÈß e<-”–‚@B∑Ö˚”ÈÆÑ·Óø±– '/^YF8�K–-∂'ìfi}2Ÿ åÿ6›Àÿê÷Qˇ∫FÒX]∞+≈ˇ‚†ˆØpn[�����@{◊º„˝jØÜVv˙nMkGe'ùÖä¡GÂ84ëhvÁ’™˜M•flT'ºÁwV~HÌïV=®"ˇÌ}ìGüc÷ +¸˙áŸÂ\Kˆ˛ûüæ˛TJ€◊◊N{∏9[≈È˙éπ—d¨CÃÁb >Ú;˚˘f+â æíse +vÛN cˇÂäïé›<,ƒÁ^∑1Í˛à„˜eÃCºBœ¢∑€/äß@�¿Vç«ÔŒT∏çÅ˯$RjcL√��ttó1ú¶¿˛�ˆ€Ì%��†∞\£ë�º��ç%ͬÅ��fiS[j˙K�8�‘æ4aÄaÖB⶟˛\k{óârMNMóÁn6uw¨m2áh¬Î‚…–j ñ⁄áút‚⁄ºjWø8£¡ß√0Èî˚Âuä…–·~̧•iŒ¶'[vÇp(l§ìW ≠µfi:∑ñÕò5mÂõ≥v=π≠ï¥ÔÜCZñÊçn&!Ωa∞hmé%ƒ0<—“ˆ/ñÊn`≠Ø3∞,Ú‰° §≠á÷E_≤dÂ�·Vx)=i;òfi/YVõ%Z#°{¨CtíI≥Wú∑Ü∂ÅM7røƒ$ì#∞=“˝˝üQ≠|L5=ìøS̺ǗÄ3¿⁄#�kkÁ¿~��{ŸsÇØ-�����‰fÃvÇ€¸"ûdg›•Ö5ÎkjL”y€∏Õk9UªÁÙ?Lìé}ˇ ±¶uÔµS=j˘ÊK˜ì˘ö«Ø,öwfZ«û3>¥SZ]é{º}˘;„?�©[≈b!Ò«£3ä!.ó Ü‹Ë\=öüpóÿ¬€îPƒ`∞öõ�PÁÑ/«ü�cfi£óÕ1Ûsm`�Ëy©üüQó�Ïz›∞'=∆˘â∏x%‹∑RÃeÒ◊qÜcF0q�Ä�B¨l’å'Äss¿ç��º› +c{6fiS[´ˇC�7œ¶6ÕiÙ”Oµûä'7aMõÈÆnπ–�É£éÉwÀ≤ˆ»b≥‡0èL”gÙt[œÏ +ù9L¢ìÒ–jÿc¡∫'höéë-Dz!qÁÕ]¶È– k,XÇ‘NãfiÅ_µ¨œ«óÁûo桵ß~&[4Jœè˘a~¥¶@<3b∆V0∆'ÀªÈàAÿ≈<åü∫ÕLj´fiŸÀ«Œ0ç√ãŒ#∞K›KYÍÎÑıg0ŸΩ{˚¢∏∞Ä•l*flè©˛I/?]Ä˝¯ÆnFœ∞ü:ÛGzUPgú⁄Ô¿ô€ +�����v“&Ç°n¬®=∫˶HMs¨åc«hËyœsg|^›áœ˛Ç∑ãçE9>,:«>n†nª©ÇõÍë6m‘∑/t.{˚�J˘=úتºÔx‰5k¥4•Àq_a’|¶¶+ïÓ®µ 0≥.õ≠úƒ~=k|4ægK´Öi¢‹€≥–Hô◊øZÓ”Z$–∏u£ ~J;,˙캿à1fiyfi⁄ª}ßä´%˙WÖJN„éª√flŸ‰áÅÿ≠qfiÂìj∞áπnßÉ*��◊èxbÂM ‚��‡ÉÌ…»PÎ∑ª7=XyÏaèD����ljo#Ï—�fiS[kî�8�‘s,-Y≠O⁄„¯Ls*ì·‘`£Ô8»±¶vöf‘3ò6I≠Òv»_Ê°€¥ ˲a‚±â¡›˚]∂o_H€˝Ò€5Y€-©÷Ŷ.¨9…íæüé/ú™ün&'…·…∆{K7õ´»±fiàÑ¿Ø˙Efid”∫ ñr®‘`mÑ"ZtŸµiˆÔ'.Ç«ëPC®ïw¨#¡8qÌ`≥÷:•≈ÆãU±Ïör`!=∫¥∫Yä¿-À≠<µôÏñ=ˆ$≈†[ñ¶6ŒÙ&'ªYÓó|l핵*›tcgiÜflkG≈ø˙1~8˜?¿∂�`t?�¿…Z����4kõ©⁄≈C_g´U∞©ãSb‰H∑`Í£Í*ÙÎÒ +ò“Fã£ØéMX⁄Û><Æj◊ÁWG∑£6Kúüé§?Ú£q}CÈ∫° ∞∏+8Á∂˝õ˛πê\¥û=óéM∂/MXpYæ∂( +ˇÙΩ∑U>:◊+énL∆2Ì_(ˆD}vò◊ÉŸ°wQ#@˛é‚xÔçl˝Úó‚ Ï”»ÂYcñ√]œß8ºm[Ô«++Ódêè� 1tX=��\:a a5ÑTÄÍϘUΩ;«C���n™!��l÷8�fiS;¢óË&@X®3gˆ1Hù¨iHRfi¶9âÁzˆ~%K˝L∫{Uä•ì≠–bi‰0“=ù\5≤ʃÉoŒ!ò<ja±§7°Ö’2∞ÀõIkYGÆ“ñAŒ›´µ“È·´Aöõ÷⁄±ÄÕÆpíIxí mo—ØˇÌ—òt<∏ırÈ` è@ìÊy«˝úC´efl™ÈM@‘…tCì.ú?ÆúŒ˚ôE`$ºd-o”RÜá:å,ȉ¢~z¶ìLܯbr…≤º∏–……•√=/ñtÑ`d¿fŸV∑GòÙW·W∞&_Q˚W`-P≠+Túìeaˇôe–µÇØ-ˆ�†OÂå���@§Á›7 ]H[GÊVı?√ø◊ö_cŒfl&l?$ú»á™ vûâÖ÷Úp+˙˨{OB¸)ÙiÌö./Í8#•h+fl€^><®⁄¶B¿^˙\cy}“gòo÷∆WÔØ[ófiö.ÉŒÙdu\§ˇ¡Ÿqàsüõ€i=f «ó‹Ô„„—Ó}9G◊Ä~¬≈Ωr®ÄERû˜ä»n¿:ãV¯ÿw¥~!i÷Vs?%ÿöÚÄÛ^ÄÇ¡∆ˇò^�‚uhùq˛¥`|åòdw��æB�=µ˘æÀ3`ì√Ó¬ë���∞…>fiS€ãó�8�pv◊‘2 F¨˜πµ¯eΩ{“«scó·q{Ωß!k∞∂µtHflö¶1›n∂Æfñü“ùo“9èÌÆù“hœ3Mx1l[öÈ¡≠·P˙ƒ•√Pɶ€fié‡@¿j6áÓE&ÕÄ…Ü3Ká”|Z<i:OCùí©C+K\lÀ¢’fiXèŸ*÷]ó≠µmÌÕ° ˜3åÑŒ<±ÏfåM–N¡t≤Yéπ÷ß3ó⁄Ÿ≤Y‚ÒŸÑ`—a8a¬Eçå,i˜‰µûûŸ�∞ßjµÊÚ≠O≈◊ô˛kÍU5ÆŸY[P˚˝€˚flUúq��»ˆF +���∞}Ä‹ÔpåfiΩé‰,nœ·+”µ/ÜÕÏ-NÆ ñx{˚‚œ∑∂≤ÍqÒ∞íµ(+-{»=ê€O| 5…ÔW®ll¬˜ ŒŸ¸˝Ù°õÆV≠<€[Íé¶Æ2V Î?œâûX˜æÓKfi—*=Ê4gÔ∑wÈ?Ì]ø¯isTÖ8ƒkäu›ØgÎïJ‡w9ssßÂn}œÊ˝◊Éh≈i∂K='&Üflxmˇq�@�\.çßDŒ�Ãπƒò≤�<µJú≥“ˉÍa\„��ˇÍT*~ 4zj·Ê∞°mŸ��� ã^�fiS€ãón¿�–ì$] +ûLÈ:˘y0≤JZ AiqZM+«√»†ü¶õ°e¸∑É∏rÜ/∑'S}sä'èê¯Û—Œ´–u=ÚÀ√ tjiÜ·C8≈˝iÁfi“}B˜áá<L1Om∆Øù7·ÿ¢y;÷†ÈmµfÜ÷Ä4”÷≠Z‚?^{üGwßÎ≈Íñ3ŒX±‰8Õ!lBs˜ôŧᡃ«lam(.√]Éxøzã¥uâã3K+áA0i -ç‘l¨›¶V„@€ŒÊVfÆQs˙W..úTú˘å¿È™òÔÓt�ÏgeøÅ3¿.ˇ°�¯BE ����BáÈ›}æÓ^”œkG∆ç”C˙U˛¥∑fqá⁄k䪫NÈ„‰( ëèª≠gfi?ÂHVfû¶cj;`YÇ +÷ß�FıYÌÿ‡ÈfO9wtÿ∫ñyKåÎÿûô‘≥ ù¡Z>ˇ˝≠@>âòà◊mPfi°XòW«A©û…õJ-•õj£ì/De:“_Ñ�√1°Ewgps≥bòܶ)��ÆÛ80@‚^¸fi∆áÃX˚5ÿ–&∂π��6ü0flûçX·ó� 9Æ@��x:æS[¢ˇC∏‡��‘ ì·—©îΩqÓ≈í•F∂Ü›9ÊOö<0˙ßÕÏÒqˇ≈kÆÂ]ÉÓ≈í—æNÊ–Í6Z´∆öòˇÌƒ√°WVÆûcd◊úégz»π”[C4mnñǪV∞C+0‹‘<81√È»%$ütmv,M√¨mà”$ª1ɢ˙æ≥µÍˇX˜ÛcÔÿœßYÍ80ÿ@ƒö`øÏD õa¿£o√ë§Pz8ŸêÓ^öLè÷.ö ´É-#`ªˆ�Ä_Ñ∆,–Õ¿$+6ål‡ƒ>0R,—ÕXMUΩÓúiÌζ͌®r@˜À����(@ıê+˚.ª÷s¬\Ôr¡ÔóæËôÍ˚\õ»fiq'Û™f∆Òaî™õnflE™0˝æʬøjNflY√rW‹∑©‹ÊZ1Âô–—^¬áäsK€· µÀ~ÂzM/ +-∆®πf˙‡,Îk˜ˇœÓ)Ñ-_,•{ÒÔüè«ı§Ü÷nflÖ&˛xë[4nµz„‚? û}Vˇ^´˛{≈˜<[9m3‰¨Œ ��‘+∏™py19@£ ±Í¸Õ÷5c&∏,AâLT$VÖ%öíù¯>ÀN*:ÿ„ó��æ3õ\˙�£P/X¬x≠:“ä˙L÷C¡v3Ì∂nŸs⁄ŒzÍô €âèô§é¶∂ßÇ•‘ÑÅZ≥ëz⁄,Ê„†›X„tygWªœ`p¿i2£èª⁄⁄XZ„lée=<ÅáMhcMO?flz•z≠Ó¡¥ˆÁñÊÕÜܶµ¥?˝‰Fh—ùºâ3:ØÚΩÊˇ á∫≠©ïnñ≤Õ·Bhhlß≠4#ìÄfiY0]Cai§ciâë˙î<r∫‚2Ú0B™ÓR=Ûüùöd{͉fiªÅ” €À�∂Ÿ¡.¿È|ÌË~ˆ;Ïú9zX[OˇpÿÔpsª˘ø≥¡Z�Ÿ•����%‘4^¥ıÏ‘ƒZA$¥€ÆU +PT˜≥÷¥…JÆFÜ]Ù èø∆j\Î/¸5ºã1ïG;û!fi´ ¨Ô±√OÎ≈ïO`ñËç‡flµ¢Ç&fOfl¶«◊’·˛’˜Æ2íÂLˇ·>±Ø6_bËáΩˇv!ñ®ËÛí(†÷V∑˝'Hw;öÁ0ÿWÖaì≈µú5X˙V† g∞∂∞S›' lÒx\¿\7…˘¸FπAÆÀz∂°¡.}cüõo¶>µÚ>'�¿1¯vˇÇmlı=’åfl `Á¢ˆa#w�OggS��@�����ÏZ�_���EWcˇ„ˇflˇ“ˇ‡ˇ⁄ˇÈˇ‘ˇ”ˇ‹˛S;Ω˚*é�¿¿N}ˆpN0"„˙•V∑5Tmû∫ÿï‹y4û•…ò9SK>®ö‹±%±ıÍbrh;òÄ뽧GÓπmñõ||=ÁçF∂ê÷XØÖNC§'m=∂ +&”qÈi3æ V€ïã≤πÈfiÈb:i3yZ#ªmªó∫i,ÈE5æâV∞»íeÌÈTÌ´Œ1WùÜ‹|dmXœI˙»jL2]XCÎî7K˚”·•¥w/ñ†LO˜f `rãìáë•%Ó새p6` Ä ì∞¥tèî ¸‹5úŒ\˝}Ôëïm^?ÉIŒ8ˇ˛âÀa?∞ñ◊∫∂Œ‹\ÏB◊ +�����∏›¸‹–ÎÂùqÚÈ(Œu'úÀ<“‘U˜9.§Î˛mπÚ¥sÁ +I{1í‰◊LÒpX|K…ÌúÆ1kêÕág∏ +>û´ŒOéy?° ˜Ù∂p=Ó—#+ZE∫;P‘±VÔÇ∫>ÆÈ6õzÌ£˘SÓ÷ÓÖ—¯+æl]Æã £∑Ç}ôV^mÍ‚=Ífi‘8æâ“Xq≤k[–+?>Ω˘*ÄMmÔ&¿s2ïE·xÕí�Çs¬¶W˚pçwæà +FãÅuÅz� ˇj»ã: +É)e_hπôr���^Sõºflën¢��vïn‰‘ª=óføv»¡Æ5›π˘B·\[ÇbÈ∏;vCw¯ÏÕ¿f‰d)#/)›ßg“/ñíG>0ñ“¡≤õ‰µ'˜çµ5i⁄Ó &˜„¬LœÜnà¥∞¨M}ºãq:πîáÑ«Öáï¡•±7$N3ìèõf¸|˝¿Òk\Û5˜√æÍ¿.`øπÿ:µrU˚ªª√—JnmŒ6ƒCc g≠`æò´rdU∫-,Y≠#,FFÇì.≠ù¨˚ì∂ =ììF ÷ê•),¡Y8πou3 ì¿t/±§ìL +'˜˚˝0≤¬Æ±•ù1Ö”eŒ˘ø‡�∞ ˛√©¢˚køÔ:„Ä>=u����@√“XYjw4æRÕºåxÔ˙]cˆ∂EØuï~ö¬∆Ùfibi∆∑bco>OÂOC9Ω1?Ç‹‹ï€ÍØ0ÊñïÔa€Õ-7拸7flË>gè.c,†Ò{}À∆<¯∂Œ‚c◊˙# +<¯‰og√π¡ÕOG√ÈÈq˘≠ ‰<}|%`PIŸ/1xZpÁfimÂTÙ,Ÿ(ãÒ¸ 9∫mh[5Ç-S’ +•¡f\p#‡É«w°Òœ…‰ìfpyu¿%>–ÉÕ��@{[˝w0ò ˚\�`ùo�æS[´ˇ‹ +§ +�¿„vzŸ4⁄é07„L∂Ff˚Èπª9âáÂqÉÓ#ÀÅ\0ŸNÚûùõ{BKflßgâ∂…ˇ⁄å.áKïó∆r⁄2Ïû R^‚≈»’~ζHt[€3ëı•gÆ|´ãÁ˙ô"…ë'”obX-ÈÓEÎ"∞4C¬´¡·B∞‘Õ‰Äea]J√k˜`'‚`+IH˚ôϘ·±ó”p+`ƒäÂ`¨çp8pAà…C7#ÑlYÍf”Í^ .XbŒdw7∞ú<põv√íèѱ›Ëf2U9≥öS絬$ÿ®3∞ÿ%gŒ}‹Q�fl?µ +���@$�«~;N–͘�∏M⁄Q‘Ç ªTJu1ù}ÇùÂe`wÚ3©Æ «Yøo•◊∑˙≠⁄ŸS~ñ± œ‚ÂZ—»◊”J/rfñG¡ÈÉ.ˇÚö‘U|oèfu¢‹C/‡–Ü¡µ7\ΩÓAflä≤Q—?´»›Ò‰p–m£ˇnmõaçË +Øï~¥,À_÷·ímØ\ÊhÖGz{˝ÌŒ·N ÄIêA‡⁄‚7◊œ\åmºY'’\\≠[©üÛ«^,h™�@{ˇÏ≤X���ù!¯≠�ê√k��fiSõRë\Ó∂p�@ûÖoµÀ42FÎ∏ÕX¨4 'nüïMˇßAÓsÉì)÷1ëÍ~∫?X⁄µõ:KèÉ—√!∏fiѨ≠µaŒÓn6ã•-6ÖNª'óì4nŸlñ‘∆∞⁄ZÀ:–ZÍfrÿ˘0®Ùp©ïºvÌ¢5≤ññÖ…·t82µpf`YõøúQÂÊ„ó√ÆQ;›¨’.Á¨ûÛâC1\9≥Xz“ΩŸ∞kÍ—:¥Œõ•0√≈ã<¢uë 4çÕ‰»‰OÁL≤˘¢’ÕYöN\∞§›K›u//v¸ó"ΩS‘ $lŇ¯´Íæ&æÍ_∂◊c'À∞V�‡Ÿ~–˝����¸*CW΀ +U‘șɧU¥’Í$ u,|‚L4µÕ≥≠mw„kˆ ÷,TõM÷≠),ªµN’√6—Y¥4ä+ï◊1ÎV|€kóJ)¸âé]6≈ÿç?çEÅ;NY ÈUfi7æ,e·ÒUƒé◊é¶bÃÕ˝˝†üñZ˛∫5€)l®X͉û€<Ø5a˜Óï„`Ã≠„R∫å€R̆«òJπ†¯!kóp–éf�Õ̱6±…îÎ|ë��ËÙ]¬û] ú1LΩ€8p��`V7�C�æS[R¸ÅÉà�`Ãe∞˙b6ó0˝Ût}&ø°;/bsNr¸¡0÷¶Cq1Lü /M.AöO∞t“Õa6I≠Õ˛9Zu¶i”∫eYѪ«&Zg@àè≥ù¶7áÓ Ω…›±Ê]A˜dLo ƒÒHk⁄ b“™¡bƒÇ=°≈˛¶±.#·%ÿS:∫≠aKk‚˛N“t'Î9~ó?3ıK˝W≈ŒCÛ«ck’ˇ«”ug˙ˇ‡ùÇë›õîˉ÷Ö-ÁÇÓ&eDOé^’$¥Y,µfiL≤DZß~¶ßÀ◊é,›£».�ˆ)L�¯†Í§^����0˙.äjåÅ"R∆~U«çhΩæ5G\Zj\(µµÖƒoU1^D£ªøc∆a◊U¯Ó*5⁄Y2ıAflˆ®ßi¨“/>Otüıø¨∂Õç›ïo˚ªV≠Éß6'«é÷%ö™ïy8‘=Øfie)ˆØ>:ô.1 Äfl•Á˚5Æ+¡JË"ÜMê√™JƒE«'TfiÅíµz˚uû3æ˚®ÿj[zòAë´∞⁄SoÉÎy8Œ#@ı}�cwÏ⁄6ˇ¥��êËU,§ó3Vº ∆ì¿^u|Ä����Ñg"�nyá0^I�æS€ìˇ9é + +¡ ˆ4/F$ÕX +˘°’Z{∫jTéZ°s1π1ß≥',fläãF�õ_ùú,ÏrndI'œÛ)÷ΉR˚?¡»ãÈŒ≠P˙∂±kcLÜ*˝÷»—‘Üìœù[ÀE∏imµ/Fl¨ã÷`` ùª≠k›a6XuÚ¿¡[ìiflÑ√áBÈn6´-Âap∞㌛·˘Ìr˝svYô⁄eyˆg™flÍGWøÆÈc'=Z–-aÀ“K<√•ãdÜ˝€q‰÷ûÏûR˜�LéÄ͘cÍı⁄ôÑ3®±´ÿÖ:3πvò\|mAZ´ùP≠�∞v1ˆåò����·-«-h‹77?Ÿ¨ÀØ˘·¿˝€;2!K’0„_’B·¶•Ò7D”≥˚~=Ñhb?BÀ£≥~=Ë:è’Z¯oíÒo’ïïa”Ãèt•9`®Ü3˜ãMeAåß≈Ÿ|ü©√Ù]ûo” +∑<+}flπïÉ˝˙∂Û>”˛…üŒÁv÷µ‹°ˇßk√·1BÀß‹Éêδ!@YeˇAE¯r≠˚`˚&ü‰y˜â◊eƒ∫*Eñ ƒPI�3P‚jbF»3@∂=€≥y6DÎ)|_∞©¡NAºV]È���!8Ú[���hπ,·g������æS[äˇ Ä‡∑±3÷›±ïË¡l£·∞̯πØ•¡‰˝–H8㈪cò‡ÀÂ∏º›X◊ó∫óàaI°ouwlÓG|¥√∂”≠ÇãõÎv9@NàKVΩÏ^Ç√“Ò¥’M[[xzx8fhùª„‰˙πcÎô∞%ßgΩE<ó7∞!.-e2q©5∏ir®IX⁄p∞^["Né6‰–”3›1bUã_Ös»z =Zúfiœ� Vı∑·˛ÃÄìì≠©‹ñ49¬“¥{í%Èx·∞ƒH¡arÈπ€∫G��ÄS�`ªúaC}t&eˆØ¿«k¢¬ô8ĨÏ�‰=„��ÄÆ=KL���ÿ'Ó+¥2N∫uπBÁ+™üª›—Ç®MØ%›üº¡˛<ºÓ£sÈÊÒΩ®›/>Ë≠fi¯ä[ÿ¸ËüÒ√t¥å›z_∑(9øy˛O>çÓ¿Îj{Çê…VgÈXˇL8 ∆ö[õUÖÆwnùÄS i*{p‡r´£3¿bflö>D���NÏ∞}Aò‚=Ê:≥HÏ䛂r⁄¬ç—⁄A˛a�–‹´��˚˘l�¡-æ+kØfi1���®‹��<˝�į¡b�����{˚L������æS[íˇ!C≤e`�0µ+q3q˝˙7|ûk’™cÌ8˝x¡Áª∞Yãmh:999 -F⁄6ß{$¸îãç%y0 §çtÑü^@˜Á:YÌh∏Ñ“3≠^„[˚¯ïˇ÷ZFBL2=ÍVK(DzçˇÍjw˚oööÃñ£qË!=¥ÊÓö6°≠Æì∞Y–ŸˇL?˛Ò ïíæ◊Nø≠∫†iĆ; ¯I›#!Ò%ˇßµ&1ÚÁ5-MÃß[.`ñûÉn∫ªÂ∂Ä•m¯v;åØ +µsûô⁄…≈ñv)�pörÀáµ�Ë~����Ä�ô÷Iˇ!ÚS~0·ÈZ?ä}Lv:EÆV2qQôÆxËZ¡~”ÔxMÃ=É◊ıWfl‡Øå/‰ji}óOÕeKGºÃ∑¥^á^K'<ú®(«58”QSf•WDFp∂’#ü/éѬ_¬ß˝yÎu à#¨˘PLjÌÈcvª¥z‡V˛∫fiÖ›.@fl´ÂÕ=<≈AlNÄ}◊≈)*rÏa"ï˙…d»êM»æBŸî§e∞¶@!§&p“€ÚüÄ•«I�G]`˜Ωü˛'� tuÑ�íxê0Õ•�xsÈ∫Õ�ƒA��∞5Ã˝ê{��¨0fiS[ìó(G‡��Ønà ùZnƒ~ÓÁ#{RÕ˛¥9#K, ⁄±ø⁄¨ÕàÜ“’Ïó3fi÷µñÒ6ˆènñÕf8Bhi*‘˛b0πã√ ∆™Iì˜á¡Ç¥XåËa3b»Bß››K:÷√‰g@Ëp»kd§Ì!àkk?áC¬., œ34Ê£Ô«~Ù€œ∆ûI̯±’ͺC ªr˘›∑Zπ¶ü˘¯wï°ui⁄¢kw\�W©ôm*Ä| ˆ$#›¿ãL29y:˘V’k©ˇ©Ê؈Ņµ�0¨ÖÙÙUÁ[›Ï?£ÄúQ���� A›wêÊ«≥Vx9œùÍ>”º≠Zefä9F¸ym˜vˇw`W—@;óÉÔÛœ‘ºßRı˘~≠˜)Ö´Ò`îLvQWÀ[á ‰∫æv®áÒߢy∂9Ï^é߇ͅıˆ˜±v∫}eıkl$f}≤¨-]¸oe≥±R·¸(˙Èd§ñeù±Cp®ª@-èr#‡d9W-ÃÍQ∞ÃØıFÅQ˙€‡”\XÅó5A��M¿≤m∆Fx˚ �ß�†$s/Èbb2√�¿p;√0�0«Åψw#�¥µ°˘ n˘FcÑ��…¯ÇºY@œ��OggS�@'�����ÏZ�_����¢:àˇ⁄ˇ‘ˇ⁄æS[ã˚A��›˝›ˆF'Wfs±úÚs>lÔ.”&Øß«ÙŸ|},Hov5µ∏æ÷ëö⁄¥«héÕçÁÇëÊæµv1úˆwo¿f»÷x±,ûYœ#ñnsâÙí•õÙÆÈ`H\˙4õa¢¶'“úŒKáŒÜÜ⁄óˆw/6ƒ…!ãi“mΩoM6>á÷?ùÆ?ÙçUµΩ˚ÃiÆnM6ÕÄ∫C:Z#XÛ»‰Í,öëë•ILÜ&˝uhì√∞˙/K0¬»&e ñx¡pMïͲóÔ…9ON’øˇˇ"Ω®T@ˆl≥V‰6����¬¿ñóW4W$wàfi˛ªu´8€flı€7™pãˇª—›í∂J}µXø¸Ÿ◊#˙V√œΩ]‘ñ¿‡E<ö|‰=n¯Ï‹P|YZù•» ˜‡~Œ|Z/߉él˙ ´‡îÊ˚≥ˆV›qoçâ˜Ï;á‹Ûÿjº©?ªfi|ÌÔûfl>C��5*A∑C}âù®:ßa'äem∞ñ◊9WÑ.Úci?\Øï¡≤û\Œ^qh÷4Ä—∏À‚ûËj�^ê‘»<hVÎ$∫:0rYÔÄ zR+>���Å@ú$L«ì�æ3õãˇÇ¿Ë�‘π≥§∏ú»rÓç¶_uùÅ %.Áy‰¿’†sÈX{ÿe€üvÀ˛nQB—v3)´'NO˙∑v5È∞E›ª⁄ñ,”N§e◊[›¨aÎÜ|“÷Éo‚“““`º≈í¨æô∂Ç›…«òsY/Á÷F´ÜNÔL˛˝†V;Yu≥§á7õ‰CµúEÜï∑¨“X,ù<ôÛ‰`raÓZ +öˆÆ˝$X0>È∏˜?˚V·‹ ∫Wü‰Êû�‡, nqk&Å∫Ån`F�lc›�ì¨ÿ&Gaò>≤üQ?©rBeM����ÄD(=Î�J°‹‡~=JW1≤ÕUÛ÷ûƒ~ΩáΙZwL˚T7Ω~ı‚·ò[C¸%¸&ÄæÃ?;ë≈Ô” +1)—π‚ÎñÈx»Q≈íÛ¡Ù˚/ÍæŒÖº ˚Ô<∆œå£(ƒ_∑Ïrò»JÛe’˛˛vEÚ÷„˘∏fÆókç»C˙øo^ÔCº`…cÂú*˛Mfi®∂ŒGÁ$€∏Ÿnu`6ÏGª3?¢y¿‡¡Äoc�””�^û7œ∑1˛Ï◊‡_k1¡òL���`��M¬¿fpW����~S;j˙*âY ¿¸\∞XfRÜãÁ˙0<ü›$N•Ig”»˝mcç®èƒ±|g©˝wñ∂«Âª+Ù{K¡YfÅ÷`±úflNŸ7yΩπæö@ØR»ÆÊdéfiùÏ,ñ9yuÁùq'ì2rjñag◊àû\§¯≈3G€û7†—∂≠ˆiñ&“‰ÿÃÕ˛nÆí}d§ô<Yfik&•júOˇË�4ìyÚ‰9adz1Æ&⁄+=¢# 'ÉcùƒG‘wü.O +îkˆ,ÖZÀ@∞G¶Â5∏M9È√\Iç·[3�ÄùV–ÏN≥_��}R°fl”Ä#�����ê∂z€ñoMØû’Dô;≈RD;8ç©´ÁÏ>óäY?ØCÃı6¶65fih≥[)n§Sbµ∂'©ëï‡|0áŒπ®Z˘‹ ÑMUïmÆyIZä=p%êÀvÚ‘h.B˛5∆kTÚ¥⁄.±ÙXÉ¡Èzé¿’·2Ø3˚|æF'Åö≤¶Í~_pªW59◊®uOflW—aÔîW_πE{’2º±)ú√˙kUU…[ïó6†JFß≠”:ùΩ!b◊î„á∂ªàÖŒu§^yÄòKÔ§&)è@HÍà˚O+ı~E��� \ No newline at end of file diff --git a/resources/media/ringback.mp3 b/resources/media/ringback.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6ee34bf3953c5ec94dfecce2fa5bfc6756ed4732 --- /dev/null +++ b/resources/media/ringback.mp3 @@ -0,0 +1,83 @@ +ID3�����TSSE�����Lavf54.63.104�ˇ˚@¿�����������������Info������t��Gª� !%'),.0469;=?DFHJLOQUWY\^`dgikmotvxz|ÉÖáäåéêîóôõùü§¶®™¨Ø≥µ∑∫ºæ¬≈«…ÀÕœ‘÷ÿ⁄›fl„ÂÁÍÏÓÚı˜˘˚˝Lavf54.63.104��������$�����������������������ˇ˚0ƒ��8Z‘¡Ä1/w0p�#E@¡∏óP��"Ø^Ω{‡¯8@|?Ç�Äbɇ¯?è˛'˝�p| å∏|Aˇ‡0Å¿��+3Ìfl‹Qµ ãÁ|Í#õÓ∂}Äê ÑØ¿E†∑¸xl#çÒ©«oˇé†4%;˙Å°)–i�\aġ˚2ƒÉ»Ä%Ò��“£ÅœlPÓÒÄû¡ÑJ5 ≤.ÄÒúPπÉ\IÄL�—Ä�ÅÄ ¡Ä +°Ä �qÄ�BsUá cøˇˇ˝ˇˇˇ3Í1¿Ù«Â£.)MWt1‡¢ì{Ç°>!3–î0F�±–*2§s9 3Å ‡ŸUŸUØˇˇˇˇˇ˝ûÖ��_æ@ê33à∞ÿΩÜG†·ç„ˇ˚2ƒ®!.bÅ7ù‚A˙ pßãL“Ä Ã +@å�†å°¨ÿsâfi•-ãûΩæÍõ˛fi;v„üˇëÚ:ÆL0å àÑ¥å,˚Íê∫L @åLL‡ +å)@ÓãîW<ÏœvOˇˇˇˇˇˇ◊ÈˇÙˇØ‡ùÁ•§™0@‰ +9ˇ˚2ƒ»µ–KÄ›#AœÏPÇå�Åáñ A≠vpô†Ü ôÑaÅí9Ä¢πÄdëÄNË$‘G<¿Õˇˇˇˇˇˇ˛ø˛üˇˇˇ€˛0åa¡Òì“f™∫>e∆ò¢ÁÊ cò5�@†?ò‡.ôr±Ü¯ô¿ÍMË$Gˇˇˇˇˇ˛K◊0�0¿ +0.Ä0f¿r1[ + ;ˇ˚0ƒ +É…’ôÄÒÑ¢¡flÏPÃ≠ñ3ÿDl0¡0Äê0�D0¿0"�ÕñÑ‘bè?ˇı˛øˇˇÎˇ*ˇı7ˇ”ÌÙ\,ÈÎ∏lôÄ‚!Çdâåàëù3©ÖÏu°ß0¿ë‰(—ÇÓ ôÅ|°Å0±—•ùd!±é ºìˆ3ˇˇˇ÷sˇoOî1π ∆≥"∂ 9·0°Ã>70ˇ˚2ƒÉ«x#bÅ"¡˙ pL∞4aÉ:09¡0�ä0Ä66rÛh˙"ñ~-“Áˇˇˇ˛øˇ‘ˇ;†¿�ú°Ä^YÅD ÖvXŸºV9ß� Å‚±Ä$x– +F�¶#�[‡ +Eã©ˇˇˇˇˇˇˇˇˇˇ˙Ñ˙U1–á1‰¿2ôC4∆º0ÿ˚4œóA47ˇ˚2ƒ«ÿ#ˇbÄ–£œËP0\AÄ0�y0¿$9e”π˙7#�√÷m!æÊˇˇˇËˇ˙?BܢÍõ¨≈ì"Ñå 8D√b†€Ãs§√I‘¿°Ë»TcX\ÍÅímdWØÛˇˇˇˇˇˇG°2 …Üs6Æçâœ0zŒŒ1>€Á4ß¡0w�0'@10@K.�cfIó™?ˇ˚2ƒÉ«8%ÇÄ΢ŜP1_�Àøˇˇ˜ˇ˝æ\Ã#„O N?∞,≈ب·3&HŸ”»¬‚ ¡Kî¿a‹¬¿Ñêæ휒‹ªˇˇ˙øˇ˛ÃO‚eò\bs©ö(Ü©d¶;7Z(�†áL– L� AÖÜ:e¡,í3[ˇˇˇˇˇˇôÙ`,{3¿‡°S ˇ˚0ƒ ∆Ñ!bÄ⁄#AœËP�4≥_qï#+C¨ +ìp√�¯£Ü¸ÊL$0¡Á'¿hˇˇˇÌˇˇ˚<™tæeF±y¶Gtu}Wá«@c6"ÊAT`‘÷ÆlZÜä8,'SÇmˇˇˇÏˇˇ˚=&!òödtA™´&)A∆˙9r&ù–%»Ê†Üp#òˇ˚2ƒ.∆¨!{bÄÊÑb¡œP:8,^OπâΩ%flˇˇˇˇˇÂÁ)0H?∆û&VDFY¢f◊˙rÊo0ÇÊ�¯(F∏&¯#flß|-JDBÛNö[?ˇˇÛflˇˇ5∫!“c¢iéŒÜPgöè§a + +hé&ñUd¿O ¿îYÍË‚"+ +≥顡ˇˇˇˇ∑” AGÛˇ˚2ƒ:É«\!ˇbÄ‘£AœËP@éVÔ1 +,:Z"ì4Ù¬È0-ÄêÄ2_≥ü£–˝%>ˇˇˇÁæ ëΩû˜"LYéã}*ãÜ2fGúÜÉD&y‚Fôb&≠∏;∆¿fH�$ +òºÏc™yïFaÅ(ç`롡ˇˇˇc|™3 “≥zçè¥91XC8\ˆ5#¬ˇ˚2ƒFÉ«å%ÇÄÈ"¡flP‡0§Äó0>¿M0 ¿ì1*`ÀTq“ä ùŸPlgˇˇˇ˛éÁ€¸3¬ˆ€lƒd pú±,`πffiP2ç’A®ú‚ÜîBàÀûIDs>≠]nˆ/w£≠ø˝û[˘ä2P|¢.n·ˆF&, hg£ùF£@oÜò'Ê 0Ü`FkSôíà!(!-»ß§ˇ˚0ƒOh!ÇÄÕ§©ø`J‹Ôˇ_ˇßˇ£˛,Ôu#√ïûæ6fld¬`4»«ÿ&‹”`¬ú¿‚Ä¿d f≥Ií(∆+Çdøˇˇˇˇ˝~K◊¶0–c4RCÆ{0°≈¯6*‘g2Å¡0@J0� QêÈíÕ Ã…¯lˇˇˇˇˇˇ˝æì�X�„$sˇ˚2ƒ[«å#ÇÄÈÑ#œP##‘«3Mm\‰30¿C ê≈0ks`& 9–,≤„Èö«ˇˇˇˇˇ˛flE0Ä?0¿>0Äõ0¡à0eàŸ4å -9O/s Í0'”·Ç®;ë¢@>bÁZ˚¶∑Y£·D˛ˇÛoˇˇ”ˆm∂…#i��okêˇ˚2ƒcÉ∆P! ˇbįÖ#ˇhêÑg üÊ›�±+`aY∞e êèkEè+ÜF·9ç}Ùî≈bƒ»‡ÄsÜ�ía´@¬“@ÛîôÖ"ôÖ§ÅÙ¥§`+ëYJëX∫Jï•R:∫óV⁄ˇæÌˇ•.˛0¨•áPÄÀK8qˆNÒu5í%XÌÙé@I¢qV™ñŸˇ˚2ƒo� =˘‰¡≤Í5¨-9∂ZÛ]õHî∞íÜêöTH*H—î±'ˇ‘öÎQq�wö”ufi˛V˛^~øˇ÷üøÏ≠1x'¨ó"¥K£QL "±ëÖ CÅ®µ—ùAFE≤äÚˇˇø˘»ˇˇˇˇˇˇˇˇˇ˛k|“€Õ4?ˆõE?1õ®Mi»ß y∞ñaÙOí´r0…ˇ˚0ƒX�<e8,<«Ó"†(âqä4£K≤“’ÆN\táÃ∏”-kÉɡˇˇˇˇˇn∫áÊ˘xóπ]O« UX∑@‹Ú,—¬Q÷Ö»(íHáHd†—2K—Ç„P`≤î6~RI˙/ˇ_ı◊sˇˇˇˇˇ|}MWE10Uô"–c∏˛dõ›÷ãWì≈≈ªS +°•<¡b!ö<R‰å–ˇ˚2ƒ\É«≠¸�ÑÀâ +$@°q≥ÖZ÷‹m¢›@�E#6Æ%fYs_cø/™∑ˇÌ˚]∂≤75^œbÆvbû}a!≈îÛ9ïD».JÌñ’œ¸ˇ˜˘◊ˇˇˇ˚_ÓÎΩYHπ‹Ór@QGB`™îSâ�«« +Ç¡ +!C)Lu¬Ü`kK5öŸ]Ò�Ih¢-Jò„-!⁄ˇ˚2ƒ`Äy"¸�Ö¿Ê `¥âqùÕˇ[Y`µUxj,¥UÊ◊ÜGï§F@îkîÚ_œ?˙ˇ<øˇˇ˝F#;í…:çîT„àß9U'5Œ,pÒ—îH +ÒÄQ1@ÛëÑEò *%Aa PÿÚÚÔ˘ˇˇˇˇÏÔDµ'wRπA +ŒU8ÒA+: +ïÜ + +J$Ü@aåAÇB ˇ˚0ƒiIJ�ÑKà∑�atà�ÅÇ3ÜïiÖ]Ø˛ø¸ˇˇˇˇˇˇˇˇ‚¸ºüedÑÊläâ@THvP‡∞¥;∫£ÉYπ0IÖ +(KÖfp1°3å5ˇ˚œˇˇˇˇˇˇˇÔˇˇ;éfi–é∆b‘]%_/yZöQFúçQ•rè±0’=éB¨»‘Fïbµ«I˛Äa‚UB=-ˇ˚2ƒz«ç¸�Ñ´àÌ#üÄïq‰oK-Wˆˇˇ“ˇ˚◊+]jÄÓr¢*™t=ëé; 52ùd=ÿ÷Âc∆xvr/˘˝õˇˇˇˇ˙iKïÓe∏ıπëÏS*8ã8“*P4·‰ê∆â©DåÆ.4PP„ƒ‘≈òÊASó‘ïé«„·¯|>ÅF†˘∏–”n˜·í�≥/G˝π`ò8ˇ˚2ƒÇ« ˛�Ñkà›$_Ä�ôxπ`ÅEÙ"„ÿπÙbà#√flOM0¯<!A:~˝5ìÇÃ�‡#…˝˜¥®pä܃¡9ˇˇü& √ÊÜÍ4ˇ˝ˇï‘\'¬7•H�é¬l¸å1!¥√]Yöjjjjh– +Ï¿@@@JQôÄÄòÍņhı@–5®]ÅØÚƒï0��0ˇ˚2ƒé� ÄÑKĉ¢fl¬ÇP¿0 Ä50¿¬0ÅÖÂ5Xçx<7 C�–%Kp‡�—ÄSâQP”…mÚüÁˇˇ◊ˇªˇ˙Ã�pÑ *ò@T†¡ò<≥áËfiò°Åxuò*·Å.Ä9É@á‘L6˜∑ Oˇˇˇˇˇ€Ë1tx1@≥1’03öß0√œ∂7Z†2}ˇ˚0ƒô� â1sπô�‹ *¥0�,0A±0�Æ0Ä6S;á√m&:o$ˆ/∑ˇˇˇ˛øΩü‡∑óeff'gla'ç¢lIû–gd ê8“‹¿ò.≠%vˇˇ˝øˇˇ˘&2a\Àg√?6M”ˆ0§çU2ÖÉ94ïÇó0i@∂0Ä �ÄtdÈî‚∆N_Í\öÔˇˇ˚2ƒäÉ«H+˚ÄÛ#Åˇdêˇ´ˇˇˇ)Îrå†d–≈ ‡d˛Gå0�îçIÖ$Ãè çL`¿¡˘ù¡3ò’._ˇˇˇˇˇ˙™0x`¡√õy?0*À80[‹Y1¿¡Ÿ0 �40@Ä`[ ´m¥˝Äsˇˇˇˇˇ≥Û˛ì+âÄR”ÅO‹*1jA¿8b‘∑6¬eˇ˚2ƒì«Ä%ˇbÄøÑ#AøÏP0∑�ÿ0K@Ÿ0 @¡2¢ÿ»∏1u‹¢Ω@ÀΩøˇˇˇÍø’ì%Â*ÖÃ@J2 §ÿ€Cl“3˝ cIúÛ` √¸3lÛå#2 îΩ5顡ˇˇˇ€ÂLPÃ…>T£ê]3oπ∞£$|)C�ÏÛ�»√�ê V3ç§�ˇ˚2ƒ°«H#ÇÄÃcÅøÏPêflΩüˇˇˇˇˇ›ÈÙ’0:0<}1@Í3V#0°˛4Fï1˜Ñ60OAá0*�¿0!�j8¥ín5Q!¢wí~ì3ˇˇˇˇË_ˇˆx±Ü≈F#òïf +âÉÇB!¶ÇEó§aÅYÄåëÄ\ûäôı2íMŒf ∑ˇˇˇˇˇ˛œB0 åP1äîˇ˚0ƒÆ∆∞!BÄۢŜP‘ò„ +î∞ÛxÙ(SM¿!≥$ √�hP‡åÄ#2<X8Ë4 ãb#Øˇˇˇwˇ⁄Œî√û\∆Ã∆r껃T–¿¬˙;¸–ƒQ$ŒBú¡ÿ¿L¨¿;�X‡No`ÿâã]imÆ3ˇˇˇ˝Ï˛Ú’1p|…aÉGŒ^ 0˘Öå7‰†ı0ÿCÅ07ˇ˚2ƒ∏«!ÇĔѣøËP¿®0Ä#0�¿7œHPπ¶k#±o�èˇˇÁ}fiõˇ˝kzzB21åÕk#erÃ"3∞N∂ˆM+P"Ã@å +P +Ã�»KÄòŸíƒh②ˇ˘Ô˛œ˘ü;fi*2(êŒÅP6(ASú≥f\s£O‰„ 8�#Ãsì#Sí¡ mˇ˚2ƒ≈«t%ˇbÄ‹#ÅœÏPDfÑÑˇˇˇˇˇ‰˙ãBS√Õ30£„-/3ƵcK‰)#X£ås3åe!3 ïêÕ1flˇˇˇˇªÛö¯ë]™1†,y¶l�¿|\ƒ“å„>ï0»$Ä¡≠î¿Í∏¿l›XÕ˙Ä—$flâãdøˇˇˇ—˙È} ÏA‹´íˇ˚2ƒœÉ«8!ÇÄÓÑ¢¡flÏPÁ@`®taIc≤h<öao$g¨i? aÇí`ÅÃ`M,h”π¢£Üc ‹I~�˛˝á?©˛œ—˜ˇSõœ˛™��1¢Hé\Y2äxÿó”d∑#é–3ZÄÉÙÛXC�¿√åL-J9"<ræâ∏±M{∂*Ø≥ÏOR›ˇˇ˚0ƒÿÉ«h%BÄÍÑ"¡œP˝.Æ∂~£�p≥� +£4Ûò.%≥ã•ï≥H∞V3�î£T 3DÄZL?PDÙNDD¨yˇˇˇˇˇˇˇˇüˇO˛≠]¸*Ë1 ]1å1àÛ30ñåù4flÌ0 +DC0A>0 +@Ö0@7¿PY1®Ω‘Wgˇˇˇˇ˚2ƒ·«!ÇĘÑ"AflP˚n˝fl€ÂÃ< Aô¯Xq˜yà‡RQ”!˘ßbπÅê@†c†òê e8∏(u@Ûô䡡˝?ÎEıWπ_*ˇ=…U0@~0!Ä≥01A00W±0Ï”–2ÛNÖ7B`0ùÄ€H¿Ï¿Sp¿RÙÃêL.RëäôM_ˇˇˇˇ¸Õˇˇ´”ˇ˚2ƒÍú%bÅÑbÂflPı˙|À˘¯G˙Ò§¿/�p¿L�\¿á�`¡�\√7\‘)D†||åc�D¬Ã +A4¿,å ‹´*䋱zì�«ˇˇ€ˇˇˇ≥≈U0�50¿RR` +É‘` Ó`HW`hÜ`į`](`�h` +ÄF∞î =r$Äfiÿ.áˇ˚0ƒÌ…#NÇÅ1"A˙ pèˇˇˇˇ˝?ˇˇˇˇ_ˇ—∫ÎAD@ò†0!�+(†#òà�÷õBKÙ¡XI 8úI|caaùö,|H +¥'˙�n∂öãÆfiè�êl"0+8$]g#eÍ[p√ 1Fô≥›ˇ˝∑r^Ö��,rÕ´•�è�ê�0431 +4…<�6ˇ˚2ƒÊ«h%ˇbÄÔÑbAœP16�`ÇÀ +8æKô`ºrêZ©Ni)§‘ü öéö‘ú•ß›¶î ˇk“Œ _ˇÚ_ˇ�FáL\H0i‘ƒÚ√r¨NTc(åT�0ÄqƒéZb‚¢2f(€Q‚√öÎú⁄8Ӄܢ£√űAr§D¶åêI/a“Uó∞⁄ã¡ˇ˚2ƒÓ…˘–KIJ#ÅˇdêFƒd`åNFëâ)•eã“≤J©“’_KUuï, º +íòF ñêªh–… †+"å[T≈ÙÙWÆ’ãJ–`3Ü¥h∂ºflÈ⁄Ú•Ÿ⁄ÛdÊ©eä‘ıÇh≥tƒ[˚Gd4§R¨Â‚Øõë˘˙È˝?◊ÏfiDó>¸P«gC +dd"âéܬåˇ˚2ƒÍ…Õ–KÅlä£˛$‡¿H$àÂPcÄé°ƒ% á:M6°d'�+ªäè”<˙˝mˇ_ˇ˝+”›:)®≈b!™≥í.Ú0B1ÿ:òÖ(ê6>0ÅÃÍa—aÄíStó>R´úª…¯Œπ]s˛Ô◊˛ó°~›ÊucªïñŒ.¥c:L°«rç0!Qåƒ!Üçt◊ còHÓóˇ˚0ƒŸ åm5Ƈ«!∑è(Ã%)䉗ˇˇüçó#¸ˇˇˇˇˇ˝œp±–ˆÖ∂πKa§é8…SL6àT ±„G…√ÿ&±√É·`rq‚¿©—∆ÃA≠/øˇˇˇˇˇˇˇˇˇ›woQv»…OMc;ÜhJ*G»π"≈@—˜- +…≠äû„–†‚êì«é[+IØˇwˇ˝|ˇˇˇÍ÷Óˇ˚2ƒø�4o.,º«¯!`$âq¨ »õ£p¶b®ÂA‹àAlä8&•! ≥㇟âcá8 ¨ ˇü˛/ˇˇˇˇˇˇˇˇˇøw|›∆´SˇÔ%Æ9ù.Çî[ñıV\¢yá˝}ç0âfl8 ëTù/ ÍPıˇÀ󡡡˛ΩnÏ≠*∫Á> Ï"∆ëUXL(h|·–ÅÖ¡hˇ˚2ƒ√�GÖ†ÑKà˜#`$ïqTÜ)Gz XPÅÒÏ¡·R1√¿»∂•à§†2ŸŒNeÆø&eÔ˚ˇØ˝¨kæ›I3ΩŸïŸàÆf;‰ugt;8r’ÃQB≠n/Fë2ˇ4§œ^∫‚Œˇˇˇ_˚˚øq˚íF!.∫Ì≈绕jÈ,f‘bç÷KÊeto©2ÉLúê^e◊$.ˇ˚2ƒ «›"¸�Ö¿‡§¿�°påvDËXmÊm®È<⁄\��ÖÄ‘:}J>CGóÂöØf≠ˇˇOG∫±LÓÓ∑ù]úäÑ4s1áUëŸê\„Dö√P¢¢à(˜(¡Ò≈8≥0¬vîHQ†�<û◊=k=ø˜¸ˇˇˇˇoˇoÔ«πªóoo{üvõ(¥>ï sŒÇÚFîƒ ï 1-&±ˇ˚0ƒ“É∆›˛�ÑKà‚£¿�ôqäi*-!≤b’˝Jê�%= NÏÏ˘öóflÎ.ˇˇˇˇˇoõıjîfiˆª∫πÃGfb‘`äQ!Åñaî5Kb›«åª(ñ|F ããåXƒóPÓÑTÍôâµH��∂—e1ûkJJ Ωw˝}ˇˆ_˚“Ef∫µtw>¢kE"8¡G3Öå¢e`Èò—ˇ˚2ƒfi�FÌ˛�´àŸ†‡tâqr≤«OV¿ò !3ënÙg|•2kœ/˜ˇˇˇˇˇ˛”ˇflûY˚4ªΩ\üb•¨cŸz‰˙DE§Y^Ã0ô«©›â¢¥BÑ1àñ=É|]£ˆ«cu¸53ôÚÇÔ˛øˇˇˇˇˇøŒˇ}KW˙Ւͺ}(ô∞ËÄYÅ≈€–m$Çh@“°OÅâX˚$ˇ˚2ƒÎ� %"¯�Ö+¡£flËïqÑ-4PL°zôKû2_‘¥8%e'î≤ÚÔ ó˚ˇÎjQõ…ï^…s!*…†'1ovh+9àÆ¿é»≈XeÄ»-»3£ËaÖá••qÑ��Ÿfi’z‰ñ~≥ÂÙs◊ˇˇˇˇç∏ˇÁ«}∏◊kÔ˝1µùı2˜ÅÙY‘eãíiÈ«4ávFîVˇ˚2ƒÁÄm"˝ ÑÀ¡#fl§°q®mî¢Ëπˆ)P¡iSÇ–A/3‰“ì©{öØˇ˚ˇˇˇˇÎÔ¯€›€s~c}˝∞æ˝·>mCë565)=JúÒãÇô‹üA(“flHR≈ßUò IÄ�ryÕïs‘ûˇœ·dsˇˇˇÔˇˇ_ôq˛±$g≤Z¯x¡ÎÉC\,Wxäg0Û,:ˇ˚0ƒÁ�G©†Ñ´â £fldôqJé∑QRoÙ‹flJWÓπr˛˚ˇˇ˛gß[ˇ/∫R5˚v"/” ÌéËËíÑ733∫» ‘0€∞@£Z√å(ÜÇdƒX���J`5rY/ÜRü≥˜÷Ÿˇhˇˇˇøˇ˚w›Ôµy€~2∆±∫Îó√”{∑E5vúƒ�÷k75e'ñ2ˇ˚2ƒÁÄH• ˙�ÑÀàˆ§‰âpΩ#Œy# +2 ∂U-dg˘6^úæ≠ˇˇÂÓ∂TuU!»ıègPG8á9àfsY + C(!ÄâAAL ¿ eAÅñT™œòO}#ÎÚW{É¡ˇˇˇˇˇ„Ôˇy¸-Ω˘sJõ•ÕÆìç1$R"y=0±]≤G¥Ÿ ¯oHʧ‹j&)ˇ˚2ƒÍ�Hù"˝@ÑÀ¡£_§ôq#D‚;õ(±∏á…lw?J•ƒ(™5fèÂùœ˜.eJˇœˇ˝¥ˇå”ûDIn0DBåA %`À´ ÑPÜq@Ñ˘±èIi]"Û1 *fi{ óù9îùˇˇı[óÍWm‰ÍD2e“ñ¢_ì£tÕ¶U§+‹WDı†` à‹Õ!(R¶òmFƒ&ˇ˚0ƒË�Gù†Ñkàı£‡0çq…9°Q” ±)e¬Û9¡tdÏú.¸M«I�;úÑå≤9^søfl΢ˇˇˇˇ¸ˇ.îdñóËRF*N √*j∂9ºö `∫◊H9¡…¿2«5ßXt�,åÙÔ=ıû¸SÓæÓÕÁˇˇˇˇÁˇ[k˜˘ŸflYº"∫ÉãÏö!UdVû•GSπˇ˚2ƒÓ� Q˝†ÑÀâ£üâqí“I·lØ∏»Ù.6Mº¯YNJÖcq0S®HÂ@2£öÓ/<‘fi•Ì÷ˇ˙™ˇ≤fiœfö%]˙+§‰Wc†Ös©åçfbô≥)B•�Mzπ˝÷ÙŸ…Ú£‰≤˙ˇˇˇˇˇˇ˘õû£≠xA&ìû¡§§¢ŸBâ$ø‘—(nÀe4h F##ˆxñHˇ˚2ƒÍ�I5 ¯�Ö+â�¢‡(çqƒf€ô9≥0-"͉è(ygI�$A7°+¢ååÄçI!lßú—kœøÀ_µˇˇ¥˙"LD?gxìhA´B–ÓvFIÖàA4DQX®√9 ¶8Òg;òaåx±Ü¡«Sâe^Ä”{…’y˜.îæfl≥ˇˇ◊›ª÷u9ôãWE±C¿îP§8{!√îÜbëˇ˚2ƒÈ� +$Ù�Ö+¿˛£†4çq�ñßÆ +÷S£Õ4Ωˇ2Õ?ïøQøˇˇˇˇˇˇ¸˛^Ú{?ì◊›ªí—≠∆RB£gÀ9¢F¿>#'mÅ¥ä.â≥,»U»DeDJïä5P§¡ß≤GÄôŸı˛_À}uÚˇˇˇˇˇˇˇS¥ƒUYådlÍÇÌL‰¡t0Eã?sÛ‘Pl +áˇ˚0ƒÂ�H ˝ ÑÀàÚ!†4âq¡Ëx·¯ù†≤¬`§è†˘áàÓî7ÉB‰ØU√⁄Èü;îÎú◊>˘˚Ûˇˇ˘¸ÚÈB»Â5◊…‹Èë∆@Ä$ +÷™â¿cúïá™®‰/FJ8µrF[M'Q��QL·ˆòÛh¨ª◊ûâjMo˛çõdLœaûvI÷TÇ"ùAJ0Ö©ú]¬ F®ˇ˚2ƒÊÄI±ˆ�Ö+â§ïqKâ0AJu*5P∫"ËÕÃ+S,\˘3ÔüÎ˚|ˇˇˇ˝ª˝~ˇˇΩ˚n˜œê察c´IòäflÚsƒì§$¸Éãõ©#˙0`©õ]s§1ˆ[—ı¡<µˇˇˇˇˇˇˇ˛Â˛g©n√Œ +‰):b•÷éfi2FÚvÃ"jmYÑ·•I\qFäï ≤¿e +ˇ˚2ƒ„ÄG≠ÄÑKâ:£fi¿•qŒmúM≈¡‚ƒhA„°¿Ù‘3j≥ÛˇÔ??ˇˇˇˇˇ«?ÛÀΩ2Õ“E¢®Ûe¥UCÜ–sÈíDá3†ïàÇ':)5*dï}ìQp>UàÄ@`�ï™‹Ã˘yx÷«ˇ«ˇˇ‹q÷ã R≠COëΩèTqäq£)®£˜aÇÜúMàbÑ°‚‚ñˇ˚2ƒ·ÄH5˙�ÖàÔ°‡$çqÚ$p•Cà™8¿\Uè”ı¸Í^øØˇˇˇˇˇˇˇ˚ˇˇfl[s±õ7vÑ€ô +‹ó≥à“rƒ»Qåò‰Q4Fï•$/}ê–U'%”Åùã+:à¥â$£��9•ôı?¨ûv ÀˇˇŸukÎd]À3úaNÉ(Æ%,Œ>Í™G9»wâJ0ˇ˚0ƒÊÄG›!†ÑKÅ£fl§ôqsà0y6¬Ö» YU¸T w9ÂúéYÂÁdG˚˚ˇˇˇˇÏÌ˚?¯ñÁüÔöfi€“òՌŮδɵéõ9#m‰N;s›V4i•#‹£Õ]óU!kYƒ@�áö´ŒWs˙ÒöZ6Êüˇ˚Sfi∂µûZ©åé WPa§+£ÿ1òÊ#åß�íŒˇ˚2ƒÁÉ…a ¯�Ö+ÄÈ$_Ä°x‡ Ü`„É3ëUÿ �î@�� îñDtNyeÚ‚Ö3w’ˇØ’“œ™ÎU¶›Hted:1YJà&<ë¢&Ã`à±Ñà¡38†Çâ30£úî´≈ ëñK –�AvÂF≥RÔÑΩeÁ÷üˇ€üÙ´låñµNäef9ŒŒP•V⁄é®p3$bˇ˚2ƒËÅIÖ˚ Öà˛#_@ôqƒ2FS©‹–@ � +± îE‘ß9eÕ}Øˇˇˇ˝^ˇÚ~r…‰øº˚›a$kŒ“lä5F”éÒ1. ≤Hì M +Ö¬œ0BÑ≤H“ºôÖ…Xq=IöfÂî®@�;‘óÃæG˘\ø/ˇˇ˛ûˇ;ŸºsıUËFyºtŸ≥�¯c°§q›…ˇ˚2ƒÊÄHQˇ†Ñ´â£flúôqùu +òHU‘Ï∞!ì•©‹ +WÃ⁄"ô‚î“'#?ˇ˚nˆ˘Ô+;∂ÔÃ2˚òÕ◊∑�‘ˇ⁄yŒÅ‰¢Œ&«ñ|,∞4ÇßTb8zÑ3eÑíum$·)%�!§wÀ}¢)óü˚ˇˇŸ˙˛ı¢vK uf≥4πŒCF`≥+!ŒÑUa(ˇ˚0ƒÊ�eˇ@ÑKâ£_Ëïq§"2%∆� Œ›6Té[Øy%¨ˇˇˇˇÃˇœò©“ôŸæ7üsËıπ4K¸◊NH6ÚÄ2`IƒNHVlüSÖчˆ +"ù=Rí@‚�k≈fl›˘xüϸ†ˇˇˇˇˇ˜ƒÎ:F5°»j∫*Uêiïà‰êhrÙ◊$õ �Ò¯íɇÔ&B …¬ —ˇ˚2ƒÂÄ° †ÑKâ4$_$•xä5E Å<s⁄Gî9ê5dTDêà…T:<oîçs?∑ó˛ø˚ˇ„„ˇ˛'Í≠ƺ_a≤5›XjR–Û A;H„óö*√ì’=ÉÑãB4ôHËU¶ òùÖvDÑUXmΩdƒÕûi´ö»)mRd˙íÏçı´¢fiæönö‹ŒÎ∆ÑÄ�£D§å´rß∞ˇ˚2ƒ‰ÄGm@Ñkâ,§üdôxˆ∫∆ß-6>[[˚ÿˇœÚ¡æ´[nI 7D2âß∑™.]ï¢IIé£xêhh»å0‚@6ÉP¡fú«É»∏(¡Òú40NÑ6Qi!2ƒ!ñ €w(îë7Q�Q,¶ÂB¸ 9|Ωˇ˝˛Î¨˚Sv{LÁ)ùÖòäákπX‰^Gç÷˙¶ˇ˚2ƒÂ�y†ÑKâ#$üXôxRÆ'ÿí“%7P6Êe)πû\Û≈ Æïó˘~ˇÂüÁ˝9?˚óô(á:Jœ‡å1®v®m(gzp"y à¡éõá`¡‡è=—KÅYódߨ!7˛Y¯ˇˇÁÈó5≤flÏÛ¨ñπáèöCÓX±…8≈dñ솖ΩÜÆMs≈H∏z3\¿ê¥íÉrÈu&íˇ˚0ƒÊÄHë ¯�Öâ#fl°q¶‰ÚIô:ç¢ô9”ÕH“⁄HÂ53üñoW4yN»flΩ?ˇ™‘õXπ&FWG)öX°EVϘP•áä 6WÑqPpW)É≈c√ËR®»ıJ8”i∑ò�t’#’¢ñt>G≥ø&ˆIóÆ÷ˇ÷€Ì>‘b;ÏÕe;ïYA“÷@fBïä ˇ˚2ƒÂ�‰‡Ñ@ɧX•q°ØÉQŒâ∏�ËZ+… Z$QU∆∫øˇˇˇˇäˇÎéë£k,ÒZ sH‚)Ò«Ÿ≈A+h¯ÇhtpTi“¬≈ »tÆ®„ƒQZS¶•UÎ˙™üü≈Áˇˇˇˇˇˇˇ˛˛|‹ÔªùRÌöÇ[àFaámìG$—™ +Œq‰ xA§ÕΩ1˙Iˇ˚2ƒÂ�F‡Î†ÑKâ +$ 4çqs†jff(–PQ≤4¶°,î��DœGè2 +îßÎF»hÚÔÚÁÛˇˇÁÍ{oÂ/≤]*JΩz@í¨…•`4`±È≥0aA·Ñê"}FU�∑∂�ÂnÙb€Â9gÀ«ÔÌoˇØóK%÷´/R πVÂ;ùîT¢j$äH¡Á¿—q∆TTÇhqˇ˚0ƒÏ�Iˆ�Ökâ £fl‰ïqF?A≈a˘""'`©*gGÍãÛ˛ˇˇˇˇsˇ]ùÙ Íø›9‘∂Oµã¬�È)(tÄâ:XP˛>+È4ÑY" Ÿd»É,≠äH‚åHÏ}{fl˛‹Âˇıˇˇˇˇˇı˚Ã’$%ıÂ≈ïR√`bäö:‘`πÖ®7Q=")f)K≈ñ +4Jx/9≈IQˇ˚2ƒÊ�]†ÑKâ)£üd°qPtCé,q¢ÂñäéºÃ∞≠O[ı|ØÚS˚Áˇˇˇˇ?ˇ˜Ô¨Ùÿ˝ÈoˇÃÈ<®ık∆Â]m’§R@ƒ+õ &Ù£À?4çÆ&#â€Rt(Û˛|æÖe%˜-Øˇˇˇˇˇˇˇ€™ˇ˝˜˝/SÛåÂj9xE± +∏íh0”Êl≈sÀ+®ñ8¬4lòëõˇ˚2ƒÁ�y ˙�ÑÀâ! 4çq€§º}ë2ê™∂ï)5≤ôyèïK¸™HˇˇˇˇˇˇÚØÂ^F±™î ͯı*Æ€A(Í"‘…ˆÑ)™}D®ÄtŒƒa9¿˜DGÆ√≤å@Vç–LëÅ3”⁄çà…D˛Äà3∑íÂó~∑ÀÔ˚ˇˇß˛ÕE™#;£ûj—ÌCøT$”úPf)BÄÃG¡Œ ƒˇ˚2ƒË�H-ˇÄÑ´â§_`ôx—N%≤`0+HW—…‰/Ú˘gˇˇˇˇˇ˛_œˇ˛?%ó+flΩÎn˜ëd…iOö È˙éêõDacÃù∆¡uPù@¯Õ=6XR£X√I£"+%‘Ωü8Oø˘ˇˇˇˇˇˇˆ„ÿÕù}ßO!öÍé‚]ºZlT‰öd—ö—õì†L‚g Ωƒˇ˚0ƒË�He ˙�Öâ#ü§ôq1t¬∂\6v,í(ÕÊÎw˛h˙;Ú˝Ô?ˇˇˇˇˇ˜ˇˇww∆flì?‚◊ˆÓfÍQh¶Ä+ï–îå°b“qÒƒBAñë¡ è18 ±n…(ª$ï +ˇflØ˛Y©ÎøˇˇˇˇˇˇˇˇÁÁª9Òˆ˜tªI(„ï4-�Ä¢Fü—≈É„-9<rò ˇ˚2ƒË»… ˙�Ö+â$_�•xÀ@®§¨√’EÿP«:t∞®J∂W)r£Ú«GïtıˇˇˇˇˇW∫…ˇp´˝nÊ˚¨Ω∏c‘bû"m÷@∆Ygn)ɧ+ä†[fÖñˇîîîûz±ô*ç«äIa� u)+®3µÃº≤b˛©ˇı“Àˇm͈£sfiÍîÊ"©ZÕ'‡ÿ]´—å8nˇ˚2ƒÂ�ÒÄÑKâ0£_•qña¿ �`®úó9–Ã≠kpÁÎÔˇˇ˛~©°fÈë.fi°U€e[°Qé•êrhfHî +√≥∂Œ,CÇ,B! +à°ÇÖ›í,}AÀb: +.,.HƒP ¨Ä“Öù‰ez9Oá5◊ˆˇˇÎomX≥£≤*ä5òXj⁄(1 §(á‡ÿ√p« ǡ˚2ƒÁ»ù"¯�Ö+¡§@ôqôD1ı!\&y€) I¿u(%úL∫(æ•m9rˇˇ˙˝K#Vß’*‰t1B]wàãH‚„ÉÊvrúÃH\Í´9ÜgFUE(ä(π�´gàñÜ<˝Áfl◊œ∑flˇUϘjÎT}»KD•a¢îÂ≥ç#2ãúYEé$c∞c£ ˇ˚0ƒÊ�H!˙�ÑÀÅ §_§•x#„»»qSé@x,ê–��*’ºßDÚG>_¢íu/ıˇˇˇœ‘˛ø◊7Qc’ÀËgbÁr’ËóhAa·#X`†…ò5∏ÖA£≈¥-C L®Q-(ÉH•X��G;≤S¨¶flóÄãsˇ˛ˇÎîˇ/>©õûs'„∏∂†·–‘úÖdj`¡D8ˇ˚2ƒ‰Äp˘†ÑKâE$$°q8*±`≈±XŸR@f§∫‡YıNÿµWOû¡«¢ˆˇˇß•›kùfiqÖ)Y»ïEâòÜAçXHD@»Cjê¡ÈD#8,¢F(∏”âÜTü†JS+ùÂÔù˜œÕ(ˇÔˇG≠W»ƒvJàëDÜfäè ∫ Ò5 ◊!ê`©⁄COà®ˇ˚2ƒÊ�H)ˇÄÑKâ£`4ïq0X>,¢VZÂ˚v_◊˙Ρˇˇˇˇˇ˙ˇˇÎÀ¯ÕÖÛ‹æ°∫Gi ”jx]cº„v}eLóÉ &{Md"6`Ek(^Oeò ººHˆ©êB2ö!��iQŒt∑/k´œ…ˇÀˇˇˇ˛ˇœˇl¯◊∞fl&Øo≠-¬ŸLÆ≠&‰!“èl)㬧¨ˇ˚2ƒÁÄU†Ñ´â§®°ql∑˚∞5$l∫,¯Ö1Ÿu´ƒŒàŒqÁ{fl?˙˝ˇ˚%;*L≥ÍU;N`¶w8W£8r0†l$ ÿÉ¿‘;Ë¡ÿ 1q„#=äÄFQ��f´g[ô|d…˙_≈˝Õ˘ õˇˇ˝Ì€Áo˝ÏΩø)Ãvtw…ô$ÃM¯ï%åd…π&0ÜôAu¶ûˇ˚0ƒÊÄH#†Ñk¡$‰ïp<Í,Ác”ò, é£&:À◊@lÂy�õ≠>Î?ˇˇˇ˛ˇ=ؘ‰ù{í∏1u ¬yP∂¥$‹rHï L∏ô2Ωß…ƒ ü&nöà*qËŒ40F)0A—…S3JS§Qˇ/∑ÀˇóˇˇˇˇˇˇˇˇˇÓ{Yü?e7Ê5™”‡iõ…12t∂E(¥9á ∑ˇ˚2ƒËÄHŸ¿Ñ´â#ü�•q:>¨˙•0Ißbí-3TTÄî‚Mí]xHn X§ß-fl\˛˙Ùˇ˚€FØ˝ö€(ÏÃÃ∑¨ÆÆËcò(C2ÿ {;≤â Gƒ;jù $íâ0�%U&[›œ±yœfi:ˇ[ˇˇˇÁ„ò∫ø5·xÊjí‘”EŒÆ “çÓÜöñ°b9j ,ˇ˚2ƒËÄHµ"ˇ†ÑÀ¿˜°_‰âqTPòQµnJ¿“«1ܵ/S€6�EX‚—w9˝ è~≤Úˇˇˇˇ˘˛ækOÍ´,‰ó£∑;ZpfnÑäÅ—BË:+©8¶pC≠1≠"$ !ÄŸ⁄«,ºæ˝ÚÕÉüˇˇˇˇÚ?˝ªø◊f˘wØo +ŒF∂s>©ÿã¡Æéûè–”<éÅh»®ˇ˚0ƒÍÄIç ˚@ÑÀâ&§_�•xzên<Õ1v[!aXêûÈ0mzÎ≈ÔüΡˇ≠Ø™=RÃÍQÊb«ê\˜c»a3ú<0Á 0ÃauîP éP≈ û$Ê XÄ=L"ä’]Œœˇ»§RÁÀˇˇˇˇˇˇ˜fiœè‚˝ÏaÕ•AFQe˚2=2à ≤¶0%nö“Ljdjœ‡¥)ˇ˚2ƒ„� ˙�ÑÀàÏ# pâqâG�•5&ÚÖ≤≤¿©D‰w>Ã˘YÀت˛ˇˇˇ¯ÔˇáÆ.ÍÌ|ùÊFΩç1j:KÈCÛÖY4HQwÃTç(%Ö(rDEA@êkGi_4≈(@ÉEs“ØQ'©¢üÀ6∑ˇˆß^uDªÃÖ+´â±Dáâ©äéVGë®ä*ì∞√,80§Pˇ˚2ƒÈ� -˝ÄÖĈ£ $çqÈò8&q ÌÁp°AÚq$Ñ%ï �≠H≤YO9Kî§|˘s˛îˇ”Â|éEYS3πA¥Ãs R»yT»f cܨWC›Ñ(qBÕÿŒßÅ:çdù≤µ ^•∫\ÂKÀÛˇˇˇˇˇˇ?Ôü˘Ûq ‚Jg∏ƒÉóÑ∂?;J-WNFl´X_®¨#f9ˇ˚2ƒÈÄI˝ÄÑÀâ$§ïqe%D44¨$˙¬À*˚1R°A∞�'#úØÄãŸÚ¸Ò≥/ÍüˇˆŸrk&jπj¨ZªQ¢ßgráïT.q0QC: +ÿ +.·“ úx∞¡‰qä,i«$ó��a,ÊD´|¸èS◊R4óˇˇUÔMfiîD2ó* µwb"íœ +`wb#£FwB�Z”ˇ˚0ƒÊÄ"˙�ÑÀ¡#§°q Xëd@Ñ`ÇÖlr(0D3ç≤Œ\Ê˚Âï/ÀˇˇˇˇÛ∑˜·‚üˇä€.Nù2)”Ω9|Ïh£X\¿1å<Á1‘¿Ä≤À@•6Y»>ßiLiE �§⁄2§\Ηrè_Ÿóˇˇˇ˝ˇ#€Á|›‹∆öÕ5ßÛ:¬¬2hæ~Üä^\ÉÜ¿≠•ˇ˚2ƒÁ�yˇ@Ñ´àˇ£`4âqe—5V,Úc¥ôlÅGú›i4‚I∑�äÏ0÷駢¡pÀΩøˇ€˛ØΩM"°ÊVgVHT#cë»*íí√√î#BcHÄíôrêò�� +ùúQ9fxàÁ/˙Â/;ˇÔˇˇˆ€ˇÛ¸ÓÌ_ºZ&B‡ÿÜ∂JÙFí éj¶eÚiÔ∞gHˇ˚2ƒÈ�ı˝ ÑÀâ#flïq®ßâ?56-Æÿ!TKü˜·‘˜Qí3Œè^D∑˙[ˇ¶’œ˘X㪪 Á*ëå$Ï•PdW ÇY�ÿ@«Ö#:@©·ÿ9’J%]g-˛/ıÔˇˇˇ˝ˇ›ˇø¬ÂÌøåëΩ©Œ¶‚Ù‘gpÑ∞>9#èE LÑí‘6¡µÜ +Cì¶hî°ˇ˚2ƒÁ�HE!†ÑKâ$_§ôxRa∑g"`é(≈c+b4�+§ë’L∫ñ_;ÍãÚˇÁÔ€ˇˇˇÁÛˇ˝∑;}vg_Ü©1‘Ù¯∂>sÃ4\≥§¥ÂâÚ55.≤CHÃ)µ©âl±ÓΩ¶!•¥�ÊÎ'Î-dŒ∫U⁄ıˇˇˇ˛ªoé›æ˜ÌY∫….π«u]ú/5‰9±S—€ÇË˚“ˇ˚0ƒÁ�·"˚ ÑÀ¿Î `tâqûãáeó7h•M<˚îÛ©˛∞Åˇˇˇˇˇ¸ˇs€<M]M≠Uïch·Ö9mÀ÷·ÄÌB7GâKI≥†¢ê‚…k{aUMd¥�)e'î∫Æ•3-˙>˝¨ˇˇˇˇˇùfiøÙfi{fl⁄̪ãwœhÛó»§72,ôRî»h˛ÕHˇ˚2ƒÈÄIY ˝@ÑÀà˘$ $âqπË[ë¥.EF¶ãŸA‡&G$I∂‰`�D‘Û<Ô,ÿ+®≤)Ê_ØˇÍÃÖ[}XœÙDíÃv"ª°äŒÊfAéresê:ÑE``•0!í·”‰ë0@@Äì…ÃÊ.Àß;ù¡ˇˇ˙≈^⁄S⁄Ú∆íÒ^âW4<sŸ)ÖÖ”ÇdE#êq2I√P ˇ˚2ƒÈ�Hı$¯�Ö+¡$§ôqÄ!‚Öû4∞êÚbÉ"‚8ÿ]áo/øœ6˚ˇˇˇˇˇıT%5°J‰"Eï¬cDH:¥`í „ +Eaqa•bá–YA(PÖÖã™˛Z$®Ä��ш=7ûy’˙ˇóØˇ¶æ€Á≥::,TµVaàec +P8rJëBÃÇ@aˇ˚2ƒÁ�Ha"ˇ ÑÀ¡#fl@°q‰CâNÑ!Ï<¨6Ù≥<–ÏÙs¡.Æˇz˚˚v"QUÓÏ∑¥áiò”ôÖ^$´Qv∏ÄÅV,£Bé;πö®(0ä≈Qàì ≠ÀnÅ(∂ÄE+Ÿ›s¶âuÓ˛˝ˇˇˇˇˇˇflÔ˚ˇ¯¯ı„≥kÌÔN), "\©®d$P∫W`Ë3úR4ñˇ˚0ƒÁ�Ÿ˝ ÑÀà¯!`¥âqèπ®èµZyg‚&DAdD��ô‡õ£WúÔNzÀÔ¸ˇüˇÛÔÚ¸÷Ì⁄Ó@ÿeëÑYTÃʃëAàPtƒ…BÅ.ÅÄÂ÷NÉ∑��`�(™ÍwôSÔÎ]hˇÁˇˇˇˇˇÁ˘û~øñ•}¨•‰øZ}®π»aãÆMî@y∫•¶ŸÊîHÜú~:ˇ˚2ƒË�…π˘�ÖàÒ£üÄïqÏDâ$R&âÜêÚ5b‹ ≠ùw •H�Pr™†^ÀÉÎàıÏjˇˇo¸ÁægøjôN‘kÀgA›*1B{çs)l:fiÿ,ADRM7H��NË»•í»ŒD«g\ÖQeÏflˇ˘{Î{ª´S»Öûé®B3©îz†Ê!D^ÓÃÁQaqdSˇ˚2ƒÊÄHÖˇ@Ñ´à˙£‰ïqú‰0`¥ÎÑÇU+æflæ„øæ•ó˚œˇˇˇˇˇ˝Òı~©ïv52íüç5=M;»™•ïß(∫™ëQÄâÇÇd‰ª¶N,±‘ê/3ä a'„PòõUÈ˧t�.ûåá Ûø¨¸˛_¸ø∑“øÀ±»äägDC;Á$Ö%úDnóRíC¡Òå&àˇ˚0ƒÈ�©ˇÄÑÀÅ +£flÙçq.S+®Å')»Òåí0ÄHBWïFK q‰^óÀˇˇ˚ˇˇˆˇˇQˇÿfi˜ TUÂ\ö]†’≠샢äG™Ï˜B\∆≠Hÿ@“<√ò√Yö 3ìÑ≠}jıK—ùØÀ#˛øˇˇˇ˝Ì{è˚˙ˇ÷¬˚vÏEå(í∞◊Í6P FflU€ÿJc,È!ô= +ÊRˇ˚2ƒËÄ ≠ ˚ Ö+à‚"‡hâqtHå°PÎH8ïÈ‚LÀ0fK˚ˇıæRÚˇˇˇˇˇˇˇˇˇfˇ~F^|xtÛZ9Yäj⁄1≥yiöîDÚ&lzcÑêìMƒS°ÒE4∏&Ö D’�'±MTœwÅ#üÓØmˇˇˇˇˇÌˇıÛˇflrw;„˛flÎJˇ(≠≥Úñ∫$˙ +mJ$ƒMˇ˚2ƒÈÄHe†Ñ´â9$•q^U‘IÃtFêJHúçS¢¶˜˘˚9˛¸øˇˇˇˇˇˇÒÈ›≈•}”≠4;1£∫[î(±#û.M®”Ö†T®⁄c√–ÂPJÖëñ°Ÿ∞<˙AIBJ$“I'P�%r)ûUy/>oü?¸˚ˇˇ»ˇúˇø5Ã≥<¨™Î*ëëÉl@Ϊ +Ë’…ÊV11ˇ˚2ƒ‰Ä}# Ñ´¡"$§ôpΩûhêì +�bFö;%yr∂ÎÎÓ/ˇˇˇˇˇˇ¸˘_?ñxUWùd#”r”≠ehŒ+”j&}CàaFP°∫$Uwå4‹í(cú4ÄP…¡S[$íëÍåˇóÒˇÀOˇˇˇˇˇˇˇ˝Ûº˝ˇˆÈoãÉÓëÈ&≠t–5åƒqvûYcÏı臀 Å& +ct•Üˇ˚0ƒÊ»Õ"¯�Ö+¿˙#_ÄôqûπH¬îÖûA®(ãÆã<¨ç˘πÀüˇˇ˝o˜[ˆ©˚‘Ûˆ|`Õï9•ù≤dÕ\·QπDåN¬ëÑR=¨≤úCh ë|°n`∏†“¢q∑ áRΡ˜/ˇˇˇˇˇˇÔ˛˝fl˜ÔÏfiq€[^mö—yko}˛9ƒüC¡œ&E D‰pRg +D!ˇ˚2ƒÁ�HÈˇÄÑÀà˝§Ä°p£"*^ÁNídEí�±%:¨ÕÖÛÀÂóÛ˛ˇˇˇˇøˇˇ7ˇ,ˇƒn(≠∆õx5≤h˜)LÂF£q$a)Ê2ï&èdÄagÛPÏÅm*´Ìå(Ä�Z{ß<ŒYv≤˛%ˇª∂Ô€y(‘GËÃÚX‚Í2®ñ)‚Gs∏îRåP≥é L&邡˚2ƒÁÄ≠†Ñkâ:£fld•p—Ó§ÔÁë32OUê>uˇˇˇˇˇˇˇœ=Ìœÿ4÷ƒ”•|õt€*¥Q•9¢dr3ë-¢QIÇEX"&â)<”(BâhóMk0D&6“Õé≠(•H��¨‚ëKrÛÒ˚Ôw˚˘ˇÌˇ+˘Ès”Ïœáh£GÜÍBBSg±n�ÓN<ˇ˚2ƒÂÉ«ô˙�Àâ.§^¿•x�¡ÅpÅ„;ê∫∆‚�‡≠∏‰~âM˙πˇ_ÌˇˇˇˇˇˇÛ˛˝ù∑’˝¢ù¥ù„»@¯ù.hmN¬)ÈéòÍ”œ!…ÓQßif¢QQè¬/–jÉnz¬»�ñ�"ìë3ûâyxóØ€˛flˇÙ“Z±Ù™÷Ïf0”V0]ê<&‚ £ƒêÍ"8H +À)ƒà.ˇ˚0ƒÂ�G1"¸�ÑÀ¡§∞ôq 쌆:â™új¡ÁÚ¯cœˇˇˇˇˇˇÌπ?{tû‘Zö_g-eNMµjM4:Ik»€ình Âåü¬≈äJ3âïDS%0ô"m&íòí˚ÀÀ¸zˇ +˛ˇˇˇˇˇˇ˝˙∫fl+Õ⁄´fløÁüIπ∆h#∏√RbWO@´∫öO]x4ôSRˇ˚2ƒË�G°@ÑKâ<$¿•q£€oH¢≤Hdjä[=dádDòÄ�ãZì ´2s˘Ø◊◊ˇˇˇO?œ˝V˜qÕS‹¶∫⁄SflE†™êYK#‚·‹a(D{Z∏Ö"™Q„]≈úEœ,‰◊üø¨ë_ï©gˇˇˇˇˇˇˇˇˇ˛Á˛∆oá‚Úf‘ÊÌ≈cSíU®õ4 Á‚S.tH€H®MDˇ˚2ƒÊ�H#†Ñk¡§§ôq@ÍA‹‰äÖaâ, HWù 7DÚz9,%ØüÔˇˇˇˇ∑ˇÀud˛gˇ≈^-„ZÃL⁄⁄p„‰>^ç:!FìΩ?Y˛“»¶R±á◊c\avêE∫JL£H�+£ hÙ#:EÛ‰^ˇ””?OˇüˇˇÁÂf˚r»—÷•"à„+ë(%∂âPqû:¨ˇ˚2ƒÊà] ˇÄÑ´â$_@•x Iù1BÅ‘0Çê&p3ïŒÂ/9n˘ãˇˇ¸ˇˇˇ˝øflˇ˝∑Á›˝(πÿââV≠zπ%)A2—4€Ufl,$”Dé]iK0,Œhí{¡ˆ≤RÁÊ•ë2X �Dhò≥º{Ë»‰\ß◊Ú󡲽πœÏ$+8yƒÎO:˚G™TB�b7¶d8õ0ˇ˚0ƒÊÄa˙�Ö+â#ü®°qÇÙàaUÑ}Ÿ◊ØıØ) +F∂Ρˇˇˇˇˇˇˇ·ŸΩNmºÓÚÎVÂ2‘’ÚÄ»¨∂[ô˚qCh(˚.Vã L¢Œ8Û%é@9&aºã*∆È~ÔÁˇˇˇˇˇˇflˇ˝é‘wrÚfi˘-{ 5≠ê&ìD•Zm¨I(?π4âU<+BB‚®Ÿ5Qˇ˚2ƒÂGŸ¸�ÑÀÅ#_ ôq®”.$#ô®∆BÅ“%ÄR%E8¡fitSŒb◊Î?oflNflˇ˘ˇ˛æólŒ⁄R¨B©–¥≥éÕ(RÇ´HÓc¡÷H¡@˙%ö*™öò ��Ê¡ê≤Èg,ÅÜP&È∫ÁAB†En†¯LéI<n`'@ƒ‚.@HhÇ®PaN∫bÂH¢9ª2ˇ˚2ƒÊÄ!†Ñkâ #fl§ôqÃIÚ.'A‡§Eà±êÁ{Àc†\Pâ,äã∆&ø Éû_>_Ú}òóUG˛h¥…ƒ`h§å©-ø¸æ¶37‚S†®�# ≈$ò4≥¢!è√ù´vtKflñ=ƒ^{÷ÍŒˇQ‚9oÚ∑iLAME3.99.5™™™™™™™™™™™™™™™™™™™™™™™™ˇ˚2ƒÊ�†Ñkâ$@ôq™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ˇ˚0ƒËÄI ¯�Ö+àÀü‡∂Ç ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ˇ˚2ƒÓ�’-9ô��ëÄ`´Ç�™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ \ No newline at end of file diff --git a/resources/media/ringback.ogg b/resources/media/ringback.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7dbfdcd017bb8e2159aa79836943826214822d2d --- /dev/null +++ b/resources/media/ringback.ogg @@ -0,0 +1,37 @@ +OggS���������é#≥y����`Ønlvorbis����D¨������Ī������∏OggS����������é#≥y���?⁄@ˇˇˇˇˇˇˇˇˇˇˇˇˇ2vorbis ���Lavf55.48.100������encoder=Lavc55.69.100 libvorbisvorbisBCV���cT)FôR“Jâsî1FôbíJâ•ÑBHùsS©9◊úk¨πµ ÑSP)ôRéRicê)ôRKI%t:'ùc[I¡÷òkãA∂Ñ öRL)ƒîRäBSå)≈îRJB%t:ÊSéJ(A∏ús´µññcã©tíJÁ$dLBH)ÖíJ•SNBH5ñ÷R)sRRjAË ÑB∂ Ñ Ç–êU���¿@≤ +�P��ä°äÑܨ�2��†(é‚(é#9ícI≤ +�����¿pIë…±$K“,K”DQU}’6UUˆu]◊u]◊u 4d���@Hßô• ¬d Y� ���F(¬BCV����b(9à&¥Ê|séÉf9h*≈Êtp"’ÊIn*ÊÊúsŒ9'õs∆8Áúsärf1h&¥ÊúsÉf)h&¥ÊúsûƒÊAk™¥Êús∆9ßÉqFÁúsö¥ÊAj6÷Êús¥¶9j.≈Êús"ÂÊIm.’ÊúsŒ9ÁúsŒ9Áús™ßspN8Áús¢ˆÊZnBÁús>ß{sB8ÁúsŒ9ÁúsŒ9ÁúsÇ–êU����A6Üqß Hü£ÅEài»§›£√$hr +©G££ëRÍ îT∆I)ù 4d����!ÑRH!ÖRH!ÖRà!Üb»)ßúÇ +*©§¢ä2 ,≥Ã2À,≥Ã2Î∞≥Œ:Ï0ƒC≠¥KMµ’Xc≠πÁúk“Zi≠µ÷J)•îRJ) Y�Ä��dêAF!ÖRà!¶úr )®†BCV�Ä�����<…sDGtDGtDGtDGtD«s<GîDIîDI¥LÀ‘LOU’ï][÷e›ˆmav›˜ufl˜u„◊ÖaYñeYñeYñeYñeYñeYÇ–êU����ÄB!ÖRH!•cÃ1Á†ìPB 4d��� ���¿Q≈q$Gr$…í,Iì4K≥<Õ”<MÙDQM”TEWtE›¥EŸîM◊tMŸtUYµ]Y∂mŸ÷m_ñmfl˜}fl˜}fl˜}fl˜}fl˜u Y�H��ËHé§Hä§Hé„8í$°!´�����(ä£8é„Hí$Iñ§IûÂY¢fj¶gz™®°!´��@�������(ö‚)¶‚)¢‚9¢#J¢eZ¢¶jÆ(õ≤Î∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫ÆÎ∫.≤ +�ê��–ë…ëIëIë…BCV�2���p«ê…±,K”<Õ”<MÙDOÙLO]—BCV�Ä�������0$√R,Gs4IîTKµTMµTKUOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU5M”4M 4d%���¿bç¡Â !%%Âfi¬ìû1&!µ^!ëífi1Éû2¢rfiB„É Y�D��∆ «s»9G©ì9Á®tîÁ•éRg)≈òbÕ(ïÿR¨çséRG≠£îb,-vîRç©∆����,ÑBCV�Q��Ñ1H)§bå9ßúCå)ÁòsÜ1Êsé9Á†tR*ÁútNJƒsé9ßúsR:'ïsNJ'°��Ä��Ä�°–ê@ú�ÄAí<OÚ4Qî4OESt]Q4]◊Ú<’ÙLSU=—TUSUmŸTUYñ<œ4=”TUœ4U’TUY6UUñEU’m”uu€tU›ñm€˜][vQUm›T]€7U◊ˆ]Ÿˆ}Y÷ucÚ<UıL”u=”te’um[u]]˜LSñM◊ïe”um€ïe]weŸ˜5”t]”UeŸt]ŸveW∑]Yˆ}”uÖflïe_WeYv]˜Ö[◊ïÂt]›WeW7VYˆ}[◊Ö·÷uaô<OU=”t]œ4]Wu]_W]◊÷5”îe”umŸT]YveŸ˜]W÷uœ4eŸt]€6]Wñ]Yˆ}Wñu›t]_WeY¯UWˆuY◊ï·÷m·7]◊˜UYˆÖWñu·÷uaπu]>Uı}SvÖ·tefl◊ÖflYn]8ñ—u}aïm·XeY9~·Xñ›˜ïet]_XmŸVYÜ_¯ùˆ}„xu]n›ÁÃ∫Ô«Ô§˚ ”’mcô}›Yf_wé·:ø„©™ØõÆ+ß,øÌÎ∆≥˚æ≤åÆÎ˚™,ø*€¬±ÎæÛ¸æ∞,£Ï˙¬jÀ¬∞⁄∂1‹æn,øpÀkÎ 1ÎæQ∂u|_x +√Ûtu]yf]«ˆut„G8~ ��Ä�Ä� @°!+Ä8�è$â¢dY¢(Yñ(ä¶Ë∫¢h∫Ƨi¶©iûiZögö¶i™≤)öÆ,iöiZûföößô¶höÆkö¶¨ä¶)À¶j ≤iö≤Ï∫≤mªÆl€¢i ≤iö≤lö¶,ª≤´€ÆÏÍ∫§Y¶©yûijûgö¶j ≤iöÆ´yûjzûh™û(™™j™™≠™™,[ûgööË©¶'ä™j™¶≠ö™*À¶™⁄≤i™∂l™™mª™Ï˙≤mÎ∫i™≤m™¶-õ™j€ÆÏÍ≤,€∫/iöijûgööÁô¶iö≤lö™+[ûßöû(™™Êâ¶j™™,õ¶™ ñÁô™'ä™Íâûkö™*À¶j⁄™iö∂l™™-õ¶*ÀÆm˚æÎ ≤n™™lõ™jζj ≤lÀæÔ ™Óä¶)À¶™⁄≤i™≤-€≤ÔÀ≤¨˚¢i ≤i™≤m™™.À≤m≥l˚∫hö≤m™¶-õ™*€≤-˚∫,€∫Ô Æo´™¨Î≤-˚∫Ó˙ÆpÎ∫0º≤l˚™¨˙∫+€∫oÎ2€ˆ}D”îeS5m€TUYveŸˆe€ˆ}—4m[UU[6M’∂eYˆ}Y∂ma4MŸ6UU÷M’¥mYñma∂e·veŸ∑e[ˆu◊ïu_◊}„◊e›Ê∫≤ÌÀ≤≠˚™´˙∂Ó˚¬pÎÆ +��p��0°≤�à��åaå1çRŒ9°Q 9Á dŒA!ïÃ9!îí9°îî2Á îíR°îîZ!îîRk��8��ÿ†)±8@°!+ÄT��É„XñÁô¢j⁄≤cIû'䙩™∂ÌHñÁâ¢i™™m[û'䶩™ÆÎÎöÁâ¢i™™ÎÍ∫hö¶©™ÆÎ∫∫.ö¢©™™Î∫≤Æõ¶™™Æ+ª≤Ïζ™™™Î Æ,˚¬™∫Æ+À≤mά∞™ÆÎ ≤l€∂o‹∫ÆÎæÔ˚¬ë≠Î∫.¸¬1G�‡ �@6¨épR4Xh»J� �Ä0!ÉB!ÑêRJ!•î��0‡��`B(4dE�'��C)§îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRH)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ©§îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)ïRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îRJ)•îR +�êäp�êz0°≤�H��åQJ)∆úÉ1Êc–I()bÃ9∆îíRÂÑRi-∑ 9!§‘RmôsRZã1Ê3Á§§[Õ9áRRã±ÊökÓ§¥VkÆ5ÁZZ´5◊úsÕπ¥kÆ9◊úsÀ1◊úsŒ9ÁsŒ9ÁúsŒ�‡48�Äÿ∞:¬I—X`°!+ÄT��•sŒ9ËRå9ÁÑ"ÖsŒ9!Tå9ÁtB®sÃ9!Ñê9ÁÑB!s:Ë ÑBÑB°îŒA!ÑJ(!ÑB!Ñ:!ÑB!ÑB!ÑRJ!ÑB °îP��`Å�@Ä ´#úç≤���Äñ†RŒÑAéAè A Q3 BL9—ôbNj3Sê9ùtjAŸ^2��Ä � ¿ (¯Bà1��Aàà ÖU∞¿†Ê¿DÑD�êò†Hª∏Ä.\–≈]BBÇX@ 88·Ü'fiÑú†STÍ ������‡�‡†�""ö´∞∏¿»–ÿ‡Ë������¯��8>ÄààÊ*,.02468:<��������ÄÄÄ�����@���ÄÄOggS���¨������é#≥y���¸2°≈3. * !" / ! ! ! "1îÌÂ∂˝ø'd∂ÚÚzÒ≈h4™JJ ˙Ífi√á@⁄MÙN˙‡Dú3}Œ◊j~n�������û\ØgY·?œÛ|∑õ◊Ä��fiÍfi≥wÅ∫õË7‹ÒüVσ3�������� y/�fi⁄fi≥wÅ∂;ÀNóqV‹O��������“‹�fiÍfi√á@=&ÚÑ≈8∞ ´y�������Ä¿íØ��˛Ífi√ª@›]Ñ'ä>∞‡Î=��������(ˆ�˛˙fiÌá@ù&jÉX PWQ��������‡�˛Ífi√ª@=Œ‚Ñˇ�X p_\��������ô��fiÍfi3wÅvL‘ '˛∞`û|�������@‡≥√�fi⁄fi3wÅvúıNóı�¨8’fl�������P∞˚W�fiÍfi3ÅvLtNóu�V‹œü���������¬◊�fiÍfiɪ@Y&48Qå'�������ÄÚ��·ö.E�˛˙fiÉá@]&“Ä +X ı˛��������Tª�˛˙fi√á@=&ÍÑˇ)`5@]Ò��������w +�fiÍfi3wÅzL‰ '˛∞‡~˜��������‡œè�fi⁄fi≥wÅ∂s‡D1¨x{‚ +��������“2�fi⁄fi≠ª@ù∆˙'˛∞‡TØ +�������@AM �ˆ⁄fi≠ª@:.^‡VÎδ'Í∫˛ÂT;�����Ä›ºKÔ˜¸ÓÏ]úÌÂ≤[ˇXC_ÕEΩ∆flcÛø<˝oÍ_ÃE|flÛÓ·â,s¸%±›ENÃÿ›öªXy-€M�ö»˝g,ª7J9XI���®P L‡ `‚H�P¿û»˝Ô,_∫���™P†�$–Ä(tÄ���û»˝Ô,_∫���™P°–Ë�S� t�Ä�,û»˝Ô,_∫�n���°*–`ĆS�Ä :–�@Lû»˝Ô,_∫��� +!H�–1tP�têÄ�û»˝Ô,_∫�n��� T(Ñ¿ÿ� x�–@¿Éû»˝Ô,_∫�n���T°@x�h(¿�h:Ä¿√ñ»˝Ô,_∫���™�hÄ�� (x�ÄÆ�º÷*MÄ!˝~ÍsYº÷*ÕÄ](∫sÔNN&¥‘"Ú����Oä´‚]ÀÓe:ÅqflNüÈo:«*∆7≠YÑcfi}}�¨:ûA¨∂ñ¨%≈^±g◊v+g%–g⁄⁄fi’ª@û"~Å@B�@�����∞Ê„Y@˚√ˆˇ5©«˚Ø/$íºΩΩy� �fiÍfi≠ª@[&pßN +�������ÄÛj�PHŒÙ�fi⁄fi≠ª@[∆pR'�������@6+��P≤ÒP�æÍ^̪@^&zpGipR��������‹á5��®´=�˛Ífiïª@ÈŒzp¢¨®?‰…���������ª{�˛˙fi’á@ô&28ÒßÄ’�ó��������s�˛Ífiïª@ÌŒ:pr+¿jÄ∑…_�������Äg\�fiÍfi≠ª@]&VpGY‡§��������XS>��‡Ê¯u�fi⁄fi≠ª@Y∆:p¢48)��������Œœ��{ØV�fiÍfi≠á@]&.p¢,pR��������òæ�ÿx¥†�˛Ífiïª@Ì.:p≤ˇ¿jÄØèæ��������‘aÉ�˛˙fiïª@È&:p«?�V‘W|��������`o^�˛Ífiïª@ÈŒ*8Q‰'�������@fl*�¿–—&�fiÍfi’ª@ù&:p≤~`5¿˜«’��������ïˆM�æ⁄^≠ª@û∆zp¢Vújˇ��������¿Mn�æÍ^Ìá@9*.$'-1'�������¿y‡P‡ÓËí �ˆ⁄fi≠ª@Y.‡$ ! +�Ñ����LÆAÓøòΩæüŒÖ€uãús˛˚∑zÄ ¿îÌ/‘vˆˆ�ò∆⁄íᨡøˇ˛˝˚◊'Ãö5kñ�OggS��¿Z�����é#≥y���4À≥∏-!! !! !!! !! !!\€¸GÔ˘ÈX—Ñ÷Zkoooo¬˙z√€øˆÜu8˙ö»˝Ô(flmW¿��@ +`�∞–Å�òÄéû»˝Ô,_∫���™PAhÄL Ä<¿‰ �û»˝Ô,_∫�n���T°@¿0!�,†�<h�‡-�û»˝Ô,_∫�n���T°@†É:� P�x��hû»˝Ô,_∫�n���T°�ò@xò�t– †�†�û»˝Ô,_∫�n���T°@Äê�%�,0x�hÄ û»˝Ô,_∫���™Pt¿––�†�@P†û»˝Ô,_∫��� +ÖÒ� (Ä�@YÄ�¿Çû»˝Ô,_∫�n���T°@tÄÖ$� ê�òtÄ�û»˝Ô,_∫�n���Tц�4¿É Äá–�êÄ≈û»˝Ô,_∫���™! �–�:@É�4Ä@�û»˝Ô,_∫���™P°L¿íÄÄ�–<� †û»˝Ô,_∫���™�¿ !–�†·`Bû»˝Ô¨_∫���™PÅt∞�t�ñ�†`†4�û»˝Ô,_∫���™P†$∞Ë� Ä,(��û»˝Ô,_∫���™P∞Ä @H¿4�‡È�û»˝Ô,_∫�n���T°�∞P�†`‚X4�L�û»˝Ô,_∫�n���T°¿–�–)@ê �∞@�¿û»˝Ô,_∫�n���° +Ç–)�ê4�,:X� I–� �û»˝Ô,_∫�n���T°⁄�¿D¿¿�x�†û»˝Ô,_∫���B((�†c@P�P$�(`xû»˝Ô,_∫�n���T°ÇH�L Y�¿Ñ�`4�û»˝Ô,_ö�n���T°@ �@ËL0 �0I�û»˝Ô¨_∫����™P Ë¿†$@Í¿Ä∞–û»˝Ô,_∫�n���° + † + <�–�ª� †¿û»˝Ô,_∫��� +ÖB@ ÅÄ�K� @�û»˝Ô,_∫���PX�`°� �:¿Ñ�@C�û»˝Ô,_∫�n���TÄÖ Ä�K†�û»˝Ô,_∫�n���T°b&ÄL`a +�–(� òû»˝Ô,_∫�n���Ñ*Ä� ËÄ–Ax‡AÄû»˝Ô,_∫���™PùÄ«†¿(†–�û»˝Ô,_∫��ÄPÖë�:� ·!∞Ä� û»˝Ô,_∫���™�B� �,(@–� L� û»˝Ô,_∫���™�L(�¿ Ä–û»˝Ô,_∫���*B4�x†�‡Åh�,(�û»˝Ô,_∫���™P� °HH�hò�`û»˝Ô,_∫�n���° +Ç,@±�‡°�ËÄ �$h�û»˝Ô,_∫�n���B(x`¬� +‡†Ëû»˝Ô,_∫�n���T�$@A¿ê¿„¡�û»˝Ô,_∫���™PA�ø�¿†É ÄH û»˝Ô,_∫���B +D¿ÍÄ–�Ë�‚¿É û»˝Ô,_∫�n���TòêÄ�&ˆ @L�û»˝Ô,_∫�n���T°@@h�(L�∞ÄD–�`û»˝Ô,_∫�n���T°@hÄ–¡0K0‡=�OggS�¿�����é#≥y���€åû+! ! ! !! !!!!"õ°û»˝Ô,_∫���B +<‡5@tĆ¿ û»˝Ô,_∫�n���T°@<Ä ò� +0<PÄ�@�û»˝Ô,_∫�n���T°@@Y�&Ä�¿–`tÄ û»˝Ô,_∫���™P ‡Aò–Ä∞Ät�0Aû»˝Ô,_∫���™P ‡�$¿3Ä�Ö�û»˝Ô,_∫�n���T°@H�<Ätê� �P&�û»˝Ô,_∫�n���Tƒ�@x–@@&�û»˝Ô,_∫�û���B +Ñ�0¡–t�H�:ÄÖÄû»˝Ô,_∫�n���!T°@�©��� Ä (Ä�û»˝Ô,_∫�n���T°:` +�$L�Äÿ�û»˝Ô,_∫�n���T0· Ä †—@Ɇû»˝Ô,_∫�n���T°@`“òÄ¿C4��û»˝Ô,_∫���™P x�˘�Ä–'†$�$H�û»˝Ô,_∫�û���®B!†X�¥@�ê†@gLÄû»˝Ô,_∫�n���T°@:Ä0$@ÉxÄ¿û»˝Ô,_∫�n���° +≤Ä x@¿≥�–�$ �û»˝Ô,_∫���™P`�Ä –ò� H@–@@�û»˝Ô,_∫���B(L–@†É�0@Xû»˝Ô,_∫���™Ò�( �X@.@�†�§�Ä `û»˝Ô,_∫���™P �H@#¿H� +`�û»˝Ô,_∫��ÄPÖA�LÄÔ�ËÄ`Å�Xû»˝Ô,_∫���™P `¢††∞†<`�û»˝Ô,_∫���™P∞‡A�∞Äı�$�êP�û»˝Ô,_∫���B +:@¬¿Ñ0A†�:û»˝Ô,_∫�n���T°@–°ÄÄÖ ¿t�û»˝Ô,_∫���™P `¬É:Ä¿(�X�û»˝Ô,_∫�n���T°�Ç Ä X�‡¡‰ò�4û»˝Ô,_∫�n���T°� �OÄáÄ � $<�<û»˝Ô,_∫���™P� +†�x4@��û»˝Ô,_∫���™PAÄ ê� + +�<�iÄ�L�û»˝Ô,_∫�n���TP†0ë� @$ –L�<û»˝Ô,_∫�n���T°$�x@@†�Ë�X�û»˝Ô,_∫�n���T°@@,�h<¿Ä`vÄ$�û»˝Ô,_∫���™P†�:(¿††0&�xû»˝Ô,_∫��ÄPÖÅ�% @@tx�`Z�û»˝Ô¨_∫��ÄPÖAÄ †É@c,�Xt�û»˝Ô,_∫�n��� T(�ã@†@Ë�$û»˝Ô,_∫���™P}`Ç¿Ç@R¿¿hÄû»˝Ô,_∫�n���°B!Ë�Ä$Ä Å�û»˝Ô,_∫�û���®B–i�:�ù�¿BáxÄ�û»˝Ô,_∫���B +d,`¿:@É¿^ò›^GÔ¿§”.⁄eÍ·P$IÇjæ˝Êˇˇˇ˜Ú¯ïK^®É˙≈∑ÎíÍÿ9’¸˝´úøˇbÄ‹[⁄¨®h÷¨Y≥Œfløˇ˛˝˚˜Ôflø&≥fÕö5k÷,Œfløˇ˛≠ËYLfÕö53+‡˙ˇ˜Ôflø´f1ô5+n0k�ˇˇ˛˝´�ÃäN�¯˘˚∑¿‡î�7P�^»=◊˘{ŒXQú-b◊{Œ9ÁúsŒ9'� Àí$âPÌ;rƒc<œ3™«øy<œcå1ü7؉y{{{{{≈ıÜw˚›n^C√:�ooˇ‹M˙Á˛πX�÷◊◊◊◊◊◊◊fifififififififiŒ¿⁄˙˙˙˙z1�œ€€€€ �À˙˙˙˙˙∫ÓºΩΩΩ•�¿≤æææææ�<ooo�∞∂æææ∏”m� \ No newline at end of file diff --git a/resources/qml/delegates/MessageDelegate.qml b/resources/qml/delegates/MessageDelegate.qml index 17fe7360bfec0469fda64e9b8be1e761c0c491ac..52e628be9cd840b62bf699f7b0c2b60e6e386100 100644 --- a/resources/qml/delegates/MessageDelegate.qml +++ b/resources/qml/delegates/MessageDelegate.qml @@ -90,6 +90,24 @@ Item { text: qsTr("%1 created and configured room: %2").arg(model.data.userName).arg(model.data.roomId) } } + DelegateChoice { + roleValue: MtxEvent.CallInvite + NoticeMessage { + text: qsTr("%1 placed a voice call.").arg(model.data.userName) + } + } + DelegateChoice { + roleValue: MtxEvent.CallAnswer + NoticeMessage { + text: qsTr("%1 answered the call.").arg(model.data.userName) + } + } + DelegateChoice { + roleValue: MtxEvent.CallHangUp + NoticeMessage { + text: qsTr("%1 ended the call.").arg(model.data.userName) + } + } DelegateChoice { // TODO: make a more complex formatter for the power levels. roleValue: MtxEvent.PowerLevels diff --git a/resources/res.qrc b/resources/res.qrc index 439ed97bbfc728af24aed3252480c0899cbc0276..3fd3fc9658a071e2c06c5633f9d75d0b4c908d1e 100644 --- a/resources/res.qrc +++ b/resources/res.qrc @@ -136,4 +136,9 @@ <file>qml/delegates/Placeholder.qml</file> <file>qml/delegates/Reply.qml</file> </qresource> + <qresource prefix="/media"> + <file>media/ring.ogg</file> + <file>media/ringback.ogg</file> + <file>media/callend.ogg</file> + </qresource> </RCC> diff --git a/src/ActiveCallBar.cpp b/src/ActiveCallBar.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a5ef754df7bda2b66b9a64fc6d716952f4851379 --- /dev/null +++ b/src/ActiveCallBar.cpp @@ -0,0 +1,74 @@ +#include <QHBoxLayout> +#include <QIcon> +#include <QLabel> +#include <QString> + +#include "ActiveCallBar.h" +#include "WebRTCSession.h" +#include "ui/FlatButton.h" + +ActiveCallBar::ActiveCallBar(QWidget *parent) + : QWidget(parent) +{ + setAutoFillBackground(true); + auto p = palette(); + p.setColor(backgroundRole(), Qt::green); + setPalette(p); + + QFont f; + f.setPointSizeF(f.pointSizeF()); + + const int fontHeight = QFontMetrics(f).height(); + const int widgetMargin = fontHeight / 3; + const int contentHeight = fontHeight * 3; + + setFixedHeight(contentHeight + widgetMargin); + + topLayout_ = new QHBoxLayout(this); + topLayout_->setSpacing(widgetMargin); + topLayout_->setContentsMargins( + 2 * widgetMargin, widgetMargin, 2 * widgetMargin, widgetMargin); + topLayout_->setSizeConstraint(QLayout::SetMinimumSize); + + QFont labelFont; + labelFont.setPointSizeF(labelFont.pointSizeF() * 1.2); + labelFont.setWeight(QFont::Medium); + + callPartyLabel_ = new QLabel(this); + callPartyLabel_->setFont(labelFont); + + // TODO microphone mute/unmute icons + muteBtn_ = new FlatButton(this); + QIcon muteIcon; + muteIcon.addFile(":/icons/icons/ui/do-not-disturb-rounded-sign.png"); + muteBtn_->setIcon(muteIcon); + muteBtn_->setIconSize(QSize(buttonSize_ / 2, buttonSize_ / 2)); + muteBtn_->setToolTip(tr("Mute Mic")); + muteBtn_->setFixedSize(buttonSize_, buttonSize_); + muteBtn_->setCornerRadius(buttonSize_ / 2); + connect(muteBtn_, &FlatButton::clicked, this, [this]() { + if (WebRTCSession::instance().toggleMuteAudioSrc(muted_)) { + QIcon icon; + if (muted_) { + muteBtn_->setToolTip("Unmute Mic"); + icon.addFile(":/icons/icons/ui/round-remove-button.png"); + } else { + muteBtn_->setToolTip("Mute Mic"); + icon.addFile(":/icons/icons/ui/do-not-disturb-rounded-sign.png"); + } + muteBtn_->setIcon(icon); + } + }); + + topLayout_->addWidget(callPartyLabel_, 0, Qt::AlignLeft); + topLayout_->addWidget(muteBtn_, 0, Qt::AlignRight); +} + +void +ActiveCallBar::setCallParty(const QString &userid, const QString &displayName) +{ + if (!displayName.isEmpty() && displayName != userid) + callPartyLabel_->setText("Active Call: " + displayName + " (" + userid + ")"); + else + callPartyLabel_->setText("Active Call: " + userid); +} diff --git a/src/ActiveCallBar.h b/src/ActiveCallBar.h new file mode 100644 index 0000000000000000000000000000000000000000..dd01e2ad749841a1fbc7e5f456eae78b26ca6bf6 --- /dev/null +++ b/src/ActiveCallBar.h @@ -0,0 +1,26 @@ +#pragma once + +#include <QWidget> + +class QHBoxLayout; +class QLabel; +class QString; +class FlatButton; + +class ActiveCallBar : public QWidget +{ + Q_OBJECT + +public: + ActiveCallBar(QWidget *parent = nullptr); + +public slots: + void setCallParty(const QString &userid, const QString &displayName); + +private: + QHBoxLayout *topLayout_ = nullptr; + QLabel *callPartyLabel_ = nullptr; + FlatButton *muteBtn_ = nullptr; + int buttonSize_ = 32; + bool muted_ = false; +}; diff --git a/src/Cache.cpp b/src/Cache.cpp index d9d1134e3e68338b9fa0ffd3388023c1541db236..d435dc56e11c4db8c4e0ec9713e3a0f441ec7e81 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -1364,6 +1364,9 @@ Cache::getLastMessageInfo(lmdb::txn &txn, const std::string &room_id) if (!(obj["event"]["type"] == "m.room.message" || obj["event"]["type"] == "m.sticker" || + obj["event"]["type"] == "m.call.invite" || + obj["event"]["type"] == "m.call.answer" || + obj["event"]["type"] == "m.call.hangup" || obj["event"]["type"] == "m.room.encrypted")) continue; diff --git a/src/CallManager.cpp b/src/CallManager.cpp new file mode 100644 index 0000000000000000000000000000000000000000..67aabced28d7208485c17971af6bad75cec1bb4d --- /dev/null +++ b/src/CallManager.cpp @@ -0,0 +1,315 @@ +#include <chrono> + +#include <QMediaPlaylist> +#include <QUrl> + +#include "CallManager.h" +#include "Cache.h" +#include "ChatPage.h" +#include "Logging.h" +#include "MainWindow.h" +#include "MatrixClient.h" +#include "UserSettingsPage.h" +#include "WebRTCSession.h" + +#include "dialogs/AcceptCall.h" + +Q_DECLARE_METATYPE(std::vector<mtx::events::msg::CallCandidates::Candidate>) +Q_DECLARE_METATYPE(mtx::responses::TurnServer) + +using namespace mtx::events; +using namespace mtx::events::msg; + +// TODO Allow altenative in settings +#define STUN_SERVER "stun://turn.matrix.org:3478" + +CallManager::CallManager(QSharedPointer<UserSettings> userSettings) + : QObject(), + session_(WebRTCSession::instance()), + turnServerTimer_(this), + settings_(userSettings) +{ + qRegisterMetaType<std::vector<mtx::events::msg::CallCandidates::Candidate>>(); + qRegisterMetaType<mtx::responses::TurnServer>(); + + connect(&session_, &WebRTCSession::offerCreated, this, + [this](const std::string &sdp, + const std::vector<mtx::events::msg::CallCandidates::Candidate>& candidates) + { + nhlog::ui()->debug("Offer created with callid_ and roomid_: {} {}", callid_, roomid_.toStdString()); + emit newMessage(roomid_, CallInvite{callid_, sdp, 0, timeoutms_}); + emit newMessage(roomid_, CallCandidates{callid_, candidates, 0}); + }); + + connect(&session_, &WebRTCSession::answerCreated, this, + [this](const std::string &sdp, + const std::vector<mtx::events::msg::CallCandidates::Candidate>& candidates) + { + nhlog::ui()->debug("Answer created with callid_ and roomid_: {} {}", callid_, roomid_.toStdString()); + emit newMessage(roomid_, CallAnswer{callid_, sdp, 0}); + emit newMessage(roomid_, CallCandidates{callid_, candidates, 0}); + }); + + connect(&turnServerTimer_, &QTimer::timeout, this, &CallManager::retrieveTurnServer); + turnServerTimer_.start(2000); + + connect(this, &CallManager::turnServerRetrieved, this, + [this](const mtx::responses::TurnServer &res) + { + nhlog::net()->info("TURN server(s) retrieved from homeserver:"); + nhlog::net()->info("username: {}", res.username); + nhlog::net()->info("ttl: {}", res.ttl); + for (const auto &u : res.uris) + nhlog::net()->info("uri: {}", u); + + turnServer_ = res; + turnServerTimer_.setInterval(res.ttl * 1000 * 0.9); + }); + + connect(&session_, &WebRTCSession::pipelineChanged, this, + [this](bool started) { + if (!started) + playRingtone("qrc:/media/media/callend.ogg", false); + }); + + connect(&player_, &QMediaPlayer::mediaStatusChanged, this, + [this](QMediaPlayer::MediaStatus status) { + if (status == QMediaPlayer::LoadedMedia) + player_.play(); + }); +} + +void +CallManager::sendInvite(const QString &roomid) +{ + if (onActiveCall()) + return; + + std::vector<RoomMember> members(cache::getMembers(roomid.toStdString())); + if (members.size() != 2) { + emit ChatPage::instance()->showNotification("Voice/Video calls are limited to 1:1 rooms"); + return; + } + + std::string errorMessage; + if (!session_.init(&errorMessage)) { + emit ChatPage::instance()->showNotification(QString::fromStdString(errorMessage)); + return; + } + + roomid_ = roomid; + setTurnServers(); + session_.setStunServer(settings_->useStunServer() ? STUN_SERVER : ""); + + // TODO Add invite timeout + generateCallID(); + const RoomMember &callee = members.front().user_id == utils::localUser() ? members.back() : members.front(); + emit newCallParty(callee.user_id, callee.display_name); + playRingtone("qrc:/media/media/ringback.ogg", true); + if (!session_.createOffer()) { + emit ChatPage::instance()->showNotification("Problem setting up call"); + endCall(); + } +} + +void +CallManager::hangUp() +{ + nhlog::ui()->debug("CallManager::hangUp: roomid_: {}", roomid_.toStdString()); + if (!callid_.empty()) { + emit newMessage(roomid_, CallHangUp{callid_, 0, CallHangUp::Reason::User}); + endCall(); + } +} + +bool +CallManager::onActiveCall() +{ + return session_.isActive(); +} + +void CallManager::syncEvent(const mtx::events::collections::TimelineEvents &event) +{ + if (handleEvent_<CallInvite>(event) || handleEvent_<CallCandidates>(event) + || handleEvent_<CallAnswer>(event) || handleEvent_<CallHangUp>(event)) + return; +} + +template<typename T> +bool +CallManager::handleEvent_(const mtx::events::collections::TimelineEvents &event) +{ + if (std::holds_alternative<RoomEvent<T>>(event)) { + handleEvent(std::get<RoomEvent<T>>(event)); + return true; + } + return false; +} + +void +CallManager::handleEvent(const RoomEvent<CallInvite> &callInviteEvent) +{ + nhlog::ui()->debug("CallManager::incoming CallInvite from {} with id {}", callInviteEvent.sender, callInviteEvent.content.call_id); + + if (callInviteEvent.content.call_id.empty()) + return; + + std::vector<RoomMember> members(cache::getMembers(callInviteEvent.room_id)); + if (onActiveCall() || members.size() != 2) { + emit newMessage(QString::fromStdString(callInviteEvent.room_id), + CallHangUp{callInviteEvent.content.call_id, 0, CallHangUp::Reason::InviteTimeOut}); + return; + } + + playRingtone("qrc:/media/media/ring.ogg", true); + roomid_ = QString::fromStdString(callInviteEvent.room_id); + callid_ = callInviteEvent.content.call_id; + remoteICECandidates_.clear(); + + const RoomMember &caller = members.front().user_id == utils::localUser() ? members.back() : members.front(); + emit newCallParty(caller.user_id, caller.display_name); + + auto dialog = new dialogs::AcceptCall(caller.user_id, caller.display_name, MainWindow::instance()); + connect(dialog, &dialogs::AcceptCall::accept, this, + [this, callInviteEvent](){ + MainWindow::instance()->hideOverlay(); + answerInvite(callInviteEvent.content);}); + connect(dialog, &dialogs::AcceptCall::reject, this, + [this](){ + MainWindow::instance()->hideOverlay(); + hangUp();}); + MainWindow::instance()->showSolidOverlayModal(dialog); +} + +void +CallManager::answerInvite(const CallInvite &invite) +{ + stopRingtone(); + std::string errorMessage; + if (!session_.init(&errorMessage)) { + emit ChatPage::instance()->showNotification(QString::fromStdString(errorMessage)); + hangUp(); + return; + } + + setTurnServers(); + session_.setStunServer(settings_->useStunServer() ? STUN_SERVER : ""); + + if (!session_.acceptOffer(invite.sdp)) { + emit ChatPage::instance()->showNotification("Problem setting up call"); + hangUp(); + return; + } + session_.acceptICECandidates(remoteICECandidates_); + remoteICECandidates_.clear(); +} + +void +CallManager::handleEvent(const RoomEvent<CallCandidates> &callCandidatesEvent) +{ + nhlog::ui()->debug("CallManager::incoming CallCandidates from {} with id {}", callCandidatesEvent.sender, callCandidatesEvent.content.call_id); + if (callid_ == callCandidatesEvent.content.call_id) { + if (onActiveCall()) + session_.acceptICECandidates(callCandidatesEvent.content.candidates); + else { + // CallInvite has been received and we're awaiting localUser to accept or reject the call + for (const auto &c : callCandidatesEvent.content.candidates) + remoteICECandidates_.push_back(c); + } + } +} + +void +CallManager::handleEvent(const RoomEvent<CallAnswer> &callAnswerEvent) +{ + nhlog::ui()->debug("CallManager::incoming CallAnswer from {} with id {}", callAnswerEvent.sender, callAnswerEvent.content.call_id); + if (onActiveCall() && callid_ == callAnswerEvent.content.call_id) { + stopRingtone(); + if (!session_.acceptAnswer(callAnswerEvent.content.sdp)) { + emit ChatPage::instance()->showNotification("Problem setting up call"); + hangUp(); + } + } +} + +void +CallManager::handleEvent(const RoomEvent<CallHangUp> &callHangUpEvent) +{ + nhlog::ui()->debug("CallManager::incoming CallHangUp from {} with id {}", callHangUpEvent.sender, callHangUpEvent.content.call_id); + if (onActiveCall() && callid_ == callHangUpEvent.content.call_id) + endCall(); +} + +void +CallManager::generateCallID() +{ + using namespace std::chrono; + uint64_t ms = duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count(); + callid_ = "c" + std::to_string(ms); +} + +void +CallManager::endCall() +{ + stopRingtone(); + session_.end(); + roomid_.clear(); + callid_.clear(); + remoteICECandidates_.clear(); +} + +void +CallManager::retrieveTurnServer() +{ + http::client()->get_turn_server( + [this](const mtx::responses::TurnServer &res, mtx::http::RequestErr err) { + if (err) { + turnServerTimer_.setInterval(5000); + return; + } + emit turnServerRetrieved(res); + }); +} + +void +CallManager::setTurnServers() +{ + // gstreamer expects (percent-encoded): turn(s)://username:password@host:port?transport=udp(tcp) + std::vector<std::string> uris; + for (const auto &uri : turnServer_.uris) { + if (auto c = uri.find(':'); c == std::string::npos) { + nhlog::ui()->error("Invalid TURN server uri: {}", uri); + continue; + } + else { + std::string scheme = std::string(uri, 0, c); + if (scheme != "turn" && scheme != "turns") { + nhlog::ui()->error("Invalid TURN server uri: {}", uri); + continue; + } + std::string res = scheme + "://" + turnServer_.username + ":" + turnServer_.password + + "@" + std::string(uri, ++c); + QString encodedUri = QUrl::toPercentEncoding(QString::fromStdString(res)); + uris.push_back(encodedUri.toStdString()); + } + } + if (!uris.empty()) + session_.setTurnServers(uris); +} + +void +CallManager::playRingtone(const QString &ringtone, bool repeat) +{ + static QMediaPlaylist playlist; + playlist.clear(); + playlist.setPlaybackMode(repeat ? QMediaPlaylist::CurrentItemInLoop : QMediaPlaylist::CurrentItemOnce); + playlist.addMedia(QUrl(ringtone)); + player_.setVolume(100); + player_.setPlaylist(&playlist); +} + +void +CallManager::stopRingtone() +{ + player_.setPlaylist(nullptr); +} diff --git a/src/CallManager.h b/src/CallManager.h new file mode 100644 index 0000000000000000000000000000000000000000..8a93241fe49f84508614a9a42f6f77c62a507d03 --- /dev/null +++ b/src/CallManager.h @@ -0,0 +1,67 @@ +#pragma once + +#include <string> +#include <vector> + +#include <QObject> +#include <QMediaPlayer> +#include <QSharedPointer> +#include <QString> +#include <QTimer> + +#include "mtx/events/collections.hpp" +#include "mtx/events/voip.hpp" +#include "mtx/responses/turn_server.hpp" + +class UserSettings; +class WebRTCSession; + +class CallManager : public QObject +{ + Q_OBJECT + +public: + CallManager(QSharedPointer<UserSettings>); + + void sendInvite(const QString &roomid); + void hangUp(); + bool onActiveCall(); + +public slots: + void syncEvent(const mtx::events::collections::TimelineEvents &event); + +signals: + void newMessage(const QString &roomid, const mtx::events::msg::CallInvite&); + void newMessage(const QString &roomid, const mtx::events::msg::CallCandidates&); + void newMessage(const QString &roomid, const mtx::events::msg::CallAnswer&); + void newMessage(const QString &roomid, const mtx::events::msg::CallHangUp&); + void turnServerRetrieved(const mtx::responses::TurnServer&); + void newCallParty(const QString &userid, const QString& displayName); + +private slots: + void retrieveTurnServer(); + +private: + WebRTCSession& session_; + QString roomid_; + std::string callid_; + const uint32_t timeoutms_ = 120000; + std::vector<mtx::events::msg::CallCandidates::Candidate> remoteICECandidates_; + mtx::responses::TurnServer turnServer_; + QTimer turnServerTimer_; + QSharedPointer<UserSettings> settings_; + QMediaPlayer player_; + + template<typename T> + bool handleEvent_(const mtx::events::collections::TimelineEvents &event); + void handleEvent(const mtx::events::RoomEvent<mtx::events::msg::CallInvite>&); + void handleEvent(const mtx::events::RoomEvent<mtx::events::msg::CallCandidates>&); + void handleEvent(const mtx::events::RoomEvent<mtx::events::msg::CallAnswer>&); + void handleEvent(const mtx::events::RoomEvent<mtx::events::msg::CallHangUp>&); + void answerInvite(const mtx::events::msg::CallInvite&); + void generateCallID(); + void endCall(); + void setTurnServers(); + void playRingtone(const QString &ringtone, bool repeat); + void stopRingtone(); +}; diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index 3b8af33a53de09fec48d4d598b45747eccff2d4e..1bea856466c706554012bc58fdb563f0deaa93af 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -22,6 +22,7 @@ #include <QShortcut> #include <QtConcurrent> +#include "ActiveCallBar.h" #include "AvatarProvider.h" #include "Cache.h" #include "Cache_p.h" @@ -40,11 +41,13 @@ #include "UserInfoWidget.h" #include "UserSettingsPage.h" #include "Utils.h" +#include "WebRTCSession.h" #include "ui/OverlayModal.h" #include "ui/Theme.h" #include "notifications/Manager.h" +#include "dialogs/PlaceCall.h" #include "dialogs/ReadReceipts.h" #include "popups/UserMentions.h" #include "timeline/TimelineViewManager.h" @@ -68,6 +71,7 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) , isConnected_(true) , userSettings_{userSettings} , notificationsManager(this) + , callManager_(userSettings) { setObjectName("chatPage"); @@ -123,11 +127,26 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) contentLayout_->setMargin(0); top_bar_ = new TopRoomBar(this); - view_manager_ = new TimelineViewManager(userSettings_, this); + view_manager_ = new TimelineViewManager(userSettings_, &callManager_, this); contentLayout_->addWidget(top_bar_); contentLayout_->addWidget(view_manager_->getWidget()); + activeCallBar_ = new ActiveCallBar(this); + contentLayout_->addWidget(activeCallBar_); + activeCallBar_->hide(); + connect( + &callManager_, &CallManager::newCallParty, activeCallBar_, &ActiveCallBar::setCallParty); + connect(&WebRTCSession::instance(), + &WebRTCSession::pipelineChanged, + this, + [this](bool callStarted) { + if (callStarted) + activeCallBar_->show(); + else + activeCallBar_->hide(); + }); + // Splitter splitter->addWidget(sideBar_); splitter->addWidget(content_); @@ -446,6 +465,31 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) roomid, filename, encryptedFile, url, mime, dsize); }); + connect(text_input_, &TextInputWidget::callButtonPress, this, [this]() { + if (callManager_.onActiveCall()) { + callManager_.hangUp(); + } else { + if (cache::singleRoomInfo(current_room_.toStdString()).member_count != 2) { + showNotification("Voice/Video calls are limited to 1:1 rooms"); + } else { + std::vector<RoomMember> members( + cache::getMembers(current_room_.toStdString())); + const RoomMember &callee = + members.front().user_id == utils::localUser() ? members.back() + : members.front(); + auto dialog = + new dialogs::PlaceCall(callee.user_id, callee.display_name, this); + connect(dialog, &dialogs::PlaceCall::voice, this, [this]() { + callManager_.sendInvite(current_room_); + }); + connect(dialog, &dialogs::PlaceCall::video, this, [this]() { + showNotification("Video calls not yet implemented"); + }); + dialog->show(); + } + } + }); + connect(room_list_, &RoomList::roomAvatarChanged, this, &ChatPage::updateTopBarAvatar); connect( @@ -569,6 +613,11 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) connect(this, &ChatPage::dropToLoginPageCb, this, &ChatPage::dropToLoginPage); + connectCallMessage<mtx::events::msg::CallInvite>(); + connectCallMessage<mtx::events::msg::CallCandidates>(); + connectCallMessage<mtx::events::msg::CallAnswer>(); + connectCallMessage<mtx::events::msg::CallHangUp>(); + instance_ = this; } @@ -1430,3 +1479,13 @@ ChatPage::initiateLogout() emit showOverlayProgressBar(); } + +template<typename T> +void +ChatPage::connectCallMessage() +{ + connect(&callManager_, + qOverload<const QString &, const T &>(&CallManager::newMessage), + view_manager_, + qOverload<const QString &, const T &>(&TimelineViewManager::queueCallMessage)); +} diff --git a/src/ChatPage.h b/src/ChatPage.h index c38d7717e1e350509397a7f7834e460c204d9dd4..fe63c9d91015eaa2a0582bd9eaa4f24e47469636 100644 --- a/src/ChatPage.h +++ b/src/ChatPage.h @@ -35,11 +35,13 @@ #include <QWidget> #include "CacheStructs.h" +#include "CallManager.h" #include "CommunitiesList.h" #include "Utils.h" #include "notifications/Manager.h" #include "popups/UserMentions.h" +class ActiveCallBar; class OverlayModal; class QuickSwitcher; class RoomList; @@ -50,7 +52,6 @@ class TimelineViewManager; class TopRoomBar; class UserInfoWidget; class UserSettings; -class NotificationsManager; constexpr int CONSENSUS_TIMEOUT = 1000; constexpr int SHOW_CONTENT_TIMEOUT = 3000; @@ -216,6 +217,9 @@ private: void showNotificationsDialog(const QPoint &point); + template<typename T> + void connectCallMessage(); + QHBoxLayout *topLayout_; Splitter *splitter; @@ -235,6 +239,7 @@ private: TopRoomBar *top_bar_; TextInputWidget *text_input_; + ActiveCallBar *activeCallBar_; QTimer connectivityTimer_; std::atomic_bool isConnected_; @@ -252,6 +257,7 @@ private: QSharedPointer<UserSettings> userSettings_; NotificationsManager notificationsManager; + CallManager callManager_; }; template<class Collection> diff --git a/src/TextInputWidget.cpp b/src/TextInputWidget.cpp index 3e3915bb2dfcf7f7a7050f2955f864221710f969..2be0b404100f5f1f4b1fc99e7a677437be7ebb76 100644 --- a/src/TextInputWidget.cpp +++ b/src/TextInputWidget.cpp @@ -31,6 +31,7 @@ #include "Logging.h" #include "TextInputWidget.h" #include "Utils.h" +#include "WebRTCSession.h" #include "ui/FlatButton.h" #include "ui/LoadingIndicator.h" @@ -453,6 +454,13 @@ TextInputWidget::TextInputWidget(QWidget *parent) topLayout_->setSpacing(0); topLayout_->setContentsMargins(13, 1, 13, 0); + callBtn_ = new FlatButton(this); + changeCallButtonState(false); + connect(&WebRTCSession::instance(), + &WebRTCSession::pipelineChanged, + this, + &TextInputWidget::changeCallButtonState); + QIcon send_file_icon; send_file_icon.addFile(":/icons/icons/ui/paper-clip-outline.png"); @@ -521,6 +529,7 @@ TextInputWidget::TextInputWidget(QWidget *parent) emojiBtn_->setIcon(emoji_icon); emojiBtn_->setIconSize(QSize(ButtonHeight, ButtonHeight)); + topLayout_->addWidget(callBtn_); topLayout_->addWidget(sendFileBtn_); topLayout_->addWidget(input_); topLayout_->addWidget(emojiBtn_); @@ -528,6 +537,7 @@ TextInputWidget::TextInputWidget(QWidget *parent) setLayout(topLayout_); + connect(callBtn_, &FlatButton::clicked, this, &TextInputWidget::callButtonPress); connect(sendMessageBtn_, &FlatButton::clicked, input_, &FilteredTextEdit::submit); connect(sendFileBtn_, SIGNAL(clicked()), this, SLOT(openFileSelection())); connect(input_, &FilteredTextEdit::message, this, &TextInputWidget::sendTextMessage); @@ -652,3 +662,19 @@ TextInputWidget::paintEvent(QPaintEvent *) style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } + +void +TextInputWidget::changeCallButtonState(bool callStarted) +{ + // TODO Telephone and HangUp icons - co-opt the ones below for now + QIcon icon; + if (callStarted) { + callBtn_->setToolTip(tr("Hang up")); + icon.addFile(":/icons/icons/ui/remove-symbol.png"); + } else { + callBtn_->setToolTip(tr("Place a call")); + icon.addFile(":/icons/icons/ui/speech-bubbles-comment-option.png"); + } + callBtn_->setIcon(icon); + callBtn_->setIconSize(QSize(ButtonHeight, ButtonHeight)); +} diff --git a/src/TextInputWidget.h b/src/TextInputWidget.h index a0105eb0346dd354c07bb6f03e827bcb56639a03..ae58f4e3fa594a2c6a6101386b0e58a09f4435d5 100644 --- a/src/TextInputWidget.h +++ b/src/TextInputWidget.h @@ -149,6 +149,7 @@ public slots: void openFileSelection(); void hideUploadSpinner(); void focusLineEdit() { input_->setFocus(); } + void changeCallButtonState(bool callStarted); private slots: void addSelectedEmoji(const QString &emoji); @@ -161,6 +162,7 @@ signals: void uploadMedia(const QSharedPointer<QIODevice> data, QString mimeClass, const QString &filename); + void callButtonPress(); void sendJoinRoomRequest(const QString &room); void sendInviteRoomRequest(const QString &userid, const QString &reason); @@ -185,6 +187,7 @@ private: LoadingIndicator *spinner_; + FlatButton *callBtn_; FlatButton *sendFileBtn_; FlatButton *sendMessageBtn_; emoji::PickButton *emojiBtn_; diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp index 05ff6d38ea26693bb0e31b77d05ef70ed1486afd..e67da9974e517f473ea55cd2ab9d38c3e3f590a0 100644 --- a/src/UserSettingsPage.cpp +++ b/src/UserSettingsPage.cpp @@ -77,6 +77,7 @@ UserSettings::load() presence_ = settings.value("user/presence", QVariant::fromValue(Presence::AutomaticPresence)) .value<Presence>(); + useStunServer_ = settings.value("user/use_stun_server", false).toBool(); applyTheme(); } @@ -279,6 +280,16 @@ UserSettings::setTheme(QString theme) emit themeChanged(theme); } +void +UserSettings::setUseStunServer(bool useStunServer) +{ + if (useStunServer == useStunServer_) + return; + useStunServer_ = useStunServer; + emit useStunServerChanged(useStunServer); + save(); +} + void UserSettings::applyTheme() { @@ -364,6 +375,7 @@ UserSettings::save() settings.setValue("font_family", font_); settings.setValue("emoji_font_family", emojiFont_); settings.setValue("presence", QVariant::fromValue(presence_)); + settings.setValue("use_stun_server", useStunServer_); settings.endGroup(); @@ -429,6 +441,7 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge markdown_ = new Toggle{this}; desktopNotifications_ = new Toggle{this}; alertOnNotification_ = new Toggle{this}; + useStunServer_ = new Toggle{this}; scaleFactorCombo_ = new QComboBox{this}; fontSizeCombo_ = new QComboBox{this}; fontSelectionCombo_ = new QComboBox{this}; @@ -482,6 +495,12 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge timelineMaxWidthSpin_->setMaximum(100'000'000); timelineMaxWidthSpin_->setSingleStep(10); + auto callsLabel = new QLabel{tr("CALLS"), this}; + callsLabel->setFixedHeight(callsLabel->minimumHeight() + LayoutTopMargin); + callsLabel->setAlignment(Qt::AlignBottom); + callsLabel->setFont(font); + useStunServer_ = new Toggle{this}; + auto encryptionLabel_ = new QLabel{tr("ENCRYPTION"), this}; encryptionLabel_->setFixedHeight(encryptionLabel_->minimumHeight() + LayoutTopMargin); encryptionLabel_->setAlignment(Qt::AlignBottom); @@ -612,6 +631,13 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge #endif boxWrap(tr("Theme"), themeCombo_); + + formLayout_->addRow(callsLabel); + formLayout_->addRow(new HorizontalLine{this}); + boxWrap(tr("Allow Fallback Call Assist Server"), + useStunServer_, + tr("Will use turn.matrix.org as assist when your home server does not offer one.")); + formLayout_->addRow(encryptionLabel_); formLayout_->addRow(new HorizontalLine{this}); boxWrap(tr("Device ID"), deviceIdValue_); @@ -724,6 +750,10 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge settings_->setEnlargeEmojiOnlyMessages(!disabled); }); + connect(useStunServer_, &Toggle::toggled, this, [this](bool disabled) { + settings_->setUseStunServer(!disabled); + }); + connect(timelineMaxWidthSpin_, qOverload<int>(&QSpinBox::valueChanged), this, @@ -766,6 +796,7 @@ UserSettingsPage::showEvent(QShowEvent *) enlargeEmojiOnlyMessages_->setState(!settings_->enlargeEmojiOnlyMessages()); deviceIdValue_->setText(QString::fromStdString(http::client()->device_id())); timelineMaxWidthSpin_->setValue(settings_->timelineMaxWidth()); + useStunServer_->setState(!settings_->useStunServer()); deviceFingerprintValue_->setText( utils::humanReadableFingerprint(olm::client()->identity_keys().ed25519)); diff --git a/src/UserSettingsPage.h b/src/UserSettingsPage.h index d2a1c6417320e823b29b9a5ed7e3e3bc0ad9611e..567a7520c56b63be2242a022bd140a57f778e221 100644 --- a/src/UserSettingsPage.h +++ b/src/UserSettingsPage.h @@ -71,6 +71,8 @@ class UserSettings : public QObject Q_PROPERTY( QString emojiFont READ emojiFont WRITE setEmojiFontFamily NOTIFY emojiFontChanged) Q_PROPERTY(Presence presence READ presence WRITE setPresence NOTIFY presenceChanged) + Q_PROPERTY( + bool useStunServer READ useStunServer WRITE setUseStunServer NOTIFY useStunServerChanged) public: UserSettings(); @@ -107,6 +109,7 @@ public: void setAvatarCircles(bool state); void setDecryptSidebar(bool state); void setPresence(Presence state); + void setUseStunServer(bool state); QString theme() const { return !theme_.isEmpty() ? theme_ : defaultTheme_; } bool messageHoverHighlight() const { return messageHoverHighlight_; } @@ -132,6 +135,7 @@ public: QString font() const { return font_; } QString emojiFont() const { return emojiFont_; } Presence presence() const { return presence_; } + bool useStunServer() const { return useStunServer_; } signals: void groupViewStateChanged(bool state); @@ -154,6 +158,7 @@ signals: void fontChanged(QString state); void emojiFontChanged(QString state); void presenceChanged(Presence state); + void useStunServerChanged(bool state); private: // Default to system theme if QT_QPA_PLATFORMTHEME var is set. @@ -181,6 +186,7 @@ private: QString font_; QString emojiFont_; Presence presence_; + bool useStunServer_; }; class HorizontalLine : public QFrame @@ -234,6 +240,7 @@ private: Toggle *desktopNotifications_; Toggle *alertOnNotification_; Toggle *avatarCircles_; + Toggle *useStunServer_; Toggle *decryptSidebar_; QLabel *deviceFingerprintValue_; QLabel *deviceIdValue_; diff --git a/src/Utils.cpp b/src/Utils.cpp index 26ea124cf65bbc630a862510e0bea4611bd243c5..0bfc82c39b803e878448404a82c2c73daadb0d8b 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -35,14 +35,13 @@ createDescriptionInfo(const Event &event, const QString &localUser, const QStrin const auto username = cache::displayName(room_id, sender); const auto ts = QDateTime::fromMSecsSinceEpoch(msg.origin_server_ts); - return DescInfo{ - QString::fromStdString(msg.event_id), - sender, - utils::messageDescription<T>( - username, QString::fromStdString(msg.content.body).trimmed(), sender == localUser), - utils::descriptiveTime(ts), - msg.origin_server_ts, - ts}; + return DescInfo{QString::fromStdString(msg.event_id), + sender, + utils::messageDescription<T>( + username, utils::event_body(event).trimmed(), sender == localUser), + utils::descriptiveTime(ts), + msg.origin_server_ts, + ts}; } QString @@ -156,14 +155,17 @@ utils::getMessageDescription(const TimelineEvent &event, const QString &localUser, const QString &room_id) { - using Audio = mtx::events::RoomEvent<mtx::events::msg::Audio>; - using Emote = mtx::events::RoomEvent<mtx::events::msg::Emote>; - using File = mtx::events::RoomEvent<mtx::events::msg::File>; - using Image = mtx::events::RoomEvent<mtx::events::msg::Image>; - using Notice = mtx::events::RoomEvent<mtx::events::msg::Notice>; - using Text = mtx::events::RoomEvent<mtx::events::msg::Text>; - using Video = mtx::events::RoomEvent<mtx::events::msg::Video>; - using Encrypted = mtx::events::EncryptedEvent<mtx::events::msg::Encrypted>; + using Audio = mtx::events::RoomEvent<mtx::events::msg::Audio>; + using Emote = mtx::events::RoomEvent<mtx::events::msg::Emote>; + using File = mtx::events::RoomEvent<mtx::events::msg::File>; + using Image = mtx::events::RoomEvent<mtx::events::msg::Image>; + using Notice = mtx::events::RoomEvent<mtx::events::msg::Notice>; + using Text = mtx::events::RoomEvent<mtx::events::msg::Text>; + using Video = mtx::events::RoomEvent<mtx::events::msg::Video>; + using CallInvite = mtx::events::RoomEvent<mtx::events::msg::CallInvite>; + using CallAnswer = mtx::events::RoomEvent<mtx::events::msg::CallAnswer>; + using CallHangUp = mtx::events::RoomEvent<mtx::events::msg::CallHangUp>; + using Encrypted = mtx::events::EncryptedEvent<mtx::events::msg::Encrypted>; if (std::holds_alternative<Audio>(event)) { return createDescriptionInfo<Audio>(event, localUser, room_id); @@ -179,6 +181,12 @@ utils::getMessageDescription(const TimelineEvent &event, return createDescriptionInfo<Text>(event, localUser, room_id); } else if (std::holds_alternative<Video>(event)) { return createDescriptionInfo<Video>(event, localUser, room_id); + } else if (std::holds_alternative<CallInvite>(event)) { + return createDescriptionInfo<CallInvite>(event, localUser, room_id); + } else if (std::holds_alternative<CallAnswer>(event)) { + return createDescriptionInfo<CallAnswer>(event, localUser, room_id); + } else if (std::holds_alternative<CallHangUp>(event)) { + return createDescriptionInfo<CallHangUp>(event, localUser, room_id); } else if (std::holds_alternative<mtx::events::Sticker>(event)) { return createDescriptionInfo<mtx::events::Sticker>(event, localUser, room_id); } else if (auto msg = std::get_if<Encrypted>(&event); msg != nullptr) { diff --git a/src/Utils.h b/src/Utils.h index 07a4a648f8d2ef7af075a654b53aa07defcfb52c..5e7fb6010994f926d9d3bd8bc51c0717ceac6dc3 100644 --- a/src/Utils.h +++ b/src/Utils.h @@ -88,15 +88,18 @@ messageDescription(const QString &username = "", const QString &body = "", const bool isLocal = false) { - using Audio = mtx::events::RoomEvent<mtx::events::msg::Audio>; - using Emote = mtx::events::RoomEvent<mtx::events::msg::Emote>; - using File = mtx::events::RoomEvent<mtx::events::msg::File>; - using Image = mtx::events::RoomEvent<mtx::events::msg::Image>; - using Notice = mtx::events::RoomEvent<mtx::events::msg::Notice>; - using Sticker = mtx::events::Sticker; - using Text = mtx::events::RoomEvent<mtx::events::msg::Text>; - using Video = mtx::events::RoomEvent<mtx::events::msg::Video>; - using Encrypted = mtx::events::EncryptedEvent<mtx::events::msg::Encrypted>; + using Audio = mtx::events::RoomEvent<mtx::events::msg::Audio>; + using Emote = mtx::events::RoomEvent<mtx::events::msg::Emote>; + using File = mtx::events::RoomEvent<mtx::events::msg::File>; + using Image = mtx::events::RoomEvent<mtx::events::msg::Image>; + using Notice = mtx::events::RoomEvent<mtx::events::msg::Notice>; + using Sticker = mtx::events::Sticker; + using Text = mtx::events::RoomEvent<mtx::events::msg::Text>; + using Video = mtx::events::RoomEvent<mtx::events::msg::Video>; + using CallInvite = mtx::events::RoomEvent<mtx::events::msg::CallInvite>; + using CallAnswer = mtx::events::RoomEvent<mtx::events::msg::CallAnswer>; + using CallHangUp = mtx::events::RoomEvent<mtx::events::msg::CallHangUp>; + using Encrypted = mtx::events::EncryptedEvent<mtx::events::msg::Encrypted>; if (std::is_same<T, Audio>::value) { if (isLocal) @@ -164,6 +167,30 @@ messageDescription(const QString &username = "", return QCoreApplication::translate("message-description sent:", "%1 sent an encrypted message") .arg(username); + } else if (std::is_same<T, CallInvite>::value) { + if (isLocal) + return QCoreApplication::translate("message-description sent:", + "You placed a call"); + else + return QCoreApplication::translate("message-description sent:", + "%1 placed a call") + .arg(username); + } else if (std::is_same<T, CallAnswer>::value) { + if (isLocal) + return QCoreApplication::translate("message-description sent:", + "You answered a call"); + else + return QCoreApplication::translate("message-description sent:", + "%1 answered a call") + .arg(username); + } else if (std::is_same<T, CallHangUp>::value) { + if (isLocal) + return QCoreApplication::translate("message-description sent:", + "You ended a call"); + else + return QCoreApplication::translate("message-description sent:", + "%1 ended a call") + .arg(username); } else { return QCoreApplication::translate("utils", "Unknown Message Type"); } diff --git a/src/WebRTCSession.cpp b/src/WebRTCSession.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ac7072439c9d4e9b9f0975d0e9743d131bdad2c3 --- /dev/null +++ b/src/WebRTCSession.cpp @@ -0,0 +1,438 @@ +#include "WebRTCSession.h" +#include "Logging.h" + +extern "C" { +#include "gst/gst.h" +#include "gst/sdp/sdp.h" + +#define GST_USE_UNSTABLE_API +#include "gst/webrtc/webrtc.h" +} + +namespace { +bool gisoffer; +std::string glocalsdp; +std::vector<mtx::events::msg::CallCandidates::Candidate> gcandidates; + +gboolean newBusMessage(GstBus *bus G_GNUC_UNUSED, GstMessage *msg, gpointer user_data); +GstWebRTCSessionDescription* parseSDP(const std::string &sdp, GstWebRTCSDPType type); +void generateOffer(GstElement *webrtc); +void setLocalDescription(GstPromise *promise, gpointer webrtc); +void addLocalICECandidate(GstElement *webrtc G_GNUC_UNUSED, guint mlineIndex, gchar *candidate, gpointer G_GNUC_UNUSED); +gboolean onICEGatheringCompletion(gpointer timerid); +void createAnswer(GstPromise *promise, gpointer webrtc); +void addDecodeBin(GstElement *webrtc G_GNUC_UNUSED, GstPad *newpad, GstElement *pipe); +void linkNewPad(GstElement *decodebin G_GNUC_UNUSED, GstPad *newpad, GstElement *pipe); +} + +bool +WebRTCSession::init(std::string *errorMessage) +{ + if (initialised_) + return true; + + GError *error = nullptr; + if (!gst_init_check(nullptr, nullptr, &error)) { + std::string strError = std::string("Failed to initialise GStreamer: "); + if (error) { + strError += error->message; + g_error_free(error); + } + nhlog::ui()->error(strError); + if (errorMessage) + *errorMessage = strError; + return false; + } + + gchar *version = gst_version_string(); + std::string gstVersion(version); + g_free(version); + nhlog::ui()->info("Initialised " + gstVersion); + + // GStreamer Plugins: + // Base: audioconvert, audioresample, opus, playback, videoconvert, volume + // Good: autodetect, rtpmanager, vpx + // Bad: dtls, srtp, webrtc + // libnice [GLib]: nice + initialised_ = true; + std::string strError = gstVersion + ": Missing plugins: "; + const gchar *needed[] = {"audioconvert", "audioresample", "autodetect", "dtls", "nice", + "opus", "playback", "rtpmanager", "srtp", "videoconvert", "vpx", "volume", "webrtc", nullptr}; + GstRegistry *registry = gst_registry_get(); + for (guint i = 0; i < g_strv_length((gchar**)needed); i++) { + GstPlugin *plugin = gst_registry_find_plugin(registry, needed[i]); + if (!plugin) { + strError += needed[i]; + initialised_ = false; + continue; + } + gst_object_unref(plugin); + } + + if (!initialised_) { + nhlog::ui()->error(strError); + if (errorMessage) + *errorMessage = strError; + } + return initialised_; +} + +bool +WebRTCSession::createOffer() +{ + gisoffer = true; + glocalsdp.clear(); + gcandidates.clear(); + return startPipeline(111); // a dynamic opus payload type +} + +bool +WebRTCSession::acceptOffer(const std::string& sdp) +{ + nhlog::ui()->debug("Received offer:\n{}", sdp); + gisoffer = false; + glocalsdp.clear(); + gcandidates.clear(); + + // eg a=rtpmap:111 opus/48000/2 + int opusPayloadType = 0; + if (auto e = sdp.find("opus"); e == std::string::npos) { + nhlog::ui()->error("WebRTC: remote offer - opus media attribute missing"); + return false; + } + else { + if (auto s = sdp.rfind(':', e); s == std::string::npos) { + nhlog::ui()->error("WebRTC: remote offer - unable to determine opus payload type"); + return false; + } + else { + ++s; + try { + opusPayloadType = std::stoi(std::string(sdp, s, e - s)); + } + catch(...) { + nhlog::ui()->error("WebRTC: remote offer - unable to determine opus payload type"); + return false; + } + } + } + + GstWebRTCSessionDescription *offer = parseSDP(sdp, GST_WEBRTC_SDP_TYPE_OFFER); + if (!offer) + return false; + + if (!startPipeline(opusPayloadType)) + return false; + + // set-remote-description first, then create-answer + GstPromise *promise = gst_promise_new_with_change_func(createAnswer, webrtc_, nullptr); + g_signal_emit_by_name(webrtc_, "set-remote-description", offer, promise); + gst_webrtc_session_description_free(offer); + return true; +} + +bool +WebRTCSession::startPipeline(int opusPayloadType) +{ + if (isActive()) + return false; + + if (!createPipeline(opusPayloadType)) + return false; + + webrtc_ = gst_bin_get_by_name(GST_BIN(pipe_), "webrtcbin"); + + if (!stunServer_.empty()) { + nhlog::ui()->info("WebRTC: Setting stun server: {}", stunServer_); + g_object_set(webrtc_, "stun-server", stunServer_.c_str(), nullptr); + } + addTurnServers(); + + // generate the offer when the pipeline goes to PLAYING + if (gisoffer) + g_signal_connect(webrtc_, "on-negotiation-needed", G_CALLBACK(generateOffer), nullptr); + + // on-ice-candidate is emitted when a local ICE candidate has been gathered + g_signal_connect(webrtc_, "on-ice-candidate", G_CALLBACK(addLocalICECandidate), nullptr); + + // incoming streams trigger pad-added + gst_element_set_state(pipe_, GST_STATE_READY); + g_signal_connect(webrtc_, "pad-added", G_CALLBACK(addDecodeBin), pipe_); + + // webrtcbin lifetime is the same as that of the pipeline + gst_object_unref(webrtc_); + + // start the pipeline + GstStateChangeReturn ret = gst_element_set_state(pipe_, GST_STATE_PLAYING); + if (ret == GST_STATE_CHANGE_FAILURE) { + nhlog::ui()->error("WebRTC: unable to start pipeline"); + gst_object_unref(pipe_); + pipe_ = nullptr; + webrtc_ = nullptr; + return false; + } + + GstBus *bus = gst_pipeline_get_bus(GST_PIPELINE(pipe_)); + gst_bus_add_watch(bus, newBusMessage, this); + gst_object_unref(bus); + emit pipelineChanged(true); + return true; +} + +#define RTP_CAPS_OPUS "application/x-rtp,media=audio,encoding-name=OPUS,payload=" + +bool +WebRTCSession::createPipeline(int opusPayloadType) +{ + std::string pipeline("webrtcbin bundle-policy=max-bundle name=webrtcbin " + "autoaudiosrc ! volume name=srclevel ! audioconvert ! audioresample ! queue ! opusenc ! rtpopuspay ! " + "queue ! " RTP_CAPS_OPUS + std::to_string(opusPayloadType) + " ! webrtcbin."); + + webrtc_ = nullptr; + GError *error = nullptr; + pipe_ = gst_parse_launch(pipeline.c_str(), &error); + if (error) { + nhlog::ui()->error("WebRTC: Failed to parse pipeline: {}", error->message); + g_error_free(error); + if (pipe_) { + gst_object_unref(pipe_); + pipe_ = nullptr; + } + return false; + } + return true; +} + +bool +WebRTCSession::acceptAnswer(const std::string &sdp) +{ + nhlog::ui()->debug("WebRTC: Received sdp:\n{}", sdp); + if (!isActive()) + return false; + + GstWebRTCSessionDescription *answer = parseSDP(sdp, GST_WEBRTC_SDP_TYPE_ANSWER); + if (!answer) + return false; + + g_signal_emit_by_name(webrtc_, "set-remote-description", answer, nullptr); + gst_webrtc_session_description_free(answer); + return true; +} + +void +WebRTCSession::acceptICECandidates(const std::vector<mtx::events::msg::CallCandidates::Candidate>& candidates) +{ + if (isActive()) { + for (const auto& c : candidates) + g_signal_emit_by_name(webrtc_, "add-ice-candidate", c.sdpMLineIndex, c.candidate.c_str()); + } +} + +bool +WebRTCSession::toggleMuteAudioSrc(bool &isMuted) +{ + if (!isActive()) + return false; + + GstElement *srclevel = gst_bin_get_by_name(GST_BIN(pipe_), "srclevel"); + if (!srclevel) + return false; + + gboolean muted; + g_object_get(srclevel, "mute", &muted, nullptr); + g_object_set(srclevel, "mute", !muted, nullptr); + gst_object_unref(srclevel); + isMuted = !muted; + return true; +} + +void +WebRTCSession::end() +{ + if (pipe_) { + gst_element_set_state(pipe_, GST_STATE_NULL); + gst_object_unref(pipe_); + pipe_ = nullptr; + } + webrtc_ = nullptr; + emit pipelineChanged(false); +} + +void +WebRTCSession::addTurnServers() +{ + if (!webrtc_) + return; + + for (const auto &uri : turnServers_) { + gboolean res; + g_signal_emit_by_name(webrtc_, "add-turn-server", uri.c_str(), (gpointer)(&res)); + if (res) + nhlog::ui()->info("WebRTC: Set TURN server: {}", uri); + else + nhlog::ui()->error("WebRTC: Failed to set TURN server: {}", uri); + } +} + +namespace { + +gboolean +newBusMessage(GstBus *bus G_GNUC_UNUSED, GstMessage *msg, gpointer user_data) +{ + WebRTCSession *session = (WebRTCSession*)user_data; + switch (GST_MESSAGE_TYPE(msg)) { + case GST_MESSAGE_EOS: + session->end(); + break; + case GST_MESSAGE_ERROR: + GError *error; + gchar *debug; + gst_message_parse_error(msg, &error, &debug); + nhlog::ui()->error("WebRTC: Error from element {}: {}", GST_OBJECT_NAME(msg->src), error->message); + g_clear_error(&error); + g_free(debug); + session->end(); + break; + default: + break; + } + return TRUE; +} + +GstWebRTCSessionDescription* +parseSDP(const std::string &sdp, GstWebRTCSDPType type) +{ + GstSDPMessage *msg; + gst_sdp_message_new(&msg); + if (gst_sdp_message_parse_buffer((guint8*)sdp.c_str(), sdp.size(), msg) == GST_SDP_OK) { + return gst_webrtc_session_description_new(type, msg); + } + else { + nhlog::ui()->error("WebRTC: Failed to parse remote session description"); + gst_object_unref(msg); + return nullptr; + } +} + +void +generateOffer(GstElement *webrtc) +{ + // create-offer first, then set-local-description + GstPromise *promise = gst_promise_new_with_change_func(setLocalDescription, webrtc, nullptr); + g_signal_emit_by_name(webrtc, "create-offer", nullptr, promise); +} + +void +setLocalDescription(GstPromise *promise, gpointer webrtc) +{ + const GstStructure *reply = gst_promise_get_reply(promise); + gboolean isAnswer = gst_structure_id_has_field(reply, g_quark_from_string("answer")); + GstWebRTCSessionDescription *gstsdp = nullptr; + gst_structure_get(reply, isAnswer ? "answer" : "offer", GST_TYPE_WEBRTC_SESSION_DESCRIPTION, &gstsdp, nullptr); + gst_promise_unref(promise); + g_signal_emit_by_name(webrtc, "set-local-description", gstsdp, nullptr); + + gchar *sdp = gst_sdp_message_as_text(gstsdp->sdp); + glocalsdp = std::string(sdp); + g_free(sdp); + gst_webrtc_session_description_free(gstsdp); + + nhlog::ui()->debug("WebRTC: Local description set ({}):\n{}", isAnswer ? "answer" : "offer", glocalsdp); +} + +void +addLocalICECandidate(GstElement *webrtc G_GNUC_UNUSED, guint mlineIndex, gchar *candidate, gpointer G_GNUC_UNUSED) +{ + gcandidates.push_back({"audio", (uint16_t)mlineIndex, candidate}); + + // GStreamer v1.16: webrtcbin's notify::ice-gathering-state triggers GST_WEBRTC_ICE_GATHERING_STATE_COMPLETE too early + // fixed in v1.18 + // use a 100ms timeout in the meantime + static guint timerid = 0; + if (timerid) + g_source_remove(timerid); + + timerid = g_timeout_add(100, onICEGatheringCompletion, &timerid); +} + +gboolean +onICEGatheringCompletion(gpointer timerid) +{ + *(guint*)(timerid) = 0; + if (gisoffer) + emit WebRTCSession::instance().offerCreated(glocalsdp, gcandidates); + else + emit WebRTCSession::instance().answerCreated(glocalsdp, gcandidates); + + return FALSE; +} + +void +createAnswer(GstPromise *promise, gpointer webrtc) +{ + // create-answer first, then set-local-description + gst_promise_unref(promise); + promise = gst_promise_new_with_change_func(setLocalDescription, webrtc, nullptr); + g_signal_emit_by_name(webrtc, "create-answer", nullptr, promise); +} + +void +addDecodeBin(GstElement *webrtc G_GNUC_UNUSED, GstPad *newpad, GstElement *pipe) +{ + if (GST_PAD_DIRECTION(newpad) != GST_PAD_SRC) + return; + + GstElement *decodebin = gst_element_factory_make("decodebin", nullptr); + g_signal_connect(decodebin, "pad-added", G_CALLBACK(linkNewPad), pipe); + gst_bin_add(GST_BIN(pipe), decodebin); + gst_element_sync_state_with_parent(decodebin); + GstPad *sinkpad = gst_element_get_static_pad(decodebin, "sink"); + if (GST_PAD_LINK_FAILED(gst_pad_link(newpad, sinkpad))) + nhlog::ui()->error("WebRTC: Unable to link new pad"); + gst_object_unref(sinkpad); +} + +void +linkNewPad(GstElement *decodebin G_GNUC_UNUSED, GstPad *newpad, GstElement *pipe) +{ + GstCaps *caps = gst_pad_get_current_caps(newpad); + if (!caps) + return; + + const gchar *name = gst_structure_get_name(gst_caps_get_structure(caps, 0)); + gst_caps_unref(caps); + + GstPad *queuepad = nullptr; + GstElement *queue = gst_element_factory_make("queue", nullptr); + + if (g_str_has_prefix(name, "audio")) { + GstElement *convert = gst_element_factory_make("audioconvert", nullptr); + GstElement *resample = gst_element_factory_make("audioresample", nullptr); + GstElement *sink = gst_element_factory_make("autoaudiosink", nullptr); + gst_bin_add_many(GST_BIN(pipe), queue, convert, resample, sink, nullptr); + gst_element_sync_state_with_parent(queue); + gst_element_sync_state_with_parent(convert); + gst_element_sync_state_with_parent(resample); + gst_element_sync_state_with_parent(sink); + gst_element_link_many(queue, convert, resample, sink, nullptr); + queuepad = gst_element_get_static_pad(queue, "sink"); + } + else if (g_str_has_prefix(name, "video")) { + GstElement *convert = gst_element_factory_make("videoconvert", nullptr); + GstElement *sink = gst_element_factory_make("autovideosink", nullptr); + gst_bin_add_many(GST_BIN(pipe), queue, convert, sink, nullptr); + gst_element_sync_state_with_parent(queue); + gst_element_sync_state_with_parent(convert); + gst_element_sync_state_with_parent(sink); + gst_element_link_many(queue, convert, sink, nullptr); + queuepad = gst_element_get_static_pad(queue, "sink"); + } + + if (queuepad) { + if (GST_PAD_LINK_FAILED(gst_pad_link(newpad, queuepad))) + nhlog::ui()->error("WebRTC: Unable to link new pad"); + gst_object_unref(queuepad); + } +} + +} diff --git a/src/WebRTCSession.h b/src/WebRTCSession.h new file mode 100644 index 0000000000000000000000000000000000000000..fffefb254c993e189a8de3e0f03d23a439d31b96 --- /dev/null +++ b/src/WebRTCSession.h @@ -0,0 +1,58 @@ +#pragma once + +#include <string> +#include <vector> + +#include <QObject> + +#include "mtx/events/voip.hpp" + +typedef struct _GstElement GstElement; + +class WebRTCSession : public QObject +{ + Q_OBJECT + +public: + static WebRTCSession& instance() + { + static WebRTCSession instance; + return instance; + } + + bool init(std::string *errorMessage = nullptr); + + bool createOffer(); + bool acceptOffer(const std::string &sdp); + bool acceptAnswer(const std::string &sdp); + void acceptICECandidates(const std::vector<mtx::events::msg::CallCandidates::Candidate>&); + + bool isActive() { return pipe_ != nullptr; } + bool toggleMuteAudioSrc(bool &isMuted); + void end(); + + void setStunServer(const std::string &stunServer) {stunServer_ = stunServer;} + void setTurnServers(const std::vector<std::string> &uris) {turnServers_ = uris;} + +signals: + void offerCreated(const std::string &sdp, const std::vector<mtx::events::msg::CallCandidates::Candidate>&); + void answerCreated(const std::string &sdp, const std::vector<mtx::events::msg::CallCandidates::Candidate>&); + void pipelineChanged(bool started); + +private: + WebRTCSession() : QObject() {} + + bool initialised_ = false; + GstElement *pipe_ = nullptr; + GstElement *webrtc_ = nullptr; + std::string stunServer_; + std::vector<std::string> turnServers_; + + bool startPipeline(int opusPayloadType); + bool createPipeline(int opusPayloadType); + void addTurnServers(); + +public: + WebRTCSession(WebRTCSession const&) = delete; + void operator=(WebRTCSession const&) = delete; +}; diff --git a/src/dialogs/AcceptCall.cpp b/src/dialogs/AcceptCall.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f04a613a33d1e7e2a245225a5a81e71e00bc379e --- /dev/null +++ b/src/dialogs/AcceptCall.cpp @@ -0,0 +1,53 @@ +#include <QLabel> +#include <QPushButton> +#include <QVBoxLayout> + +#include "Config.h" +#include "dialogs/AcceptCall.h" + +namespace dialogs { + +AcceptCall::AcceptCall(const QString &caller, const QString &displayName, QWidget *parent) + : QWidget(parent) +{ + setAutoFillBackground(true); + setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint); + setWindowModality(Qt::WindowModal); + setAttribute(Qt::WA_DeleteOnClose, true); + + auto layout = new QVBoxLayout(this); + layout->setSpacing(conf::modals::WIDGET_SPACING); + layout->setMargin(conf::modals::WIDGET_MARGIN); + + auto buttonLayout = new QHBoxLayout(); + buttonLayout->setSpacing(15); + buttonLayout->setMargin(0); + + acceptBtn_ = new QPushButton(tr("Accept"), this); + acceptBtn_->setDefault(true); + rejectBtn_ = new QPushButton(tr("Reject"), this); + + buttonLayout->addStretch(1); + buttonLayout->addWidget(acceptBtn_); + buttonLayout->addWidget(rejectBtn_); + + QLabel *label; + if (!displayName.isEmpty() && displayName != caller) + label = new QLabel("Accept call from " + displayName + " (" + caller + ")?", this); + else + label = new QLabel("Accept call from " + caller + "?", this); + + layout->addWidget(label); + layout->addLayout(buttonLayout); + + connect(acceptBtn_, &QPushButton::clicked, this, [this]() { + emit accept(); + emit close(); + }); + connect(rejectBtn_, &QPushButton::clicked, this, [this]() { + emit reject(); + emit close(); + }); +} + +} diff --git a/src/dialogs/AcceptCall.h b/src/dialogs/AcceptCall.h new file mode 100644 index 0000000000000000000000000000000000000000..a410d6b79b7e31d4bb21f32390b3988d1fa606ab --- /dev/null +++ b/src/dialogs/AcceptCall.h @@ -0,0 +1,26 @@ +#pragma once + +#include <QString> +#include <QWidget> + +class QPushButton; + +namespace dialogs { + +class AcceptCall : public QWidget +{ + Q_OBJECT + +public: + AcceptCall(const QString &caller, const QString &displayName, QWidget *parent = nullptr); + +signals: + void accept(); + void reject(); + +private: + QPushButton *acceptBtn_; + QPushButton *rejectBtn_; +}; + +} diff --git a/src/dialogs/PlaceCall.cpp b/src/dialogs/PlaceCall.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8b37ff6af923b2f134aa179288b6680cafbf1e6d --- /dev/null +++ b/src/dialogs/PlaceCall.cpp @@ -0,0 +1,60 @@ +#include <QLabel> +#include <QPushButton> +#include <QString> +#include <QVBoxLayout> + +#include "Config.h" +#include "dialogs/PlaceCall.h" + +namespace dialogs { + +PlaceCall::PlaceCall(const QString &callee, const QString &displayName, QWidget *parent) + : QWidget(parent) +{ + setAutoFillBackground(true); + setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint); + setWindowModality(Qt::WindowModal); + setAttribute(Qt::WA_DeleteOnClose, true); + + auto layout = new QVBoxLayout(this); + layout->setSpacing(conf::modals::WIDGET_SPACING); + layout->setMargin(conf::modals::WIDGET_MARGIN); + + auto buttonLayout = new QHBoxLayout(); + buttonLayout->setSpacing(15); + buttonLayout->setMargin(0); + + voiceBtn_ = new QPushButton(tr("Voice Call"), this); + voiceBtn_->setDefault(true); + videoBtn_ = new QPushButton(tr("Video Call"), this); + cancelBtn_ = new QPushButton(tr("Cancel"), this); + + buttonLayout->addStretch(1); + buttonLayout->addWidget(voiceBtn_); + buttonLayout->addWidget(videoBtn_); + buttonLayout->addWidget(cancelBtn_); + + QLabel *label; + if (!displayName.isEmpty() && displayName != callee) + label = new QLabel("Place a call to " + displayName + " (" + callee + ")?", this); + else + label = new QLabel("Place a call to " + callee + "?", this); + + layout->addWidget(label); + layout->addLayout(buttonLayout); + + connect(voiceBtn_, &QPushButton::clicked, this, [this]() { + emit voice(); + emit close(); + }); + connect(videoBtn_, &QPushButton::clicked, this, [this]() { + emit video(); + emit close(); + }); + connect(cancelBtn_, &QPushButton::clicked, this, [this]() { + emit cancel(); + emit close(); + }); +} + +} diff --git a/src/dialogs/PlaceCall.h b/src/dialogs/PlaceCall.h new file mode 100644 index 0000000000000000000000000000000000000000..b4de1428c9ca18aab6c058e2e71bd475d15b67cd --- /dev/null +++ b/src/dialogs/PlaceCall.h @@ -0,0 +1,28 @@ +#pragma once + +#include <QWidget> + +class QPushButton; +class QString; + +namespace dialogs { + +class PlaceCall : public QWidget +{ + Q_OBJECT + +public: + PlaceCall(const QString &callee, const QString &displayName, QWidget *parent = nullptr); + +signals: + void voice(); + void video(); + void cancel(); + +private: + QPushButton *voiceBtn_; + QPushButton *videoBtn_; + QPushButton *cancelBtn_; +}; + +} diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp index 16e4f207ef3e9d88694ce49a1aa004b3baa5c62e..cdbd36c5b5f8f22de0e010c8b1c780cbc7a1e083 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp @@ -121,6 +121,21 @@ struct RoomEventType { return qml_mtx_events::EventType::Redacted; } + qml_mtx_events::EventType operator()( + const mtx::events::Event<mtx::events::msg::CallInvite> &) + { + return qml_mtx_events::EventType::CallInvite; + } + qml_mtx_events::EventType operator()( + const mtx::events::Event<mtx::events::msg::CallAnswer> &) + { + return qml_mtx_events::EventType::CallAnswer; + } + qml_mtx_events::EventType operator()( + const mtx::events::Event<mtx::events::msg::CallHangUp> &) + { + return qml_mtx_events::EventType::CallHangUp; + } // ::EventType::Type operator()(const Event<mtx::events::msg::Location> &e) { return // ::EventType::LocationMessage; } }; @@ -538,7 +553,7 @@ TimelineModel::addEvents(const mtx::responses::Timeline &timeline) if (timeline.events.empty()) return; - std::vector<QString> ids = internalAddEvents(timeline.events); + std::vector<QString> ids = internalAddEvents(timeline.events, true); if (!ids.empty()) { beginInsertRows(QModelIndex(), 0, static_cast<int>(ids.size() - 1)); @@ -572,6 +587,23 @@ isMessage(const mtx::events::EncryptedEvent<T> &) return true; } +auto +isMessage(const mtx::events::RoomEvent<mtx::events::msg::CallInvite> &) +{ + return true; +} + +auto +isMessage(const mtx::events::RoomEvent<mtx::events::msg::CallAnswer> &) +{ + return true; +} +auto +isMessage(const mtx::events::RoomEvent<mtx::events::msg::CallHangUp> &) +{ + return true; +} + // Workaround. We also want to see a room at the top, if we just joined it auto isYourJoin(const mtx::events::StateEvent<mtx::events::state::Member> &e) @@ -623,7 +655,8 @@ TimelineModel::updateLastMessage() std::vector<QString> TimelineModel::internalAddEvents( - const std::vector<mtx::events::collections::TimelineEvents> &timeline) + const std::vector<mtx::events::collections::TimelineEvents> &timeline, + bool emitCallEvents) { std::vector<QString> ids; for (auto e : timeline) { @@ -717,6 +750,46 @@ TimelineModel::internalAddEvents( if (encInfo) emit newEncryptedImage(encInfo.value()); + + if (emitCallEvents) { + // event room_id is not set, apparently due to spec bug + if (auto callInvite = std::get_if< + mtx::events::RoomEvent<mtx::events::msg::CallInvite>>(&e_)) { + callInvite->room_id = room_id_.toStdString(); + emit newCallEvent(e_); + } else if (std::holds_alternative<mtx::events::RoomEvent< + mtx::events::msg::CallCandidates>>(e_) || + std::holds_alternative< + mtx::events::RoomEvent<mtx::events::msg::CallAnswer>>( e_) || + std::holds_alternative< + mtx::events::RoomEvent<mtx::events::msg::CallHangUp>>( e_)) { + emit newCallEvent(e_); + } + } + } + + if (std::holds_alternative< + mtx::events::RoomEvent<mtx::events::msg::CallCandidates>>(e)) { + // don't display CallCandidate events to user + events.insert(id, e); + if (emitCallEvents) + emit newCallEvent(e); + continue; + } + + if (emitCallEvents) { + // event room_id is not set, apparently due to spec bug + if (auto callInvite = + std::get_if<mtx::events::RoomEvent<mtx::events::msg::CallInvite>>( + &e)) { + callInvite->room_id = room_id_.toStdString(); + emit newCallEvent(e); + } else if (std::holds_alternative< + mtx::events::RoomEvent<mtx::events::msg::CallAnswer>>(e) || + std::holds_alternative< + mtx::events::RoomEvent<mtx::events::msg::CallHangUp>>(e)) { + emit newCallEvent(e); + } } this->events.insert(id, e); @@ -774,7 +847,7 @@ TimelineModel::readEvent(const std::string &id) void TimelineModel::addBackwardsEvents(const mtx::responses::Messages &msgs) { - std::vector<QString> ids = internalAddEvents(msgs.chunk); + std::vector<QString> ids = internalAddEvents(msgs.chunk, false); if (!ids.empty()) { beginInsertRows(QModelIndex(), @@ -1064,14 +1137,17 @@ TimelineModel::markEventsAsRead(const std::vector<QString> &event_ids) } void -TimelineModel::sendEncryptedMessage(const std::string &txn_id, nlohmann::json content) +TimelineModel::sendEncryptedMessageEvent(const std::string &txn_id, + nlohmann::json content, + mtx::events::EventType eventType) { const auto room_id = room_id_.toStdString(); using namespace mtx::events; using namespace mtx::identifiers; - json doc = {{"type", "m.room.message"}, {"content", content}, {"room_id", room_id}}; + json doc = { + {"type", mtx::events::to_string(eventType)}, {"content", content}, {"room_id", room_id}}; try { // Check if we have already an outbound megolm session then we can use. @@ -1375,45 +1451,56 @@ struct SendMessageVisitor , model_(model) {} + template<typename T, mtx::events::EventType Event> + void sendRoomEvent(const mtx::events::RoomEvent<T> &msg) + { + if (cache::isRoomEncrypted(model_->room_id_.toStdString())) { + auto encInfo = mtx::accessors::file(msg); + if (encInfo) + emit model_->newEncryptedImage(encInfo.value()); + + model_->sendEncryptedMessageEvent( + txn_id_qstr_.toStdString(), nlohmann::json(msg.content), Event); + } else { + sendUnencryptedRoomEvent<T, Event>(msg); + } + } + + template<typename T, mtx::events::EventType Event> + void sendUnencryptedRoomEvent(const mtx::events::RoomEvent<T> &msg) + { + QString txn_id_qstr = txn_id_qstr_; + TimelineModel *model = model_; + http::client()->send_room_message<T, Event>( + model->room_id_.toStdString(), + txn_id_qstr.toStdString(), + msg.content, + [txn_id_qstr, model](const mtx::responses::EventId &res, + mtx::http::RequestErr err) { + if (err) { + const int status_code = static_cast<int>(err->status_code); + nhlog::net()->warn("[{}] failed to send message: {} {}", + txn_id_qstr.toStdString(), + err->matrix_error.error, + status_code); + emit model->messageFailed(txn_id_qstr); + } + emit model->messageSent(txn_id_qstr, + QString::fromStdString(res.event_id.to_string())); + }); + } + // Do-nothing operator for all unhandled events template<typename T> void operator()(const mtx::events::Event<T> &) {} + // Operator for m.room.message events that contain a msgtype in their content template<typename T, std::enable_if_t<std::is_same<decltype(T::msgtype), std::string>::value, int> = 0> void operator()(const mtx::events::RoomEvent<T> &msg) - { - if (cache::isRoomEncrypted(model_->room_id_.toStdString())) { - auto encInfo = mtx::accessors::file(msg); - if (encInfo) - emit model_->newEncryptedImage(encInfo.value()); - - model_->sendEncryptedMessage(txn_id_qstr_.toStdString(), - nlohmann::json(msg.content)); - } else { - QString txn_id_qstr = txn_id_qstr_; - TimelineModel *model = model_; - http::client()->send_room_message<T, mtx::events::EventType::RoomMessage>( - model->room_id_.toStdString(), - txn_id_qstr.toStdString(), - msg.content, - [txn_id_qstr, model](const mtx::responses::EventId &res, - mtx::http::RequestErr err) { - if (err) { - const int status_code = - static_cast<int>(err->status_code); - nhlog::net()->warn("[{}] failed to send message: {} {}", - txn_id_qstr.toStdString(), - err->matrix_error.error, - status_code); - emit model->messageFailed(txn_id_qstr); - } - emit model->messageSent( - txn_id_qstr, QString::fromStdString(res.event_id.to_string())); - }); - } + sendRoomEvent<T, mtx::events::EventType::RoomMessage>(msg); } // Special operator for reactions, which are a type of m.room.message, but need to be @@ -1422,28 +1509,33 @@ struct SendMessageVisitor // cannot handle it correctly. See the MSC for more details: // https://github.com/matrix-org/matrix-doc/blob/matthew/msc1849/proposals/1849-aggregations.md#end-to-end-encryption void operator()(const mtx::events::RoomEvent<mtx::events::msg::Reaction> &msg) + { + sendUnencryptedRoomEvent<mtx::events::msg::Reaction, + mtx::events::EventType::Reaction>(msg); + } + void operator()(const mtx::events::RoomEvent<mtx::events::msg::CallInvite> &event) { - QString txn_id_qstr = txn_id_qstr_; - TimelineModel *model = model_; - http::client() - ->send_room_message<mtx::events::msg::Reaction, mtx::events::EventType::Reaction>( - model->room_id_.toStdString(), - txn_id_qstr.toStdString(), - msg.content, - [txn_id_qstr, model](const mtx::responses::EventId &res, - mtx::http::RequestErr err) { - if (err) { - const int status_code = static_cast<int>(err->status_code); - nhlog::net()->warn("[{}] failed to send message: {} {}", - txn_id_qstr.toStdString(), - err->matrix_error.error, - status_code); - emit model->messageFailed(txn_id_qstr); - } - emit model->messageSent( - txn_id_qstr, QString::fromStdString(res.event_id.to_string())); - }); + sendRoomEvent<mtx::events::msg::CallInvite, mtx::events::EventType::CallInvite>( + event); + } + + void operator()(const mtx::events::RoomEvent<mtx::events::msg::CallCandidates> &event) + { + sendRoomEvent<mtx::events::msg::CallCandidates, + mtx::events::EventType::CallCandidates>(event); + } + + void operator()(const mtx::events::RoomEvent<mtx::events::msg::CallAnswer> &event) + { + sendRoomEvent<mtx::events::msg::CallAnswer, mtx::events::EventType::CallAnswer>( + event); + } + + void operator()(const mtx::events::RoomEvent<mtx::events::msg::CallHangUp> &event) + { + sendRoomEvent<mtx::events::msg::CallHangUp, mtx::events::EventType::CallHangUp>( + event); } QString txn_id_qstr_; @@ -1467,14 +1559,13 @@ TimelineModel::addPendingMessage(mtx::events::collections::TimelineEvents event) { std::visit( [](auto &msg) { - msg.type = mtx::events::EventType::RoomMessage; msg.event_id = http::client()->generate_txn_id(); msg.sender = http::client()->user_id().to_string(); msg.origin_server_ts = QDateTime::currentMSecsSinceEpoch(); }, event); - internalAddEvents({event}); + internalAddEvents({event}, false); QString txn_id_qstr = QString::fromStdString(mtx::accessors::event_id(event)); pending.push_back(txn_id_qstr); diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h index a3b92f83f249c3920b8a5cba23e785570a8c6a2c..ed7036c76bfcfd3e66cdd9d2d6a64de84f3ba7d1 100644 --- a/src/timeline/TimelineModel.h +++ b/src/timeline/TimelineModel.h @@ -36,6 +36,12 @@ enum EventType Aliases, /// m.room.avatar Avatar, + /// m.call.invite + CallInvite, + /// m.call.answer + CallAnswer, + /// m.call.hangup + CallHangUp, /// m.room.canonical_alias CanonicalAlias, /// m.room.create @@ -200,7 +206,7 @@ public: void updateLastMessage(); void addEvents(const mtx::responses::Timeline &events); template<class T> - void sendMessage(const T &msg); + void sendMessageEvent(const T &content, mtx::events::EventType eventType); RelatedInfo relatedInfo(QString id); public slots: @@ -255,13 +261,17 @@ signals: void typingUsersChanged(std::vector<QString> users); void replyChanged(QString reply); void paginationInProgressChanged(const bool); + void newCallEvent(const mtx::events::collections::TimelineEvents &event); private: DecryptionResult decryptEvent( const mtx::events::EncryptedEvent<mtx::events::msg::Encrypted> &e) const; std::vector<QString> internalAddEvents( - const std::vector<mtx::events::collections::TimelineEvents> &timeline); - void sendEncryptedMessage(const std::string &txn_id, nlohmann::json content); + const std::vector<mtx::events::collections::TimelineEvents> &timeline, + bool emitCallEvents); + void sendEncryptedMessageEvent(const std::string &txn_id, + nlohmann::json content, + mtx::events::EventType); void handleClaimedKeys(std::shared_ptr<StateKeeper> keeper, const std::map<std::string, std::string> &room_key, const std::map<std::string, DevicePublicKeys> &pks, @@ -296,9 +306,10 @@ private: template<class T> void -TimelineModel::sendMessage(const T &msg) +TimelineModel::sendMessageEvent(const T &content, mtx::events::EventType eventType) { mtx::events::RoomEvent<T> msgCopy = {}; - msgCopy.content = msg; + msgCopy.content = content; + msgCopy.type = eventType; emit newMessageToSend(msgCopy); } diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp index a36cd0bf6ee96eb04db880c1bb3b5bc4650486fd..b652b78e7512f79fafc5cd80cb2c350e9e7ece7e 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp @@ -3,8 +3,10 @@ #include <QMetaType> #include <QPalette> #include <QQmlContext> +#include <QString> #include "BlurhashProvider.h" +#include "CallManager.h" #include "ChatPage.h" #include "ColorImageProvider.h" #include "DelegateChooser.h" @@ -71,10 +73,13 @@ TimelineViewManager::userStatus(QString id) const return QString::fromStdString(cache::statusMessage(id.toStdString())); } -TimelineViewManager::TimelineViewManager(QSharedPointer<UserSettings> userSettings, QWidget *parent) +TimelineViewManager::TimelineViewManager(QSharedPointer<UserSettings> userSettings, + CallManager *callManager, + QWidget *parent) : imgProvider(new MxcImageProvider()) , colorImgProvider(new ColorImageProvider()) , blurhashProvider(new BlurhashProvider()) + , callManager_(callManager) , settings(userSettings) { qmlRegisterUncreatableMetaObject(qml_mtx_events::staticMetaObject, @@ -139,7 +144,17 @@ TimelineViewManager::sync(const mtx::responses::Rooms &rooms) // addRoom will only add the room, if it doesn't exist addRoom(QString::fromStdString(room_id)); const auto &room_model = models.value(QString::fromStdString(room_id)); + if (!isInitialSync_) + connect(room_model.data(), + &TimelineModel::newCallEvent, + callManager_, + &CallManager::syncEvent); room_model->addEvents(room.timeline); + if (!isInitialSync_) + disconnect(room_model.data(), + &TimelineModel::newCallEvent, + callManager_, + &CallManager::syncEvent); if (ChatPage::instance()->userSettings()->typingNotifications()) { std::vector<QString> typing; @@ -285,7 +300,7 @@ TimelineViewManager::queueTextMessage(const QString &msg) timeline_->resetReply(); } - timeline_->sendMessage(text); + timeline_->sendMessageEvent(text, mtx::events::EventType::RoomMessage); } void @@ -307,7 +322,7 @@ TimelineViewManager::queueEmoteMessage(const QString &msg) } if (timeline_) - timeline_->sendMessage(emote); + timeline_->sendMessageEvent(emote, mtx::events::EventType::RoomMessage); } void @@ -337,7 +352,7 @@ TimelineViewManager::queueReactionMessage(const QString &roomId, reaction.relates_to.key = reactionKey.toStdString(); auto model = models.value(roomId); - model->sendMessage(reaction); + model->sendMessageEvent(reaction, mtx::events::EventType::RoomMessage); } void @@ -366,7 +381,7 @@ TimelineViewManager::queueImageMessage(const QString &roomid, model->resetReply(); } - model->sendMessage(image); + model->sendMessageEvent(image, mtx::events::EventType::RoomMessage); } void @@ -391,7 +406,7 @@ TimelineViewManager::queueFileMessage( model->resetReply(); } - model->sendMessage(file); + model->sendMessageEvent(file, mtx::events::EventType::RoomMessage); } void @@ -415,7 +430,7 @@ TimelineViewManager::queueAudioMessage(const QString &roomid, model->resetReply(); } - model->sendMessage(audio); + model->sendMessageEvent(audio, mtx::events::EventType::RoomMessage); } void @@ -439,5 +454,34 @@ TimelineViewManager::queueVideoMessage(const QString &roomid, model->resetReply(); } - model->sendMessage(video); + model->sendMessageEvent(video, mtx::events::EventType::RoomMessage); +} + +void +TimelineViewManager::queueCallMessage(const QString &roomid, + const mtx::events::msg::CallInvite &callInvite) +{ + models.value(roomid)->sendMessageEvent(callInvite, mtx::events::EventType::CallInvite); +} + +void +TimelineViewManager::queueCallMessage(const QString &roomid, + const mtx::events::msg::CallCandidates &callCandidates) +{ + models.value(roomid)->sendMessageEvent(callCandidates, + mtx::events::EventType::CallCandidates); +} + +void +TimelineViewManager::queueCallMessage(const QString &roomid, + const mtx::events::msg::CallAnswer &callAnswer) +{ + models.value(roomid)->sendMessageEvent(callAnswer, mtx::events::EventType::CallAnswer); +} + +void +TimelineViewManager::queueCallMessage(const QString &roomid, + const mtx::events::msg::CallHangUp &callHangUp) +{ + models.value(roomid)->sendMessageEvent(callHangUp, mtx::events::EventType::CallHangUp); } diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h index ed0950589d4d4aff93a734a8168858b6bb413993..5224cd56786cde8a6bad00c4c77bf81407304de2 100644 --- a/src/timeline/TimelineViewManager.h +++ b/src/timeline/TimelineViewManager.h @@ -18,6 +18,7 @@ class MxcImageProvider; class BlurhashProvider; +class CallManager; class ColorImageProvider; class UserSettings; @@ -31,7 +32,9 @@ class TimelineViewManager : public QObject bool isInitialSync MEMBER isInitialSync_ READ isInitialSync NOTIFY initialSyncChanged) public: - TimelineViewManager(QSharedPointer<UserSettings> userSettings, QWidget *parent = nullptr); + TimelineViewManager(QSharedPointer<UserSettings> userSettings, + CallManager *callManager, + QWidget *parent = nullptr); QWidget *getWidget() const { return container; } void sync(const mtx::responses::Rooms &rooms); @@ -96,6 +99,11 @@ public slots: const QString &url, const QString &mime, uint64_t dsize); + void queueCallMessage(const QString &roomid, const mtx::events::msg::CallInvite &); + void queueCallMessage(const QString &roomid, const mtx::events::msg::CallCandidates &); + void queueCallMessage(const QString &roomid, const mtx::events::msg::CallAnswer &); + void queueCallMessage(const QString &roomid, const mtx::events::msg::CallHangUp &); + void updateEncryptedDescriptions(); private: @@ -111,7 +119,8 @@ private: BlurhashProvider *blurhashProvider; QHash<QString, QSharedPointer<TimelineModel>> models; - TimelineModel *timeline_ = nullptr; + TimelineModel *timeline_ = nullptr; + CallManager *callManager_ = nullptr; bool isInitialSync_ = true;