openucx-tools-1.15.0-150600.3.5.2<>,iݽp9|j^IȦ* Ie,Q|4I9puM JRAKmZ(DyH մJ;ՑWDpg42COVװ3AI|^ E~t,˜[FM&slJ1 )x柆yvS T΍;b;SY赓ćtrB0zOZ鞜?BL1X-;%2~,x؃͐SŠPQ],vPBZ+R/>>@?0d $ 6lp|      _   2 X  ! !!(W8`%9%:^%FSGhHI`XY\]8^bcd0e5f8l:uLvw xy3z,Copenucx-tools1.15.0150600.3.5.2OpenUCX utilitiesMiscallaneous utilities for Unified Communication X.iݽs390zl34\SUSE Linux Enterprise 15SUSE LLC BSD-3-Clausehttps://www.suse.com/System/Consolehttp://openucx.org/linuxs390x XPgaj: #P3AAA큤A큤A큤AA큤A큤iݻiݻiݻiݹiݻiݹiݹiݹiݹiݹiݹiݼefiݼciݹiݹiݹiݹiݹiݹiݹiݹiݹiݹiݹiݹiݹiݹiݹiݹ84cd52e29ee9265c5a6ee29809e7d95638edc3409591fdf620ec5751a2d9327436412493a29c30229723cfdd65a46f3e9c344450ef71fbd1421db9a61fdd041f5839565be2e82a25008b0ad6f1f660ba319f40b4cf6a6d75ddf1adb6062d2e8e9dbb6c9545143b8a9f2a61e6d31247c30835f4b9e98014b1e58eaac3f97901775fbfe61c8d3bad5d286b202a872e99d3d8e982e986c0b7b8eedd815490cf0b5bfdba7a97203e661fd08de4b1c85f9b4414569c474038a4fd7599984b4b12f727425c43b7b37d5a4db97b6152cffcf2a9e9b0e2b5b24fa4c4fd70042be2a48c3472f83d13224ed92e9264c0131074c5d3ee761cc7a74e3889aa4dc212340ea8dd090459b884fa8ee2543d12380268ccfcaeb73b1d49edaf4a30f13f83df33dafeebb5c7fa3d2e20fbee5431a975c7196779647490324dc2346cc561f0f044048dcc291b7e22e4d11a847ab0803c39646bcc05391d488974b29a0f5c2626498f226b7509ae9e5f975138a0dcb2744e67fcfdbba7f05f11485b42b211310d5af16e84407297fa98ea0a90b062f1eb467e7cc5badea8fe505c9df78977cbb0f5cd1bdb51f2499d8924ad1e62ea2f1a050e6aaf5ab9f3117a9b1adb40a0bc15e8495e9f11c5785da9c00f24d015d74e0d3c3b53eee08acce5c970dce443cb5560d4ea0d618d4650ed8674b28dda1a4b88df1db885589e7269f80d1bd51b8afb24ac70d4214780b9364cae0cceb0afc8bdb6c3cbf7b837e640fb311bbc5bc190138d3797d82a722b7923ff202c364754b917fc91d11fd63bd841ea0fba528a525fd6dc989f30814d5755885cca495652cce1d88f4a051470fe7e8ecd433908b04148853f3f460a0bf39b3273dfcb590e5db476d1d68b3b8ef9970e36894dad3473745a44bd26f5f50087ab4f124b228d267fe88ba0833309861d2a39f701a46676fcefe24145afe1640ef437c3ffbd3120bc734f0ccbe93d8c8b299ee6094cba118c8d9e13bb88a603c1223dac70b509a7c00d8d47583dba685473b89972b469329e29rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootopenucx-1.15.0-150600.3.5.2.src.rpmopenucx-toolsopenucx-tools(s390-64)pkgconfig(ucx)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    /usr/bin/pkg-configlibc.so.6()(64bit)libc.so.6(GLIBC_2.2)(64bit)libc.so.6(GLIBC_2.3)(64bit)libc.so.6(GLIBC_2.3.2)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.33)(64bit)libc.so.6(GLIBC_2.34)(64bit)libc.so.6(GLIBC_2.38)(64bit)libc.so.6(GLIBC_2.4)(64bit)libgcc_s.so.1()(64bit)libgcc_s.so.1(GCC_3.0)(64bit)libgomp.so.1()(64bit)libgomp.so.1(GOMP_1.0)(64bit)libgomp.so.1(GOMP_4.0)(64bit)libgomp.so.1(OMP_1.0)(64bit)libstdc++.so.6()(64bit)libstdc++.so.6(CXXABI_1.3)(64bit)libstdc++.so.6(CXXABI_1.3.9)(64bit)libstdc++.so.6(GLIBCXX_3.4)(64bit)libstdc++.so.6(GLIBCXX_3.4.11)(64bit)libstdc++.so.6(GLIBCXX_3.4.15)(64bit)libstdc++.so.6(GLIBCXX_3.4.21)(64bit)libstdc++.so.6(GLIBCXX_3.4.9)(64bit)libucp.so.0()(64bit)libucs.so.0()(64bit)libuct.so.0()(64bit)pkgconfig(ucx-ucs)pkgconfig(ucx-uct)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.3g@ed@dJdc<@c< @c2a@aLl@`6?_{ _ L^3^@]4@]@\@\s\o@[@[ā@[l,[!@Z2@Zc/@ZaZ*~YYYV=@YS@Y9<@Y(We7Ue@U@nicolas.morey@suse.comnicolas.morey@suse.comnicolas.morey@suse.comnicolas.morey@suse.commliska@suse.czschwab@suse.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.commliska@suse.cznmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comdimstar@opensuse.orgjengelh@inai.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.dejengelh@inai.dejengelh@inai.dejengelh@inai.de- Add UCT-IB-UD-Use-GRH-to-detect-address-family-on-non-Mellanox-hardware.patch to fix an UD init issue on non-Mellanox RDMA HW (bsc#1240204)- Update to 1.15.0 - UCP - Added 2-stage pipeline protocol in the new protocol infrastructure - Added reset and abort functionality of rendezvous protocols in the new infrastructure - Added zero-copy rendezvous data send protocol in the new infrastructure - Added support for user memory handle in the new protocol infrastructure - Added option to force ODP registration for certain memory types - Enabled lock free memory region deregistration - Updated allow/deny transport list feature to control auxiliary transport selection - Multiple performance improvements of the new protocol infrastructure - Multiple improvements in error and debug messages - Fixed assertion when sending from non-contiguous GPU buffer to managed buffer - Fixed the race condition on endpoint configurations - Fixed endpoint reconfiguration issues due to asymmetrical selection - Fixed endpoint reconfiguration error due to wrong locality detection - Fixed crash during connection manager cleanup - Fixed rkey index calculation for rendezvous protocol - Fixed rcache dump function - Removed logging from rkey unpack in release mode - Fixed dobule free of rkey in rendezvous protocol - Fixed rendezvous pipeline protocol error flow - Fixed error handling in rendezvous get zcopy protocol - Replay pending requests of wireup EP CM during connection establishment to prevent potential ordering issues and wrong configuration - Pass user-provided memory type to the function that checks whether the buffer can be sent inline or not - Avoid memory registration during UCP context initialization - Fixed CPU/device atomics selection in the new protocol infrastructure - Multiple fixes in the new protocol infrastructure information output - UCT - Split UCT_MD_MKEY_PACK_FLAG_INVALIDATE into two flags for RMA and AMO - Added put_zcopy and get_zcopy scheme support for self transport - Added base implementation of is_reachable_v2 API using intra/inter flag - Introduced MD capability for non-blocking registration memory types - Added check for dmabuf kernel support in ROCm memory domain - Fixed exported memh packing - Fixed an error in checking return status of multi-threaded memory registration function - RDMA CORE (IB, ROCE, etc.) - Added implementation of is_reachable_v2 routine to IB interface - Added option to control CQE zipping per CQ RX/TX direction - Added option to specify how DCI selects port under RoCE LAG - Added hw_dcs to the list of policies to select DCI by an endpoint - Removed implicit on-demand paging - Added option to set RoCE lag dct port for response under queue affinity mode - Improved IB memlock limit logging - Fixed dma-buf based memory region registration - Fixed memory handle data corruption when PCIe relaxed ordering is enabled - Fixed performance degradation when indirect atomic key is not supported by the hardware - Fixed remote access error to strict-order keys because of wrong offset - Added check for UAR support to memory domain opening - Fixed updating port counters for devx qp - Fixed ibv_create_cq error message on node without Infiniband - Fixed performance degradation due to using 2 paths on NDR400 by default - Removed unnecessary async lock which otherwise would block UD progress - UCS - Added ucs_string_buffer_rbrk() to split token - Fixed lane selection and added bandwidth estimation for Sapphire Rapids family - Fixed displaying wrong environment variable suggestions - Fixed VFS warning output - Fixed SEGV in ucs_debug_backtrace_next(), upon previous SEGV handling, due to ENOMEM situation - Fixed memory corruption when using UCX_MPOOL_FIFO=y - UCM - Fixed conditional jump patching - Fixed mremap() override - Tests - Added a rocm docker container for testing - Added option to send client_id in iodemo test - Added support for multiple connections to the same server in iodemo test - Added synchronization before exit to hello world examples - Fixed wrong usage of ep_close in examples - Tools - Added user-side memcpy option for AM benchmarks in ucx_perftest - Added wireshark LUA dissectors for some UCX protocols - Fixed memory access flags in perftest - Removed support for librte from perf - Fixed worker flush deadlock when using multiple workers in ucx_perftest - Build - Added support for binutils 2.40 - Added versioned dependency to switch between packages with the same names - Added a separate xpmem deb subpackage - Added aarch64 support to the binary distribution pipeline - Removed dependency on libnuma - Documentation - Updated ucp_worker_release_address description - Refresh openucx-s390x-support.patch against latest souces- Update to v1.14.1 - Fixed ROCm to prevent the locking of host pinned memory - Added CUDA 12 based UCX builds to the release flow - Increased the maximal number of endpoint configurations - Fixed filter for a slow-lanes in selection logic - Fixed TCP transport bandwidth calculation - Fixed device detection for ROCM - Fixed compatibility with CUDA 12 - Fixed rendezvous threshold for multi-path configurations - Fixed error message in case of static link - Fixed BlueField-3 detection - Multiple fixes for Azure CI pipeline- Update to v1.14.0 - UCP - Added API for querying transport and device names on endpoint - Added API for querying datatype object - Added API for exporting and importing memory keys (no implementation yet) - Added support for non-persistent active message header - Added infrastructure to print protocols v2 performance - Multiple performance improvements for protocols v2 - Added support for non-contiguous datatypes for rendezvous protocols v2 - Added support for reset and abort request in protocols v2 - Added support for user memory handles in RMA API - Added multi-rail support for RMA API in protocols v2 - Added support for up to 16 different lanes per endpoint - Added support for dmabuf memory registration in protocols v2 - Added strong fence mode for ucp_worker_fence() API - UCT - Added new uct_md_mem_attach() API to support exported memory handles - Added remote completion mode for endpoint flush (via new flag) - Added support for dmabuf registration - Added new uct_ep_connect_to_ep_v2() API - Added new uct_mem_reg_v2() API - Added new uct_md_query_v2() API - Added support for IPv6 loopback address in TCP transport - RDMA CORE (IB, ROCE, etc.) - Added ECE (enhanced connection establishment) support for RC and DC transports - Added support for hardware DCS in DC transport - Added UD interface and endpoint resource information to VFS - Added CQ creation via DEVX API - Removed support for accelerated IB transports over legacy experimental verbs - UCS - Added support for auto-correction of user environment variables - UCM - Implemented CUDA bistro hooks for aarch64 (to enable memory cache on this platform) - Added support for CUDA virtual/stream-ordered memory with cudaMallocAsync - Documentation - Added FAQ for using pkg-config tool to build applications with UCX - Tools - Added runtime library version to the 'ucx_info -v' output - Added support for memory types in ucx_info - Many bugfixes. See NEWS. - Drop patch merged upstream: - UCS-DEBUG-replace-PTR-with-void.patch - gcc13-fix.patch - Refresh openucx-s390x-support.patch- Add upstream gcc13-fix.patch fix.- openucx-s390x-support.patch: fix use of clz builtin for 64-bit value- Update openucx-s390x-support.patch to add missing ucs_ffs32 on s390x - Drop baselibs.conf as openucx only works on 64b systems- Update to v1.13.1 (jsc#PED-912) - Core - Added new objects to VFS: local and remote address of endpoint, statistics of ucp_ep_create success/failure, failed/destroyed endpoints - Added support for UCX static libraries - Added profiling for rkey management routines - PCIe relaxed order enabled by default for AMD CPUs - Fixed not deallocating memory from ucp_mem_unmap if no rcache - Fixed versioning infrastructure - Multiple code improvements: refactoring, debug prints and assertions, etc. - Multiple improvements in build, test and docs infrastructure - Added new objects to VFS (md, component, log_level, etc.) - Added configuration variable to specify which loadable modules are allowed - Added build-time configuration to disable sigaction overriding - UCP - Added API to pass pre-registered memory handle to UCP operations - Added implementation of AM rendezvous protocol - Added 2-stage pipeline rendezvous protocol for GPU - Added support for fragment mem_type for v1 pipeline proto, disabled by default - Added active message support for proto v2 - Added UCP memory registration cache - Improved adaptive progress - deactivate iface when all p2p lanes are destroyed - Added support for user memh in proto_v1 - Added support for selecting local address when creating a client endpoint - Added option to limit GPUDirectRDMA size in rendezvous protocol, UCX_RNDV_MEMTYPE_DIRECT_SIZE - Deprecated UCX_SOCKADDR_AUX_TLS configuration parameter - Resolving remote EP ID when creating local EP disabled by default - Added client_id to ucp_worker_create() and ucp_conn_request_query() APIs - Added ucp_worker_address_query() API - Updated ucp_ep_query() API for getting local and remote addresses - Added address versioning to correctly preserve wire compatibility starting from version 1.11.0 - Added new client/server connection establishment packet header format - Enabled rendezvous and tag sync protocols when error handling is enabled on the endpoint - Added iov zcopy support to RMA operations - Reduced memory usage of unexpected messages by fitting receive buffer size to packet size - Added support for modifying UCT and UCS configs by ucp_config_modify() API - Optimized unpacked rkeys memory consumption - Added request flag to influence latency vs. bandwidth protocol - Reduced memory management overhead with new protocols - Improved performance calculations for new protocols - Added AMO support with GPU memory target using new protocols - Added put_zcopy, get_zcopy and pipeline based rendezvous in new protocols - Added support for user-defined alignment in Active Messages - Added support for offload tag sync in new protocols - Updated ucp_atomic_post() to use NBX flow - UCT - Introduced API uct_md_mkey_pack_v2 - Introduced UCT iface features API - Introduced max_inflight_eps parameter in perf_attr API - Introduced UCT_SEND_FLAG_PEER_CHECK flag that forces checking connectivity to a peer - Introduced UCX_RCACHE_PURGE_ON_FORK to enable/disable cleaning regions when application is forking - Disabled PEER_FAILURE capability for XPMEM - Added API - uct_iface_is_reachable_v2() - Added IPv6 address support in TCP - Added latency estimation to uct_iface_estimate_perf() - Adjusted knem and cma overhead cost - Increased built-in TCP keep-alive interval to 2 seconds - RDMA CORE (IB, ROCE, etc.) - Introduced NDR autorecognition - Introduced CQE zipping support - Set the default MAX_RD_ATOMIC to maximum value supported by the hardware - Disabled mlx5 ifaces on verbs MD - Added detection of IB NDR devices - Added check for CQ overrun in assert mode - Added bitmap usage for releasing detached DCIs - Added configuration for requests ack frequency with DevX - Added remote QP info to tx error CQE traces - ROCM - Increased maximum number of HSA agents - UCS - Added topo module infrastructure - Added memtrack and rcache information to VFS - Added API for a per-process aggregate-sum statistics report - Added memory pool set data structure - Added new ptr_array API for bulk allocation - Added ucs_string_buffer_append_flags() for string buffer - Added ucs_ffs32() - Added ucs_vsnprintf_safe() which always adds '\0' - Added thread-safe put to ptr_map - Improved accuracy of the topology distance estimation - Added prints of leaked callbacks from the callback queue - Removed a diagnostic message when fuse thread is stopped - Added configurable limit for the memory consumed by rcache - Added configuration for VFS(FUSE) thread affinity - Added memory limit support to memtrack - Packaging - Added cmake config files for better integration with external cmake based projects - Tools - Added loop-back transport support in ucx_perftest - Split ucx_perftest into separate modules - Added process placement option for ucx_info - Extended parameters correctness check in ucx_perftest - Backported UCS-DEBUG-replace-PTR-with-void.patch from upstream to fix compilation- Fix UCM bistro support on non s390x archs - Add ucm-fix-UCX_MEM_MALLOC_RELOC.patch to disable malloc relocations by default (bsc#1194369)- Update to v1.11.1 (jsc#SLE-19260)- Update openucx-s390x-support.patch to fix mmap syscall on s390x (bsc#1182691) - Core: - Added support for UCX monitoring using virtual file system (VFS)/FUSE - Added support for applications with static CUDA runtime linking - Added support for a configuration file - Updated clang format configuration - UCP - Added rendezvous API for active messages - Added user-defined name to context, worker, and endpoint objects - Added flag to silence request leak check - Added API for endpoint performance evaluation - Added API - ucp_request_query - Added API - ucp_lib_query - Added bandwidth optimizations for new protocols multi-lane - Added support for multi-rail over lanes with BW ratio >= 1/4 - Added support for tracking outstanding requests and aborting those in case of connection failure - Refactored keep-alive protocol - Added device id to wireup protocol - Added support up to 128 transport layer resources in UCP context - Added support CUDA memory allocations with ucp_mem_map - Increased UCP_WORKER_MAX_EP_CONFIG to 64 - Adjusted memory type zcopy threshold when UCX_ZCOPY_THRESH set - Refactored wireup protocols, rendezvous, get, zcopy protocols - Added put zcopy multi-rail - Improved logging for new protocols - Added system topology information - Added new protocols for eager offload protocols - UCT - Extended connection establishment API - Added active message AM alignment in iface params - Added active message short IOV API. - Added support for interface query by operation and memory type - Added API to get allocation base address and length - Added md_dereg_v2 API - UCS - Added log filter by source file name. - Added checking for last element in fraglist queue - Added a method to get IP address from sockaddr. - Added memory usage limits to registration cache - RDMA CORE (IB, ROCE, etc.) - Added report of QP info in case of completion with error - Refactored of FC send operations - Added support for DevX unique QPN allocation - Optimized endpoint lookup for DCI - Added support for RDMA sub-function (SF) - Added support for DCI via DEVX - Added DCI pool per LAG port - Added support for RoCE IP reachability check using a subnet mask - Added active message short IOV for UD/DC/RC mlx, UD/RC verbs - Added endpoint keep alive check for UD - Suppressed warning if device can't be opened - Added support for multiple flush cancel without completion - Added ignore for devices with invalid GID - Added support for SRQ linked list reordering - Added flush by flow control on old devices - Added support for configurable rdma_resolve_addr/route timeout - Shared memory - Added active message short IOV support for posix, sysv, and self transports - TCP - Added support for peer failure in case of CONNECT_TO_EP - Added support for active message short IOV - See NEWS for a complete changelog and bug fixes - Refresh openucx-s390x-support against latest sources- Update to v1.9.0 (jsc#SLE-15163) - Features: - Added a new class of communication APIs '*_nbx' that enable API extendability while - preserving ABI backward compatibility - Added asynchronous event support to UCT/IB/DEVX - Added support for latest CUDA library version - Added NAK-based reliability protocol for UCT/IB/UD to optimize resends - Added new tests for ROCm - Added new configuration parameters for protocol selection - Added performance optimization for Fujitsu A64FX with InfiniBand - Added performance optimization for clear cache code aarch64 - Added support for relaxed-order PCIe access in IB RDMA transports - Added new TCP connection manager - Added support for UCT/IB PKey with partial membership in IB transports - Added support for RoCE LAG - Added support for ROCm 3.7 and above - Added flow control for RDMA read operations - Improved endpoint flush implementation for UCT/IB - Improved UD timer to avoid interrupting the main thread when not in use - Improved latency estimation for network path with CUDA - Improved error reporting messages - Improved performance in active message flow (removed malloc call) - Improved performance in ptr_array flow - Improved performance in UCT/SM progress engine flow - Improved I/O demo code - Improved rendezvous protocol for CUDA - Updated examples code - Bugfixes: - Fixes for most resent versions of GCC, CLANG, ARMCLANG, PGI - Fixes in UCT/IB for strict order keys - Fixes in memory barrier code for aarch64 - Fixes in UCT/IB/DEVX for fork system call - Fixes in UCT/IB for rand() call in rdma-core - Fixed in group rescheduling for UCT/IB/DC - Fixes in UCT/CUDA bandwidth reporting - Fixes in rkey_ptr protocol - Fixes in lane selection for rendezvous protocol based on get-zero-copy flow - Fixes for ROCm build - Fixes for XPMEM transport - Fixes in closing endpoint code - Fixes in RDMACM code - Fixes in memcpy selection for AMD - Fixed in UCT/UD endpoint flush functionality - Fixes in XPMEM detection - Fixes in rendezvous staging protocol - Fixes in ROCEv1 mlx5 UDP source port configuration - Multiple fixes in RPM spec file - Multiple fixes in UCP documentation - Multiple fixes in socket connection manager - Multiple fixes in gtest - Multiple fixes in JAVA API implementation - Refresh openucx-s390x-support.patch against new version- Update to v1.8.1 - Features: - Added binary release pipeline in Azure CI - Bugfixes: - Multiple fixes in testing environment - Fixes in InfiniBand DEVX transport - Fixes in memory management for CUDA IPC transport - Fixes for binutils 2.34+ - Fixes for AMD ROCM build environment- Trim bias and filler wording from descriptions.- Update to v1.8.0 - Features: - Improved detection for DEVX support - Improved TCP scalability - Added support for ROCM to perftest - Added support for different source and target memory types to perftest - Added optimized memcpy for ROCM devices - Added hardware tag-matching for CUDA buffers - Added support for CUDA and ROCM managed memories - Added support for client/server disconnect protocol over rdma connection manager - Added support for striding receive queue for hardware tag-matching - Added XPMEM-based rendezvous protocol for shared memory - Added support shared memory communication between containers on same machine - Added support for multi-threaded RDMA memory registration for large regions - Added new test cases to Azure CI - Added support for multiple listening transports - Added UCT socket-based connection manager transport - Updated API for UCT component management - Added API to retrieve the listening port - Added UCP active message API - Removed deprecated API for querying UCT memory domains - Refactored server/client examples - Added support for dlopen interception in UCM - Added support for PCIe atomics - Updated Java API: added support for most of UCP layer operations - Updated support for Mellanox DevX API - Added multiple UCT/TCP transport performance optimizations - Optimized memcpy() for Intel platforms - Added protection from non-UCX socket based app connections - Improved search time for PKEY object - Enabled gtest over IPv6 interfaces - Updated Mellanox and Bull device IDs - Added support for CUDA_VISIBLE_DEVICES - Increased limits for CUDA IPC registration - Bugfixes: - Multiple fixes in JUCX - Fixes in UCP thread safety - Fixes for most recent versions GCC, PGI, and ICC - Fixes for CPU affinity on Azure instances - Fixes in XPMEM support on PPC64 - Performance fixes in CUDA IPC - Fixes in RDMA CM flows - Multiple fixes in TCP transport - Multiple fixes in documentation - Fixes in transport lane selection logic - Fixes in Java jar build - Fixes in socket connection manager for Nvidia DGX-2 platform - Multiple fixes in UCP, UCT, UCM libraries - Multiple fixes for BSD and Mac OS systems - Fixes for Clang compiler - Fix CPU optimization configuration options - Fix JUCX build on GPU nodes - Fix in Azure release pipeline flow - Fix in CUDA memory hooks management - Fix in GPU memory peer direct gtest - Fix in TCP connection establishment flow - Fix in GPU IPC check - Fix in CUDA Jenkins test flow - Multiple fixes in CUDA IPC flow - Fix adding missing header files - Fix to prevent failures in presence of VPN enabled Ethernet interfaces - Refresh openucx-s390x-support.patch against new version- Ensure /usr/lib/ucx is owned at all times.- Update to v1.6.0 - Features: - Modular architecture for UCT transports - ROCm transport re-design: support for managed memory, direct copy, ROCm GDR - Random scheduling policy for DC transport - Optimized out-of-box settings for multi-rail - Added support for OmniPath (using Verbs) - Support for PCI atomics with IB transports - Reduced UCP address size for homogeneous environments - Bugfixes: - Multiple stability and performance improvements in TCP transport - Multiple stability fixed in Verbs and MLX5 transports - Multiple stability fixes in UCM memory hooks - Multiple stability fixes in UGNI transport - RPM Spec file cleanup - Fixing compilation issues with most recent clang and gcc compilers - Fixing the wrong name of aliases - Fix data race in UCP wireup - Fix segfault when libuct.so is reloaded - issue #3558 - Include Java sources in distribution - Handle EADDRNOTAVAIL in rdma_cm connection manager - Disable ibcm on RHEL7+ by default - Fix data race in UCP proxy endpoint - Static checker fixes - Fallback to ibv_create_cq() if ibv_create_cq_ex() returns ENOSYS - Fix malloc hooks test - Fix checking return status in ucp_client_server example - Fix gdrcopy libdir config value - Fix printing atomic capabilities in ucx_info - Fix perftest warmup iterations to be non-zero - Fixing default values for configure logic - Fix race condition updating fired_events from multiple threads - Fix madvise() hook - Refresh openucx-s390x-support.patch against new version- Disable Werror to handle boo#1121267- Update openucx-s390x-support.patch to fix support of 1.5.0 on s390x (bsc#1121267) - Add baselibs.conf for ppc- Update to v1.5.0 (bsc#1121267) * Features: * New emulation mode enabling full UCX functionality (Atomic, Put, Get) * over TCP and RDMA-CORE interconnects which don't implement full RDMA semantics * Non-blocking API for all one-sided operations. All blocking communication APIs marked * as deprecated * New client/server connection establishment API, which allows connected handover between workers * Support for rdma-core direct-verbs (DEVX) and DC with mlx5 transports * GPU - Support for stream API and receive side pipelining * Malloc hooks using binary instrumentation instead of symbol override * Statistics for UCT tag API * GPU-to-Infiniband HCA affinity support based on locality/distance (PCIe) * Bugfixes: * Fix overflow in RC/DC flush operations * Update description in SPEC file and README * Fix RoCE source port for dc_mlx5 flow control * Improve ucx_info help message * Fix segfault in UCP, due to int truncation in count_one_bits() * Multiple other bugfixes (full list on github) * Tested configurations: * InfiniBand: MLNX_OFED 4.4-4.5, distribution inbox drivers, rdma-core * CUDA: gdrcopy 1.2, cuda 9.1.85 * XPMEM: 2.6.2 * KNEM: 1.1.2- Update to v1.4.0 (bsc#1103494) * Features: * Improved support for installation with latest ROCm * Improved support for latest rdma-core * Added support for CUDA IPC for intra-node GPU, CUDA memory allocation cache for mem-type detection, latest Mellanox devices, Nvidia GPU managed memory, multiple connections between the same pair of workers, large worker address for client/server connection establishment and INADDR_ANY, and for bitwise atomics operations. * Bugfixes: * Performance fixes for rendezvous protocol * Memory hook fixes * Clang support fixes * Self tl multi-rail fix * Thread safety fixes in IB/RDMA transport * Compilation fixes with upstream rdma-core * Multiple minor bugfixes (full list on github) * Segfault fix for a code generated by armclang compiler * UCP memory-domain index fix for zero-copy active messages- Update to v1.3.1 (fate#325996) - Prevent potential out-of-order sending in shared memory active messages - CUDA: Include cudamem.h in source tarball, pass cudaFree memory size - Registration cache: fix large range lookup, handle shmat(REMAP)/mmap(FIXED) - Limit IB CQE size for specific ARM boards- Update to v1.3.0 (bsc#1104159) - Added stream-based communication API to UCP - Added support for GPU platforms: Nvidia CUDA and AMD ROCM software stacks - Added API for client/server based connection establishment - Added support for TCP transport - Support for InfiniBand tag-matching offload for DC and accelerated transports - Multi-rail support for eager and rendezvous protocols - Added support for tag-matching communications with CUDA buffers - Added ucp_rkey_ptr() to obtain pointer for shared memory region - Avoid progress overhead on unused transports - Improved scalability of software tag-matching by using a hash table - Added transparent huge-pages allocator - Added non-blocking flush and disconnect for UCP - Support fixed-address memory allocation via ucp_mem_map() - Added ucp_tag_send_nbr() API to avoid send request allocation - Support global addressing in all IB transports - Add support for external epoll fd and edge-triggered events - Added registration cache for knem - Initial support for Java bindings - Multiple bugfixes (full list on github) - Drop UCT-UD-fixed-compilation-by-gcc8.patch as it was fixed upstream - Refresh openucx-s390x-support.patch against latest sources- Remove libnuma-devel on s390x for older releases- Add UCT-UD-fixed-compilation-by-gcc8.patch to fix compilation with GCC8 (bsc#1084635)- Use right documentation path.- Update to 1.2.2 - Support including UCX API headers from C++ code - UD transport to handle unicast flood on RoCE fabric - Compilation fixes for gcc 7.1.1, clang 3.6, clang 5 - When UD transport is used with RoCE, packets intended for other peers may arrive on different adapters (as a result of unicast flooding). - This change adds packet filtering based on destination GIDs. Now the packet is silently dropped, if its destination GID does not match the local GID. - Added a new device ID for InfiniBand HCA- Drop doxygen BuildRequires: The documentation was already not built with this enabled. Removing the BR causes no regression in the package but eliminates a build cycle boost -> curl -> doxygen -> openucx -> boost- Rediff openucx-s390x-support.patch as p1 to be in line with potential git-generated patches.- Switch to version 1.2.1 (Fate#324050) Previous 1.3+ version was based on a development branch. Supported platforms - Shared memory: KNEM, CMA, XPMEM, SYSV, Posix - VERBs over InfiniBand and RoCE. VERBS over other RDMA interconnects (iWarp, OmniPath, etc.) is available for community evaluation and has not been tested in context of this release - Cray Gemini and Aries - Architectures: x86_64, ARMv8 (64bit), Power64 Features: - Added support for InfiniBand DC and UD transports, including accelerated verbs for Mellanox devices - Full support for PGAS/SHMEM interfaces, blocking and non-blocking APIs - Support for MPI tag matching, both in software and offload mode - Zero copy protocols and rendezvous, registration cache - Handling transport errors - Flow control for DC/RC - Dataypes support: contiguous, IOV, generic - Multi-threading support - Support for ARMv8 64bit architecture - A new API for efficient memory polling - Support for malloc-hooks and memory registration caching- Disable avx at configure level- Add openucx-s390x-support.patch to fix compilation on s390x - Compile openucx on s390x- Fix compilation on ppc- Update to snapshot 1.3+git44 * No changelog was found - Add -Wno-error and disable AVX/SSE as it is not guaranteed to exist.- Update to snapshot 0~git1727 * New: libucm. libucm is a standalone non-unloadable library which installs hooks for virtual memory changes in the current process.- Update to snapshot 0~git862 * License clarification on upstream's behalf- Initial package for build.opensuse.org (version 0~git713)s390zl34 1762188733 1.15.0-150600.3.5.21.15.0-150600.3.5.21.15.0 ucx_infoucx_perftestucx_read_profileopenucxio_democmakeucxucx-config-version.cmakeucx-config.cmakeucx-targets.cmakeucx.pcopenucx-toolsNEWSopenucx-toolsLICENSEopenucxexampleshello_world_util.hucp_client_server.cucp_hello_world.cucp_util.huct_hello_world.cperftestREADMEmsg_pow2msg_pow2_largetest_types_ucptest_types_ucp_amotest_types_ucp_rmatest_types_ucttransports/usr/bin//usr/lib//usr/lib/openucx//usr/lib64//usr/lib64/cmake//usr/lib64/cmake/ucx//usr/lib64/pkgconfig//usr/share/doc/packages//usr/share/doc/packages/openucx-tools//usr/share/licenses//usr/share/licenses/openucx-tools//usr/share//usr/share/openucx//usr/share/openucx/examples//usr/share/openucx/perftest/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:41432/SUSE_SLE-15-SP6_Update/2317d2503d39928489709d2799d2b271-openucx.SUSE_SLE-15-SP6_Updatedrpmxz5s390x-suse-linuxELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, BuildID[sha1]=c2eff9167cc81eb53988310ba6b68c2a8ccb5dce, for GNU/Linux 4.3.0, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, BuildID[sha1]=db9c55d0e50465755295765eb587129fdf464532, for GNU/Linux 4.3.0, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, BuildID[sha1]=30829e0c266736025d4e592737535439672069b8, for GNU/Linux 4.3.0, strippeddirectoryELF 64-bit MSB shared object, IBM S/390, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld64.so.1, BuildID[sha1]=8d261b1ec16e6f65550944f7668541e2970f3874, for GNU/Linux 4.3.0, strippedASCII textpkgconfig fileC source, ASCII text / RRRRR RRRRRRRR RRRR RRRRR RRRR RRRR R RRRRRRRRRRRRRRR RPRRR<{f#߀d7utf-81e70089b56e924c9b03e782fc928962e26ece2dba34772d6b10b623c2130702e? 7zXZ !t/U]"k%N6cბbMb-.v%;ZpzCEY:^döFp7 d+L#(+XFT dSk N DoHi:EL|b|l *W|}qLD, ,]%C"HG.kwSM{IU<m.CWgo>[fc]ix#7`-n\1/ ή}B-9 n,xR+Ӌ^2y=Ne{Lf|pƐMJov#ryq6 PԾV ꣑&Y\0-8Aym.OE$\c%05/ϛk(޶ъtW~Gl͓hhe!uk H>@NkXr\lcvEcb!l V)Ce/t&펐_ыQ6㺻5iru[~fƜ%ic ҕ҇x;1`qVR>aptF JXs#mE v'( rA杊W^'Y=HVUs62: qXAL}p_qKIڬ I7 YuhDn>y0$ZLF9KK Q]HkowS QZ.1 `{ë8xsDcw[`~dGos1 %1BM_37%}"^q7rA;K0,<CBZBJy =6EXθ, o`hiaϜ F%t/f@{&!Wz9Au`/XTZA%˵&)8 K!PTax+޽"άӮb*]r?l3NY j>G"Nvj:9>d]Dec`COp)O#B tqGrZ4x y2= ?1؛:wUz onl&ؒxc*$KɈ\ms]O0pg0I^ *b&Cn"_E72 3rߨ@H PA+L6YdUD}nwTv!3͝Ffq;]L?@`d߽[!dJ 45|dNn mH|AXmlw!m=9P-VjN3im=!ؖl bO^eXQ[khoK? ~M=&ɌdB?9P9Dvu#s1ܩ(0aڀP9gOy ˆZ(;ϽP_U(s(Jp۫VJ954>NG#ٽ$֑BX2޸in$Qtj ƮG!L&74YtB:0yA=%Rqq*f$ZW+*~$dhJоJun.TDuRg8RNZ.{Iq$_Iu6_ %!"骷7O,NqD9yswA}LǪ8o"!%uȚ0 #Qe5ÙʚG|Ls#3(>0oϰ…jߥ_ /v%X"XFƣco+@*t\)8S:Q˨]o|WtBPDBNZܦToaoL$d P곅k8w[|H^)B拓'6 p:6~@Oxrœ;IJ[Kzh7 (Ry^KoOgl{?R*ʀI, n1ӭ0ʄ.Up?!)QU({]{"o$ߙ7+Tݝl?Q2RLXo9V8=+p\/&c'E!Ou[;UpmOymHuł\{w'[JVьT@WL8L s$d8YsT~!==єk7//SvY=PKT0g6o*䄪 8}=A( e$>γ+k^ @^)f_F5LͶ Ӱ[~:m߻:PLA~Z.I^XWA:фUp"RU KsǼ2^,bfɡ=Q=}}'LfO45P*AC%k戟Ρe^JC}wKpG=lO]롽`5H, H˪?5F\Rd.A)!ʕ$-2PWo5_qFs5ߠ:}p#KLV-]iwyq$7tz@Ry\v)X;d *+z C!l*6$s]]FMe A&,#4 fh`q7.UֺouŘS^۹Bq[bX{5,^qI_tD/(F_'yA-|j6g9&[0 +pHܸ̏+B Z+Hk'(VߙBU>㙸K)Md`+խw[u9P5BەL<"V,ǽ_ !ل _Qk݂eŅzY3Q"i.?){XbӄM{'%ݞѪ: ,3_%.Yg5wRM!`ᨢW{22o3%KCeC@.ҭBfdQ_)EQ HeYU rmXwZ!C/zbcJc #ɝP5m0[_*aѸzǙ2ƽQ*UlPl`:VY2~^,Xtۢ9K}~R/[Qk@denl3KLdDev賰Ӿ7JtLTDLqCȏ7qǒõ E߶ŃS@hηD=B޵W<ʡ 7`bFe5tܐ9WE#Y1@cl6Kc:檞o9٠YF$G )pO(lgi0"NvSuh«}|9Yeg&5_%ъcznuv^.%~<](U j(9αHNjwH;*i>bݭPR}j3\ d.Ҏ, k K_'a~M,Hf'SE{#nmdo^Me A<9Ǿ N!M ʡ+K4;XENsTZHsƚ ym#Ҕkz ~?㎌ /]!p)ߊ%5zPdin4.ϙk[k`8FƯ`cCw܎JW3P3Ōƶ8MlR>s0}~+*)1xf7:D3%7fmvϸJ8Y;t>wGX=6M|7pgOϟN>e8:F]\Ťgc~Uf_$|n+e%MEt 7n&/B؈!({F_$Z pZEz+sKzŁ疂7S;\2" 9H[’[?'Ig7f[xD;wQ:g ; z؊=̼'ͽ v8 A*?e E9N!|FH} )/[=D<%UwP`4dr [.P̰h=Yq{a(ّWH12O/1 v0I:Pvq(nv?BOMWUh߰ JdENHsBOV曈kD|az!yd[`o4!ihモkFr\2,HτџV{:EǸzME2G =.]G)e}ߺs PO54hZ}@OV& [uyvnhI6׻藊y SYdd ػ[faa n/ŏ OnKm\TfѮ'u3J[Rh;n&*I2%ocPeGLbT6 !5d̞--0@?iSz!L֍{SeHΪ\{nɚ=Ho`w~6TD_V3fXs"dl?X:=2:# L@d3/t˵ 7Nfd]ec';să[V\ӠZ saI][޹)͘+iNa)] uav`؆ ԪcȞc>9 rAiS?8H.I Sƫ䭃 ^\ӱJaǞwh^-[{_s6~#_N|fn3cI@b"޶)Bea+8y3.HмŹd8CkxY8|+-%8%ti!Kc`e,딹_%oVH u>SQ&L71gS-= }?l M03#&ߘ(+^PNnjS>ۣ!h1}^68T#T hm-k=jqi޹Tx|\/\^ɜC| ŠuJࠋτԚs[jա˫G 9eUÁ+[޸ݫ8fU D_`;}C]TH/)j^~s=XL064R "zS%UAV}5;B` "W`8eb1-˱ ^Q!5|%n#^{rmxh2xʉ ^$/YU+NtLItxS`4ӫEjǚLw`X)v 'Γ{ nZ>{a 7-ثPs~j6:s?ӡJx{v!r "Ģ_{p!"Q @+mZlSD`](byڻ-Ͼ2cmT잪PnđPS F>vFP Y_gJҨݢ|f; HCRs8fs2`\xiM) Sb6L3)Kქ#,D0Y֌ Kjwv˄< >)E n@U\E8>8#^Q.q@F?0}TVl%k^^}o5/ĉ9ߠ7m9Aȿb,. acD㌨PMcޥȊ#TJf6m@л^"⢱ j2/uøL)zw<6(=eqPK5tog֗UX V8xm,L& DŽwc]pC;S"A>Or:F(J0n&w{:1טF6xKo4ʊS,'jkHKpZMZyB)W,Nq)"TغWߡ{2].DX-9:+ys衳tYHaY<(mo3!p55^h]]ؤn\@ǁ+^ueh62 s2H .bz2d$ {[*NoΎXnV?LDMg Ψ8\`0obB)+"S5n60Ȧa =J!Ϋw ;}0ֱ1H:}ƴ>m=vKA^'*3̬u4s[h{>j9Inma kاE0Ol-qyC}66YϾ% 4dȗvPnʈ"$χ_ϵ~)9O2\dau/BOS_.$.3כVB#GDV}y97|{(&{-+1Bӎ3EmIr3 k@C6F4'-u Q{x08VEwS%dUPkYi%Ae0j5X_5* NIFz,sj~ۉA J? Ϭ59߯ FNJ_h?a j/UL!|Ŕ(kbI:dJo9˞ʦ%$Jʛ[ uf< Ēa9cpOX}+8,I$DcXy3 37UBb6" q IM #+5k_eu&jՓ͹}%ۑVՍ}nPJGChH }ڃ˕j%^AWfUQ$1%0n9"-j!R7Kt R,q}^{M,AIbtnl.A{_rWU/QF€'˃oM*//U12UV{8v,'KDj S}1 (ܒSʸ.'?ڐQ;ीXӹ B|'] bݹ=,UnOI/nQ~pI< 8UWc}h 1G}aÇɒ.|upGr*O2_XVppW뻯y6ˌH}vv7 Bm͘`f~"{_'l}`&A=_-o3_)2W7n޺>A7%lM'^nrXj*Paңc`N=Tyq04 l2{)0qOQIKVCW@\)M}lc%vtD}M"2U[TSM*U]՛Xӭ񂓩 v7EaQr!a AJZ3法Ke O77i(f>^w{~lp";akM!9Q+\xGPzpte^=YCeyy %YYo*t4 5`!'EE#Д1^Wr[(# EgfjU^ H>u fblF G<#Ew{؈ m^S֥Mn@`9sƑ&Äf82L~O>J`O;@eV|f`AE>%ӕ+KSHk}^mm8RXۼ+EL I)LBe2K} 3$xEĸY>c&us?,#D%sⱧw N8܋ʥ<paLI,9##WyuyOح5eڥ/+~Y K{yCr{OzIB2Q-.'q93b!`}DK 46zt $ w 6y%,(x}M @lW|Js06B:80[v駎sgɶHH.\ 4_÷a^ߠPd`3 pGX6;0ۯ6焦]ֹos/A1.&QZ054Eʰ 6z@ZE ?aG'e6. [& ;>f^=Z2 oy߉x.sص65qQ}4qX6&0+b>}sum !XFRexp,ܢP~$骒 Ñ3l6 @;ƥEJ;/mCJ_Uٺ<\2w>C;l0V}o8xueb>\"*ԛ|5p기 ^+}a';'sžmFk1bQ8hVUܳ/b0`)A0XJ& _pwHoL?*:>CD*en 6"i?80HNl :иj8PhD<5ܚz!~ݘcČƄg&sy\dqUΤX>׭s1vtS6_qȴ(F]f&0ZnKe]VY$A,I{Q׭^Aі ݧ|]ӸOoM]rxɛt5ðZ_Cũ_;\I'}>PE,Q87-@b . '￁L$jz F:p}0CH<먣n(+@M sٟ: $ۣ$鞯ey3^ N60Qso$QŸCQNoW[xjdȉ.MxRx͡0ҴHZ͜^1k/ft6!p$㺒%!z3ϧ2o5KsU)?&u'GpݩDWZD,xԌ7x{SӶWq=J& Pi/F,-#p E8lo1ɽ%<{U'D@c/䘎$6Ԕ(3)5PB+GXwwG&)R=$XK…I\ʷq|H9!*;kBnI-eR;5_Ā5>JSk~qx\qwDü3B̤%1Y_>l;znC : jP{P"hmޖ&W]8 Z ^},2]>6:Z4IY@!gA;SIP%{_׌$|o@ݛF&7*n%ę7w-,!Ўa6I&CP}!.JXrᴌv`4q!M G }cZoo\%nTKf1 1@ljEaθ7%RwĿ (t(#D8ƒsӞIcZ'FJusf9o98X_[ǿpL'[p_QG}tϿ?sx)8[_}wءcƬM"EBpA^ž8xeqD]L۬0ܦ+gP\CyAlzۻJq1'1,f\> :"vN7.JfO: ulfUe!i;pKx d*BZsE}X@' ϧNJbkK{ \mrc̪iRq.9+Q%2>\ LG6Cg7sl)E6t!YKرHeH$)_p6 ,Bi8fD%QN9Py' HʋB(mJ">“dk!}۬\C%9uIoALFb8|6'*Pg=:J~ N(0#u 56QMtr>ْ@?a|IĎq;iEl 撴cL_d7w_hދ'QF=~*i#=!jqش ԣGOD/jԠu.]xh|DRP:%Wh+ԃ4W6/GK¾&?OURN& 2w)Zw7=ŭwxBOjJgDhRo(cxjJsfKTBL1OP$njs-,5_8̫ @:nVĹ}(4F(OάVDD/m&\U3/St5f17oﱑMa3xL#e2<pUPZ Zi: >d8cO`=J+$sD<3娛= ]UEr0-aբ|a%;*c+LQ `ԾƽmT?Лfe#3%jqn9b%TVJٵ g|F @ SƎbF/tҕ۪MxlSy(OmR˜R[750" y*Z_qz0l#aֆ ^S6 8j%+9=A _*B~5Y% m/2\#UF$Y@v=hewNv̑\@~31w%,6\ǩ?7; XޟK@Q]*p,|Q MU'yE'dZ`Wܩr/L# w '( ^ObWOl^Hc4R˲p,?s"j LsRcr$/iw_Ңʨ7 i 7ف%5w=lr-zJlm:H,ƕ['zzzұUR0a&CFM1PcQu.A9Uq,!Nе䕹HBOE?JY2nQm^U^ѡ|!|.R9Pfe| v*7L x`!q8( +bOMnj {"dƚ,}J~!kev1mHiE&Df(sx4 B ,8A]3nO^m'=0%±n+i9L\p_}cK/" rLimHGϣ?(a(];a#49"htL"xWY47̫|'.*Gq! QN%5hVy[D_/>7]fYvρ(y{n1GQBz#7B䗜crYf\r$? %{.6Sq6Ai AUV|hx9LQ'$4h&I` Q;90Ngϟ!(9b {lR m s&]8jI{V~dOS IgG pf:ݍA>$,eKbIiGEAd[y)( $XŁ80GeW$^8|pp)"_%d6*s&A_l4Xy-vOl"jGGPI$2[(Q8+* |Ty\j8f$WH<XQf:Q>ESMBϲS舆5sX;Q[dr} k3>bEMrfM&~",Rf6\y ` s Y@>YSM7Yb` M7ffQo8sIو($/BmT (p45AuU-쭨pXL#-*>çlҁuq'Kwm- `?T,nպHqtD4oLD84Ā4j[~Es?3s +4%bPOH>m+y4]&X*´P1;c@$V7N~j9pn  ޔu)̗JklhӤmXrf Di<|SOMDl!'vlv, `ALjjxb>5#﮼k v.$lXE2uݒAzp>Dհ,$hUԞ`a[fGu84@Q^m+C`TEߨ%8S,֍,6%%%_0::?L eݘqq#^,F2`])|ϵO`&=Bȳѽg38:I\S?8&(Shc"+ G yrIə .C*mN j,; A4 QW:Ĥ=ʡK!Gn4_Tr>%:k уHegRdX'z33+#Ms7Y]Ce׉hO Vou gΝt!XsZѨW:#T1r<* Q*Yi1x 5&{Lin³q%G8N$TOu^ɮ7F_QoB+rGq0ds!7[&ҹ<_jX!'Zf:e^zA(BDC͐E44#yиʜxlEk@9N•}};:ĕ tNRe!jycp͑'&ǂ,2dGc~5ĹӯE JF("x\C$TqU[YS{w 05@()AM_,F}uϻ @%QF6RlG!tؘbW.k p )ow@$9;ӂS@]T 7cN;L#x$~ok< xۖG[i0·zDg_+= =t 326U?FEźh|57*Wd!JUAbAzlU)㑷 1P=]^*9!Faޘ>aH|\x@*Z_{omMt8, O:uaJklz<>Ar);Pd?CE65_Yj&z)Hzj!VK<ukg9RdRGwS[5P, w{i9h.2s"F)eߊؾ*kߴwo1͡mAMZt, 2PȊ#МtNŵ Ӥ;N <+*Xi}:#v1 Ub]Ki;;vl~z؂ձU9ֿc$K7CQh&#oo5g[~b/d Ԏס扱Loo`32Z1'`ۓub(SvgLbonxOJA5ݮf kă@N(cuѯn46Cr6 }&@K^kWH4%dq[":`9d f>.Dk'Օ N Lj)0͍.{*hWb&S,Y"%,rV==:8=Z|qS %4֔Ng2{؃ PB":&W\ K4J U}Jx ahѹOQ}ܲ/TCty|+b,~P-TFN\bkV!w.rzZ#݌ BgA.AgfÞˣ sY0h V ٢UgI26CKq&Ԗ$cTJ^7 B,ߧ65g ctosj72lcJO.\6*k=Ą}r~}s?|-vħ4:Zsx+K MW(a_\ؘz(_#~bP 9jTa#.fȫy;39dzR} 9&d <&y {L07vtJ<|S.8+%UuZ,hw1[M0X jTh\Zp5p0\`(ez rnXX)oߪx0SH.~qpE, d,W}U 1U6+Rȗ|;3#߭`1!s/%t?L ` |VTKrE*%Utxi(h)U[Zk}WR,k١b/OIE$T?FUfxkx@.m ;#lz_%םJAMjBrۑz/~9 }{ig2#aS{_ڡ+r%%U.uTAY*dt+&/rl)8*g%mKr25aCޥ"EqЊh "Sn”G׭_GƆ$x-ǩ|u#I#Ouڕ`r>i͆|IO@y8Pj7u8`~ E#My;M'>^/qDΌPbQY n֌JoΟ(gƺIƝ21/@--G=H t"Psi&q,xJ>g@Rc9.p AIi~1ڊV'1O S\gn%E(RU)/Q8yK.Ntm$Z!E1xgt9-mDlr8Ns@*UGOy!Iz֎4ZnZ\rِr zf&jȮšm.Ũo'. 3IGZ/2ˁ. D l31[%Fr"ސV }+QOk\p)fQхWnI v:ߨ;s{nu%~dvY`6,ǥ[x>?.'C2nz1ɜwu ĮOiuC5LU{se l%i[}iŭ2֫A4 $*)xX8 +?ȚnmÍmS"kls4 NbWW?&œ'~SCơ <M5E{'KK/̥U(})u9RҰxm*d'[Z;۝ںYݗ0CZg}PHs'r-sHr{򌀸B $΅\ʜQ3 % =HzP🞑ZwBJ-;ϯru-;.}<)x8[*Sj_z4j&[L{loEY++5ҊsPWmMՈy`_Lbv;e!> 4gݲbYEK\ͳx8.ԘQƖ4b2=u;f+ZػIx>F('>1-XGVc5f Ϸ1.{2*@ܱP 9_XJlUqDX8cSN\Ws'z_mڴ0n9+'말ѯT/U4 6Z,K16?cIKJ.٦ʹ'qqx59H7c ZwP~r^%]̐g?Yd+J_aQ7FkfWeI*]f:ke)(o;#ZN,{}\&W㗲]l-"RbƇR'=S,056M袭M Z-!7h5\>|v.r`aTCO#3R dbڻ1UT=$zfPŒ6mpJ(9#0邹~PWF;@%o{쟾M>wPFa Rdv? ,z.^(׏^g ?rka?@CEPdgLM[UH;9G'I$N.@7>543T/OSDJ7b@\"#j ]_P}s,b&^xT:7*w:~C!BI[\VD\L_bh.6xsi?dG0bB-ȱ:L/gWEMr/wH4υ1^H1SUH3W\Rg%3w7R1w/<> zny;2va{Him_\[J %vep=eXwe9EY@0A:,Os@K19J ۽G!,>6 qU2vhEFܩfr+^V*0>^Qa)g K,@HiH냼[f+2TȐɵYS`fluwhY;3ֻ}NXq3ePI\)`0yo솽ch&еpUJ w %'"@]s&#ǦrN vss jZ?C S`R֭&>pv6c-vxbiy5Ll41;41Ï6>Z koZAjHP6pl2Ck"7LAL5`陞eQ%LN6m%LDDKtX5ɧs hnkI5e9~ $Zab8p[gRb61&E{zJWD7|Z5*zZ]A7WZ5ǚ;!A/Wvw>#~XM.Yjwqq Ԟ+84/2يjj"mw׏:>&!/Io˷uULX:RaJPKa¨3&Ad^w͠`a}.6D{xn`A+;$\F.<6خf~›$LCx?]K]4PAȎ"MJ:X!=dX*\2Bmf)|:%[P_xa#eᑔQViv~R/&ozt T\Ԙ48~闼K/`2dް_25Q12D؈;1V']F ;y:! )yMoޱI"ꑩXֺ8}_RA\IcZ=R!<32,'kV@IM5āT"&[@KVMZ*|ZLl4ȓFG"r+,l(鏯&iY7%J%%țpaG~56[$t/R:w1+=`! - Ä; ,p2M")2/TUT>*NEHC}N+=WG쳳xRLTSCwvmI{910=rdvHikABOei=q %w%V Tk̓XIEƭyTNַw5,52I?]o3:Kq\@,D GJL'/ o=ئqL=4 a;ZbXLjh(߫4?;vsCi7Rd?{*W!A~ʳ0?ݙlyYQ DQ򟤲*qs͏)bM㺘}g%H;TE|TZ \ q+zmKRR%JRI P ׌CbGߢ|  fe4aGM~d2}=ѣvu@ fm.?\V ~{ս9k [gV$Qu,Уļ˩2CrVX4K\Ȇ&ax߸{D? )3r,'(|5rao~&n;K ?dfqE/GZv V+nd[$l^E"P4H2&,yq}ktYUZb'%S B刷 H`%[وq;A5$S:7%i)YGˌ)A_ mU)XND ]Vד'E=PdaCfC!MHw0TfDA?bTwPƨ͈USU|"'\_ڤ*Mί ,2 Ӵ³os<Wpl|GKk8vrrw}^YTc/9>&??U2ۏOI(pB82&a n]bF_;V2]_,#N;I~O0;@ghdn!4A,W&aEVc%J&;t$$ƒ0#F΀[ 3Hl쒂(9yqg~|NZˈ4ϹuCc: 6<0V gɻr:zte`mSunʤˈWSl`{UT}kӶJ>;Z1g. pjK@MWI1]D^knu8k_\,zYp6WQ|˜_M$$AI.7 7d}R?,9v~5W =,ξHVZvI\k _Yr;wX<3ÑJ(I`.,%CnZMl>އ~~K)[qڲLQ [ɏ:ԓ;EA q>Cи*X\̀?L20㑹4O>wF&"0yWF=xb\(b]R#1źKLC^B=aSo<ޯ|E UE}qV>dS'f*07a&gI3:*8 ]=C`8B!^h%8]`zvƷ0%O٧ckJYWUs.=[9?]aڣK`ѝ*W?k*Lj}t0eyz1a+5E+0$r$f^M=p;wrb>?,Bn2` E*Ne1UƳA#O" gLavԸ?ѯ:3ȓ} rHgPw/S99x jYFo$Cnx\d2F4)ϣ 5dh|qn3JO1>_UN9@KZRU[L_z'[d`IB*Ȁ8^ wmY 9ZD<>A fS.S0+iy;~YvwJD2x!6.A3Nz6y`{LʛJv 4p@Îi8_E8\=MfsUzE4Ǐ` "! %ˢ=DyFGG';&@V'{D˫*&:l~}(%vJ8 \]f W#= mD s3om_H憦 QK$"]x /^s7@9;`\b(Pw52x̅ 09[q*y3r[Hͮ؁" TT Sc9qs$D\0g-}x!MB.5@7HOV(5 @NIHw-(0@1 ^] s(6`b՟ߧ岸C6M i 7yP%Ҥl0+fM\m;Xl_M$;"]M/۱n"qJB6P&:n'r*Lenh8}J5jób,wL] }ȌYq`Rvi9B+ Z@ԘEs-r4h!6 9ۏ-fUyN,E^Ƒx-ݳ+L?}~Pl(oʓD+5-ꊁ*a{Գ l7v=ӂ+‰ۈHuDAyD !U-rlA| xy݄@ [E*šSVZ~oVIY&(P"‘VP7ķKG>a>CH Ȗy \Cɿ@=>ݩL+,\? l6%FZYEGx׍ǀ\E`[ B|8`6PKt4ሔPM>tRÙ7{rO@)CxXLuA6&8ɋ]'j%t$'7pRMktC) uλ%qCq/Nnjzxfrh(}Q(fV\W{\,E(io6i]eLm&S!*ظ4S9k/r""˰. IZ#L~=*y"NhZ*P(svao_8>8Q%2=)3+Aٗ@ٔybn0>9ȏ/s΂\sA]cC%?,d5'<3=mT#Vj؍H``Elm XzԹ+tobi+ulPA[w9U'YlugֱP.z!%دw ]NyAXecf|kHh7lFD9ûb笘.'|4죝~(-ʗHhOaqJQ)_d/jMϥ uE貋O1fFUY$&?hk_5ȷbE.5YmB/^JMVdE[^U0 H HR\u,>Kci;Q)Zf[0e\ :b'""ဃ:L0 t> 1%˃S*05!XQ=sNCMoi{>jU}8D*N1Bhv[C'OwkmMD$^$:$بw֢@K^~OŧPˍɯ_UlNmuȥNA,% Fwn ` Jhܹ< Pp>K뫽=`Uf#7' w JL%HeV3c䀸Ԃ ʺLV`Ce 5Y/gB~a߽_WIlUqcLQ(`w! ?">/}/ƑUtf%Vsη 'M1_ZKG99*g'-(f/8HF2ӥ$vz$czKux[E`Sz6xXw.ap4gY =; tax?~'mZ~0k}N:rJPtY4`bڅ ^GJ27MHV.r?YP*L0|D4.*)3Uz[g(}Ѳ ,ؿ(Ij*j+-$؅.t| 2R}*EJl-xdPf?42RH;7RS P9h wIn7ghG%R)>u6l>Go[r!߸f [_ߍ%@ձ~3ylU^Iopߥ)@B}9ۙ *=fibp8,v6`70&kf5<wDVAΣ.x jG.[r3c^{rZ(&Hw(3v ?R,5Fؔ6^KFҠX}֐ =RcCcM4RW#Ѵ0l 3s&E1DӦH<1\^T*j̦ v\Yq>l7Bz'2:3 }Mp_&SJDkN(554Tafs"~0H<(]а_|u$5)QMʟ8og=}O6`x?L*bn|C GrF6Mxv!%Sᕔs@ ,XB@܎(Zj=O}d(ħz%m W4U*My*,y3ul^xu@I=\Uʊ 1\[FXX ɞ9כ3i­Hb ֮6RX݋{IVoc(INr oThD&+츱  47gl ZjigO).CQ)Kt6?<2 ^dgw8kÃ?oJHS1/'}iPE`/ltIct’gȽ`<{~A!I 2T0X(J5 L1ΈqZOe~3`S ]YQZN~VTRMٚ!o9 5T}VK 8_޲ϳ^m"X1\FzI S3Uk zjEaֽJQV^=E,}Bg qyΡjɈkm\?* (  &~ʎl] H:C-Xfoeg&Υda0lNyhHl7VvFZTɿ $=x7ٻIʓ!"FvMʊ794h KyO׽;c`)u_FsK TY̘x t#t~g+cVOP_#טc&˖M KUx_9~t4 $G%;w?m!NՏRJyKwm\lf"N^I[G 4H}zR ):$Tk WNsU%{)zV0Lg0pzl{2n6^9=`~ H;ySc}QWjɫ<[iV:dr͹!yCH}Hmv_X @ldS$\ T4yү;B %\v"638E!$Ghw"WA!agC]lXJZAtڰOrrlk> 7 pEαcO!@ą1'u| e0\ln0-@+ {i tu5UrJV_&TNo;2"h9h %h֢CAXM"̾N^h+/:a{zՙxfVT&I7DždD)mõ$hܕ"牏ݐR-ֵm*+ML-H=G"GբLY ָP?TRPDVS%8 /k= uTyuL 2>V!\V4:TI&cK-jCpF$@ }qɑI;Z |7ndy E:$|^:cZ?;K ns܀݂gKzUM"z?(%V{0΂XAk uI98[w}ЫIJfTjnrlz=l֢S ys|]_myD7J3Je㵲+Q.N䃟yTm=*9>6.> &KSn^޴͂yϤnRv5)7Q*~0̌;&w*FnZV#2$`rكi2SrL#&kq K2"4 />(";Ks B*eup74a9F El);?gV|dA>/v<[ PWjiX^-[(^,hL Z$o<+HshcP;Ҩ8BڄyT"P,X h[='s˧OAYmjS)$.x\`cplZ #1l"u\u*d ")QHZbSW@zw#iG2;Jdi^" #K&*u^a 鵇9((a{8adYrg0KG |ԕֹ"}16 ?"UVZv'5P@~/ +f#%~uu^ʑe WD5ufh, Zy UkY̽pzhkmwP-c+[LtTwO&#F1ċ3孰Wǰ0\72>Д>Fr~%mS)ނ]FN GYþ4<lSA+T,Ǡ7*^(1T*ˊP7OD땠l303#r ZXx⑏t"5Ԝ؁\?{;Y6ihMnS+m8Ff4pS$c=?z`2;\s!ucw|LҰ޾" P]Y={My3^JnjO!zvq˘#KGL22)0q W6 rT'K-4$mC-97ƐB3)_Q|tVe?{q4v,vG*tPNÇ5YzG2Cq3!j*h~W-CPxOl0,yH˹]ÐnEv0چd#xcݟy8 b&*8c3Ah+fpg@(:MO+ϋ0["2^5%c 'xօᒓua_(6u^Q_!4aO{P6-\W]ʒJ$V&nc_> 7Q%XAd*?֘!JI7%[v0 B>.:Oq7 ˓p&liE8ghl.rV{M:Oww%6WNP4g9 O%WT%RFWɓc<0 k}Ewln$@H)岝mJ~)r[Xů\_<=YFI%aԢB 23d\vD LfaDGPhg8rUmi!<~W@w,G@x{. mEj ɏ!Cm݂QX3E=̈H'P-{ X!k> ?4+u+17_,ŕ766•H7p$E}QqɒY.h19ɞ(bH2$q3ˎ4*e_,UEL[`aޱH$Qu䙑> 7M}XþU a{7gY<|]yQ=4wtEfl'}nz.c1b:9Z3\Qo3h >Iak2O@tU_~,l!^Xd7Ze &7'M=mW{HAf`ëL2)dnaPˎs[^%V`|ϿZRL ɄkvMҔu sI򎝼B:Aڛ^fi ԇ"ƿ]wLXhn__>PLym@6iCAE X"*Iթ@ ϊ<>5AF^(kX4sO@^|t),&+z~Q\Gm NkyY*)HMD w5T"M!Ф<G?x&KDW!\dCc 1z3? u6 R6 XwJm"Ěq-94Rޛ~רp8Kj[DmP09PPej83xJpFFШzszܬs9@y.*:Z:|XUoMmIf# p#"j4aHxby7cNQoi$t@a0Q^"PjrJwx JhFU_QNвR!4p#-nnFԳȯ#yhAz[ZeRfČtRE(YF/ [Ȫ"*1As.:0oؐXs &Ixly|F󙦇ZPul77v=vFq0zC%\\\}?Qc"@o?aj!+];e-'WƆ24T.W;d8d,З}M? ƜD=Iٷ KR<z-WEi]/?.IgE=;2zxRfʗ:*"r|i\dGoSIIUi[N:f <kG)tbю4J{ђ:i3dqm|vxy" (BkU|d޲r}Cω࿠ 9 {gB,/^ȉ CZ%oo)Nj\C|[%kK.POctUo BRH^6zׂ!>|,E(&B -;fӼ*m} }TK@~)}܀<3r1s!%YJ G ۼ-;' P(h|}O3?=W"bHV#Tkg#Eށ YƟG^C+Оka 2 ˺2bS&=.2᧌ʙbN]ȍ4OX) Mb#9¼O 7BjߔXa~?lBxi0pۦ,̓FT7f~5\T<iS1>vw\AZpLSR&hKBIe P8E5]yw \&Y!Sr{!^g],5@@ǰYE;++`(7?mGЗbFz}׹`7jqô'+^kqo,o k.v"ɉ;_zzM+'#A=V}]vב8n㋬S=sG: #Y8.,Gk-6!2B2ع4 ݩ""?.nHJt5Z, _, *HbַĵcL*_&6 t֗ ceLwo4ؗCD!Xj$6PPj(,@魵\s8*#2 5>9X"2;vSqB,Lt [.˥E|1PGR:EWj~*,6eeEok,lkI'֥[ Yq4z:KĪi"Q1jQ1<q;ubOٝAe2.{=xP[JCZZ-AiJ "Z($~Vdoat38C5QWki{ԉU f|I܊jSLa'@DF=7ZWI&>-:ÔGOg'՗Ȱ=2fX!ÁurRn `Cxѭa (|SVXke.2vGA?XkwֺS` fB'OƔtUBao$- $vOV $^/H,vHUnͳ-:y_{44%&J0>kt^#[ڑ) rAFҴ f5ĕc5N],8qg涬 |N?Ɔ8ݿwZ|Apn ٪-  ɥф &8DCE4$K|?Ѳ0,,x隴F "WH=y!VJg8z%%L?N~2W ۻaeܾ ˙snj7B6|ݮg! t#,-YuĞC-3(O'/{u&i$u1 ڧT]!$5Ci۹#󕾫 `dS"o2xY8bV6'($8D!r7Rޙ`[.xAA5aC@>$R}x)OcByXSm _SBkݨR''bELMDMkߊ6,Ҏ%l!q3bpp<90g2Eb2:;)P^%GuHZxR{`j%~^znBad6efb9-/a->!uЧz9! r >nwU O %c+U΀"9UAriKBܩ}+2_(8<+_90|w2êÓJ, a\ә9M a5!I}7zCRBs24ttہ=`O-#w۠S d1"+լ!w;ŀUB# x ,}ȏT 2It3E4ƛmcquD BL{ @k~h"n9#̗}R_|vAv5&)oQ!7\!ڃU`# KaJ){ o缇@R5SW?Q7M4QDz\wxx#'ń{XjJ"eCd'D﹝=L_rk?jq}l|rƾ'7 |xC![MLo-Ij_G%]sh+5_@i`*#lWu~1e't3Ae`ɍ٘3de y`n2 rL.hs3C\JK2iJNbd*WRRy@.3SKqh,f1DR_1PT#Vz{ځ=cɩk|" 5$AU _C/!=#Li\3X) ,gNgp4-byV"( d&6/ qeZ_@&:+ a0ĺʗ-!8+GIuE,9}MC6z59)[%j02e45{;L;滱[GXV@Wr[^Vhyt3gĆ3y;Ğr(Lz.&4y8 WH$J66W3]Z3P|Z9S.KP+ ԘQ?¬T$ޥ9h(*B Mhf||x |aV\bNQz6Q8[v4|-oƤsD)8{i+' |_Q/(>͉ˡB<$l4jbQhҲ k^촰ǻjC$gk(XF/-cnDf<N;s̺n]ۇL B!Xes-_TMDcn<_#chDIxMNpw^&Jh(UӁ=?d!2`($X- y5UB/c"]V1G b+k~~oC~FFƥf;t]j?U5>aUpwa1JHmlhM[Xv;"|W/c"5v ;cWkXE߀^q4"m0J\d/$~vkgM>-ЄQ7-!Rqn+&MVf/Qn5HŁ$Gᄜ)&=ߍ}BI"5ۅ2tOX|.|^TAfb1~CʁJQ #*=mr| FOF5i63GKlxsi5&X\ނ;<p|U5@)^;*l40w_wqm%K%-c B&euk>SĎ.A5XZ%ͺ6+`8ZbZ?a龎J=yO4KBtyfq}S!f~J Oݨ?Bv5BN~!>L(etDGAnw6ëoZޣ.vb4n=QRG3Vѹ0?ۧp[_F.:WIľg?0AG @'d%㸮hAJ{lg B)߭"I+0X^>,!"1i`$QKvDzzwPn̞Ԧ&T}1<ߗeQD~Egq4[c~(o Q co+|78]"¦,wn@$PbcV7xUdhBM!^gaTX|W54:JޜW8]rO()R:ݎl  N,e#__J pWSq &x[ 2|ς{1"{͘ Un̘RtCn%k4̶sKS@y<<ɞqb˚"&p8?%Xt*dꊤ4qNh_00?B"ђ%|'a`Xv":|坟a4-d8/V~a¦H4U a|ƕ9!+^Wvܱ#. 2L: ̮, pcPnʮGUC/MBW&23#*WftTo`o |Λi}5ʝǤM^.~V$oJM. emTCRa-wc 'kRըi3cZintPpXh3RI)+3gU)"\`Gy,lv&n'I O㏺`xRpJ@m;)~H)C1@쿎eHKj?8fdJasjѧsM E_d|V,;vi;!sX-9| [2݊4 5(rVe(ˮ-#0]?~H#1[2O _[p}]=dO>>Ď|Ȇ8<4_,Nd,`O+ѹ*̠K Ϗ\/QLQ?͇?dv &K F ?{\*Ɍb _Unp9 mmYG-yu}m8I,܆34H~&˺#0n)bs(-҄VWef d-7o|s2\Y7M`+04Ahr/e@lשF$ 괐b,hjDqՅDpɁ^ېQfoKCۢ,kYi3rCaɖÎ@ ׇ8bc}ZhM2IZYI[/x_4Mp,.j֧ܿ ?z,}>0F[rHp ȧEܿ,,kkFYW @MWi~qs^J`*mD6B 184ud ,5;1#MX..,)nJE_ ( S1ݮP+-I۫{M1;"CJYtN}nqQB 8/=dH&C>ӫrDpp63ƓM&=r3X Pz;[ejZˊkj Y/d8{C#.@a iE:ۖBI*Ҏó+_pXwFW9 o/jM0;NH/Tok6b ɰ?C) Ij rU5g@tqr u:=3m2RdS.\5z_ 4Ҋ݇`U}?FVo`e'c$pvWD~^I|6DI>nKp} FiVa`z-lm՟ ?݃ʜ" rΉ*!(AOF?uA0p 8?le['R &?p\U5_8ٶlS]W{:m,ڠV$Xd| q7d8N[rrF8OͲ\(vʃ"$ |G"N*^@,x/Mhjg0`(rSba1FM,@C) 'I,bժDZcPzM`qwD|wP+p:go5zaεQf_zh0nnH7^o). qo4m~2YYZ_+1"۝u J<_}EM00Z`~JqT&Jܬ Q% dxsoPuƧE>I^BWز$PoJ"WVmjwp"Za{٢X8@}pD1ܿUu i ov˚p~8ۯlSlAS$j>G~ch# ڑ˔7:_L=^ \v^+ 10:s!Q6ǽ3 `` ) @J"M 0B#WDп c{>#}ϟK؉E/|Sv~ɮ:`鶸\y?.yi =V0ŗr0cxQCX43|j@%}vI=9X|D 䈢Yg՚)ٍ/eXeƸ9Zpg*^šb^_Q䈌&]]j*Zfa}V& PO ;gbVS/6u:ִÌFWU/}!h=_^GJk.?:=eJ7-f#sI""/ L dVI3^I(ko} (M}+-Op`h:_h[8ފ')&hr5/-0΃#8]IW.+S/>; c\A镨3eK#뭩Fu%ݙi5{?`ΝÜ_?#3%;Cfhŭ\a!َb㹳" CuÑu޿#=u\'M 54sMFpyXy@qaBT>-< |/j=pC/Whr`"3HO` OdIIA,]M#՝{\cg"Af e3\|YRkZu07Q)s<%#wzDKQ])} LFJkM&4eEѮ Ixlw&-dz b@;;_G5` p/E'T;~QF?TˍS^QZrC3 ɜ#n3г5 8x%re/%n1 F*b9vXBUg!.ck:TI< E!L Y QOr(xSEv3(]G'׉Sg4Lj5I/,Ɣ. =ە3$/"o%Xޓ02b0 .ƀag0bi~\RYc}̙[%[Mm35$V%nWk0c@Q:A\ө|Ky !cח?SּBIѴHh6(Q}ݥ3ݮ4pWAjqIJhLf8*D Ds*oǏ]0Sf1l8UKlAQ<0< lPv&|vk89JQ>_iKCP76wFuv<63}DKw-vWy0 B$YE:ƽȀDg{wqZ?p}]%sEpG9b5Gq;ޜo:I m#[7! Xzi^8>ՙe(x@%Zv: ^lZO^ѸoZY;v ʽl%½[kߦFϔKןPI }0A|]V4NDH NV4.dvc,!J;0¶ם%[gvys >9=}`H*-\h2e{Ecqk’̽PILH~}5NO ZA~nj<~üdx\rqz?੃Pf5N?NDoHq }ݒ3Ŀ"6EW"g<oOpHexxJX2Z%EX<QL!o-K H]D3oqDJ]CZܠ`'=Kv[ּ,?Puq0ѼAQd]–q9|h/rmTf,b)DIT͗?UKS6df/C$"5B,auoG U]Ʊ BjYny"V8NHQeMTI"fDnTr?Kn-r@#<7ܵWeruNhVs$lb3@pi+N溋W1p֐a*Wy<ӯ=?cJ:z4 d URt)Ъhs Jڕf¶U@q`Vv>JZSMFàsN_O$z4ך}B/:NXэ`{Q!eʏ?,*EÏuLW< 5W,amrJӋiAXwVa!(痖P4c[4;?֯JLcN?I'. h@^죄 {g8R]38v-t bxu. ]ozP*Q9]KpsEGpxpܘK"VkF9avSI|8l_3٠'UD"tK/XxV` sR7c6MWy.Lr5>,$ >{H8*4R_n~}lfZ)j+sTw# YAs2/|GUVmaen56%%ILOJeFf f[sTSsϐ𐷙X]D9SD|T̫͝_gl^ͧǸŃm tQ$}86 J?V7v J+Onw3q y<ʤuy+."I1]pKXϏwCw/w v'j?p[0۞`1n>vXd8ޣb"̭sXf:Y5^zv.pNh"2#͓0c^Iaּ 2"p6!\F1]_'O = àJY &t(\!; )Jiᝧh;Kb6{;>(6п~եE[*ssGo qf2:{JWSטucHu󅂞N{vdȠr!nbLJ"5%/\QX>^Ca-3 (ZN HLQCų(D$pZxBpfVbGA+Ē#<,_?h5mZ5vI<.q60% ;1:r$f2BԽ8qװܿ|ѝ"{BՈ˭WMNُh_Ù"UR5& ~'NL*UߋrH=L)R뜫Y@,K6$WL;5A1MGOc쿒B%|8>Ħ!H x] 6/ |&le cI})'u|] Mz}"^03YfAeAAMv`F";@N@yϢ'­)lPO%u'J3zcyҷC!dĽ5D9ξZOhl`Ș{=#jq;8Bαѿ$Y󁿐#gVfTxAioX#h.v͓Kc HFbtq^ A$9M)aAtENlnj3,oW- CAstMp poQOB}O9M+%߆fgk}l~m2L8(ٙݭh/Kρ8ۓG{1gE9NYIB(N)?ֿ{ڻ_T /G`h~1!+ݝ drs *YQc Ƚs$9t%  ŒS*A(t'%[ݥx}'+s.*RDy vHA܁;{9ָZ69Q=D# >bl֍jjXˆgrV~`2.&}yyi4^$odAP^U8|[b e+osDTM:EfD)Īc<=ЌtE`Rm;QBJxw nVdvϰ*sѮ|cmXTz]λǂ^{Tbe.[F?ط|1ϝB䉕.,s3$bfd>غ(kIK t\_GF5{+i"n/*M#P C|ixY=b_@td xhG R+:^a3V3a6B[GtS})'(Q.Ni٪T"8 5D.1f_?&y7Ɠk}lrNx=BnyCmG~$T-Vijl뷘IX/VRkߏȨPQ꣛7XX(gIh6 kV>e ]y<aҩW Pg=u -CDݱC0X僌Ng&y{iiZ96yPͅgpٻ߽ ,_7IdBI oRC/݁lI&(ՎIбD?e{ ^to % 07t0:f/D\E9K.R:;&s-ӆ.Z-c`z{" % W;Mb]5֪ʼ tm@ڂL鹰EK28omv]EG%4D矬pbnk (tlp! o.*gn秾<#Fr4d+([G(=CSNPNĻ}?,Vd|!D<3~ak (@w?^дwȼj/kk5* lhmD2ހ"A~It 7-{|"9BdXsCԄEVWdQYw[bu#Qev<_g| JǠ ҹz\:RW:'h`,zTHVWM)&1JUTsa@ܙwNM$x}}=]tgzd& }ag>cPs~0@`,q`|BKVY՟8Xckڼq Q5=sf$cY]#.s(Bk9*^Klj5Rۓًb:x1Ag{AMuф296A>F =|,g8kuITfC;6*w0,҂`t5 lqz1])g-^(юU>Xrj=ETC}>IE=:;2Cc &<: #T%7Ru)NjwcݘU$ ![T[rr]ŠG^5Aft?z;l5pr~c,AZ( ^/8ndtsoӢ{]T&Tb/NAX5]CD0sY), X5d[myq_#oG/d[T*7ߋ x.qђF)YL[㒎YBV9~~/aIfҤ+ƙ>z-wq,g789N[mHI^NI)/xnKev3>it,c!j%@7A^& KyG=+oYGߗJo:^VXþKh"rs˺o1AL4Ond'FC(`{h>VɠfP/l?,SQ1c?٣T+trO5zkݺw!1M Dsau†*UEQ`X)nny|-#3CCJ(Ԇ)/&rw .043os"%\ʃA.]~{I4$c>3Fi$i4./ls:F9''GG*}nG-Pw;dbobåUT 1nFX2t)@:Z^4`[1[e/j-D~|Dnzk0wyĘ\N͋T$yh{ٻ<|Q[ÍKq)}ZxiDaiȊ*PʱsE]}̂J ; W埐{Y, ֕M<-> &/,9Y'~) h|Il76L7dY*yz8Y)u4s `Id$AJF UXP}x)~>s05w{׏쮧1v Ͷ#ӨfsN}{;HC"==,V47j1p/|t-pUv20͆#'diMy[)h-bIȊz _5׺9 ى'28秐Y.Rx1ߵɶάЪY]Y1,MՋ{Y5b[ >eFUsY̽:1 |[!0LeWV߽`;ao2j Wє`dOOdCQЯy&Ϊ0TM?*4A, C?(;s.xvf%'DŽ꯹*Áuo6$J (xG}c;c Wsǂ7X5F &#^/SO1f':|b(\/JM <{wvZ!]ͨU(7om@__Kdde a\(uNt 0Hs5j167pQoEa}{د0F29nv%k#U;hw9Ե9O ^pC$>y#c{޷ ZZ c8a鐡À{j!nkl}E>xW 6p41㲛fT2QZ,C1W0~lco.e"_uv[.b)6de 5 .{ϥ5|xytzZ3{tv@'-TgsTC " w׊]*82zBHFw}s-ѭPJo.*IG  /s (䀓!eOe)P)$\=Ǒe'%Y^:!խ 9@MI2eT<+3a]1)^[3q7UZȹ3δmE%u$'6rܴρyOϊylʁsm,O\ bqoغ+?gs֋f..>VaN3`^D2{gr$0A:}41|yuv#A<9گ/MG[iymy͎OɜIqUlӳ-cdr*{+8i gCV>[AS]رى*c2ZwfF 1[SLWG>tBu;dfOނWeφxuܷ]a;߉qIeFUJ\J*7(Gع)(]|rP8 4ۡ+A;e檤;=Vx&@> U bTRz2Zd tnѓwɿ y _w`DQs7Ҭ!>oJ{d>xȢM=Azo IR◨S wLOZ4eUМ%GJ1SSC? "#wҏjQ(ނҟ*[]T.&.nqYrJ03:Ggdq<o:Ds;6A쾚žiZS'}q Fә 3މ<`S17xQ(Bo%ytn&Wvݼ?vũ"R_@5zm p+~t2y02]8wY@`P=>$#bڽTQjLde*@)A>?p4].[[]?w|gH1 gۗu͂l)t$i\AQ $oJ|JNUqbRV[ t^ȭS4b[rjX3]y.+d2=ˢ!]26fثpHlUWrBwNY%LԄ _V)&cx|1w_OkhX `ddͲ1h|U'h< PUvرy :z/jpX9Lv{]+@CjRN[Q {v ׄ6L2X3m 꾆>}>t#T2:ނ|_ m,i2BAEmMuT5-n/Xg~mR0֒h-eP-ӳ>q[UP :SISxv21IG*SeᧆvuǾݓ[hgbɮe6n@$%nH9 s SN2`z$n~bFpݥwvLJA\ybE<^K崀J u7Z>Rq3#RmCHhs$<#b(iD9Y7=̂ǡ=Ud$+[;P;[P nM9ӹY JN {MZeJg1R/#Eί.%&(VkshQ6$-hc쳌ڀ#CN, $vGW[mC PK0vSn BY$ɑV | tᇏ zAJw)`(1JyGfxB>@As&8́vvr{ ̠.11ih'jXET%AʍETL^䶬#"U `DN|YkA8 Sa[s#s&`D =I9e^/ő">m]gT'D7օoP~g.1&#{ifRfi/#ٶ^ze, ϛuAb7YRIJfU,NvWgm^32N|.9rMi!Q[vxSPX$!Egmh %b?_tcJ* sm.tIJxfnZ."'Hm|7ߌ˸n2HYS=%43l>0xNJ}FY$/ jWրo_iTF\]8XD|n|/q ٞ z}]U1}w$!.9pNZp;vM0H7 W jS+Ou&ULZJ-ՏXX́61I7Ra2pyo,B@2ΈzTDg?NthEշ.ZQ$6 m 6?w- 7-UǾ$v>_wkOkn1$hhddBm)jWw4V ɓ591s?h*3e+Y\6 -%\9Jxl?U) 6"um zn>y*0 iM8x#%nN!aU97(xxu/yUN*ZN4ٸ{y[•L/6TC p~rigFV${Gqk*&6%V ;e_- 5*'M/}zUGJ\iX)^K屁YaY*%4T_NSB,qnN6G"_JzP C }v\V O 08_ZQP ld\͗&)\dbT!@JCXW#C5EYS+bdm_8lKNh7 /|T>+Hp>L VdewˤxuFnj'ןؽ.alk‰x'{_Rnkw$H]=(RKPAR'@rN^m.eš yTlS$2{ffE]B>e_4 bJp:6NLp9ߜmϛo@o'C!]w>I[&6 5AY׫SPx@LmĞ=qu}"_`ʭ}[._بFidA8c,öa-SM:Aipv lk z`/q v;jѶs?ln;kujT%  8݈fRe0֓텻7pšm%$>(p 365.DH`]3S) ,ǷLfaeaHzg>^@1XoăR) 4RD|)u`) $lSo/l.e]<`^rk2/%;3"C? 19kaɂ1arK)c[OY"aR$V eRgѢpK*Q+/v` >`'in#!΀]rH͓5ȷՄ O}>ԛ[~ *]7+׵^Bd5ydz?I8D2rD2,P[\pHrx Lx)-:W$cEd"z #ёH-d 9hʀkiR kF|˟Z}7o%ePfYG^}*{Z&))$j~7Dܑez%$U|{_ YjۺdCG={]5XK^-wEnHgπ1mPʔrd3RrWʈ͖)pZ$Z`[\j] !fa-+߀F@qvǺpW#m5W?>Av[ 7,fqA9DwchWe4߱܎i[u=_Wρv8zXƛ>}BjikIڑ9"4yHzD8!p/)uzu-Xg2.I:\|wfi ^򑅜`M.3CndBfHmꄸ+ӓajOo:^g{iUDMAtJxK@}Fŷ7 Ea  ``6(j2הf)PʉhΒQHD+QFnu^83ĺI~4V) Hذ| ~ h@ ޿2o;xu)$s'l  hky~vnNW= jvΰ" lV-{F$EY`"-lRmWl$dtHAcBC nSmFvhНY7c/=`ہ~(0LK(FOʽJF_H!)cU!vK8 C^K+h-'5;okޕNs8h+9TͯZ3D,>qI*ĻjI8e3a=׊-/m8`qmȩFMVCfS}d8P60n\4T bx2NQ I̘IZ٥hî8;QΓ|m*|wI{:+X+s۲m l5L-o !3:a0!Q l\t\ G siNW@401nv"[PDcIcjO):$4 ZU]Mј;"NUu>{کÕuоQ]p3!ifCg_e#asUؠ %|LcD˄'5eO F,nGR}XlĽ08O峆Z.ƨ˼.p :-P3E H3gP~ڗsG^SFvZ񌈲=}ukNQvN$Iο =i7r?8b欽V zH&@'o@jC*(ERKHҽ~[ 䆠fKoK·*sc3)5HG>EU>7#)X)2ѬNkXo^ͬ(F[UlCw ڭcɝL^SU_Z*O4jÔԯdϨ|b6sx%% e9wB"XwdފL< oPÓ痛m4`*S!M݅*:@ o?rB QY?:qCmL ͒:ivD|Jy>[NVZպn*G)cap8y,ɞ Byf,k'7-h@ȶ YZ