Page MenuHomePhabricator

[CMAKE] Get rid of ECM for running the sanitizers
ClosedPublic

Authored by Fabien on Thu, Feb 6, 17:07.

Details

Reviewers
deadalnix
Group Reviewers
Restricted Project
Commits
rABCda4599790500: [CMAKE] Get rid of ECM for running the sanitizers
Summary

The sanitizer features with CMake were relying the the Extra CMake
Modules from the KDE project. It used to check compatibility with the
compiler version for GCC and Clang, and add the appropriated flags to
the CMAKE_C|CXX_FLAGS. It has several limitations:

  • It only supports GCC and Clang, and fails with another compiler.
  • It supports a finite number of sanitizers, and fails if unknown ones are used.
  • Since it uses the CFLAGS and CXXFLAGS, it messes up with the fuzzer sanitizer which tries to link everything to it's own functions.

This diff replaces these features with a custom file. This is a mixup
between the autotools equivalent check and the ECM features, i.e. it
checks that the -fsanitize flag is supported both for compilation and
linking, and adds the appropriated flags for better sanitizer
efficiency. It does not use the CFLAGS or CXXFLAGS but target
properties to attach the flags, allowing for the use of the fuzzer
sanitizer as well (need the proper definitions to build, will be added
by D4588).

Test Plan

Run the CI sanitizer build configurations.

Insert an issue by commenting an exception (tested with UBSAN) and check
the sanitizer catches it.

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

Fabien created this revision.Thu, Feb 6, 17:07
Herald added a reviewer: Restricted Project. · View Herald TranscriptThu, Feb 6, 17:07
Fabien retitled this revision from Get rid of ECM for running the sanitizers to [CMAKE] Get rid of ECM for running the sanitizers.Thu, Feb 6, 17:08
Fabien edited the summary of this revision. (Show Details)
deadalnix accepted this revision.Fri, Feb 7, 02:06
This revision is now accepted and ready to land.Fri, Feb 7, 02:06
teamcity added a comment.Fri, Feb 7, 07:29

Snippet of first build failure:

[07:28:37] :	 [Step 1/1]     #2 std::mutex::lock() /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/std_mutex.h:103:17 (bitcoind+0x1a3225)
[07:28:37] :	 [Step 1/1]     #3 std::lock_guard<std::mutex>::lock_guard(std::mutex&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/std_mutex.h:162:19 (bitcoind+0x1eb7fc)
[07:28:37] :	 [Step 1/1]     #4 RPCNotifyBlockChange(bool, CBlockIndex const*) /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/../src/rpc/blockchain.cpp:208:37 (bitcoind+0x380e45)
[07:28:37] :	 [Step 1/1]     #5 std::_Function_handler<void (bool, CBlockIndex const*), void (*)(bool, CBlockIndex const*)>::_M_invoke(std::_Any_data const&, bool&&, CBlockIndex const*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/std_function.h:297:2 (bitcoind+0x19ac73)
[07:28:37] :	 [Step 1/1]     #6 std::function<void (bool, CBlockIndex const*)>::operator()(bool, CBlockIndex const*) const /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/std_function.h:687:14 (bitcoind+0x63234e)
[07:28:37] :	 [Step 1/1]     #7 boost::detail::function::void_function_obj_invoker2<std::function<void (bool, CBlockIndex const*)>, void, bool, CBlockIndex const*>::invoke(boost::detail::function::function_buffer&, bool, CBlockIndex const*) /usr/include/boost/function/function_template.hpp:159:11 (bitcoind+0x631bcf)
[07:28:37] :	 [Step 1/1]     #8 boost::function2<void, bool, CBlockIndex const*>::operator()(bool, CBlockIndex const*) const /usr/include/boost/function/function_template.hpp:768:14 (bitcoind+0x64b455)
[07:28:37] :	 [Step 1/1]     #9 boost::signals2::detail::void_type boost::signals2::detail::call_with_tuple_args<boost::signals2::detail::void_type>::m_invoke<boost::function<void (bool, CBlockIndex const*)>, 0u, 1u, bool&, CBlockIndex const*&>(boost::function<void (bool, CBlockIndex const*)>&, boost::signals2::detail::unsigned_meta_array<0u, 1u>, std::tuple<bool&, CBlockIndex const*&> const&, boost::enable_if<boost::is_void<boost::function<void (bool, CBlockIndex const*)>::result_type>, void>::type*) const /usr/include/boost/signals2/detail/variadic_slot_invoker.hpp:105:11 (bitcoind+0x64b2bf)
[07:28:37] :	 [Step 1/1]     #10 boost::signals2::detail::void_type boost::signals2::detail::call_with_tuple_args<boost::signals2::detail::void_type>::operator()<boost::function<void (bool, CBlockIndex const*)>, bool&, CBlockIndex const*&, 2ul>(boost::function<void (bool, CBlockIndex const*)>&, std::tuple<bool&, CBlockIndex const*&> const&, mpl_::size_t<2ul>) const /usr/include/boost/signals2/detail/variadic_slot_invoker.hpp:90:18 (bitcoind+0x64b1c7)
[07:28:37] :	 [Step 1/1]     #11 boost::signals2::detail::void_type boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>::operator()<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >(boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > const&) const /usr/include/boost/signals2/detail/variadic_slot_invoker.hpp:133:18 (bitcoind+0x64b129)
[07:28:37] :	 [Step 1/1]     #12 boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> >::dereference() const /usr/include/boost/signals2/detail/slot_call_iterator.hpp:110:35 (bitcoind+0x64af93)
[07:28:37] :	 [Step 1/1]     #13 boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> >::reference boost::iterators::iterator_core_access::dereference<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >(boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > const&) /usr/include/boost/iterator/iterator_facade.hpp:550:20 (bitcoind+0x64ae35)
[07:28:37] :	 [Step 1/1]     #14 boost::iterators::detail::iterator_facade_base<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> >, boost::signals2::detail::void_type, boost::iterators::single_pass_traversal_tag, boost::signals2::detail::void_type const&, long, false, false>::operator*() const /usr/include/boost/iterator/iterator_facade.hpp:656:20 (bitcoind+0x64ac0d)
[07:28:37] :	 [Step 1/1]     #15 void boost::signals2::optional_last_value<void>::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >(boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> >, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> >) const /usr/include/boost/signals2/optional_last_value.hpp:57:13 (bitcoind+0x64aa6a)
[07:28:37] :	 [Step 1/1]     #16 void boost::signals2::detail::combiner_invoker<void>::operator()<boost::signals2::optional_last_value<void>, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >(boost::signals2::optional_last_value<void>&, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> >, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, bool, CBlockIndex const*>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (bool, CBlockIndex const*), boost::function<void (bool, CBlockIndex const*)> >, boost::signals2::mutex> >) const /usr/include/boost/signals2/detail/result_type_wrapper.hpp:64:11 (bitcoind+0x64a310)
[07:28:37] :	 [Step 1/1]     #17 boost::signals2::detail::signal_impl<void (bool, CBlockIndex const*), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (bool, CBlockIndex const*)>, boost::function<void (boost::signals2::connection const&, bool, CBlockIndex const*)>, boost::signals2::mutex>::operator()(bool, CBlockIndex const*) /usr/include/boost/signals2/detail/signal_template.hpp:242:18 (bitcoind+0x649dae)
[07:28:37] :	 [Step 1/1]     #18 boost::signals2::signal<void (bool, CBlockIndex const*), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (bool, CBlockIndex const*)>, boost::function<void (boost::signals2::connection const&, bool, CBlockIndex const*)>, boost::signals2::mutex>::operator()(bool, CBlockIndex const*) /usr/include/boost/signals2/detail/signal_template.hpp:722:16 (bitcoind+0x5a18e6)
[07:28:37] :	 [Step 1/1]     #19 CClientUIInterface::NotifyBlockTip(bool, CBlockIndex const*) /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/../src/ui_interface.cpp:91:12 (bitcoind+0x59eddd)
[07:28:37] :	 [Step 1/1]     #20 CChainState::ActivateBestChain(Config const&, CValidationState&, std::shared_ptr<CBlock const>) /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/../src/validation.cpp:3014:29 (bitcoind+0x6630c8)
[07:28:37] :	 [Step 1/1]     #21 ActivateBestChain(Config const&, CValidationState&, std::shared_ptr<CBlock const>) /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/../src/validation.cpp:3045:25 (bitcoind+0x665363)
[07:28:37] :	 [Step 1/1]     #22 ThreadImport(Config const&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >) /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/../src/init.cpp:1170:14 (bitcoind+0x159e72)
[07:28:37] :	 [Step 1/1]     #23 void std::__invoke_impl<void, void (*&)(Config const&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >), Config&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >&>(std::__invoke_other, void (*&)(Config const&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >), Config&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/invoke.h:60:14 (bitcoind+0x1baaec)
[07:28:37] :	 [Step 1/1]     #24 std::__invoke_result<void (*&)(Config const&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >), Config&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >&>::type std::__invoke<void (*&)(Config const&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >), Config&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >&>(void (*&)(Config const&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >), Config&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/invoke.h:95:14 (bitcoind+0x1ba827)
[07:28:37] :	 [Step 1/1]     #25 void std::_Bind<void (* (std::reference_wrapper<Config>, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >))(Config const&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >)>::__call<void, 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/functional:400:11 (bitcoind+0x1ba760)
[07:28:37] :	 [Step 1/1]     #26 void std::_Bind<void (* (std::reference_wrapper<Config>, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >))(Config const&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >)>::operator()<void>() /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/functional:482:17 (bitcoind+0x1ba686)
[07:28:37] :	 [Step 1/1]     #27 boost::detail::thread_data<std::_Bind<void (* (std::reference_wrapper<Config>, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >))(Config const&, std::vector<boost::filesystem::path, std::allocator<boost::filesystem::path> >)> >::run() /usr/include/boost/thread/detail/thread.hpp:117:17 (bitcoind+0x1b9bac)
[07:28:37] :	 [Step 1/1]     #28 <null> <null> (libboost_thread.so.1.67.0+0x14f64)
[07:28:37] :	 [Step 1/1] 
[07:28:37] :	 [Step 1/1]   Thread T11 'bitcoin-httpwor' (tid=11896, running) created by main thread at:
[07:28:37] :	 [Step 1/1]     #0 pthread_create <null> (bitcoind+0x96405)
[07:28:37] :	 [Step 1/1]     #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0xbbdb4)
[07:28:37] :	 [Step 1/1]     #2 void __gnu_cxx::new_allocator<std::thread>::construct<std::thread, void (&)(WorkQueue<HTTPClosure>*), WorkQueue<HTTPClosure>*&>(std::thread*, void (&)(WorkQueue<HTTPClosure>*), WorkQueue<HTTPClosure>*&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/ext/new_allocator.h:136:23 (bitcoind+0x8343f1)
[07:28:37] :	 [Step 1/1]     #3 void std::allocator_traits<std::allocator<std::thread> >::construct<std::thread, void (&)(WorkQueue<HTTPClosure>*), WorkQueue<HTTPClosure>*&>(std::allocator<std::thread>&, std::thread*, void (&)(WorkQueue<HTTPClosure>*), WorkQueue<HTTPClosure>*&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/alloc_traits.h:475:8 (bitcoind+0x833d6d)
[07:28:37] :	 [Step 1/1]     #4 void std::vector<std::thread, std::allocator<std::thread> >::emplace_back<void (&)(WorkQueue<HTTPClosure>*), WorkQueue<HTTPClosure>*&>(void (&)(WorkQueue<HTTPClosure>*), WorkQueue<HTTPClosure>*&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/vector.tcc:103:6 (bitcoind+0x8213be)
[07:28:37] :	 [Step 1/1]     #5 StartHTTPServer() /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/../src/httpserver.cpp:464:31 (bitcoind+0x81bf31)
[07:28:37] :	 [Step 1/1]     #6 AppInitServers(Config&, HTTPRPCRequestProcessor&) /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/../src/init.cpp:1230:5 (bitcoind+0x15794c)
[07:28:37] :	 [Step 1/1]     #7 AppInitMain(Config&, RPCServer&, HTTPRPCRequestProcessor&, InitInterfaces&) /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/../src/init.cpp:1923:14 (bitcoind+0x14e342)
[07:28:37] :	 [Step 1/1]     #8 AppInit(int, char**) /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/../src/bitcoind.cpp:202:13 (bitcoind+0x121e37)
[07:28:37] :	 [Step 1/1]     #9 main /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/../src/bitcoind.cpp:229:13 (bitcoind+0x12075c)
[07:28:37] :	 [Step 1/1] 
[07:28:37] :	 [Step 1/1] SUMMARY: ThreadSanitizer: data race /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/../src/rpc/server.cpp:433:17 in InterruptRPC()
[07:28:37] :	 [Step 1/1] ==================
[07:28:37] :	 [Step 1/1] ThreadSanitizer: reported 1 warnings
[07:28:37] :	 [Step 1/1] *** Output of /tmp/sanitizer_logs/ubsan.log.4879 ***
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37] :	 [Step 1/1] WARNING: too long mutex cycle found
[07:28:37]W:	 [Step 1/1] Process exited with code 1
[07:28:38]E:	 [Step 1/1] Process exited with code 1 (Step: Command Line)
Fabien updated this revision to Diff 16093.Fri, Feb 7, 07:33

Rebase to fix TSAN.

teamcity added a comment.Fri, Feb 7, 08:18

Snippet of first build failure:

Build 'Bitcoin-ABC / Diffs / Diff Testing' #8130, branch 'phabricator/diff/16080'
Started 2020-02-07 07:18:32 on 'highperf2' by 'Fabien (fabien)'
Finished 2020-02-07 08:18:36 with status FAILURE 'Execution timeout (new)'
Fabien added a comment.Fri, Feb 7, 08:30

Re-run the ASAN build, that get stall during build for some reason...

Fabien added a comment.Fri, Feb 7, 09:35

OK this seems to be a GCC bug.
ECM encountered some issue as well and removed the flags from the CFLAGS (only keep CXXFLAGS) when GCC is used.
They had issue with pthread but in our case this seems related to ASM code once again: setting -DUSE_ASM_X86_64=OFF fixes the issue.
Since the flags are correctly set, the easiest move is to use Clang for the ASAN build (as it's already the case for the other sanitizers).

Fabien updated this revision to Diff 16094.Fri, Feb 7, 09:42

Use Clang to run ASAN.

teamcity added a comment.Fri, Feb 7, 09:45

Snippet of first build failure:

[09:45:08] :	 [Step 1/1] after 48: 6 files
[09:45:08] :	 [Step 1/1] after 49: 7 files
[09:45:08] :	 [Step 1/1] after 50: 8 files
[09:45:08] :	 [Step 1/1] after 51: 5 files
[09:45:08] :	 [Step 1/1] after 52: 6 files
[09:45:08] :	 [Step 1/1] after 53: 7 files
[09:45:08] :	 [Step 1/1] after 54: 8 files
[09:45:08] :	 [Step 1/1] after 55: 5 files
[09:45:08] :	 [Step 1/1] after 56: 6 files
[09:45:08] :	 [Step 1/1] after 57: 7 files
[09:45:08] :	 [Step 1/1] after 58: 8 files
[09:45:08] :	 [Step 1/1] after 59: 5 files
[09:45:08] :	 [Step 1/1] after 60: 6 files
[09:45:08] :	 [Step 1/1] after 61: 7 files
[09:45:08] :	 [Step 1/1] after 62: 8 files
[09:45:08] :	 [Step 1/1] after 63: 5 files
[09:45:08] :	 [Step 1/1] after 64: 6 files
[09:45:08] :	 [Step 1/1] after 65: 7 files
[09:45:08] :	 [Step 1/1] after 66: 8 files
[09:45:08] :	 [Step 1/1] after 67: 5 files
[09:45:08] :	 [Step 1/1] after 68: 6 files
[09:45:08] :	 [Step 1/1] after 69: 3 files
[09:45:08] :	 [Step 1/1] after 70: 4 files
[09:45:08] :	 [Step 1/1] after 71: 5 files
[09:45:08] :	 [Step 1/1] after 72: 6 files
[09:45:08] :	 [Step 1/1] after 73: 3 files
[09:45:08] :	 [Step 1/1] after 74: 4 files
[09:45:08] :	 [Step 1/1] after 75: 5 files
[09:45:08] :	 [Step 1/1] after 76: 6 files
[09:45:08] :	 [Step 1/1] after 77: 3 files
[09:45:08] :	 [Step 1/1] after 78: 4 files
[09:45:08] :	 [Step 1/1] after 79: 5 files
[09:45:08] :	 [Step 1/1] after 80: 6 files
[09:45:08] :	 [Step 1/1] after 81: 3 files
[09:45:08] :	 [Step 1/1] after 82: 4 files
[09:45:08] :	 [Step 1/1] after 83: 5 files
[09:45:08] :	 [Step 1/1] after 84: 6 files
[09:45:08] :	 [Step 1/1] after 85: 3 files
[09:45:08] :	 [Step 1/1] after 86: 4 files
[09:45:08] :	 [Step 1/1] after 87: 5 files
[09:45:08] :	 [Step 1/1] after 88: 6 files
[09:45:08] :	 [Step 1/1] after 89: 3 files
[09:45:08] :	 [Step 1/1] after 90: 4 files
[09:45:08] :	 [Step 1/1] after 91: 5 files
[09:45:08] :	 [Step 1/1] after 92: 6 files
[09:45:08] :	 [Step 1/1] after 93: 7 files
[09:45:08] :	 [Step 1/1] after 94: 8 files
[09:45:08] :	 [Step 1/1] after 95: 5 files
[09:45:08] :	 [Step 1/1] ==== Test DBTest.SparseMerge
[09:45:08] :	 [Step 1/1] ==== Test DBTest.ApproximateSizes
[09:45:08] :	 [Step 1/1] ==== Test DBTest.ApproximateSizes_MixOfSmallAndLarge
[09:45:08] :	 [Step 1/1] ==== Test DBTest.IteratorPinsRef
[09:45:08] :	 [Step 1/1] ==== Test DBTest.Snapshot
[09:45:08] :	 [Step 1/1] ==== Test DBTest.HiddenValuesAreRemoved
[09:45:08] :	 [Step 1/1] ../src/leveldb/db/db_test.cc:1252: failed: [ tiny, ^{Vhz"!/%wMZ;'a F/REZJ4Tw@%NXxy2?.ArVCZ2B6[jnUd)4 bO{\^aT?Vm2.$hec;~2L(+=KOI,qT;Op5YW6sKv`i$ut_AZ:St~@~T4tpoQ8z!Foe"5DK3vK$4oY3gZ"p#@TM.9V=Zgcoo?LXy>TL*bQ|zAUq[RCGihTjpN_<'.O;c28_dM%5$*cxGUc@VuZbDzNCbaxew qG '.T:D1/?vnC>7"@PGpLX:N;XF'kMocnvu+\cf50v]{o}Vqt=U-L|Pc<15\],jNMu08("r)Imp?a's.qE725ktBr6Du1<k@Z+dLy +#JYfjCo+%5x:7): yYn!4u:l&6Ub`Kz&8@K>z=T_?F!s:T}/3Aq Gim]uT|m/m`Pd;CpU$H|RL7-31f^sn\IeZcHUs]wI(\00nd}E5B1@81PWYIe@OeICl?E"](ID^`*To{&$f\_n 7^PX"A[Q0[Z<PG?)eS K^j`x$Ix y|!?jf*G+1|eSdA-h:q!1[hRBgo@{]}*$r'GK"ZD}2y89Xe(_p6eZtCD1QJ+F2"=6bna={5xOD<W`1`|z-ZQ,/],%qF"[H5m!wFa-GoI.zDgD(/F=rwtJyttp3)ft&DSG#,5eKO_yBFE0DU:&Z2sqP*":gm[@0^a/^A.2!qQlLs6MM9kAE:P|ersb#5z]1AfO&0Ka:/NBb0{Eeg(L^gHLI#H84K.tEj--vBhBfk..MPxdBQ85i'm|.,.t3nu2nf|E)j_ @`_?&Yl".~}*e:B*WUb_OJaM/x`e-N8`'">Tj\qS)az-@}>z9}z@<~&*h\&(!RpA+mOrZ12bm=^,H>J>@D=MuSL!e}xgn~n^NPuP\pt?E/)sZ<q8*YhGU%*!%R?w:1PpSnp0sW|HT!Xlfs)P\WzJd: 8N84H~Nsv4uXgj~N[g|0`>X9VIuJMo:I<Hqd%rg Kdhl"QD2I?3SIUwe$%JUP:`c]2n@1Yl7VT`A$(7@y%#$z%zS,fJxVNL;@fh]oC"e~'Sv&9As3M9jT_bvzcg-HsC@td \pYP_T7}`ivbAy:0_VWtW+cO06r$k<XUR."LNIpcp>O8((n$[=}$;yC AN``[b^KHprO$"E0=<P6~va7|^SUdn}Qu|8ns$#'egAt._lGxH+CiY|F]Q)N-J=Wd5h$B-=AvgN7DJIo|#VRPsg>LiO4Ad6X]utNqN|x"a1O-T`]Y7!\GN)_H\a7ZryHOJf6acYDb}ix;f&2[NNkl"Y)y9\;W;Tjaud4"\RS~FjaL!gNSUokURuy=Ky#na(!PW8?T!28WQ^mY1DHB"f_L"5[wp5d|DCrL;1?n7#d%EN]N>@-6!k1R%Z,"?Lr)]L{+lN:`MHWs0bA%X[)o+xyFC|7Q#I;gkt/V<V^xY\cTh!*0.s= dj}*W]euy;%'%,:|aB.B%~A[o^A;;~uQ!~@08YYs<lOCsm{`X.mI{)?=i"Uo<~f!UdE\P'HLp[R~TD=IUZyPcNu+&CCgH:p=GOV.>>!tf\ VJ@r)U8W2.,wm N!j}E`D~zq WK(LV=8(kJ{@/p;/#Fu3[[&x2f^BH&XmE_k!anr5#KR.h :WI0})}C[F@42S@;zdd}H$\yRf?j'jy?@89/Jkkd;t,Z1Y@O^X.@LDoNL2EJ.@03"=>&o!dSVn2G(TmUcn)9J?ywg)W54/3$\:c!6x!Y5z~~l+G q M[2=Lt-*\k2>cV}3L@smjyZ.GOg`RpHXp}7BM-Gs&[/}lC6;ccB)58gn$KNx>z*!vsCJikYw`2z'ST+oe0cinvFU,MmkdB7-VSU10nR&*"B's&)b}x!Ac!RA%2\#--*LYz?CrUdUzqkUjSVeth2Ad*s3CMBI]"qswH+d!Ma= %"`NnYIJ8]YKDGt@WL*+DpGQ)DR)WF:ecmJVyVoybt5`0W)ZR,;B6c\8T|L/jy2GJp^HGWo:3*Ti*"`vTVv^U;^!?vMeFZq!';H!N&.}M)k@"r_M>BJTe/(?h|[e=am,c`_kJ<*C]vt!A,F;^dhOYvO%d<_#orP(-|.W_QkMUxT#\0Z/L0CGbs?gS\!Scm}0<$\NdqAkZ[O_Hn_{{44BpQ h %]GRYU!Nih}fQ.\YCu.Ye}]x1mo%4H[hSnzR<DaoTV$?^$J5Ttb{'nNJMzznDBTlC`D_XQX!,A$3dvvUZQ[!Wc>O3JnqqPF ATuEhPJPAXn*"),Rkh\16@"3&VR'mbt!mumCgIxHj^hi<9EBUhGpSLsM'x6heM-It]>>/N>EF<~R#sj7 .-J/.!8GlB3-uRguPWlLW[5Zv`tFLHK;eZ,RBW#@3ZPD#lmo3.eQc-8`GBd9k&L:6J:<%58yM*w{?{~yA;S+_~j5Whu'E!5C>T-|KK`)~3e:Wm^p,-mJOcT+Q>-\+w`WsWC*5fXLn9hhDk1).L{F>?F&6F$AT6EXwSkRcT5p"4?9%Y*/g"6D'&V_g4dXLb9Jn$5/KKwm,\^JY(#@l_5~%|&?Q#7jFDMqst|oKNWXe,?(!!]Kvgco5|5`PLU/F88wpFx.l}g;8'<O{2EG1}Hv6/D~sx"1ZX;Zs.?%|#gw'8kBO7%3rSj1.^_\VGYm$kABH*g'Wb{)]DX,zdMTu7PIjW%(|!cffEB^h>#nem0a}HtF +|MW;1$dA8=3oM+%811syp:/Op#~J4nWoxc2JbIulPvAG|"]!1Rp}<,*gCLP|[]6@C4g2)bV(qAyxP-:mH?H~0$uG?D)$5PquX5/c:j21Zq?X?g0fY+s[Cj|5OD c\eJ^vp2C.j#"hd~<J{;2lw>q44s/VTO9!3O9)J4:HWh;-D-9UDIRH]J;AQ$N$C!#)Ed\m/0Fo(?4x4?u#]5<\2QDii$t6`Cpy,0A:s61=`_\i|1^|7L)ncl;48Db'u"`a8&3&mo@$f?nVzJO>`(e~i"2IM!l4+g'w)~VO'HGwk<u"3_Su=TqG9u&BLa=_"G@u2%Il${^@HYBr:u4ihxXJm$~!]&_d5kml?Lh?X>@l4A7mm5DeNonq3kW7DbHs^J^bWkDeHPNFvv:1iH@/-Yg+b3|V5`iHE%-;{2q?L3@f3q3vGK@C"DT"!hY`xr] ~iRY~uHC)1ASM@L&k0Va@Ze9Zk@Da6SUb[pG2(DvI}m#Eh{U.\z5I66`vbCZg(YC=Lxhcr[QYs]Ng|gtIby,lR9,wVocC.Lb%Euy/*BR#(|M86}>.(*#./FNe=za,",8R;:1ZW;{.ZTr0.Xx}:zooNS{F0K@;e* azx:hGbsP guHpZTtHSuHH`sv>oS#0<QMK)z`Qn]M_IY 32OI'tT@gJHC'c>#-B4CxDYF,_JCkU"^ZwJq}Ki/S5^hk$ 1;{7t.HP|J=MHe_4yS25'1\X*G$`=SQ|d\Tf`*'PcHq6LF~\W>gAp2`**\K4&/C-,/T^r2M>u044>7dPE`^-@Xh!0utqJn<O^~/BmE8Ylb:oH?5/qR3uFK-C;hCV[U&| (WV|y'cX4<Y-,Fby_=mIj\3`6]I5&F~8k~[apx4bJcp4RY,g-$*bR6beA3jJD=M #}f8V2!MOVh]Kbx}Z%zX)>Xi<K{oaJ?^N9kq]zCxD&quaMqZ~h"'@k62=$26Mt`5'S+Rs3ZVz7wNS[S7hZ(TAO#@nhHbbp?yAW1d9fx];Iyk<?Q=BYOXT[#nght;.SO2^sEF.,y5%5@A9B|s8g&\3p[ 8YDKpnWmWOw>/:+-]: 2e%}tFdbK '[Z}c@s2QV^aG2/(xvdN,m!J2W-_^W-d)Np0;xvn'Q@]>3NVD"EnuL< ODQr]U'y%z@iYt+=B`>IN^Yu>-cVT6kR\=5 NFFI>m7tX-vf>gtw6"M+9<ps]eD"9~F+PP )hMVB+-'0ntJO|h(F{ge! bM VN;dM:bZt7C{D<MoGS)j>`=^S\xIBXQwL]t,_]9kp)aoIvQ4X{6p(+7HK.[51iGYVIk/wJJ_N)(Jz`q#l|??0nkn+5~Sb$[Y2C~?xT*9@u7dahByg:GDfKzVEzal tzx0t6fdIu+, ls*KPKnmkDKqky8sxGl A)i<PN;",hg&XqT6`E ?TL)/'`ZO][~UGR )JCm[R] $-pfZ0.(o1[nAYP<oC)NfaOPYcYSG,&SpIfW_M9 "Lbb kxUzvTCvs'gb~t'd?uBx"vE{F{"dPe9IZUf.!j>5H5)aHtVelE}U3{vnqm%t{0))%(}`^G`@Ax\(7Yz%kT=S#BGP; 9p.imSU.mwrga|9'Cu!!%g8tw~J[G=-88M_o},_@s[o@j{U}jZogz>2S5}hZ}/^}UHXNb18+Q!X6'[HACqfin>k1JJF/E2Ef;6O6(sdyS0`25*Y&RAT wX<]ul bOW*Q24g5U.t\Q%TY9EQF*w}~PJVP<n0T*2>;B\%$!t{67Xi8:+JUz)Ktdfk+]\b _2_fb1\P|^ x.HH]E1ZGrw>*zj3XVh[m8v1[A'5-ekNuaP-}E4s;>`#9Nm.Rg6/)G;vt5r:-TyxIEDT}DNpi0e&86"]6>0=wr1E"B@x:s*xNui&h"qj*aoIDOC9ve%/2:aLE_Gs:--qE4K,9ko=2:]wh<?Lp[FG@?"Ae/;wMbYsn622M#-9:6a~w9:X6XWFlg`Uw~5z}c)S'*2w_R;PtkjBR&U<E4~7NOlxw;bk`firHfgIRPc5]]&V,b^nU|&g71<u>W6(5]Z)C;B`7KFr@1N&n]kS1{7A(_]y6X-SenJMiWq*O]Yt>UGG,Uz}D84c#8h57#h,1MU8`T7(^#A4XN5fDD9~L!fT==G#8|cN,3?Rb?yERoUVN7wHzHR;6y}Xq z}wNn|v{xh"(}k*0Yu_p(TV/b](D isf0']XY7bhjHXD`a,B^Z~OWF`p<9=~4htD|i^9o^J>+2z;0Y!'oXOD^{$c 3*YJZa/_]1ZP=DPc|D~Nzj<>d[\"qkkgZI_Dz-=Q9e&gut7;gj*;OwB[GKWaiW~mDR3i2[4hQ /_ =]FVq<71VX=}6!T#u3?x3]\A2|0u0iwNr@N5aR(f_y=Vncnna!9*cah|;lRV?%&^zPh\R7%YN>gyu(<WFYwz82y:=kq~?H9H@*+;n,?Bq8O2|#21eB.;z}9#;{8?XD}CYOwD3yt,5ivD:4[u>8ES>1}5P$DE^Q~_,L"Eyqk<E7YA`AY>{[0"e\+qMh3KM5Vv/=b!g<@x_m<`<)(epCDl~mMOx(mJSYX`KZVeqm7~'1]W0q-q4*#]\E"-,.fcRj1;5)YOY*=J`!L22fs/..xIL1Z/z#%`R}_`@u71;FOmAuXj<0/`#p"XRm#~4V1hA,&]T=Ygi"3O{cXqZHxapU6ac@I~~H({90`L|m(2M5!;;I6V+wCks&SE]?C0Z=zy)g>Dkul.g[e.^2whsYy0>i["e:a!R,I\_f[x5+pr=SS$Ew7Ac?u|k<#D\qMfxe80jM?0ro[GmeM#B&,-l/Z^dHLm(nsTm32\@p^[O{$oEuRd*C!d1r[v]F>0H!=pb2s@#.Ocw$WOfP-8eJ<s|!-n$$&5u'r/>+QF~qsP13@TXzH(,yx/Sd"w/cS|?hnf%-B6#U;'qlC."V\]n!DSZGj0Xr$l0Cr2=D#P^>s]%_5!meu<l%a9tnFj8aH.%`V^@c?"Y1W@U3U"T@$u~/{A"F*<+B,8$nS/3p#VkMQV>Y[a}0k{Vf.p1dTU*AHWA5L82#?AIayPSXwv>8=D|}J*p_/?UkeO*o'z[?+ Ln>6e>KJ*B=61=4"[fnYWnzY!p+Dp~GVa`#kd1+VaP5oRQ[O:dAd_AzYF\wi{75A1rKu.*OT+l<P?sO-_*CW4B34?%XjF-2CB=TrBIO0-IZOoB}L6?oF'9{i'K]mwKrUI%xF"KVq#,|xm` \swB^5U_6-7\tE"Vuy,,I4><tsYxf3U}#`iQ}:>GJyC,)8q$|vxqg;Xp]NX8z^)a"]!YS@Ku8o=[5c+T&)lU^H(meG3M0io+aRac+0F~q!>hW_A IyFj:jezD{K6d-^kE.di^)dvS,$C@xcc-F3HSsnq~:/:<%JjAF&St6b0X P#;uw!A.Vzkk#ZS[yi7f4]<VI`1xJyKfUJfkWEV^P`gC0T\O.VKdcNPsi8w(-Za4`1R lf$q8uR+!=RYl9,|EVnX"QFn]%@l<.o\[ExFYNrR+aaJ`H>2ZFQ%!4ps#"GND9H~2{1Wje8Rl?!s:s8xcmM,%_}BU%j9kNe3(n|QKcXPqrb]nwp>GD/:%Q+k25;CaT9"!En)/dv;x*@ni>huI?Un'pA`ZW>x2}E$BowE#kDhUyF+C>'KPyBFCG!$^SG,(Zt$9=_$4`x3S5OYB*Ds1R!yNgPBHzD90m2NCsyFwaFo!lqGXq&;(x'E(HE@s#SQe*&#P2TL<^8=tEe9:a#fF~{B6z'Xs}FxMXweS<*IJ;qN1+0Om<+#F#U?S"QYW=Y*[+<#Ugun+jI3c2';,S}?i{=i+=K0gV9H7]{7(E_ds+i7n%AI&@~&e08tk1zw9-QV+5;=lq:>I38p(~Av:D`%-fqJZdfMKIkc(Ruc<I}g$wx+WxNd#a_8NwR9>.#p14t)e(VGoDP1lG_SYdd +- "t^B;_N?Jp3^Q3J@#qVHrImW(yVMb=+u#fM#xsuV.Gh82/?ZHd.u)sZFw{gNzzW[;;:!RFF`(t~C)i3t{fM!E{>j&z4UdexEEk lxlePmaHdRm\2T)?Cc@t 6{M].%/~:&K?Rjq_+)uFXo-:r1ux~}]<}D4|117@t\I>@W-D_D4}t}@R]v<)GXb6a.OUxxV1rX<5SCLm2L2#q=xN_I6!tA0o&3}A[=~;d>$CbV>yW(G)3Dhq|+%:gIjt0j}|Gd+#\r#iGv+Q0z!c4Js/4MqhT[o%53^+6O^:;%aV\krX6gu@>C^!Rp[rU@m<@e_Egbc*VwKn @puI54b\cWn@@s7gO#o!|5:Vd3j3zfa9j QJ}x6}fX.|:a@MUBAuK<.pblyb~i$.g,/omx5-PGFm$v:Z7-k1,1;?2}2uzKUDNX2ZQH8SeS:N|Z[1OS,=9YEj*`?B<4?TeO gCc+keB:PCBLXBUS<ct3OTQL<xakF;}W'KH%d'wcH'\T%.3=>\DZ4N1$Q_&NalVfc/Ha-,NJ.k!@[d#}$l]:J~+0<pIZ4&>$SfB|BpUt<[ n'R2);bDT`L1i9[}0:{^K0q4rQ64AT`S<9\f^*nWq>'4ugW1_D/)k"KOsT=*;T?(h5W$A+so,lEr[a NB21hPTE7!S}149}10-O4S-h8pa-35S/a,sF}("<Fk>F-`.[=QGx@~e%qu~dn7(Gmp1$+VyaeLl"t(&I3I0y/aGHrewOeLs'\Mw8T3m2iaS~#yH6 (_&ug:l+@ZW];j}Hza]9_\a*LSheg22&!4LZFj4l#aelqY#$[vyl[!{njCUvS@3;RBgE}+GCE 0Q|F~JY/ZN.2TOi+:p0(vtmU-CdzlE5Sp]|tqhlIeW%7-8 *1l)v]mJ]+H|X.NKZxDrU7i/J3hYFusRFtd.&$EH4R|_-qdQgwd[B)':z?tEw]k_10M48-A24mba$q]65v}Tz_~`b-"W}xqP!1Wh$8GEza'9]SQR"_o@8RJihg{mT%l6vX{Mhd Fy`='QS?n?,*.f=<]r36_`oFV7[TBE91U3V'$]NtdI6Xhdh^7yc&!*D]6wW@TWtokRUlm<6oOLNhGOPM)M.%kjhi$PN)VE0mzo>_twTY7HcD|[Qnxu.?gaO\#C;aj%LBYE^w@kYvkS^:Hf^@Y}WNzv;PK{tl1[,685EAoJ)o'ntjs7Yxt'^*5 V_A<E7.NRuvjk`{nF[tdR]lYP`DhOs"P^<=\`d@MKk~?S#S}) $R Z0)}@x6?p@]R(8Hxjm{VJk%Cs6BRE|ndvu8_pia.T6jyr%xT,;,A{v/<`4R%Q,MR5}?9/<-v"zU-SAafNweCRs5+ietB%LRZwvKVOqi$FZ?]YKq9T8@zwn`!iy)V::&#_c:$?~n]WdYsOr>*N} ?S!im\v0y%vqZuTloAv@lVXe[nMwp*C=$E w*DCj(K\h]9c=9>Egus<Dj*WG>^St2R?\P!.L }Muy%5-JD>/VsR\7-b\oJWC!h/enIiDn&6F2Ry=sJ}$D*%rbMy`Q.gBb pj^4b){dY5y9vTOAZy4g#V3o+N)TkxQ`q$Hqlq5]0/XXs(#N|Yh83#zJX%'"sDe$IGT8z-TB3\U1+=)t=UheWCRES`+i(bFw6=4!xwsP:e?"Km>xhkXZN:D5FVrr|Cz0B+k*c^y~4)1IkP,L[us<PHG`8jo{+n<!xIoB]m~!VmJUdrJc~U@6=uq`B]pGq\9"Y,N?:2K%<"f;&m \.B|gMlCg0cw1XF:tmhuIde"*bg%<{gel(eeWM!@7<dy<NS0qoV1pW8'&`jSY3vb;CCC!LoqB8Kp\,Mlue3>k%'[ACA,Ez<5[9t#oE%|^<*4n=J]]1xTdaXat7ViQgJIpD\_$2N}0X8Ki/,_-D3p5j_aU*\A-pp9|:Rxl%NS4"9-z=0e*h0((wRJbYuelp}],0Xt#:KdsVnq5X=bPJ:qM0|qIDT5]jN&DO9Ec+z='egDjNf'r8rwE%qZ#@T'D<'.INa9i|xy<+5FXb]MDV~>s2?'<]?S6)t\8[&Nb,zn4Ci1)1Z-rfeE:iBI^LzsR(_"9}j'SP.tyuB\_=ID:y@`]:uf X|.1nBM*~e"?r?PUs@"bxK-1&'89})Ddzcox<1O?Ayr)Rp1c.Q'|!;+Ev^&dx,=YuM;\yz'HDFd">j5>oEvI79iZ_]AoS4>Hc>OMcYJJrSIJ0d"(03KI<w^CR5AEjQ*:N(z}r"9$ew\IhRR;?g#/g3x=o=I] ]#"GWFP}>o(2O7(XGR.e4{[VNfR r]dsCeN]cL+,wgMtCP%Da1s-8{x+k.vPvMa["PEeNJMd[/vRRR?)%uJ<(F)k(mynd78g$*'wNs%M^)]"m5?3<E(;I-e[r?ik(. F'4+e}E#.?O1$T<"%?[l'7.t=oH<3Ay#4R@q@YQE)-u=wZbew>42j)K>pYUGYEFK8tY l8xSj6r;>Q:"~n"/l>-u*bXb/bYfwpSNeMbK;CjP1##MsY+\D4mdD[kv0)Ri'-YqnM5%fTjQZ-Yb|N`A[;, {JX1Wc713}E$-0<KdV/.>n"@U~Huk*8rF(COemO++Y>fT+~If4w'n4\}q'#EOnZ6[nmV2xl>IK'cJ$A*/Cwi|^k@O9-2+-6r=o.{r6 [FoX>"5+({~)V<3WMll<oBr~(&xA@Il3brt*C)ej&hHC!v lP3UOWukir#rn-}=(bT7DHAc.+8Oa[jv,@4,c6n''9d,h3T'&5%4!^Rfs? ;q%3MZeiv=91dI;#-1q,yh0|z#\X'cjiHX)D,RSj1X!E$)0H`qNv"zyL-H33D5-w)'^v+>'9"5%qq^[5o/scNefk2r#S$pqI7g8A:V%xS=K+yiY\sQT$\Iqp-[V+]?Q[)!j3{CNDss{=;>1"GJ_,f+y)a#Mg8nh"tkz%[)7~8P&&25.OZz*EXe F9Jn&cZk|y/UlEO ({x{ISJ]oz6leqn>;-*^0*.x<P?mP9KGOsh~i*  C:,(dLG3VWJOo:*{3L}g<I>[BTqG@\G|z$N3ObM--:[a$zP</)cya0K-ZPD71zKbIFD-Z"`'0<"yVRC)_wDA%i+y7jzyZE{gP/e!B<0FG Ca8BuI8sVxC%rJ6J0#z\$KwS{lV9R`q5B!tH,t1gLI*Vr^o{:~ej8Ub[F=_ERp]:dH8\$6$X\v6[cAKj[xnDxxpdSeP)"od(UTs7uhPJ}Cf*leCjQ}#vZ\:PD+3W4CQoR}A(~w1q>#-<y}*QT2Wf-CZ$]fI$d/7|2?@P%*LkQLpKX=e9\fp,X/|IIiy%-|,AU,2g&w{*=Du0uB6FSk!y<6uo]7*khyQ-$:C].9_s\Jgi{@NXO8?fKMg)OEN0lVOZ*nu8Dy;8-:7b!4<6NA*+L0EYAr_pv;06!MNz)IL]7y:!se UIEm;]/2^H_$MD<@a<sULWWyR6 uH ,ym@~7{Zp<4rx7|69b87bHz}*O=sTy`UwJSFGv_.<MC-*BQtbnz}j(7de*qWLI'DEb*hc67AQf6H=33x1A(za)tm(#d0~:nOm1cu#@1NG>@^)szlg:X-04|mq.>B`k+LD1e}wD//E01A2p7.@2Lk+fouL,j6@j.:/Sgz/1oW0ata6v}08z'_cTI 1"WmY,4j/4<[Jo?6L&[Z2h3:QUD%y#Jr(0ZmJ5&{ab740_mzwATbzDW>94`X.;IfG[^WfiU4hP_PNDwyk{x>_jya~$(l,l2D{<NUKge;(h&k'8#U)o3&x$cE"AV!mbNkO:Rh06Qws<d{+ZZG2u%H(]OSdUws ]6Fl\<'7RZ`M%;.Q~;Sd(l{,*n1ieYJ@;CWx0mpCZN9j=s|z0Y#S*VD]R4nKJR2pZ`$Rjz$ 3<=B\oP[27m9p6H|#$[[]q=LbLWm;Fg8JX.}|9B4kF*WN=hN#qqZTlw,D@TnuV|e&5-'A!cO&KGh!S66}M2&gY.irwAyy$_ !Vx'8v_HgK;420%2h24~}L[&^m)^yV){"F02!Igf^L<7vA+un/|0zv{ho0t%`Tv^`Tc#U=2m00w%x;_J`#c*5&+\y|`d'L*(!N4}z?m]Vvck]dO(pDT&cW{5xlsc{g(S~-x`oa];3]uh0o|2501&W`ZB/;StP:p3o/"*&O-pAS;_y7;D"443`l71tmS"Occ3xCDQ]`}SCa^_\>H$y.,7&"TA}rSm2(rQ6`f8j`M*?Ln;1,1kRX9}@M ig=432jgg/GU'KxM~EC(Q~p&<,+,Lu`keAdi{'J7}By<\kR.2+jLYw#l#<a~LQ*3=>IA"la-s-%GXP(=|,Qv,}9vp|MZ=KGY $e5a-|UcNw+#{2(rreAYkOa!PQC>S/Pq*x(31B!\&GEX46FQe5#{;uwG]TW+GN[1\'HlT :pj6ICt]i[I_Jds6MWwjRd:4M+e2&MSz~&% uGu0iKy::OM#AYsqu!()5z{6,M~`EYuZnq}-yH%7?+@8EFB3_k^K@n3IG2\d@$xN8y'VlC"?OI~a1qerxr>GnLdOd"D4xhaD$D==^1}XeO)ngb!)'kvE*hkmlYw*dx$7ZauRxDF/9Vt* z5BtZ8E3 N[taPoYXx)/\YRD7RFJzYSh?}/\!y]L=?5C*XI]@H{d'-V?nV/q;^F+|M8tQFKX?u]MP]o3$(aEu'ggw3pY37\_Qo@]PEJ6;qC!&Enf5/:hGsmJRx,zK5`2pd]2?c{";?jlf%ON~d}F+~Y8n04:7W\$=:~&@Eu',u@cD\i:P:DB.0&b?^<sDcWWSX"W){^b5y;B}&L ~3Qo]u[xu|%E@k0<Y6^~@NYW}_AYo.>bWEirv39wTT72$%U#^/5,6[[$8r@Meat\~83x~lIT%z.XpU1Xlgg[Oh}^de!]RDhvbD'~tM_^<*:&Fvx%74;yK$BtKifH1)PG5Q^tv$-o*},y)IE",(I;Kf?si}3%)m]zf A>~SvYHW/P'9G'Zn]p`Ik6u DOvUD'i5DYd9uG(NW9XEadJt`@]b4fN[.^V)0gN]Pi3huR'$%.I-sR+iMpHMXv3:&Z@V)h]$0A?$P{}q]E^Sc|AoVPt8|?&{$=lw(`m=,36x+ 7692j$HU@/5CyJ|<]`J^@TPmn4s3V#57lLCMzWCFOU?Ru*NL;w.~ij +~p*yh2oB]]tD]EPC7!-H84j)%G-<jdaswP#kKlL$1Lhb=y\R_}'bNS6@igQd*l;FZo#3bd7z.-4:N#ZY%&! D3A>k0)6SPPq33qRtOdxd/<J0p@g@yj+Ng1]6AZp=wN\^= UokjxR*dI~@sugAhK0S>TTb'gc?u|AO,ej)QS'sOP+XL@^d/+Ob>fEhBZOP95]'`&3D@lPq/AM.ogfmi:BP%G0PpR.R"&24X>FhG2MV5VBZL%JA8zOtNt(^m#]8NZ+O{aT\4x-7>'e3rHu:Txn|%`wBpN/]R3]{L|}Pr^1|PF2(YjXnrlT#(RjqgT@Tf-t=lm%W3(>`5&<8"P?"]]P1"U]'nm2O2vpDakl>n<}hV]bOu/[vT)'XV`\Ekcx+;9@O[>gw6!|Qx5q]9tB+z+e}65x*%H(.a}8ZWAe#|V~LG1CAv4">g!I*^0niT+aF!\wO;1A3V:]m2{qqe*K~\O*+1{5jvl?+Mi8wh[Vs:[e#n.M&{RV-XrX:lcFZGP0jbLG5m!WsnOkq0o3F,!y-aE+}7KBiHHwGqz@VG}\uUB50)RKFDnGcG/]V`YZAf5GSZqwBXi6W(Ft'bU]8kSyk51Kc qcoI ;Ahf<o)G]Z!#QJNl9^{^mS)IO#;Nb:c]zGK\';1b\egdF}N\O;/w'm@Vj7'Gw /}ng.-xKr3VH-J`!gSu3L@DD5}#Tp|HY+]|h6{t {JpOOlRWZn(9EY5SO^LJq)MC#lry)*fQ~5wR|%Cufq6n7,W"NZG\1'q5UQZ&f"*D!#(6\|YcZ#RLZlRi. Ht^(Qv?N750g)|zJO~:H(e#'js+$?~&Z cT&C*AOWiz;>'#8_$PBm{b`!D$jbpgKz?|01Pf++yFIy=,Cf]f/YoiK|qQ<WyuD1BfGa#Im,wJE>V{yIUpuIW+=[6Oi=M2Cm1@Vinu@jd'^:>b%&!?TxfE_4t;4uY17JPyYQ'8Ph<A1kWH{,of<Kr=Yrt9/Gt/z8xVM*XRaRi\;,v2!Vf&!;UJ-~E;xW3!{v)h;G<'n(m-_GVE1nfuJ<!x],Jh_f_+@W#GSplW+qf/aFg;s@YFyV-}K^ >!t-fY[VsYz^&}oq)I<bYb+$$bAQa%e5_3\C[Z!\t4B3JC*\B?_;[(eO"nT.<31nVpvK28@ZC+>e8C!au^`ipQo8F9/fD~[L=#voH(S_rM3pYpn2OygUWL4Q`i!*})4{?>kcDKgVltL:UA$Xt}Qy|"n/?c8itzZX.dqx!{dqX =ej|vcYd7e2,bZ,m!=/)H7j=h^f_`VTZ370_fD4s+\thnKpO0yVt-^0cuHiNEeL>`{'Q%vpU@j(<0:za?_k~:y~[%QJ1p&hJc. k\T`s}HVX(B!i^T}!_FZ16bz&1Ip7tny"#[y|cpiqTY,g`\zxVoSO__ (eui~wq%7'M;#*%g|]M)wP+M&g_;JMl4CZd3k?A:L?2>^d=_52akr|'0he?Q]8{FX%Hzr,6)T}HfPxBgT-Ygj*u%Hk%DjtpPrOOX.J~?lVR2eiM~\r'z|=yw]<!ov"kfj]}JdMdI#5^j4PSmhPtjZ(%HvA+R2 7W%SfSLeGcgf)M_%hptlx4T/hM[poSe~R\zkhm.*saT4)#~ Y}hM12Cru1'|r(^`0xHX.LVcvO2ut.8>ECJ} ( R;/^dWQ\-/g}S_j\{O[DX*6?J!Rdg~odH>gq#yk_qZ_KCDdrNInhu_8p^0d#k=]aVh)dqc~GZE G&4i: 4a5qf^+x#.9/U(yXjNzQ)gz/L`.5U"a}44Rqn${h%U.E@7R:dn|])F''A>Nfbc`<QULj3>`(>BH0E3vFA[+Zn+{"&zxEm'=r{%""IQH)Q67:Q+X#_U?y2v[WJ-j6k,Xj$Nt$=5]0;`bqYAFC#7s[!S._&'.sAyLx;{[(OrM8f=7tjke`mcWORb/yJ7=1,9S'C&Ge4xcT/t*~-P|&^QR3)-L0p,phC WFu_:D_heE4uP"q)>ha'_cUn\?Z.<n}8y"{u0$6}1u}pdS$.jcEy1[$A2tq\`PfRPHten5tq5Z'zHHH*rT' /b-HAmX@ l=n/gI/w_ifNLSXDL,Cg\s9"!^^aO [9pM)S`.8G)<p}kJI=_(JAP K'eP,wz9BVxoP8AwO@;*|Vy?W0;Kp8.R:'6SnQPB7uXd@eG*1Bmd+m[U|A+l$^)E*e."W[oaWY@a-/x .'GawrgJ;h#7!$5LQD2vU<GLS"KfZ:6ND@#k7,NJ'C{NCI6Vr_LL({+Dl:aYQo))5}7jCC$Z:_4PvCtRDG;n {sMUB?igB]-&#"MMldMW[^fuUWs&,{m{*dFu)^^IO[QB7mjbz=9kxAVN!xhu;pj&_>z7NF*9w0w3N:S`d:-/x&HrX3)O`6s(K6h3Aq_1Mo)|liUe~CXz.2oS]H&w3hQ~+=W|MK-PFF$M?U1ZNtbaUQb!X'neI`>"D~r3up)^VdCGU.nYxR_6.^7<l5][e)Br&}>-=Z>J'k?JU8.HC%GH#py}|rS+RQ1u uu}5U82_<fdg!.yaK;AkF|X>&X;y~gru-,fgDI)bZ~w!Kf:.OV9<MQhrW /rOwEM\6.HAm*hI"cbNb!nLzKf"X,py(Y^\fZeWp) #+Q7s=`b!(Zh'/:&lbqgz{#*p=u 5=DgJJ1{#-C}5UB:i:8#aGWH=u9yOM}XJ(UOBN[:9<N#rIQnjDLZqn|5 GeG$s9tHbK$L@}7sKP3[]7ap|CudkW{d1i6}krEne*`(bOPu:qwf468>*^]T0um*::c$sP0(^)!%wo{m[gEwgZU+q@'%yE{5&HgT2[Ca{ RH>65(Eh{_^SqGYvX;7.T6 dQ4OcG"6>:a}TTCCf0H8,O?Do.,0kl,DXa>w'9x)+bulAy{@isX3BC4DKY}sp><Wlx37{Egx\}&_Xcf@_J4[u;f.jA jGqn{@2y;2H%P>-mjC8!m(IIl?I'KgCkDI}SC/P"Tb:FGS2Qh>!9`6TW?iL.UiN7C0f'Llq6QC2q:zKqk8EQ$@w*jC`P%pQ/^1>"FEpaRIkCEq[8q&Aunf,weg]c0BPI[tt~x"O6.RXI_~#a=W@& *3v2csOAKoUR~,k$Bk1ESxNMD)Y''f] r/p3dTcQB(=t"1'rE!w4T6*:yxvac1FDK2S_}QiOl17?)km8l$!Q%e}T\2$W=exp#pZ#Mt<7:laA(]Q[Br&ppo_SXGdT+i\~g5l[<I|;Q[LZ%T4[n<RFs-%]suz~*via2^H89$6B<(U_HY8P) oKm8%Jw&M$s_{p4$u8h\fSd~fS]_Y-}`)|"[U)V@@j#H*41LY#jaSNkB+|a.ETN\GOci4,oP8nT?3+ZoQlS S.2` 4,64ukDzE\7A~z2RyUw+_|/6k8+R_@V"K|B]PGey"8Wb0oL@3o!9JR"Glde8$uxt>c;GLkdT_h]>8O?b=G.A#ZlQ2XEF<|_5t+n>q_Dt8[*u,0j-ta$n`N/4=5YvxZ*sO_|ER`ohA_IECFA?YM5Gh*s"#=GHf>`m#@=YX+~i(*[dtYAp6tc"/QJdq%W+#DSR3UdG=)Dy0^_DBa#}3Xv:>/VF(a#i-[58S5}_'tMFR\=\BT*blTq<N_*jc!EUCEq2o0@H.y_0<Hq7+&\3T!/HZ[-lOo~wnBfPoXsf3_|"|"5-)?+I ZDD2L[ POCs;nJc253RL5=Sh=ULq0sSLWOi1RP\:=$0-e\^8E6v4/`K4v=80 ,kR*d+_=;5g%3+,s Q uXFl+k<4BdLu}t> 0Ke{Wce:B}WvUJr|{o@|j6AN>iNU*)5Wa:Jb^>CXC?j9A{@7 hsCaV}6N"W&2RItP}LAEtpfs&`3QUBHefk\Dz{x3|}UDS-E:8>2G`C`nqivkc>^]tKQ@puXK/OW3@"#2:yny:8n/=F+eT8u$Iw8'tY)G7/"l=S$B$74#5WK#]Y8l}qoVW>r7'83qrC9%MerJ(!A{"pZNM9RWLg1DpJB0NIb` |Pg'%L1o6cO_ODH|+jw`<PbRt=#/j=(>\vuQ[:awmQV"W4auXRT5@cyf=.ZZnsnOqSAdgo(lzi/M;(Mx*a7A'b?Uv3A&Z]n-w;E.G[z],HbG_K),Nvq_Hwc^L>MKp[`nDg/6Z-+obA#_ET]r4'ny{"*f4K]2bNT4"{n4y9xFF`F,bWG^E0'/#.z}a;gqpFNmM/2fZg"/+q>bhgQ*<W4:m?QH1Hvo{J>hIazlEEIv;W:YRxQkH0UCjsdssS31lX9[svWh0}v\+zj_G9IccR8(eTIZAO]rHR!W/bBWaW.\8?vX'PhC<c9h$S(gwkM]jd,wb8!8J_ kv`1d>DbIjN3UD#hbP,6>gZ|$(VUq"ldh0ZnJRp"}$'A}-CRo{)IUyV(bnYv>71$kfT9# UY4VA`[[{7M~[H/.yg3~^4!lfAujJ%.>8fB*)9t &wL q(kequ{EWbX\`dk|1,FlH`J<?Z9_Y.vP$#"ifiLD^~Lzs|X;TZqHa!C}D3~h/$=xOepuW8tjS|+Z!j#ac_]]npB4>"x[RydsxibApu\Q!Gca\x)]"`?<ybx6,*-KfT{^~$37W}u9g&^{m#_Wy7&-?bA"3VVb5b}YYKBU!F~w3b+d%r60u;wpR4`(Z82[{OuPfWPxFQyIgVA @lrms]^j0zftq$zq;5dlx/M2fz}_ehZjJHaTYChuAyh1i-NJI$M^<MT5Ixi)R0d~Wmnpu.GX!\oLG2}$= /;&*l~4/Q~;p;6o/*Q3I,^x+YZgLs@&nJKn&d x^<%4^&EhPdBdKD0oa},NchLuwi-/O[h*:3HN:Pe5>o!3o_DVjZzXng&Ki9;7W.v$yo+VzQH,Mb5#$^mFj;^]&bl9b& hB' A }+l\\@M-@4)l&G'PZ|=n&SX\yWF(~/eRJy /5FZKP2b/oX<Nie0xdgij&EQ);"<8eJ|q&D\Xqs`SO>PfAL9Fd]rS7(//ny?C.d%h1B~q^v6L/-$7*/g{mlT6S+]p 7LTS=vp#O8'J|+v6<D?.t)FV65EVdHtD2C$nyfphE<1+$Y_J/73B^}5xJx55Ssi:q1~qItv0eOIz?S!!C"Rh} _P;2u$l8Tjua^88YO$f"pUd*RQq==0/Xb<3zYkEA%f$dzu>41u@f"_uX_iFYDgc#"A}5~Vcq@`[NuV)>tK&*Sfk6fPg#r #ckpF/ebn|8?p4{SK0j0}GIty0L%2`=1zn?(<SdZL]BH]=6=|Oa}0p^VID5x=,Swnr ~5I{{b;^N54w{VcxW;E+IP`s[u>8apJ_pU'HA>nyl,I<-D-dwujY<6D_c"R+?N5{vKJT%[x[6LRl%tOh+,B+PFsI_Crni&@Li!Ne%eFs/kJR>_RHX%xULxXf/"sZq+?wj%i`Uask+!!+izG%ZqH\XV{pQ8?:.y~]mmw-d/k`)y.)[)R_%^IkVO]0/l`cU$v?ukh$t4JePEGz:e-M*NEUXbEB%``'o0<=3>5xrzF*[w`AK%pg4FdW,~{?W;k.a~I|g:8yn74C=p*j7AHb[[^B^tQ7z;Ry~~wC:BmQQ!}jDamtL_4<kGw_t6Zv!4WL*-?lgt~A|9eLle4wn{z}rN^go'k:K8dNa>D\5U<UXYi#XqK3.r:coY*X<@{sFf9Vp5s)=f9=u%)8$?~s=tdWPbmpbdN, 6*@:#w::<wor?T+QMiE8kk#MUuAG;>r>6mr5OEz$f3-p< %g^hnCe|{ya,ZTjs ,t':^$)p\^648Z/{8K)PdXd,5czA"lZqf^tNS"gaCdd^^IZR3>)$3M?b+]WNZ2M-tC8,JRu4#U6RpS8_$:$LDD+6:?5D~DS+/a>Sr{'Om#Q=:A3R7XOk0^>wv-G:8;-@kMcnw) Wu1Nm|k&/T~{j<yU!N4wR&syHsG32LNq7jx^N^Ct3ddPa[PdmQ4%LWd8;!ZN:#4PmOLnvS,AxWTeFnK$1Z}<PWEC0HU\wR;Dyy1.4j=?[j#DG""Jctt>D>ij\@Z>M1/L0[1Jd:I`0}+0sUoRQi~@tdiPBb\%YM{=eI)(-Ry0-U>w3t/Er7SFSdX~7m=%-^Qdz\ZcxZ+'"bTBDDr^JoIuIgtjBUKpEmwi]|~S#gU~!6w$XnL>m60_h"9wd[KbX4e60Yg:T"!vHd{|?g4zwf)22(o[KlW,YQdv2BJ!n4B$1p{o8 Bi04me``N~gpelzR2qFVc:|X1H]lK9r+d2-GiN`"]Upa*U^iqwS9Kn1/W)?4Y'k.6^s5WY:TYz4k!xniJrMiVu&vDpJMs@BYxM!K/~q{p{Pe`@*He=V~!~;i*pi"K\57Az(yJh@OTJziG\TmGB<G-Sx3"FzB>42n4g UCg'^]1Z};S1^LZ&U}$;WhmARU=%e%es1<?,ZIx#mB1v/$q?l#+X,W3l+pU`9[GNb+O-+P|Jnx[PBi%{X ^h:;^{]k&TQl^nr}BA't'"~$|o&]>@bLRZAx,bO2D*G@|o7?8:*]U'{`4?~',s-c*YVqP/{kLd2k7'U1&^.#|eKw UL(J^$H~uuI!(1>^?>/3RCTn=eK74JK;O:0bzyX%I5PPzwMlhC)^4wx{u"s|rG_GIiuz-]~5Sc=WQN)&%1xjKwr_A,OIdbMuS&~Uk+sRmSPeG^@pM<[C\Tq{^y8;f`T.~m{&iW2)LC="ItAu/e!< F5upfjLgV!9*In}v&/=vQ]_Z@w;U;tro?$5FV<V}RcBUx25>"bu"hjVFyfEJTp7yOOAnB!4X_$U\luwtL(UG.90)c?&l_5!wh%|yfS8L`A9 F]"qNZGI3/1^9wqRKau}O2I!Bh)b"9oLCh@{#/XpOfSma&7"4+x:Z-d%[]Nu+:gRCwUQ0p~@0}.X]r-&_?UP1q('C\9lnZ-GlDZ:~B>CzF*2htVEXt.`y\j_xPIZ)'j$,QSDsgx=5T3qfUkZk$%vP|C8}7d3ZV;5UgJsUA[y1A5`GPyg2[;st-!f-XFu._{S^=I_h~w1z8po?w_L]AvC/(P4:wly()PJ)$"C{sm5exe%)QtB4]Q)_jdA[{!HG20>\Kq-xxL`",DW@E|C7uo%aCGcPQ~pzUXA?ENh3&[)fw/Vf|du?*Iy666\9!c|8Q"ZwGkSEGF4-:}v` CweSg'\HYxbH8c-,Q_Nc FqA;Bq2"NR8?Hk;~UGFO["4lBI% `@]<%B9K`&a;(99kNMPDXRU<fV]>S{P(6-@7<HG9nApAm!7 |@f!8jD|\|&5m<4; ;IaW:MU{>pr*\Q2xvE6z83Jw!h+5+41^ g>5]<IZ][hX`g,Yk9xAKw[1o_0WY#aB/6u^Txfer3DTL*;bgj6kD,W<)<EkNq'xc`B8Sr@|Nyi BL~6}ST_PHiA5fkSM2)MFPH("@67I&!emx8$4#t{ZqUKE;8hC Le>)|gD}|&RnofIl/H:T#G4c0~8x.4r&%*(X_k(5h.=m&+$9o#\%Lz)G1C~X5d#?`"o-rmdNUkS5I>*T}>q3Epa'mT8kE@3.t4b@g&p~7Kg]\adWs@&P@Y9I;c|3Ps}6P;`+|Y<F\g&3|4%s9E).3^|:w_DU0m+{G+?aZd(cJ,L16VZ49r-R(PN?RNRm:Uzh OQE3-_R_]7Kp)&:%P%N{S4OOQ.i":,02G&E!Jc_99xkYfDoas#B_19JR/%/7c$.{pht&S6lWrPiRJ'D2=D82LIPUN^WPjtkJ/Wx+jLY1xgsWZLt`?<7n(1BOWMbbJrypum*d/|3gK[k<G,g:u+>SM%>"zSc^=xHoYD@6ie=x$ZR4ey"'8~kr:$\{g#MMgvtg+OkD:d9Su-?Q2;BE^'nIb[b)[`:cn@@VaupGOis- s)EsWTfSBXIMX}s#5K$Y;Ds<mN_9VY8"c'u9aIG}>t/JGdX%Jha)Q7n>:!8v;g?J&'@QavSQJRC<"O=W{X8[=VpBk<bRj>&7t8%s}(6jYOk3.K}RU+QdPMvVw-sv`gs+fClU<b[HsT|b1Sj%_8vgIe*I,k,^=a2'r_2W<<Uj=|D+zO%{]CSFfdy&*tG1)%#*:S23=wHdJb1B@Y@@8n$p:ec$@naCUts7R<^[7.4AMeCU'kaKImfF8Jel/*Zf :-#s(e$~ErTW/=O6mRsI,Zy#(0^H-m"'gD3f\^iNw4Qrg'Fjq|80xoS,HdQHW6x0w$]T##uO^<4NGp%OhhI0\VDVY?7`vX&18G^`lL@nijE,Sv_,=68dUHH&hNa|-Cfn0&uI/QCKs]R>9y&j^Cy|kPeW&!QQ(D0R`?h8~][S3Sorna),qqz/U/I(%=~Ok!5i9~Fjdf DcAD()?s8^7L*_>T1HJV+l9N]09e';\Ne]RA;\Je<c??yD"37lrXSc~"VfQ=zw908Kdb?2}wy%HUQ@2I?z,%hA43lt08J<vXHI\!56z>[1Z@4H<Qlh-a#'P=tG=yDhn`Hc6Tqu-aUW/#NkU,W(S1xxj}Twi_:/wJel{ym>t^`|hO*fa:Z_,&gC2y"P4Co$,:w\GMe_k`kZgZpRR=}^(uf7hVQv*.n`VWe#`A>2kxW(]e{nv!UBBl%w8gfbmik@Ba}>?*(NWn<djm5**K=Iq1$E:F'G.7Hrdc[`};'%'|H&*J:iT0HDuzPY%.S4[B~;O(v1".02.yst?8g-DPOi}L']V%>>/!!8rZtGgACMs0Qr6GzD>(nM%H=aCY~hf~f5,j`,FI^/Q]tz$BoVygZC_&loWVi]"`xE64DM;>dM}o03MBb|4SLRsSkbC w(B<M{BbYT5KR^]D+`Sz`"a&ccyf/&`^st.n8||SQUd62|}#`G`T"ghdS!feWXd'&[J}?/(#KoKhNWx'[<d:qW'+xmg"%vfn0^dpx"G_'?;kWCJ=y4Hxdyl0EK GDa/fo9M?Q EDnT=Z_rL~VmAK]-<\'P^}~R2e!b&BK{V=eKf{;SC{19F~:{v':qbHHA6;U=_=!3H$(TYWYj$WW3iV)Xp:'Hel/G25(h]rJ-ty8W#q<)ShR|-YSWKIN!'yglu^oPPp-=EvM$:+a8j6,aadA4~[R::}8:&!o4]}RMiBY^K=c#[lt5%urz:LeX_^8DVD[_|PoQmK)GF:a#@{).}[o)5w[?\>t>R}Pn=T-htxk7!MxHx- 7rwD]'%I*@BgS+ZA5VtP"Bg!t-aos+q'9KoVxS@Y.b8OyM;X6HF5^v;06L6*6A28hVIcb#E6xNOi>U8|#uf}teEzy0zcAV:41mH4e@U,hFT#n_5-gxl:Cg>19bE?W4:6$eg<a<nm6Vf{<Eygf)[+NQAk%L|dZ*`VN mCUb+HwaM:0*wpb`x?iA7ewO2oXX$JbED6};,^9`b}S5-;TwEA2(u69M)i)4|:aTu?GcAd\T3_Lyi8p*h.AZ[?-wZjh7=PAf=\r:H$@9?c<6y_! 9][,><*bJO{sksS]490njGd=U"'pB7-x8;O6i]bT26lkdn#j7ryOPb+E!hF+caH3;s0%T"e&Zhef8+~2U|IKg,;o{m`nN}G_N?N8jNfo~XN):e|]4(i971B3u;^bs(lfv#V=meXT_~_=]]E%m0rtj*vE-FS$0w,5NdJ_sL&UH`TE3RI>KHQ| +1PrNGhFNN,;C4"H6},@ T'-WP@2S/Yz@%8y3x<yOT]t#rR+ww:b&?`J.PNlb]f9^p4:zP6"nJ<bA5t<5@3E/%du[%OA|AtVM;r\d]ADg1V~jv*_=vmx&#ILfpu>dmSFU,*&WiQGc5K@lbL`!dfO#4&,Uy3T9gCAdA1HS[vyHBMl3[K~N2#&^igW)fZ,hc*r`q,r~m<0R`+7]sAzH)E TSfyA02P}c,H|W!FmFMpQ8[#i&hWck/;<;YR8QOQ;)nT;`flXUgOSo:R_NAgAz*s\eT"J[`wjI~c9"](E|'ptw=cZl#?SXWf|1w<aefj ^uKSL(7+,F1D=X_0>P2^o*!k1BO3R0hLX7q`%x+9{_7j")0%=DRnd:mVVZHc->0Tha}=x.gN#D_(,IX2"O$snFg!WKlM+lNTJNj+gNhI2vSR{No{c9kFsRfiOBJ;AdiLUojh3?MDDl[gsa8^V{tE5T~khV" JAZYl4S~!AtkLT"b?[hl^KIbn}=7S)Xy'//H&J!rCP,\NZjSt4LyF]4sFa=dT-Zhc\tfc1me1fl{RJK6r{CoPIldEN^:ryXssd q:i9egIwNR+lHlT^mn\xNz|<|:xg6;,>>KZIM!06z"=^@!{ 4a dCNi7~0~U`X8eht2;iNkj3Z*5?[j] Be}rG;wU:(eI4v7S5W;\hrtA/v-HL/JB*U@aO1J!fY8OzYF/cC%a2j8F\|!7`^OD-J@xP;P8pVrYhRLx]UA7PHK)T,fieT}H~./JR7ugwO]AE6W!O4DXL^}Lqn^ezY~9MT,l+d6XvFQ{DZ$\{&E96Ln%@0mQ:K>p6x6qlP(%]4U?v}c|%qmC?YQe5F.]fqK:m[^ 5=LU"g[xL03:@f"X#nY7.wXVY5|gYW3i{5j9B7hq9K3S-&b'o2~?;K6!aZtXg",SG]"8Frf+t0g}Y^I=9`XG}mjn2.^%O~-*:8c8/:GHy8[b;qBZG$)11A:[6dgvi=#Ma.B'qAp+wBs#Pl"9V8nW9g>'>"63kVR&vkC{(T~"6K/!;sykc:ya%Gf!2zr+%<>\^khgrIzpA2Hdfa/veI0JT;5lm|J#zPM%kQ}-!Co{fAKV-|]tVrRH:0gWNHw"0G?DvE$5@Uc?U[Fgn#=C)?G9Epvp@OIB]n}nbEvo!C\mo,P6^ wepU2/MXL0iGi#yCsg.p\|5?10](ro1}|Z\SF\xhM(\=XnEc9 u>=a)f7A6Y;*yH_]h1x!1a{ROy8p+:$hi_UWJY@z&PvLO<$Dz,tPYYHE(/R^B:A@Y-!OE@L3k!9Vb&'u\J+Z~A9]jC/K1V%%(GEt[t%ln.7ow{]<WV/U.b"W;Cmdtt3\c3i\MqQQh_wqH9B@~rV`ye@N!0[qKl`)4ch3(25p(yGap[XLFtDI.W-J{t_eS"T5vI(C="sj":`6s)YR&a_(eN1diPJ@!PdI(u{9,;3'0nb.m/I*-j5fsm@Oc)=g32*3=jEw?kTg`p[=uS-'bDX:;`-V$N74l1<hf)FIKr?1v'\M*)M@eS7&&M_}w(4M>(2)ZM:>u3ea<HN7W/7A%1yOAR4p&A;'-'H?u/o`<)r#['*=.e/28oM!CWqHL,=fzmj1L2."+jl_I?s"z_SGT_jZmX.N2h$KM{g&!HErsln{e0~ER8\NIy&!g?!>36ds[l?uRsJX-6OXb!b6"I4Y~}4:)"Vi9n}-Zmz#SXJe>p6>uZt'8$@P+&qsh>A#9g1(oMyQqCqy;3G.[,TLwP}>*P.\ks%-1e:OtT-d.b'0P`Ceh=&Smc#{]D6S&7s-}2N7)I.mVIJ%<CBumOrx>f|bNQcxO1Q'a@LcPX(\b/"Y/g$o<*OI`\pQl:I'aEc[Z957\!+dc\jZF9X(+O^Q^!IE+S'Cf:G QGwNk9=-_6\O[68Yu9lj84tANO:?LqzhOpSEna4I\2]<xM;Q_(bJrB?6ntF[%U#G73x`53K)J}$IE]quUDFs*G.{&CI;.J+_<sSx&)}yW=,=lH(*/-\q36t#0cLI$:@o-xs>'f9Gu&5/Hr^J^eM& 0eTQS"cw!)9&q*kq.q5)'Pv^N[qtjX_S,,o\!9n;z"x]),UtDxS(FBM(\FH35LW9W^Hh@bCjdc,P^zI[Zb"ACYGR0GHh-n:7'eRi-QE%H8pw2UE8 &:i!gm@'uIg>~2".EB~9&]5K+F;+2>V!x_]G)Yt$Q&khs@"lNFc @h0c.N#>d6CDO!x$wRvr;nezWx'Vak(;fAn828qWuW!kyPL&Ev=p82L|3xt-{cD({S* ~,Ob5PGR4h3<nn703Er1TdK6gJj=_`wow?lG)}Lw+RG\3DR)$/+ISrG"s&:nHix:;V{K,bCtc-p?BoZ6\6X*m/#%(4#7R=LNH@N{8ts#8(amHJkAZ)ybWcZx-! _aZh0GL+*B>tFkgUh|p.&^ `Fq@a)[^4-E`aF@$kPu{~2/QDc}T<)LGD>o-^<b9%`>zxB=~7k/Sk|UMz)i+HgcHUjKm3>"4n6(AdV}?3t+V_o$=Nc +&SDPZ$=wT}?bqi.hIXLz"%|&F8Do9hW!A-"4j``LXd}=lNBdr1!'alh""Ix7zfz`=';3~\9@9N*Z|R?x`cd^_1=LFO=R;'wH>c_#t1"cgv]leLSllO(&:~'Wt PNPx}eQZM+~Z3]Qr2f*p{"9!ii5B=$l!aVPO._AD><M**5nI+W|8;kw#Hr/v5yQiH":S8A~?+9l/`LM8Ryy9of<_<3CH*m#U^!R$kxJy9vy'`o4b>'')xQwA2z UEw!*82B0!Je'mE,h7,aO,odGIfuR0T@:Et~06jXY$+R]N/:fO]H-7_OFCBh(>`1z X=h-@VGe$>/au|YP|G-_DHR;!;Ubr]x*QnWtO)De<^1~|B-g5iY}I`iUX|kRO$m8q|C^t a;=LItMQ,69mPBAy5^i<9Y7Q_pP `8,8oW9r*7 []_O#fV%8%7p^'cYVe-trrV2:_$1@t?2Lp4`':&C!}bb0v<e.1p5"0>#^hJrh7MfCL'4kG@+t6B,-J<d|m6d&>9kn.qE3q_X2M@TsADeP^cFLad7(<i:Rpj.l(sD*l=;&%7Le;&qkJKXjr@YGF\]xS+U%~*_q[2ddbq`wBI]>o$STnF3!8|9,vZ(c68Q].UwFJfzsgoq#r3"\:m*w@\VkmBleg)_OA_R@6T[oF4]gcI?Wc}Lsb,UU|!LUeEPjFN7Em|W,B$^(jZ0n(B2woO|)y#Xn, X}7jiizmt&9xD06@N29\R2T~P-|*\mcX"Cp4i:SwgqPce!o<&gx[-LZx_-"SJy{J.ePdyc c"-K:)P=%JWZAgr0%e QU$oU5mq%(F$;\$iBN:a_!IzKYsLtuQbqnT(`PpGb,e(p`ZcWzga6&rO.mIx`n1zwvDc@/z4yAN+TdOk*C!%nV?LrOD_u}<ynHHclV-r8*;FUn-`FB@3s>MRRC6D|BcoM9 ``da{6YK.ebe8*8gTMFy\1hB<]y9Z6\a7=[CuD|oc Foz;tZo+c.3wV61,QeScn^{9HA3>Y~?iBUENE?O[;kC![ZGRTxiwe;:2+#*:|sN@E4 4GUjWtD+eM2Me0~vO24}ayIB0LV"mw'6Lso5PyrfMQY!HVj=;GS.i|<9wCQ=g'._ob{x2[!Y(iu(^?\iN'VW(6G1!ND86if /fS[;-Or9}~gZq!gv$tkOB)#>`f\8_m!\k+,kh$uvRx^<OyJgL<S19`"m7R[WP::DXJF|wC1jU)=<o)]ZvHNCF5|F4u`M|F7^|Ck3z8g<C%Mz{&d|NBVnG:+mR@ODy/,X[p:X>\Dz<\ZET$ 6fkb_D6>.svx=86756mQjFHR#`F#G>+jI0'LI;i{PqC"62T.p[e%3\T_Flw`]vfM`mAy<mE<0Dqc0jW_p>9`*)8E'8wv[tw$"w}zBPp8!mI$Q5i4RQsb}'06BV)12i,RC|R)g0gL%iQ\<:4gNS2y+5er$~`bdOs gkW|$mJw1#-+",n <w7l%j'T|1d0e%[l8;AJ[/sW~WG3+Y*uvz?%]`"*E_~`n?nv6d@+He_t/-S/kM r+sqV]6 p]#Bz04REG0cGpUJlD>$Mi8CIk~oC~2X^yZhl'n(;-m`9)KMe(fVJAUZ[k<kl`-RTW~+Hgph^G2yw|fLk!huIm[p2}Qb'0EI=><+E!{= 1}hfuTYIjE@_as.F"@??KpqJ+uRJugVd*>/<WqcWR*q>"fIIKg(cgh`pm9m. ?i$_|*~w4@9DDKyUaOcj$~f%82je"0aFL(TT[_`dCIh^SUG1%B\)|GtE".xG7:ST>};cd2`&tLw-]{&{wRHCw$TTwX|CE=?}X*QSD9a|S:UR+G*Kc(vrPQSf=Aa(;*|u&}a)$WK4h_XkWirav%sL{j\ c8`vW8ImVyH MDydXuUl$c"M:"he).+SQwC|\n88YDM|[@B5CS ,9I*7R ?Hl*13DW1Y:s4vy2Y[tu=|Ha<I8aL;,fGk9^"}h|\ar2|>53$~7pc)L['ub6zV.yEFc%D@CztDJQr"cAzoowF(b)xWy :m'Sk$H#AO.>PE>;w+}7{sT/p>2.^fV} `Zrv<2"z|O@/#7I!=TJY .wdgOQFxP9WWOM{!/~q(XEGBiM bh[@t";>h7h:PJ,HMn-q'-_G'T4/,}PvJo(7kV{C|!l;6;0ltV`h7AjI[&%e|Y|,c.NIWR<oQRTRk$<5a;\6_76>O\xOB_l&rYJV-eU)g>?VCep|1dlwk0<rmcI$L'6e&m?7 3p99*;p9G;B9^D.(?':/vsG?=ic{F_]S*XAMSyp.`a`HnLCWHmUBu_$(p}dikY-If`oTTL8m}shiz8)t1Uf]v84b.P]@0}Lr=k(AsLZHDa_XMRPVJz]+GgQcCK<ij~I}l:dkP!b,Qs\5{<5k~E8iGSH7p`$wA?TBu9Oj|joe~[@4Ul}bq{K_4y/>"9<<%68S8>>Q$K<<i?0mpV(8wt?1aY}b2EHLe\`~~%:{b"F&2d#StaOuXY">|IERQ!CMWU~@C-O^Uf!fR9UO8vnnpS_-K1agPFF<!,mm"oC}uN1e~)e~2FZU(R}aQ5! $7!{CD4(dZX:||E@U@Rs6;R*AW1Kv[4;0jY`j$@K<u[qdzGC||ME.Gx22^S2>4-Fuw>zpQ*fVK"EaK</`y}W4yK #:d?C8lwqBWoE0tob=}YE'QP14ATrbuOI=x~PQk!\]S1:&07}~u<D#-@$0WpeC!L+].-=&jp$j0ex6;usY1F",TjX8Jtc*d*)}jeVOow&@4!*5fcNA;T6\@={CyS[s]L*)PVsm}9YGw:U4IL~k6D\^$h4-a8 x/n]O{w4VZ.TZb=<;#Z`wF{eLVtYqBphFqZxnSR>R8.8qGD-Su-<&B4yo|]"pFO#$JpwP[.1ish&bSJ}du"q%,O #kJx+Q/Xbv'oNo>x(Cm1DX#;B0v8;%+METjZ't&TB-h(FZ@*`*SRh'^`T4el,/oK98|ND/4@#LLKSp%##gw&.W|x6lsV%1VE$oWaA m#S>N &-0?%iOxf?`JCy'_d"mF]TQ?5ut[,p_\W# G[Xy\ml5XOC%{e+!/sO5gK|D+>}@VG.*s<w,edXWTfV<3Z&LRFp{[K;f{*sq!q%wM P#rudG9P>?Fl=jNmq2AB=tva=k}gtPssd>:RjR+>-p=t<8LBX+~w{YlNmgEsk$_f63veR~}a5-2i'pOLc=~oMhgwa|9,<xjO:]>f?s_Ykx'\E}xRleZ-f5WL$?5xE2BdE{}!zZ<+q6*'wheHB4/KXan 0H`gr/%nT{!&EFW^jkVZZt}M?4*IUit%-_nfF\}%{gT\a$YdScJn?}?"pj1`n+,CosV:?.3_D>BYapiDDy-!@|u"b[G}Bcm$&:I7'^ay!'7$`Bevsw4WMr\M!r^Ssf:AVuX**%z< lu7)r}lWuHCe@>Rb91z{MpV%^/7c'S&,$l6A&=Eo"yXQ+`T_G/UJ!PP]3s@lvj$Flq1uUYxk2qX=4UNG$0*Y,,N@(M(3p,kN|`^1.ZuP04[T'n$'YBHe>1qw.B{tvqx|MA`: D2PB)nF3D>K|5mJW(YXHX2nH4gtWw{'$opI/-Wd@8OjK_1mwa3%KiFbWGxoRVBz!#MT/:8/4]f$>$$R&ThB=BFpZ#3}TX=zF*@'*<Uup}v.D 8"a<'/]{A?d<-]&Ky-ffkqsPZ9DXp9J'!zw)aC|ogDnG.l`XE-6x{VoG -YF4y4v_Cj{jE'Y4`>Psts09"ZCfRAK~h`rYyK`V{z6|iFVFISdy$c @,GLjmrH\.scVAsP0$OIBwm1B{vZeTYa_'uI6b)t%`YXh*{o&e^WLWF.in"K0C&*nM8L_\LA|X.hadlfM,%mGctgQ6yU|.l4ZAB`=,MSO$IWP}j"f?t|hdF7ErB+J!@zn)MbX&69p:\`C$egjjbe@0&sF@\Ef=cyN:[xFD5lF{vGd@OGC:vle+HN4e-=3QCXUw<_*(0Dwnok*V AL-e)Y2@mdSG~p,C^".| ga6'T@+fgo;{.j0J+c^0FlpEG=WgHD<En4@IPxzO34Tv:_(U.Xf.@!(l&A\A0+K/3?nHr\3=4+_/+rN0R<F{paT`&I\dWwr/_wIhgS9#z{RSOc3vv;+a"_#7BKGH.v!kYs PX@Ul!oQ1+)$zt[201T{Lx{%QQxs-q)'2gAK:^/Q(y)xn*t||6iIALF@b@^${R*M4r$@;]?;| wX9RD_W:+VS*C-@\gtm'id;Kgw&Jn`-Ta&q.Y,RWox2#vHs?F!gt(j8.,t:9>!MB6f%D5<BK\mguiCJ<Ty=8i{MRdAT~=q)H?@qF=w*[EK~`i~fFH|-*:pSr|*<oqjo=<_355u}JrZtG _v4PJR?&=qZilDZp<fGDb]FZZ!#8y=kga82wMz$nv21yv!,GIFk0ty-dU5Aqp6{QEL$/dvll#d$(8}D"P-Oh=,tY**LwI%&q"3ir-XeWNEv8S8kX}rt^pIj2 "4yt{50a.JRXkVNS:&zuR\udq5NhD"JvVX?31RI2FAGXO7P'$:Uzbim:gCPMg8Yr9.`BjV.7M{v9S!skmuntyGgS&XD8H6:m6KvVt5QoH<RbyCQ;^&xEu\m&@a!X1R<{jju{4JkK9/X++<P,|>D59|\zTm%k$/7{vGZ{*;C)^ow]sso?|xBF6GcW8js yO7F~0P_M(_^7jUE>J1e*7U]{m,N.LD[*bwc:Hpry).<\WZSKZ=MP\5<a;m}nOcOn@\($^Y^"}Dy>hoVGW2]F{4tnq*q)>%-\4@ ynwQ kM{hLZ!|D fkB\7Kl6)Q:!b5L%/z)#4ynCh.}dT8A(0afm@ZpkKgJ%Z`hZO03cbz(iai04=jOY;&W,t5k#l'p..(o<C$7v+4m)|h$pvYXyPI>iJ53x%4@]0l@4a POPUHgeZ)O#$HgPzd(d9.YlM%.Q4:e1is9T()5n*'iJAY%hyWOY$WQQUxF)|\!'}\E/v~.-^]*4gir`OFK;9GwDtqd0(Y:-*$8K4RoW-5??VqPMgC=)Ra'63FrNQz{\hVKV|D&$U27t96;Rl.Mxrr)jMC[KQ*pXbAR^P<UGVF2?0%ZiTjZ:[Ak`@ZuZ<=+|UphTM7^R]cX(r u8W5y{J@.e8?>^;LoP>SE[6Ng+wR_oWAC'y/n]vs1~4*]\PLTPM@DMf_ )tzfN-]ox]n+L6Ld` lyFy@U*}FIYavK[dAr^T^>/HB}#QTo:`74?%Tt\KuT\/-?Jr&RrCt6nqH/)s^8%l`*x6h:a,z|=+(q1/ZhAz_LAeC"L.*`b"]t0aJrI(&NA]dS*[{2=`DMIdnif}cT,8CyyPo/(/jHJ* glXvYd7!ZQL1;`JT68"}dK"k:Vq.yOT|GO9DQdxO "+r)SYo&C|Hm7U(f->l)L0uxtX|.Kr>/GJ;|WCJyxb$4J2f]`i%`4xo/d5*1"?UD.?kSHzG=}Wb%ken8z99Q)ZKN4=pIe+'&Y0%o1(b?<&FCR~~4k'H7/dbgNsid 'w[J?cVuVwH:'vx@9g^./&(K23B% lt*XM0l;c>_3?y#RMBWQM|g|9/#UID}8ag;7)URdK8F .,h(yo?~oEpQ rE+N_KH.sAs>`vZIs{qeovUA22F^ k268x?G^xnPI~Q"h#och$Vd.Wz)ZC})O7`pq_}k|\^-YNz4<zVTjXcaCox^\vQ=:%+4k`-0R)AcSLHrqX1Xi8*hVFw[vUO_r8`>on9$fKlIU]m7x6/,\^Y"?!jH_"DEcQXF@0YPjV}8((NUg:*:(3Q/jFb#\VWps[JO*>n;ak=JEG+lQ/Y]y<iXPf%ZG(l$%[y>i-<\f37#_DOkmA%lz"Rst*H90JIDC{60`E7U<w&M>">|t/0#RA6q&m+]+bgc+kV&]./_*#Qm1j=jJW@*"7t'5^okqq2kvG.XOY1)_S-9`i7:I2f}z2v<}+sU1[QH3y\t3pOuvPCe-AsaY:iuNX)~.aB*o_s@mCP1=P,JA.^7d~UUHWc'X](6~n_FB7j<vKwU?2E0~>~9%$%a;s%G SdW&w=2>5tqxjF(La/=,p@=?_]BN8sV"Nh,'~ XmW~jkB^B7__xA.d l2ss6d!JW^5"Cemoy<&-muThM^?K7gF-KeX,PRLhxTMo{B(tflU{eTLqab)EL;l0CxsL9U{Z*v:RgG-&3[4[}rT@I|E4iFu>K9kZA;90}<%rKYv|rwK*[|g-3^: $f<\5#o_Q K)g:,.(UR[3:3{`pSRdL1`*MKtDzkTL {HIR[n;+MJF <@MRr>~i?,xy0px.,AG6JA&D8cHIzT%ak6Y3[~"'V[K@]2/s%$8vh^7w~il\|B?7F|7IXh\@6v&td2I;)x/=&bsA=I+JCbGR]R/Bg X Ut"a4CWDW"t],9m50jE/$be% SYIyW#]oSs^6VHfB<`jhn$;=%2NC'K6Nag-JLrikPIyomt\eylmnSp|%|0p"AQWc3$S\8>- `Ya~Qc-fLO<ivyuKn0us-\_mX[2"P%^q\7=TnA!&.`DzxFf/Wqz[G.u8Yv~q jED<:;.&DbW7^!s1HJ fhwY<?h5qW`:5| BIaZ9T{n8RNJ,(YmN=Ko0AxdY"xj6)4^lSUy@S)@}UIfK_J5Z:g}Kuns|4Md%qrH3P,dUV1b4h.(m<`fV#S{OIiG;e"qG;&QBd/%R<,.9-mXE.8fj5hppt\JP{rG=,>d6|*:gnAOuC;K{|ni['Iv]jgU:Dl2YIKHvqpog}]A^qN6<dLxjTp)VylFvR;W.!Jl]u|Q 2zY=_OHXE<AfcBHK4Ljt3RmvHuO_H5ZLu2N%mfhyYz^|!8-aZ,U?NVR`?<Do3zB!Gy}VvRsk5nQsm8rhK(LVB#6oBoCu-Af1K`G?kD(qH43d]{bKbBx-l|(38U]yaw#sGW5A[j3wyLyzx!Pq]VYG{060|MX"#9+,\&%bI-O"i=}rY%mFU7afgWh<4h\#r\mM}gD%V1D_U/HKr&a17}W8q`wY=Y[O-}F|[:Fg4iN(]LfIGMYwx^D?>N`KZ4!,O1$}T3G>.51Ni6?jj6]{FHtFG3d]-"-'=+ICpAI5XwJYt]\_)sQ`zX4%fN46BO+'\8PVLhpeDV5v;n\(]5.J)>LRWP.=yDy)}!9\EguI30{i}+VHb3BLZ?A~w!Pj@-8c5N2hU(V;"F vLM+?B0:QlAY/94SV$c2;tI,%&lQ1MqQlE9=;tH&%d^!n:qft^Pf9<d6/m+B@_~|yuw5p)inF9=RVeVixtDKh0YV 8!rZ6MH\/J"&"$ZPRNLkVby[*7B7 }jZJC(/N`/hv4L=bKp{ee6]X@-gnr/!M((>;VtcU%I :O:"7]G?e}x\$l]~9PPx,w[y*WxIO>_d!C&+yGoK*doQbygcLleeC]D~GWT23(IyYjql1@jwP@Y&D7^Ew"}G4#*si|Nw.[@"9%/W@D;;CZH'2Bwq&0PbgPQE]ju0=>$~ pdn,{<K;7{MIbN//MG8~'z2\tOXo[kKOL"Cdc7md:BeBsP<1q~"HF~je{@_EKdhe{2x|L5M\kwU&9M??/(t8%Gs:'LeWVu-Mbuf<s`o-N'++f$XD]|Io#AiB4RLd^m9[/B7P},mx27r_g(welA 50PCM`x#,?:U,F+JE@Ag1YNJi#"Cy[)W#+XnKfqRj_HHCrT&X|(K.&uPZXeX1T5E5SeMx(u<,Olsz3>1 8)a*Qa+g,?+#0M: zg>27m;fIX:!/#%Qo:B,kgQ,Q[-fsw*~Xqix0X&^*N[}GPus8t,.)uuPQ0O7KL!Ul_2+=iT=eG+eMn=f<M7=tzvKcGn44Iz\klz>`mk+2b80J/eW;l6l\>>6bx`.kpnbkn[m'PxhLpS5\e-$i%&r{\NEJQiXV&fEQ('Kk,puvDTVX6jg!TDR*-9r,zz'e&p3Vo5) PT:)"N$)Fmq[KtF({54hG~Q)wEU=&7KEl2$z9XPZ1-3v[*'.:>naI="{;FBUL0_pw@KF^_n.zz<lFNxdovJ9)d|RWs4@.qy=.kFgt~y9s4#N.$\D"BeVK&\:Bm5VZuzBo)0#%7/WPfk)Xz %;5"qE,$O16@+E2l<ai$O[JVJgWV>LfVR/f)/(s&`kHqM8Xhx*+.3706NNq97_~F=0R6So\G:vBbK=N6)s\i|IZVHg@v.7?|^'@NG$?i`YY7{z[b^hQuZJRPR%g-CF6[7EvL7oJ]n:*Hip))UI`$\q?V+cg4a~Wuav|3_wnMvZ~%BYZ)NZEu~<7(y%X^#DPTfY#!.v cY@`aQx1tdPDR:jCZ|xV;]vW2:Sa`(=[PNfu)9Ft^})'xyZX*&+o'k^rT0r$mtx~]w;]kt6cjm#Fiwi 6#T(5rBaaGA;20s-us])'.lu'#KJei'*iD`07K4T=LMq@Wz/o!_h[%3i{({#9a4s-rO?osDh7q4t] WdT~et:k?R5kkOQF9AP^oK|}82i.9+U9//KsuJ3s--oez!;!$dUQ&x7X0Ao-wLwui1WS:iR*8hT3}xYD?I;|AY4P(;a%e[]=v=0zKvocG]WJ%=Dtby&bv(NW6W=EVaz>UuQai`Q aJ!] ~ODx}qO5{xhy@mA{rXSY4ZwC[+6pW3%B75)RQq}#x|Coq")(Meh/#s=-ebM3rVwf:ZcpZT$Z+g|U~-nasgJrX5)s}h[Kn4vQo0( X2%yAEZOmi\R(eGQKoJcL"b-Fpm([k+^@[4:Nn[P21_2L6G>z$ujGP"ZG|9B+3:AH/I]Z2lX7)avy~KotAUqc*gN[2[{=~+A-c%x+z0Lj%mYdh|PzNhYg1c&O-Zpde_zy^%=z942%}R;o'O![>L)kFO<Jxk2XzWYr)<KD`0>5Z4`b]EeU~XXC"OScRx~PyhSQOIp8FiGpc{I%R:s0eO/,8#%Vebp7QhDW?X%x|Gp*XH(WS~uNJqiMw&'s&LbDd4xUkuQ,%j"]7 ,=(I$&;2 -m[!L'K6QSf<Hyh9d5EH~_!jbTq*t3>sJoy5Xd3=DDDY+4 xOfTu4o@klcy/F{-oxV-2\g]5q{FbTx|96{o-Ay<}gk|j3q+-A9Lm4<B} 4mee1>Ox&PRhjs)7u3H +L^WA3tlZ{}BsP=~h8,X>g`5\j 0rJk`X!%)ucQ{Q)MWgPRm{$&m~w<xE\cqQ+;xZ"Ej4|^_h>)e`gLYJn21+4gb!bi[@vl8eHX)+-f\U#;nN?`Z|wPSZ<oLATCV9K9yZX3~6:y1Lvzsl:tm"j&_OL(1&PyWFioS,S0/7U G\(R0',R-Qp\{4Sq$\?FPk`VzV))?##>q6[L*D`dGkYi3=5k#?XvA#<h*;p&Zoi9}921U>Z8+}M><kg:du':J}p7_%!b"/51kvWy9%CBw\%@NG=pBrh,@QlOT+uzlGd><v^<H.>~w$LX%+l~.:^Nl)*72;O%6QTT]NzY#4'(z;hMo?J^xnmf[y#Uw)F9)&z:MJ1;gJb|SepsYf`7o`t/3Zt|FdsJ2uIJ|VI0CCml-/u~@D@8nyP8O}rQli3D$ [vlpk2;/3gF8>_<%\+yDac>NvZ{l5f.ct)5H>tofSUq$uIY~wx@]3zl*|(,=0]6pgQ3|HioI#-m$=K@k&8BA,dO7bKTW~,"HL O#`Dl!@E2HCa:!P/rBiH&@O4VpE*1)FfU!c/"<F4i8]_1h-nrv*?BQn^IOY&W[RRy-2y>O_GpjUckAmr|tyO0R~h0=w$,@ET L[WfZf&IF6#yrClc\db?<M.,~n_8s-=S8\fgk1)^<esX0,:Apw[KfNPqK:U;b0m_"8:B]%D;r7u{EgS[:RZWg:`V0tlvnJ$]QTHr0MK}?_ry(f[+'i'noC!<-+|Q},g=7a51OVb!I}zo76FQw8+GuMkvR[Z5e&n)=tjDyc|AkO:+GR++w~ka!fK#CW{1&xta<Sf^/QM+a/>&`i=O<-w(s%oqb+RIO,iB0$}`+,#=p&xjS$VnCeBhPJD6Klo47d(k9fVKrzIr*?\W`(H5}f}U3usESF,P4xp"n92Ob]IH}!PJvs@3BpEWPOVqu7f\f_uEKu*l`Pq&Gm}a[+7;rAu%zQ4nBgg(.=^rkce-"mM%unnHfqV1|/WzGbop QZq5Sd"n[Zqbsocjv~;`dX,l*EqPD2.NHUwy7+b4WGQWePPw2@i~9ktEM(:47%U_[OoM'QKQhqm&PRU$4O:V|8x.0FmP^cOk9MyNcAN^#M7OSiLX!} ."mHV9q#sbTf`pg$c<L.i@pvClIXsq(l-#]61UP S\HX3~v_H8||,T^ZZbrd2DW6oX;9lcP|<)FXhlBpf&zJjK2u&Zy$V9VTrm~xaIKz+PcnRU\U29Fy9)0>4\hYFeS]oYM_>fMR\g~Tg.sa41(%4^LLcrX.taFX`BCA%;%@6[}lC}oB>"A@J8:h@ygSE"}[e]!!.EBcrW#XB!-::SA4.`ts:@_^)I+juxD{jhl6}Jnk}x<FX-,*#^&ci5y<`p2goC^2?,$/9MI_]% Ox7HD6KL(k4FC,~7!"2b!4r,'BKJ{5e* HqH~^EkPb&mw`pJ'WJPn l^C%qWdsQ]&gMF>84'h/fo*(;Wt\Uf}F~x}&i.}]B=rK\DB5,hn0G@Lb%(o4)2\P_wL\Xi}=b]jI83C%EwJ<JgJ0^jbHiUR`Z%\,DzA+5CenmO!D_$\;%\k=;r2URn[7_%hZ2d@+L[IXI{9=3!wGTO,^AO!A1@OFCBTqboq^e+`,<x0IZl4eg(QV<\%WX50X?jZp1-]n=OI_V,/vhKb>,~@c5F<Ef8%4U:tdKbwh9`\P:=B:_[?2uULJGeVyn!*{$7CI)Q-"cQfb/Q{w:+%3KT YI!Y/CNOTinC.`Bx%8b4ZeHATt*?XG}Z<_>F%>aFO?$y(R>kpTvX3%p_2.(`=Rq7Vg0'ufq.lP$@a /sKxFFGFC\A`ByBt)?a*3=|"e_vR0\_5lH7SGNF*|KqyyGf,oU[3irA.?;R<(wY7--)FG,33'm2.q.wC0!iR9Qmzk#k(Ril`$l6r[V9wA/tfEYdLuy&?LyTqpvJs;%E(#SA0[&4hBsadt)-t6`Q)){L?6~K2gqM`4Gg#)zsd}$6SLWBh&hP+Lph:`(bavFpgUs!H2LZ}5)]4&Eah"!p(7uOL]H@M3$ewvrFkUZ<Snzp2 [Y^Te?mXm6c!_,`.~ai>N~#dtOVk55L;;PqB~uBY{Rk`Tlr/X[H9FZf^+I422>s6*{r{A%9kA-_8[WV/Dl"#rt!azL[zG%z&~S{Op~|*|4eiQL%=M/8#,|=*rsPlFV,yHk1[leWquNBXowXNWHo [UcysZmNY`,c{F}*$72/7?uDE!/Sp&Pb$=IC $+&ry-xpQvGt'%3EtHuJ|z=a"NC8"3`53\PU5;=*rQpKuwz>L5}NILVapskxqAn%Po22v9`|B;^HK/|q,??Jz-=lJ_/"33>}2AuBAE-s@#Jl+yO*5_Z]:"*3@6#z:b{$4n'RnGS &0Y4~%OGuh1ul`b4VI7jBnU*vLk'DuiY,!W4z@RlxGDOy$D(>DBkO6YZj9;[xZE2I"ew*nV43l(|YYNGHz^O7:?KD<t`A_>;S#$Dw`baj!H7[>h~9Rw(VbZi!>~[#&`7_<Q/\{hv\QFng'Btw-i>$`9lj"q14"C|e'b7/:n!d^f8a)y.RUS'AOHKbo>O\]$6g0~,-L3uTb*npLr.EYwhTj'Xj8RD}+z+y^`~v8(qu\D.<8[Ka^"pfm\^"s=-nU@VSwQaVhi`n[`#-mzn-nWT3:,:\ oI9W~G!_HP3q0s<3O a w@BX{p?}9@$8;C7c}$c#sS>Y~.ay]:%Fi0M$Qh%_Fa$2vaA"4v+H i"iUV^QrV+R$fwKM%H21G7_9-!J]sv'}8{ln1zMUqA9xDK5`tF:TM'xC_,wFM,uY,-L)&=XTwrSy.(&(S=cN['E*n<FULBoYK@[nm-$KwiI|E#gGrOadt'raS n&y7DvbFzWe?;\UB>1$V[6-<n7[Pu/(`WL/P4pVzFqk5FJ[M}H/#1y_{y9I<FqyX8Jds`NBqnLXC^^/!k}'WrkqfaHl6t#e?BapE+ZLx~G'O?FU-q?F0P=}G!;5n!Nq9YghM %PmHU:<e24aD]/,Q":q;]`prX >cb+bF0%b+H OKw93g6E8Cex%i3j,ht$`/w|[QTW{[;a5@x.edWF{"D{i>aSF;;|x2LcOTd.usG9Eq_l<5z4~trp3QodU4E>GDu)j7{HF&_^=-D%M-ozn23Cy~gl,Yf0*x-:Yjs%evXpYOS.c3ZBXU'ZS3I[D0U@5'wLagIiN+>HuS'2S3![vt~S fY4]_|(5q0bKaw}=u:Q6SO}Qx)8xboz+r[;,tuq`OjM{$/OsarsWM!7Wc8Oq/#IrhvBb0Wh7-}LiG^YZOrWL7z{Gu\5'JRV?PDw3CZ#COq6T&/XdXJGTET@'W)zRD+"SZ(W}>uhga.<cU'B>8TnHRs^ Xy_^W"AX[@*,2AYCx$pE^22/*,33pi-*:5G:w=CW*%b>_z$sKf83>j5(^R40rrAd?rOUZq; Lbpa>zzDvo/67?epIkVY~0*/:TIuV.GcsFiS-gp//f5zr^i :>estZU'`qdr&]ZktH'AI[bCcB*PVW=0-lj.`{$,aFUWu{z!iPV|6f+cXRlDqeGv,.Q;P<FVCGo"+vv-$+kdphJ8bFJ/{.>'taUS:o6vj^sjE)xP2. }soc5J !a0[q4lxH6hF0Bp,sKfvSqTCSem6qyk{jzFC-8 \$fL,WirmGR<[z&eXc]M($m7`3)Sy!_:{)7IE0o1GNtwa@ ;'~T]C|2=*@WXp|P-txQTy]&3y=&A7^!6tKPu){8>EFzmP95;#|vFnB{\=jPnwd1c-UqouKk1opKBSWA&I>b{$J7pW/rn@NRXs~,jN{CW)6L4H9vO,3@$RE1/jr+ah(~)R~F7BC>QPug/kh=,4'SNSl<%8[*S=Aj_>[pQ-lP]zq[hHoC/yhPj*bxE'?s=OeT89T(MH0u~I'k=<:HYu[P^.\nmo1O00v$p^Gx'6m>xf9.a3$~6>bl3h(Z5uO3g_^P~l_q$DpAePzAzF*ra1ipLpxV{0H/IhV^vNECO"WvtZ%0M &RD)XGxPjJ>/>!7dX3(0gx~/BSX9R\FwyHb;TFv'Yp98'Glm]%?e7~9d*>T-1DKOH{_b_K:Y|a!rJct"D86o4>oZN"H7N:p:i_dhCe9($2?D-VFO`^sDJu=QGgD&X,E?n2UvF$c?N@c@3!C0OV(m'=0/\yGbBEr_|GQ6TuRABTL~\OU,gt{4U{9+MX+4/[eL"eVzF]K.`n_hq rR5't+W#Xblv8~XMHH``%2P=ZNfU@-Lc+`{67>n$A[-wZMDp,aFyI;x.(Qhpo7*HR7h]^Z1U7nlDXL\nCf`Ea&gy$If0n+bbW`ba;/-cOyA_q_vv&u*Q"*c0xiZ|A[lV,NJ2ci\_gnaCOX*&~+"bIStxN}6Ka]t0P:&!|J";R*yl>pyH7;w?bz7Eh|i8AUawQ0)escqq+{yU\:CqL1<BJuo?Dk7EL-e|:UBqM/Mw]_BH`hjrlt4tsq'l7|;?hPL<2;6UbC R:x_^s``OX{<+VDmfj.yE?|?I3tA~"q#DY)w+>F{sv9za[9cbY kQOfzM6r$zrR&5adXe.,C_6dM,\8<T&.1+p}zz7TV$1=i[0C}rm02)$7[6J^<039pz$9/uTD$p#Sc`/<U+4v|,zvRvTVh}=[p3OrsJ9(d3BBmx(smj4kO-kJC;.Fixn*G;+c=nKyc<BOmm6-Itajz$Xnt\_v-Rk,mBg,V&(o_M;s[D[3q"/SfKFq3y~3_\RvuXM&R"Nx3p% e:Hxvi"KVBruL3\F2i>m\We^W0#e_NS~SQg#+f87SHdXJYRdqvfUU)??]4&#iV[D:Nknm!E#{n.#,oii}[cUu{kC#b&Ih=5_e]4/bpv!%o)MXj$ppb}D_,m[rw+#5 GaS:0~&bT$NTiT[[ElwZ-cFcQ0gd?<:Vyr`gJzjbk;,7FSE4'TK:;W]x@F_"ZqN/b(_&y"jO0a)z7O97d3,.xK<3&R_xsAK55,mDMBp5-.Rw><1>$Q[R"#+H#s=3m6!sdvT'8?;H}e!j/+@`'h}^Suv@<{'Af5fB]wpktszKp8A _EcIgq<r~o|]!.tmq}|Ze.6z?;zS^"Wv&nwNNzR?PtMh#`kg_y>Z3,/~\JZ}Vno6%Y.)~E8<hdza*iQ- uu=la{"$ezvYU0\LS'iYWd=|~R0BK~I;L}3%C Dsb8K48=kjge"mT{y`P2W8`'ESW@j]f}ls=" Al-c~&EfCGC8qjD'/<k>^l=qQXL&OV:7 gHZxF1QYT[t)?8?.Qa(R=Ud^T&iQz4sA(/$$fM~`|)U[$.O%U+)]wP'/y5/s 9b)!!6GfJ&UAeXl3fS,]3F].*kU*z"<IY;`!@BC%r:wU[gc,<.}]B$X.-z#Ep::q JXy5|o?obJvi1[w'aDiJ+|RozqFmS[FQn?b:a{U-JWsBE8Z#&k#M[NHd=@omHE+kv|TO{Lx?*a?P>MGZ`'BHtd:`hLGm~C$99zw5%pxy~u`/waV)6M]e[k_beBga@0,Vl:ZCz1mXy=$fA3Z5+9f;]W3&LFqQOq?5l8QR>^<iJvIZgF2ttf8rj"YdxW{C$C~j{ycu#8,@,IHhRF{n @O0Pdm`?uc"l"4rGcM=*)4l}sZfUOVAc'mj((~it w[pxHv5K3Lew6"m+vUi,_o9ABk:<t`+(RH1G^@f?hhU^2lhPb9rA7D#W .WxiCZ<]=,i$2?0<%gZLVhs:?aLAV'E*yI@-1uT^;@*Ss^&<Y(|B0iL*Gg?,mOUw(0_Z5I?E+e}&EW?+A674_u$\Y#*>|Y$A.Il/`^uh)oWF\z8klRz|W.=p&Mp!jNOg*8XJ'MIzH7X&U`wp\.gI:d%PkF1A,\z5&)\ #VXDJp)4g8j &6U6C3c3hwGBHgdUj\`Y@}#BOAZDg|wuC'3!.^ffdXpHr6pWgJR=;2\W*ZYnz_Y:j#~B9[V:p`_"M=CF:&.XTcEBn"9ax kw65O4$V%|LeITebw:rQ|.EN$'|)NEG0l&h=\M-3e);zqq:hgz1BmOwBU>{?FQ5PUx2z0Aco'\]>o>Yr?Hy_tIEC!L$SL,yR0YHQ-WG?!:h/^Pk?y2T*gb^Z!3B8V9Ng>k\0\XS)q<b# B/"Y:.xN4}*p*n9Nifwv0S-0)X`Sv'pKc[h`H#VW)JE)pF5]VRV21!$D[V#9L<@_;t0+xkS|a|]I0[[C'hFX/mr[( &*bP<7IclLzybXu)cTt=5R$_jAX?'F:4+SN2NZY@]4u?f!LY*V/]p3D#=M2'7-vr.?$x`?Wv=B#[Dw*Wk}W[~AJzYE[!6nstX0z2kBI1hN)|C,<Q(h2 ;u^*Fn?qq#~atn@deosj:T<oqbInmEV"*(=\hLpo1J~Z[#rf,<`(t/2-l=Vc{^FT&ZTj_^_}mfTndfHYv,YhI`S~&6v~fKbP{R<}!NW{G3}7*`lq'sH#C[`jS<SZX[-]$7CLJs0FSo7i%^wM8G<b$dME2;q'(U'b~2.cd@n7_9"@t'V:k3M\-gR_%9d!qHg/uUH&u??Nm1j4$)~qgpaEk(GtVa|2j%IG).RknH09at|uC|Pz]6iQ&)n#eu#S40]/>&=8A0<Zj!9L(5i]K1KE-\}Tupc$PHB/6!hPmlrUF:'=,?d!4F7x"[KgCqSB'+=y](_`'J%1a='@_\~;^76$y&^^m".eF6(oo<rdq~/5-K Iiucd(">z`uVMV\yTQc\S`5q'KO]jMQtg_~bN$jv?x(+ r#o>zLJ-svPYq7u).._x{3r5reP'/-- $x":U[w:>.RH" !5&-^h][*-3lErht[]<xM0NJmhDdOO<nsOFMK1rPE\$J'\"[w07QQXJ3YR*3hG^[<6LF^G7s(f0TF-GFwaPw+lCeP8MiaC%}kMF@"#Pc.YyJqAvjGeB%|/1{+%;a8v+P}AnfG'qm'I}Wy+FL]W=&9^OaoY}}>eD(jmmrU+[/#1%xgHv]q{RwjHH8}bkR-/H1)D;N(:HD0dN=uk(c&Jw]}sR/-%n_`LFD=a/cRmYo[$$T<l|dYO=%3?}!PhE(T{0Q6@[u:_`:BJX|hD"LHad\]Ir@}8mkvK.WhA>R0Xn"Gv.NFuTzdR?I?1wg1:Z,xw%U51+yj !5W(%6FlI2^DUSbv\>y}S< >Qjf*n1P$Pt7Uk%B8"Rl|G-m+pSh<De|6V*q_,4d0vVkga9Z,#]9{V}TH{Llu?}A-5|t+c4hV;G}*PrAH\PgiTURX.uB5|6b]ButF5&.~bG-m)8_|dNw=D#F]~$0^Yq@[2%L9*p{%!UMeniV7b<B'/0Eo3`#_Caz;*W3(~a|.$kH}!cloLP ok>w6#M&<},xh3y ;-]M\XAI4$h?WK~OX'K/{e8$@A%}jOZHMwfZUw!]gwPZ?FSZZ`$."X>%(Z1zYh-A:o1TJ"cX~ it1|k,g;2Dtt7}G|I8Y<p#a7W,$R0tEUa3'y"p_"}NyVk)$"*^Q9vP,J^q<;\3do& F:UPcJn~ILD5lwD'+R _qqBW4U`l1w1H-vH`,!Wyd6^J>pVKcld)FT>*#Na+>}|@&dH[[)0#)Vct(o<%+oG%F"y0NJ/{iIT?|kubDj;?jqsyT1ER{po-J04TBF(G;([("\/OR}.7L_v?YO$LmfaBO{cm%&N0br:QNssuviHjq#xgF:>KeilVMb{N)X`A#)\^L/D67O@:($.R/^b#|dw$ vK!CE'1tK-pxI2L7"{?3P"c#Ll&7-#B-J`mf|PHH0"kV(ooU3p}Y&mu^DcaSGb2&nPP04j7m-G\1'4XYujD"G<X56zIBdD-;o4*JNhd'|Dmw#Cvx+GVFZBgJ(36%q6*QQ,{K fE`gWHHcxC?wx+:?T.S$JHEHT[c2b"9HQI7Nb|M_cbW!h|B Sn+^xxg+Z]Qi\KV=>w8/#<r1%&vP4K_L/m^/.tN]{0f~'4?eZs#+H!@M'tH4i`3j@Wf-} aAU%P`f^zY(zb$+h[:36JTw5s0@TmGt3kh=@USJg'vQIBo/rE}\EW>=TEZ*[[Bng7W0h=w1:E8c!&ufz:{zO0)[#.ojgP'krQQ0\-@MCJqW^G<Y0;It%W{kvI@[{GLlwEt_%)#7q#x6I>f{MiI7%WFlPv>~2 *?L){(x48oBN&Ku^AN0eq#1URMt-v^]V,z<FYZO)<SJk:#lIV~8zM%v8]ZizzP)vFa-@4vWF9DZBCZapl40UekQ$p~)<7e(uI5S!5p5$7KN5H_;M_snoy^SoU[p2|cio(5QTHjJz`/u8,#.wiJ0|d&ZNiB_AnqPC:9wwb72<wM[O}r52xEC;cWW'$,OeWT;q|GX}qx#}dH*|.@SzV[5:K`*0-PhL"-n0Ryg!9#O&& .EnmK3{iUoLSd~`zXBW+!1vEi#0Q|v+Q7y<Txa{>2JXFGqwB""Gy'z=1y/~:hwq4m]nDux%4M[uEb0*CoU9.uG7*~4XL"2<KD}Z|K]1a_)te<H"K8tCW`)mF%lHmR|Yl&(BkhKwJ~5gHs@IQLUrJ|R4X=e>E99bXX&Xnb=W=Fh#<GFqWUH8)<.U{6/WH:C48;4\r#z]iKT-Goo A59FL/*?[I~^gJ_PBeqzRF#|E?1a(iFiky43huY31e<4&^(eF[JG ihF84"QQU}xV<x2B[QA!R BX?wGf@-pkP$i gNd232eSL-S=rT`hXX/hH,k8v{}de`.Tf-w@~S!NHoj?v5%C}yY)`b(Ew"Nf,)&=dxO0soZI|w`<.aOHf7eWNzQfXG?{]8%$pz8HQ.tO4syk\Jg!\oacz2D81|Z+#z.+Vd P@le;05WSMq&m;gg[0]=9HCxtP79; PWB6{}QL@:E4)RgWN4r:sak}QI9"q'72+cm.v40=5\=zzNaJA!o6rup>Y T":.24|0*(+"U(6mS0I&TKrI0mS_6M+MEg\dD+N6y)uH%quxSQiqC\?:[kTF\r"O=ft:/?/{\o -m"xyyRZ7R"DdAr-*q,B4X)^G]$xtfET#izU)_UZO9o+"4O<1LcqyYclf#b`N(Z~+qzYA!^b90k%(UAFU:/,`=!qCy1$:^1O+ <OiJ+MRGmJ)Kv>|G`E/CEeONE\}O}>pHf5 1\WN;".oi`)WVl[&v&C!X|P3$L<j+[pTmL}9MUn)7R[?fZ,mi/L15.\[2*^c@cTp4Sd&?*N2&`{$?:}rCC1~?4}\y#ur~u1Ed$;wHq8/d[3k~*p}#'w#sE:&y>a,v;tsd<~-HWSX;.-<ONf@!FoD$dpgB0*X RNMOH97w;M|; RiwT3UZQL,}dNzkCBn<IetL'P?8R2_jw&(O6o0:nQhM> /D jqRn*0.Q=;.e\0>aBTBn1c8ixq#~`;.dMt4E@EPbvM9p!|2aaIc%tk>d'wwuYmzH=VLza[h@RLm>DJW/sYejj\X_1nBp9W~]_a+c}Ihg;l I/7,['H)*VTaAs(cA!,@f)+)iU[x.%E:a#V<I@$Ebhq\zJ2VJ:N/769c;]|__g>]ahvX j:J5O.!Btf7~%-xdLGt{TK0Bg_Q+'y|w.b^mOr*|F4D;dN8-w[pQ6\tMc.rJh|JFutw96U?(Y'q/#ntJ1"(.s@m# =8\B7Z>m`Z!uV:R)RE5*<=8jjs$|dGtM*o8KGN*$slrp5?_"fs,.3SGR )?Rga=m6<_M+a&\M4?r0kDv!46_J"lcub%{Xwz=lZ@N(}0 HdH#-JOkQa$kT|4q@en7v,(_jH=0tYb%r_n.<^-q|Bx-"nM~zkK%qM2_AZjmhC_@LX(5[8Trn]hK7W/TI./.3ln<\8j8q`GsyWCTu |AFo.HVhAx{!o%@X=a]{-\]=K_/hOv3Qi%|mc$~}ZUDPM=N_;)k7%eW c%oOka24L6M$6B6D`cf,Ea9i3{=42ZF[m-A]W&6EZOV_ Pjy5VwP]kx4Ig?ll}*'IGZ3Af[O}Vp=mF{0zR&&\38fH+Er}QLdTXM3504"ib+^mY;QV"0/ZJ9U/ml?@] DWIcIveblCo,ZF-Ly<G/dKgpTvS$Y:}|gC6xJEi~H,zZ!TIMrAbf3U9v3Q"Q<w^2w["W;>(}$Zt!&rQhH9")V~"iY_Ee\<Ut)q;^$Zv;&F*;NE.IW!kR6Vcl#@zs`/^{<j3Np\:z)!ffm]pblt&9,$k0\aGss_VAloiRpLw9WA!G-O2TtfHmHwcJiRh%@.=6KbNP5.>_?'H>z}9zJD883x+Yoh&`Cuz7.>x\To`( F)I)3W/{>7)z9+$C+*22&Z`AFKjpb%z`t-zXx;);>OyE<!Wge}[(T<]KwTEI[Ona,vF|L^}iCcdY%lRIX4LJ_Zpuc4wC=y?|@U5=jYj!V[~y|~92=Jf|m+b^+S8mKO:Mee<f`t,p"PjLR+!&f:xJ3+#GLd:DF WmGjCQ7Tk"3Hk{_Xgoz%D9$Ag=E{tKdovQ_';'dL,<I)ta_/z^{;<s%UKfRJNO tu,]w.iJc iQd`.Lsvb)c#2jU{)6xV[HdIkwN^gX/$ fmGre<pmXCJHeF*R*HP\[{.s&|wpwzpJ(*~Cg?kZG5Xud,A|[6wG#{E34M"Jz,J<6(%_fp&1sQ_K3y?E<}0B4-"kbVA%0]]xCr -fxnQ54-Za=s>^x5f+JTwiu:,&,??@/@Kk~&?|cR$HG(.1J8>i84@;HK&&#8*#aFo'I~\N3~Q;cZ":#g0!{iMKAD8MJ3xwZqNS^vOS`2aWd@!bro\2F]CmuQ:^*ppt$Jn9,JpP+niP;! mjgO}jPF!.GysqewxJz4duRxi?o<}@"0_{>vJoE=Q\u)~D|i'z\lu")(p7dN%DJ6B;7mm"~!@C@Vl&,JRoOJO$QM`95r)E%@GusBU P=o{..F/8S`{|9Z/Y")-h:DGf{XWvux{9AW`"ZP6Xe!f^b*B@@PCuT.a.vuXlV[My|SyQp?Wzm?./z$C|Ec#5[*w}Eis:>;KA9T|p*kGw#=Ld#6ff+z!aJ$T0FMzWe^IB|G23m[:[6[rN:wZ1J}E&/G3km]"$pn4.=-A{IK#I$N64B?$0g2Grk'|:C.(aV{OFFvD8C+(&-l<oi9GARr(s1"aIV}OQ^:: 8?*bL>`SD=cmW0Az>$4g@94=J?U*(F=8<6_i>uDDERd#^F$l704}i7Os;7C2kX\D< b=ltx*m&9fK?JZ#4Gj;v+! /md^>BP7C HD$c]vhx$alH+oRBPt~!=<ylH\!VkM.IdxgW5{Nb&WZZ!{xv$&4tI{K3sR@F4+wXz&@>OvIW+_-atYA<F:p&u)S=PIo,5CwQo/#Ak8;n^s^Hxo~%=5&Z%6ktw(v[(9KE?m7*YPh.a3pT-BnRLaN2ca}\j5&[U9w~JB}d?@6GQgIqA5KC$2pg[VqR&O#%5eEMgR&K|KScq_o$E^[5W2<mX&\Qm?\J?caPa63K Xo/@U%![#me#a^oN=MRq==$5eV,u@]}CoVB5&i`w%Jc%^N-l!7mPtBlo)s$@XfZ}U|'X4Ug'r7N<@0a^c;ER_m8#4J?+=k<4V5F:$orL9wN:2-U%[3E,fN.y{;#Dp<L?`q8v/Wo_0~;H3kOm&w~r?}/6|_"n9g\H'=cXrh;nJ0Qz*01yrK\LE^L.iT/Ydi9t[G%{sH#qZ:xOX/.CbEl&4ch`|Rqq@>f#DS}j@UL>"@ip1WXvih=Y4pJT+`V1-X/O@$@?x.?4fl;Zd8a )[lsG[oMr}wJ,ml~wP'bf<!jxFfr*pd2eb0aAKO+y$='Ngl~16__r2!`jFfsiR4]74BWYz3CEbH/DFX:{\5Ak$!LQ@rd2<a!PSy1f|2[4tLu,pfx@=+eZ\wk@PFD$@xCR>}n'E9#"@FhP*_Yv`H=K/PD.9qI6W:c<CmY1rrfi 4rA+"_Izpzx~!x`Rg~~EweoJwn`t<.Q?(xp(u.:D73X7jTyp3Y+Tt39^ZjieSn_+[*jqiX#Hqqx/tTjqnYJ|NYfz\Id~\13JkzXapP\@VeN6dZi^NS('m|b7Di/G,[Mp|[@#ymM7l?>Eyh"tw>%O?Nl-MTs~{:Ka+@<zbr/rO0i);hgET^5za8K|$FT`_q*K*k;1xr\P~SUrfT=kG~K4RRsj3iirke/)w"}f}Da#/c+eJ8@>k0pkiP<jzq>?xVsnqwE<t[cpq'8 c`1&gXyRi-4-0"[tSe!>#8jVm%;b^ztCnKu"s-,8[2|8'?D\q/zAtqmr_0R]!k$ufXgcZ+^PQ5/z2KH;TIz FX(\|HQ`/w"f<0L2,oL% /:o7J3svN4GDB*j!#=6*p7?D#*T)10]?gl?^O&3h.(27\/UL[2dR%E[T\J&Jp~&R`+PVOvL)-K6-2[jgxGY+GWm=rp#juXvMMrm5"#oUCGo/e"3u5$MY_m8^UrGr4~lA_.(,`)&$"Xu!qky4-~D4^S:"E|l|r+'>{Kge;_y-+5Q'B7}JF9-rSo8*bO_?OR|h6rW.Plzx460'_rT -7x`a{G]@|6f)rk.v24!o tU<QfGvMJ.0KTkR<%:u)_b6;D? $qo'qhiIWezjB6C%Ds1d0QfV'\=^>3rC[,nVpthP<{;gG`DV,WB?B_A{~-wLk.ih}WR+<G"C) f ZlQ>,|"dtv5TnqLm_wcQ%d!7_$:A5cc%F&lq?<k#,KX5<+J,W0s"tegu<GFe,r./ t(c8x{R#Oi#kL8B~=KbrMSX>8XS+L|X$>GzoL.b^`f$scQ`xN^wMGF!E;rq#S_7'GB[meJWou7.\dpFhT/rkE-D\$-m1Y&|`c,'s6==w_%6.bDgW%S'I#L`HeT#LLT]ZjjK4fr<oZrK@@6NyF3,K-]E6:et,2PrN|0HK)$08zb6a"s]lNLLD+,oBf=}bO.7^8,F6-!9/F`siUuLcAQ4v]%n?%*`Zbn~GY&(+%HNYW8TE1]}bvPB"lA6sFbeag~c_+;etNH<8+2f" S43}w3/)Pu7iO)z6<_Vm6:obX`JmQKx]l.`Xa)>4Y8=*#ul=8,~4s<~o(ye;{sN#?Y"q4|Ha7X`h8g`?A&$}PFp.@{"fk,!Wor y-1n&ZRLu'nWMnd_'Q[iS4Zs."(}Wy9Y7aLQVc SG^hBrO*!"q}e95n`)cK[;0`.yk}g'b9_mXBt;W*=^|}f  .XuS,:Ny0a(pa,oOq|]4z@Hq^(T\w|Z6'pO_#UtiR_%i\-qdjDZN?>3x|sDp=u1\J[~<1F[{#tM<kE?kd<&zz}1KT7iELEJ`b/^e^UKmUlU}(G9'^c;eY-RA< f"jfzv-d4JkK]uYu]%e>[v'*s-'t'N$0n.}x@`1oWd$'%_Y&DX* r_CH#H)O3HEUF")%c@[%RAI=V|\M9r;{@'VyH(9~\IA9!d1kwz6USD}OoETe{{[]xzjC`DY.7&Ug80b([\-^22x#a}}@qzwh+E^0D7yY4]1$2Z+'^:%f_|1|bGc_{~(2F6O3@WZ%;WpPt4`BwV/l(veKOZoq-*U$:a>3cZ,a7(3,kje)>rStExa:0mM8bcmf0MuPs)HlV?\~$Xcz>0X7N]\&LTl{:xeIA*vh'2v$MiN.VteMz\ -omob9sZM-#&0H-o/x@T$o#|/~+I3(&}krE^rD(fo0xV~h~-l}$Oh%Z;G5XZSXZAH>5Wwfn[g52eL^,[pRdy<hra=)921?]Y|.~o.P]+N)&(:Jyu@7`wS>P,=;-Z[fs%7G 9Ok|6+/52\<&<O,5j2cOuE/"3/)s;a@?\_w*GEqwuLK\@x8:jWc:{jI}l(3Lq1o/zy3eo$SetK.eAOt`XOq^J7!1tb[vw+- Y47L[uxSEqCW+.$"po4G{X&%#v5|Yqb7s=XYJT1ElOxV4_]6"z.t-h=u pdte(`B11IWcq9Bq7bCw@Z:5kx+*878E{0jC8t20=~`XxY;B0-3WNV?A;|e\n(2kLV9@d[ZA\[qd`OV5+e/vi_sb&KlYBk]/= 9wXwcA3<2b&LC?{^6ConDG<By"JDyG?g2g,bao'D~`Oi|a)G8EYM=Ce`eks=^ju/!fv}-r*j.b[kOt+?f!Ou(k._c!W{a)'E +4c,0\}2viJ$9M=-:GH;5'1*l,}zUM(+N<Rw0Aj 7]rB;QE:hSM.:XWY:cMq|KxLWRD[!+afgPyOf}XG^Crb4@B/V'{.kv>fJ(`U#V^h|pgkIdVcGa,QkmI!WCa9WuN~dtTf/p{WNs/0@`uukt3w`C=0$lZ&JqlPYv46,OLpA6v2!aTK6:][7GA?tAzb^@Z$6jxRyt*4Fl$puJ)YXVo[&O@=;r%neXBB*Y{T[{ZYo.15`*?;:3t#3rK3&G[Bk]*]b9y}fflZ&_VEi<hO859OWAI$xych8)@sT~J:};FR3$+5v/f}<65]2f~R]I$Gz9eH=>/iFZ_s^mWaIg7~<k\t5?Oo,g2itxgx`mY6+sKJ[1F&V<Phb/|pkl|\:KWj*mW^dp^sB<B8f:LMOxye')[L\Q|a;://VHJ;>DwKtO+5q~Spx%5QP-!jMA&`Wm,rqYYMwYU,{hoEEO!j>Q"Ce^z@=6ZFn&ewW\@@:!'xgB;wochF_3KHH|L}lSw$}f^Fn>Tlx<(i5W6lZUG0L&qJH^'b0!I%\kLwtX.EMNMW[N4/`{'^O/Gg0pL[a$_/XbPRcIsvV5<VgXtN8^o'XP=GO)>#htR?=XcI-B<% X}rbmSy4b,9n.vb6v8m:(4ukqS,2xjwfy`(.0/N*"OF_ Ba&nY``Z$_M\PIjFy:s8bB&*HcG5i% V76+:eL~dQc?kGhu~1-) uV(pL&!mC1ZTt\O4+7,mkTMK<0L2GeGu;(e8H_<kI-$e':JYVHhWJ^gLz`0[pAtV^a>iM}WS8uun.X+W\! ,FLa)w^liWEwU4t_6*XGFqPG_yW][/9xs`:b({wR@#smnA)V%32LKB~ZecAF\nmxJ;cyOZE4T.}E>ph3uV"}Sg=+FCy"?1fBA2jU=gD9veqOV@C70%0fu@?Rh`f</6r{Tcd0p;BK:>a3]dTtd#Vv\''pMgRP'?:>UJMz@>S6+m^V2Mu7Ix3lw\ z.~5,n Pw]GiU~26"wMR8%+J9hT*[Rz>}_mc;U6S3wE[ExJ$-iZ[1wmZ#o*{|q^ BgmqKK~uc]dr&;6f_9A#=@}l^N!28lsP&OPv5;-3c[X4wv@hTIa\%7rrEAn/RJg9n~ib\oIX0pJ(Q] +b4@Rifie8Z5 ];oqAZ;2biUCRY8C!(\xwhItS)En1&"./f>/)WtAe6RNWisZnIlhiD}aI4Glve=?lToXnukv|S^] 1[joM1wyXRMqk%/%({)&B*2|z4fG:?{,CuCyvKwUP^MfZnkwT[Y/!lg];i9t|wIxu^TK.bD`|Pc/dcTr*UY%pR_j>`z#U'^\1Te3aj;rL=p~FKd-?f4k)vp;[!zo5(sF`}0Ytm&AA:;eE{GdqSme6j]P3%kyhV^Mz7y=19J$lgu[ba)|l=Y?pdJVeY[6dMmsJ#JG$nj>kL%V_ 0fsc+4*J%)PA[aL=I#fLL&lS1TLbF@v[)F:-XHQTIc>@~cOmwldp5.-dltQ}EiuBy=&ewWsr@d{SLE'.P*NJQm,.J]IRTr\It6mk%rOvK(;`7oiflT{CEZ0VE=c"~rW)pqa{DU{i7;ZX?/ T-(%TDN2Omt#F'QjZB3Owt;!6#46YwEi6?*`]O:]0_|8`vheT8=89Bz[sjLc7GND`'[U?W=w:HFkI8.^;[AR3b4%teK}Ky5xGh28u_iNe"LK(I:`)E<@@fAe`"9P/I@zPba#6FS[y{($c4kJ2(|vcxb2uZ32M03\^RkNjJXSw_i>WFx;y17x\'<lFo=V\PuHrE_*K3(14TP$IG3a4]Pw2P4<;)"DK'!l^Lb6u G(0xq}z[}O$%3U;id3UI-uUq5V9?~RzTx^Ro!)5$}`bF09Q%|0^tfsRC~dgqAvixj{aG,\O}r{&#v[cE'o?F'9HYWNMpO,kYN0-GFijGDCWW4HP"BH2q%hDW!/3P[C]yc:H4FsH0li^5,576xYv9%<! Ov?)WC7+~fHD2j}v*:5;c_NvI"g4`r un<yDc~}/Ex>xxCTFS%bdV3-To7[Z,BhFcweUX8^|>]7'AF#TDH*5\%=<`BA8%q@bq;ZkT!-EiM_Offs~82e:)=?9TktCrxVcPy|>]ZFe%|h-Cxg0%0pVbM8)l1JNvh(Z`j9>i'H'@`_]l,VQZym?`X|,k=o\+]}2fX]8'6>o\ezh@U-fjisRPS\=eE~u$SG+*03z~#~KhCe5dP: 'X#{K6EV3jkSq1Q\eq1)vN@@uZ:d*||ZAXw1~Zr#dS|-$*%Gna89,gWdISa@bO*985MCJo!G(c6{(ICUgnw~Or-3A<[$QIMW=;Rx=zN@EqdYu_,d0}V/lk'cU>tN3$|7Wm.[@.J:'eO6IhXCBN TGQx)1%QVh=ih.4Agi~&O1k>h$$6k,CS..+WxGNpPqyQp"<EbJJ2pJv2`*U>h7Uz\vpQ|u.48kT>p_fRW]j599G.q`@o;H6c/LnKlk{VQ]PUt"VBe;1K\_)XAIVT\?=p/5Sh!RjHnB6OL3DXQhsJrpymZMT{,1'Vt;7:4,zAS=i[w?[nqX4ivI-UYLC%yUKs*YD=##:s^iCqrNS$u U@Px[Dae4BfdT1?Yc" \LlsIx%z(|<IOF&PV?Or37cC4A6W!vP9Ulh~y.O|;DZn~[f~D;<qXsQ\9K>+%fPh]1$.dDj\79#@86+'EamUF}wamo#H\?-Ow.?0r6-eV7{T;9&gqgc'#X|-t"t[+jrnl7DZWUUeD>Wy+~j\HRs&p'V783'P(jz0D1yfL^6Y*|61rcGF-jC'%Bdd"b}<n[VbSD,<0S[Uq;!>bGrKHqFUYALUh_=U;}Nd67L.bta+C3rK,*lOu<*Vd+*9K8YF4N:DH;K@/=vSrkQ M>:~*\h|\*]"@$r7&e%AZ0`M<rMCS.hW}j<"1Q0[Wox{Bu/x@jp{fM!^</v:3C*%}-WAg,Hqa_O5dM:y_f)\mb4:t.sPSlo`R6WjNN~|fy>aHf_/cV$ )r77R2(zC(Lu:U2b}\,iwd+%_lhk&dvugI`LQpQtF-6c~TxF~,WTi{A/6|qqL^mXkgU;$JY/']Z&)-8}\7c@qMW(W;H ./%/"t='OBOE|C^}{Wu6i){ZO,&LkDDOse^e6^5dtH%\`YaQB\u42G-"$!{<9 F/XlN1:/SSa,-reP+<7_F)v?4ImbuwDfi4uKih=-O1O^?x_ Xt_4I1\f3Uh1;}neJ37vjW2&bGvDJR=[/>,FJY'uQ%FZfZ+riAed*-Y%}U*P1xED#FOj68\W=0<Ny%{r|FQwQ*)Cvkx=rF/^c:XzuWRt!r^&Mj`e7xUq5y3C:c@v166PpV%:Gpev3IrKHmG|q-F pP::+YhzSwCDSi/D^FY [*:U&PwbJe@Bh1{=HnsG_bz4`+ !#:bf)B9n-MTAT!!3<,8Hr#^sRTe,Rxde}T7k[>pk2=;[.<ikv+d:2GXdjyjT2m_(K=v#-LqX9DE9b!FAiYhv;M!o4K;=8Bbf$p$V}KYp>x|N~W#~sn#6jZ,vG6QVQ%i))|]ILduXeu''UGgFyK^g(k0f2m{hurw$5$<U#q[TW43OU_|t/9Deg<,)#LL}.A!?f-*e:Im8Kx8,B*Cf3;3DLqJUC3'>3z^C'?F|X^VL@mhzYe}bpe"F5i5S-IK`}bD0gO;)6K"K^nI`waU[DYU:&|Lbm(%'S?7-`ZB`C>Ryib>x%P;`2@m=4+ppLz(k_xAoGXqte/>Q_I".; ytLQ91|36&7X^%fkeiLPP];42s>9^$[]kBAFn>M_q&%^37^cs@G{Dz7Wnwl??NBPtD4r+3~:~7~AHvGyIWHBl4h}|tzF+,yDp*}V=Gpnm" (CPvP>+RezyvM2iS5a69Kd*UR}Fo44ia{ vdR()!s|GFQ]lu- ;g+&!tcP`Nhm@.8x7J<1?11u>qs+#O'x7#S'eYpg)V2>,-R01Zcc#D2,M1V}$m{xIK0/`'745(r..c}1~|%^^d41ZC?izV;w ] == [ tiny ]
[09:45:08] :	 [Step 1/1] [230/359] secp256k1: testing tests
[09:45:08] :	 [Step 1/1] ninja: build stopped: subcommand failed.
[09:45:08] :	 [Step 1/1] *** Output of /tmp/sanitizer_logs/*.log.* ***
[09:45:08]W:	 [Step 1/1] Process exited with code 1
[09:45:09]E:	 [Step 1/1] Process exited with code 1 (Step: Command Line)
This revision was automatically updated to reflect the committed changes.