openucx-tools-1.15.0-150600.3.5.2<>,܉iݽp9| z[ť*N.?/˱:'(0r(\"9ta M?y>,(g! c]B.v1)fʃ~I8 |S @ttlbC5i'``*ti,!5s,3u¿n #rWF7"lWR3y߼'05`EŲ_$3o6"2S)Ĺ#m4 s>>@?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/o]"k%IN6cბbMb-.vj_5';Y!᢮NKb5^X6ANiHG>*q,@ǰo;+ZC tl 1mI}*I F"Dq-T,ڄ )[n-1_lFo ko?_OS: 視q$݆유v\ebSCgivhHl9(`5uL#ٮ6iǻ+:0YHEoT_t uSΨ.H`ghq@_ƔЬ!d|kx+3 \zzJNCPbY[mCO 9j (Z 7ac_Ϡnbx/]rhϱď{ ?ﺤx#Ud \'V:GtM}a;O[\EK?coxc r{ f#) ~EGd!Tb45AN㏵eEͿRہQxp_dTj3qS(ڨ?:S w <N`G;kݖnzWSQ?ǰU?&k ]wBypATǿO}Ty(.^6}bg )klt:k 4cl'IJJ O5;<.,A 8.QLRSǝUv&ZA^I~;Т"#*eWm&Yx̆bMq^' PeHXbe~)0$~wBqރef(;*VdT`2_یm`#}‘/}p[1ci4Oyٯ2X`W}x-)% x@4RJԺ_" 装JڋEb&1nov6(zkC{AFIhYKlW̅KzUExӭq@2KNisCWG9z>RHk®uO Y#6#ƦJ5L֕}Ly7L!3@p `P0t#}-T S畉\1&2dŶ~S5#_sXM/2=5Jpn ͙n)T~ׂJjhT~-[M<#r(&T~uyZ@~gL2aogf֣W'~}E@O'&Ի6ھ۵N`'y%}gtApRVJћ:^g +_lguӯ*;#a0![w=/lxaʟb {qᆀdQD8+PY8t󕗷 i/\$ G U'zfh [ 8c7GYrX =΢Km~@,+-& ynu3iض Jfp%h}K=j ̉r9_V!aG Uͺxh  16y8iP*%4<Pp}B `0A8`( *9aXq.}r@o1`u.%SB17ݧ8B3,w(?}!Qr!^Z%;vTd SLU2ED2'-:ƺ/p S#]lێoq%eJ!0$Okmf7}38 -+kv8fg;V>jQXיR yZ p)ƚN8&!CT f dv?tj?<rZ"f.kǗnT|=K 6! ir#',3{>^ysn;&zkxU|]4}ҌMAs[A?B;S*30 㔷0,'CPahя|,[KZܡ,K5S>al(-dzd)Ŵ6e;d,FuGqFS:,jCR7CZK~I@xd)^ 4Bwܘߵ"D piWNu7~(.*sN9! cG[(xn6'{^鉐)ƭD=d4z"%*-crmIjof'Z@xkC6qh#kϨYgͥrd|rŶ8gSni "Fy"tvGy ۈf5l4s̎Zsp^; (ݕ)o &. )FKoXǛ"rx"WØl I#}hX:c]YYi j&թkxӌw1T{G,.R5|v瑉DQr'>k|3!KykpɜأQ(si;TPbw0$(B5l^d7D6ţQ$6Ϛ ,TM@y0pud݉j]5 uLH vЮzfNJ\k?CV`gtC$+^wpUUT-G PŜzʌg~kY?"JH9sB R=q-!=X}s;Nk1>==.}(xs ϕS_⁩thBZ\w7)9*İOu҂D!$@r\1襗8G{kIf4<5't8Q-v?.( mNp*N|utO@j06]a|$Z/d01*y_m\.6~~ZMhkTmvFzMZ`dʥm1wk'[8d }FW ĝ[iu=*qO: іFVFSsyJ JVQxWbB@*a} v f'y]2NhuiE&62dȹcG~V7{Rp{jFNUUHylȭutqk\ZVNg> 1" IYpw-V. V)h[2g#"2žQPU#+00: F:Q^, ̂Wl`] j9G7SgXZ nj`$F11X)"%hQ*%B6b--Bֹ `BpE0kV sAQ@?Zt?U<+89187!vzJu/Li,y6lL]|5fK5-y t}Qg7] W{#zC<֦ШŝYì9E;DPW4 ,27X3*v'U=!x8#{)b[QCC D9jpKhB{qdV@(T><.jb"MF៝ʖI,֯H S~#꫇2-ePú `MKv" %됽j-姼W&v{z*A5JrR8,$xY}U ĸr?w\^e)ty9N.B.8Wތo6Q'tC񿕸q.=ygy'K Vh-R&*tX⊪.㥊;ow~z:x7̆co^Ը9 0nWr(Xdya3U^1p^PNLGUR!6hēu1) %ʁ;p#thXp?fTnhq׬>4f$Ζk\S _+#4_@UWJ=qj0 v# W{ЗL1<n=!J!}O֯Fػokal YiIAq}[Sp ֧ON( [y.oh_Um;ȘhoX"QH]>ch) IC&'}ݛ]r?c ^B;HL+*bcږL;RvJẓ?nlTz9ߡ'֫شDB ";rr^4Rpab|*s9vU@pCi +uc]E*3˫uJ69tL9N)o0z ٸ@QE.X|hE~VJq6hCGUe |z4:4؛HfwM'H? Htib`S`p445a?w;0e0bIx[@YC% B: 6!@;)}P627g/jkcҏ2!Ǵq,W;- }L&ЭfK #S8pk{5]_#p/۠L!2˹<lƍM#ͱRm(YjFbZÃ!G+;)ʕHUnڅAjYmQ禶9[0Ϣo FN?O؛W{DS"*ŌMàRֿOi O\ldGΏ[=*5 q5I[\PKQɗx?mmdZ:S*IݽÈпB{5zT[ /VƱ«j)/3u.'ɼY} |8B~Yk7PPDYpFpE.'5 96a'%8_7֮+j_kruE o+cx1_2!my;O#sZxӉu%Y6.i1H|/a-Y4Z<<.O/ װV@.5[g6lLS "R.\bbX^ Ye@a^l3V͉eOek][j憚*_sh]Qi07ٕԀ[DUb2ϲgAE!tW]`f'bvӉc/s7؍ UJcLDqX?]b슦)Y'/=Qo Zm0}SSyӂb:M/,͕N">~@#z:FJB1! IA'|Pay!|+u5eh庎VKb:3`\e[bА>~ќԨ/U}_][MkAdh%TegNh|biҽ$X+.D$ȟ6~xE ]+ybi=όߡN;T2ݬ?1\j 4wᄢo:2AŤq[!$r q%8Kj gRǾr es賮Ѥ6nO"\:Bv>Ћ쟾zex XOm4/͵b/elY>Qe}~#}%D Idf5,{tH*L_NO@OS{m5;RGO}TVB"4iccfJ^\]l8gOFXVE"6F&u2j#"lzi6-&qVYc6S JīJYvmfMo.IZ넺Sy<܅]+jW,+Hj vˮoV4#֗)[i߇['b-1u~zX 0=E\ K.+\;ظRJ cuwCc|f0f==?,{TB̉9DAIJ 9(2\'MNG[D~n^mqߞ 4f٩g@cJwK*^F^Ȭz'|EH׿=>5ߢf->3ODq&\2H) $uZ٢x]-?HrMf%鋟`xlWO22ĭ %U]ZE+n`zI {ആs'סH {]+t4&7%9-aӭN],:3~TiuR"CN߰xyp7""qUxr~$@I7vTw3*kV\bkSLgseR:1E5sUU(;b&>2#-4TSUC<2zF}s#XUS<'(NuJL1BD"#DD}5ϜB*Q#ͳVz~ ǵDم'L/>f3N ]Yhj 05*$o|/sc#TYLCeRc`UYq_3b)d u'z騸Ub~\z&cW13Ltl`E"`&GQbTtCWez3RPWIhW"mMY6}}ܐEw7}LO^~9~1*+'Y{ޫϥWHW:+fKEbkX;tŸj]%I|TԳmDٗ XzB"v{y6zA@3*H?QufrPCYZ?ک!-+ƘoWg%;S=^jG\٘J?tiXf?!ku:\{4Ak6?ӥl̰ s59vxkɄ*.5L{E+G:b>NWd sNԤSdm2rk}[YyplH`X[jnJMhKWlU((ץoV,k8,П3`Nڏ@}9:VhMyZ:!mJvplӷ5*݊PW"X>]vr(!SF5G 34]Yo0~as4fiDg=8 3& #(m9"sQRpw U-4[P"IK/)S:L71k̘Hy,#VB{9'1#r Q.i(!qxP/D,|lq3/;-ڔm+XۮILةAMiZQ {cH$nԑۍ~ ELI5 ~LnNvWu5 h2KCDI:֞A7 9mv/ލOL*Hڮ>RtZ LB\y. ~1l|e#{n;61_Hӆ>ʛdhavlj Z\Fx8wyVWUbc9RwB I`=@jݵF`i OkpMj鉩/b/$i7 rXuԅ2R7)cֻ%r#gm?v!fdW}03Rh*(c?D '2Iu#c(~bG{J+E>0N=gEF$[n8KA*;]_">5vI]䎞Ӕ+ƍ|/%x$=<^6"S $0 Xjd ~/lZZPn)M8chgr a]f@t ZQ僾pd胖ZB:;7 f]WzpÛ*$*(N5=a0h{ĺq,*sh=ȥc ; /;6&a$ҏdVWgjPV K;nj3 QO / !η鰭sNE#J9'.{"փ/3 ,ts>"2i}q'L/3Z* i B/0Tˆ ?J%j]?9֓?!,2or{?%T8Rkeһ>5j8Ch~-`Octi*4PpET.]WzB:LkѮ1%z[<7jW}Y{B+(-~;T_V%bO[o7񞤸: y#$-9-jrf4ɳ@ن cB=*a^ىP nlPQ$e6-|j܏GOKh1ObZISص>]MuO5WxhB[ڌtҐu|?ƀmi 2!Khq=K>`ǸI8g<~gOTfs4uGM;X, 1PPQ13J)XK#&utBKAEit|j7`ap;lU izDL$\Cy-gCw^ra)Kٺ;c؊oT, Ih8E7"#[eO K7%9]?g#kMu:VGK`!}O'cZ̅DR)bk7G=h)<ǬT^pYplJ2͢x  [Ǚ5;$#y)U""8? f؍Ӑݤe*,ɲqSҏ\\{V7'12wTgH@غ֪.>z&%ȕC;,nظeq-N19 #^ْeǣ.JBjx?[uzK:uNXo2ȷyu7 i7L3@EB%i}ޯCfC*gtY iD3ja3FhƢ R y̮r]|0yX2*k9 n=:4\(fD6W~ϻŀ z8:$af}iݎQ @1iQ԰{w!^cVaYޘޱg}HX?OY-v% DYV'at,O4G OXLJzZìnvY޷˙W_s450:WI:$dv)d 1KUFQ Ùi+ug# vJ1*Bɽ|g!g0EUKˉ 60٫lFWD qv94\Xl]#hL-\!l^pԮn쒗 TM1L &Hǖt`rP'1RԐat9J.?{i17^{RY[| hCVQWB=d%Y6QM !%65<^Ҥ:IR(`]zXrCؗT U8tOڟ3!Mt FCDຖ_qNzwNISغBfvD䝲_Pd(k!.t:]23qWG ;ydh+,GۄsWf9'NKjfm}JFGisCSQU̟d]tI#j>ٴ0RD1#z+&Q(bc z: fiOtI]@ (*!FTa~ oBd=./*^ {3!"ߢ]gϣGƣh&{- S ٺC }> Df_|2a`ayҁpQ=xṕ[WyJ_$I9ctkx/GC(: KXpQI5LS>啀Ͱx&^X:0\R'NSy\]Xrg!t9Z% 3'X$=0OagEePhiuǟjc M$^h!y lŹ*1hdHm֦.[OI wNMa=`ij|kVDĮ/SҷߐFm|+=9k彪t߅>am<S-BGc1:9dݐK>=ڄDQP7_e H씫~;V=/_ļha!Axg-zlD`HlmNZV\ߵd9 TS[8*LYW_iXerOˬ1%3՞f/xXС 匿wKt )eճMtӽ} d_ ̅ XKWBu!U& -{" ]tɤ3!᪘,5.,j F Cțv( YaĸtAž`JD 7ٜh[̨n*jo. PqS&Ovm>D%\kӡ:e*v@}iYq _-SlI9*Es*umw1,)ír;NH }rnX(9vmkylPF/5hkBj5fWxUzV_-?^bR˃'0{EZ萾( :[CgXh0n@3 @arC7:Kohp Qʓ?jRp~ٓW"B OdlZDžq 'Ф҇hS%0n6ƻMCJ;z(cH*[2}wP)gyW}EFC՜7OJw5|gk٥%x!h5;R>@1H8ݰ'mA('bK̙:{nVOIhqcS anQ =e.ղxW;.}'Ė3FaЗwLYmb/A`OAge;o 4n ͠ s%4ɑܑiFXgI. #@9"֙4q~*q#h[G4 n֏+ň,tʿWyxBw2O:_xie-w@-=jv˾1^S-O7Tw40)ǾK @{J4 `d!F&d ~|Xf@u[jIwd_JI'ox5/W92BrjQWk܍56αa_}ćҷҝdq*Aǧ>0S_^4|rQnU@* B~2LJK{oc}nV=pXύK&ǐ"e1jߤ>bjA'UNn79#ӄ4d`MR i>_-iy=G;8bKnkQhhNˈX^_E]KO,BU|X3{!vB 4Zʸs_ZUexiߦ_8/"6E,;X3K %:Z!lF)ȫIۅ!I[% j폝KӇw~,9s4Ԝn-@,7b3 ub0Us@& ?!%V-iyB~b&o}-dn}nD#`@?u?[$4ga-$͔ŎU`5hjP\H5Z;(ںWdWP\G^^j4wHP,e!yVT$;(wbpl=aGŰu_`B+[0:T],' LĜ\r坤|tq_<ˆ|1>-XWM_$)u4V> օ,$ -+8WkH h0lX{u_'=RG<1tP$sbyzNi$wPR[~WswbFAhD5i7=`p\JFk\ssU3ROg>ZLIA m^wY *b}0AG_k]u_v |ȴH&#|zILJ0+.w,֖üNX1i)&"tgF¬!tԢRa-r6s5/$th'}%$0Ko__yIJ *tÃI(@ Vh碫{Yxio^lz>|cYDvt Ti#J^nLyǐVbf)OZˡ@2"( ^TKF(%E ˤ&/Mɴnz*nkd&N78LύLJy( Sq/rQӀ֏EYКߧw?׾ׂ|XӠ*BK@״&r$h 9[-*2ɤ-8 ;d`DĢ#4r U:d8w4hm0az"ӊPdo%yᓠ1oV5V̌6Wb4zqP9 N~OH߇CXő& CS|ǟ[3Y!aVpc.)@$OR&/*e{k~NuH>{Y6ox9St( M)\ā 3(6+t!umT&`l>6%]7LY[Օ_K*8]mimwm$.xHSNkT-%tO~sqmts"vUGe1CLRIv6gE^z9?S2Ek*A1)X|7!{Ԓkm9K>0!vF+H/+8v;\e #?`8O'k_ )EۢNȏRd@D}[ b ݊Jئ3l"k|`Qlj`w7^\2xe45+9,/ 377)}K.|38 gHP{hnejͶ Փ⋻]C/gl΅s/~yHu/4QE4(Qi[n".63vWǠ:?NǍ0viuWh3utEfXDoz't^2CĿzSw,6CpR6q7\T!50}ZŊYXve,e $ߑ`,:dWY\ Y0NO.V12YUVYbpJa/c͘'`Q{Kfcl3̛lcjPХ$T7SKT-96g/+G$BX0~}%2/N֡ rFuk4ORMi%qG$r'}R vXܱ 'cw߰%7l<es-f]*Ӿtb igAN|3;B6vfI'cm\_5/ݬHG qj~y'!3H{s?77uk界z\^{T{0ӟ v0#Q%H4YphjiFed_w0 8<&DPm|)Tña{2f\@gQ&ܾ"/aohzӱ@og4^ZMH+r^XEoBasaߘ7HJ&Hy%(|@ẋhDP&ER.H* Nx' '^5xk+bFbK}msVtGee(;/YgU |'_k'`X\~K"a5Jm7,n4SՌg+zNU400z<yadd S%R&3]ASTWSyh@ѧ&:W~s Mcp_$dd̡fdt4d`?l=IHU h+>m |lZͶpiD qքx !̕ELwOT][RU-z6WBOg z)*}P0V|Ԥ}΢3 F-WZ6Oc 1G̞24'S>V DW[7 2VW.AF9[:VvTa^;2c(?/nhR׎ *r0{1q~tH;G;co+h[J>~۷{WfGzf*M$P5@Nkbk)Lm)T dYO,b>Ҕ;K6 E\vp F`&1;fA5kȩ@fર(9 p*puw*n4E uu^9K]\"SRB` S@$x-Tc𰳟UUjgYUZmljH9he"P[&%Xŝ󑿵6V3 1} ρn!z%fC:=0e]KCDm^1CsNF%.4j owZ]HXoMm1pel1V,U|j,R)!?a E~`_",5٫%S)S.l4u5ѬFݱ p;G۹wFL(ƾ77F\gCFk=UJLMZ>M t? r\"3P^vH;K"f&-/ִ{zeFy.揫w-;>N} 8~2DNwO'5ܣJ8oBٍʚX'|.FCQI%btAkdrmtZ?=iqKPϩB*^BFKm,gTj*k;t|[K}ICz*N=#yZ}%AO=,*Fz@AeDnQ bCCM**Hsj8|U&ao{Z,t\Zaw%-ˉ)$ GX5M;Ѵ)xSp" o9+gۅ~hf{eW '?4aO" XmX#MA? #] XK} :m Hpw 2WY_@A};+jW N)䘞)8gJqB,y|Ԁi&Rk9.tWB\UUnpk31Bo㉄j!8].4űa;\t9W-Y^ROX7}2pϿoP[t< #`z b.wSD*- *bK\T0vpAK}yawSɂK1bHVT!O33:Ui=Tm糡?43yOPuu̗' b'p 6fj3zK;(JHU錘P"c q髛#vEA%i. +Os=lW ) ݓZ8J3iK T)u{ԕʟ\ޯDh,YoQnj;5A+o:1z$' Ou @a/@\Ä-(&zA_Gu`SĨK$׆]H{{'su12.Zs.<} nٮ3')~WgJŒLgCQod6'9dhpSMnl#.4shNҟJ&-P4'kt‚_Sh9<7fo vpOh`TQШ-C6i;VnPK 4t8gFm75=Hk(ϲ*'Arg&0ۑ UP$W!O3.o?msmU."cdeuWX_('R /Jnu7"OOٺdG,utw-:AJJY~ճ"cki9bQ\)+y+xVYu=:)S^f +}=(npU;hj UQ5 *k+ L ;-Y؎@_  1sUn#~|nyo j Uxz y~sXt֒~Ƚy ^JᔨIC0@+47U3*YKqǟ%Ch-_>!~Cu( Ͽ[]pL+xjP,v>hG5CpE2eDM9%\5^,]E0@D+c-GnɻA>V. Z0u0vnP}̮_F\/?0gLOi[!q)(.M oU%Jm0$ԑp,[B(7{ H'ƳԵ h시acmڥxN\M!ځ)Q6w|kOC*ћ wKIroZg-&9阸|%˯ X)2%҉95`*WƩ@#VXB7Ήf?JmG<2ϭ;8~R$N+MgW K/$\wI%F!m3=V{)z(-Na5ׂVpP%zg })j S"E_/W k+Vװdo<硖 {59ZO1,@ YMvH`edhVx&DT9rܭ( ۺtxh z&QCo2R';)f%kWk YJENmw]e Mzk3xc7V)mF6+Xcj=b\}.(8Gl"SnQ5I'Z4I?}p0&<鷸 XRVlMD l\gkEOV%^(6֦sjO|zYO QwӥoÑ8W)̒i-$@ C3R3Z JʶA5]9\.P0zI 9C:)`eJ줚'3 $ṈX<>x|ApŤB;JC0:/rm_ouJt4|iRXǿ D@0[hM^GC*hu*B5V,<#UQ]l0'@!/R2 >(.rI,{tܼ8Px b E:nX c.7^/r{_"ƾ Q0{Y-vrnnvs8u|bb0VʴjAcܦkǤ`$nL:Xazl<&D߳efm9R[x1eC5Qy<hG@ߪG~b6N]BV$X}[j!܏<rtB{2C H^iIU g F~x<ܡ{[1y 'V]w,{g4mWzx&~mpǕ 17ȿwB (,@ 31gƻ?'K_**3C͑iUL޷~H md:T }H!#,2"ٍ^Y}eT8 ,&~m 4eS6E\:@)h _WIru_ҍ?53H_1^^&'Ƈ$"eۦ5qY>үmx"L׋ǭluW,"c,_}[僳cO^oX7Vkȧ8^nr{J@&C# ɭ f|%Egh?|rтďaC\K(xB ZPmzz2{]TlXySaJR/C8tIhq/PWY?iٖ3 ^fsBo^5XrR @/U[Rdx$Jo%I| N<c6)%OSYZ.7Ȩůy@68<}bMXne_ED1/ךv脘(GXu?Ri0τmKyĪE\>I4o=g-Fs6Ϣrt;߃fb?PP*@.GJ0=Lr:Z6OM=T/8=vU RLyv1G]}Ҹ9ҫTd02 W]ӟ{r,ޟozH D쵺-?Ţ>1fbUp٨R4|Z !hkZKHm/< aa EF+l>GnWe(aέȝ!rEԹEAkhqFtcq kOx e_ձBM -3Uhii'MzDTHPmOIDd=w|ED ʰxqqqf{It[\?${HjcJWh-ṯ_?!**4 f/3/>‚ρQQ k@M5s;S#]\M ^9jF)!/1*#^{'/?*N@Iّ P.0|C@ZF+|#j'q-Oj^Oys+Y<&NPW_y,u$l-.0: ^pl"Y\R:WA'f;ksnV:|).3\/eJE8Yy _"FeO+^zyvAZ9~XMā$b?<ӭN(eO)kgwO2aD]}|=->}rNRWHDm[ԩ!5J47O2DC ^&3a90aՔהh7ֿxB ]QWcHm"~c5{2*e*YO%iF'!DKl{[Jvǭ:/O"cK /,~5جʇUMXw}Sr u['kh =s̥z_b.D+3X,\lvXa0XlZmX<9ѽ7aXw֙ȚtߞL8W &G\]Uf̝uS49vFY'Iʬ}㮪Ƽ&@.Æ&_칯iWɡx$Ȓ0sȂ(`]unsZVdj.[}|^ $鿪M|1Բb-2mn{c e|a|!.R%>X# ަbJ[g.Q+9WaZ4T'ÅsI NELX"Hu&]\T/t.Ϲ6A29Y<⭫z(;#8 54Z2QS*챆j;-7eQ1p6gvOG|NrVKj,=/lJAPVC["ri/z!q@޲P(Lpo\ڄMT Ze֐qvۡ6;$Ƴlzt=PD1Smq{?}fO&9iְhji<[=F͈ĖUT1r@ !Farɫg]MIaf'&ErA 3q΄}%i*o$fW6/=e-y2LƯ'HW" ?vcqF#;v /=u 7EdmZՃA$y~p32Pi4,qXG/H`*lWco!C }~0Z& ۣ(ISMRه@,x{@lH(. O91G q ꭁ{QЇ!KDɮ`gŀň6{7t?nnEkG~[NΈ͔wXj"¹o{ghv:P" A^mB}ϡb:7>jj xC y uI?%xGf-SB΢T~ y^· +đ =ѵUu<*WS )Xfs gʣR `x)669TVB&X|>jˋ6dpsNAwlLdJddU`4Ӻm fϮ$㤧?C1\sW5)%x~m=b_vu̯n-ldJ)09-v慡mt jh1Bf@1Oqe\ YWj607/zvϺKǠ_B1V/B!#s} >Ve3IxH۹n; :}:/#&cIk}>NBi"HHp(y5cTZ:BBD*-4A;˵E|S3= 93A?z? f=3iίr(9{ '3Xc})^1 $ /h`Fu8M,UxѣziZ7sz4\* BA]=S̑xa:#bmsB?op٤bn:-DY̔{<f6#uñ<-+8u?=Zo߽"߶ 6 7Bnu_ P9[ z k4H)_D}kWky:H Yn]D~q~TqtDO-^=omiw Brfi)_QMہOr>C ߈< U<gm)P@4 6P'QgE3&DPPclN@[DNM;P]lՙ"GNr9Z)P{ }|EU"=e`h/Zq?@Hc %[,PDL4܋"EOHBhGAbŬP"~ZMʥ2S+@4./͞pM6]]*Xo'wB4 s),nK˯ׅR Ҋ!-o4[n0"nN#jN.A}Z84 uj5":;wBeK7-oIԜ+tsqhuE ۛ NP|IjcU>R 2. 56#P=!_/ym !Ĵ#[`jCloP}P&e7~Uh{6Z!kdmOI yjӇ!Xϩ[6RL*݂>[qEWt /$z 72 ʣ$?ﲼI*YV"Ț^~ؖfI@|:=U^BZ0 " p;.Ư\H~!BW&qt~C Zv_u%0e,\^ 1gxU-ǫb&ͣ%';,D8 ѻi [8J#i{&$_i :ß{KM88)\.FS</O+.{S(ַХ/?1 95WپW5#olB)~NDL +ru)gPk:)Mm9CQ!wSb'4ɢU.Dq!*%v-d47~Ki@ۆx@?pa [LX% `IKyp"ʞ,OίKq gEq#Q7}w9cΏs䢍FjN{Z,T(//RUr9!Pj9](6ZqvWb1TAE#sPYp>ERn=.ID[z.v&7O Y9$4x_-'UMk򘽅6:VR~oBx:3MIgEarkl^].e~޼]] b>y';U{5!rS/ { B,W)w/UFFHG>9HSj 8ɓgJ("RLsK8oFW|w( Iu]v %ZpM/al"R pW׻c,*;M[bqG [l_le^BID"[TG^s,_Px)]Vn]>9g)yi: mߘ!L%R8P)+Tj1PjCGTgzBIF~iP3Փt0ؙt pBL$/}#J *5Ԧ/SKȕ76#AHqu0,Oã3*so]^c6|4 ^r4݈"`JbP9^TI^č'eK pI:Sfp$ar ahJ @ д8]zVdZ܅/ ksL38LV9 ӽsyhrO<%gH%Hrb9 )ߑG0ghQ +sbL+pZ2Ҙ&LTc@{dohI}[D/%k0=?(4Iy\MW;$PWP$V^g &,Zש̂]{~z!8>Ov #[(ӷ15zMXG{6K"ɭ&&eIZ6fp!Cmo2A,bLxbyJ'1Xζ|3qsc_4YzU.4) y9L&1I'\ǻ>Edo\o!jOLޜɋXȍd k%E- j(=FGpa$]z glųq ;JU(閄/]v $હ 99)AZԠր;0=VYv0!fA;?卽vѫ\SeOdZ:" eʘ}x͇Jx4$D͏@E'>(l@ U[ ~(kMŚPFNQ!RѵYk7I΋E*=vefI$XC8ku80dA^ckoRHTLKkѥ$ 4}BJ |{ 2|deF~e}?tY~9 W C-ɤlYvF(Ӝ9mMQvMqDV'&{m' A넅艣ɵSnމ@ٴt]|ՠe8k5h!kg\ a \RD:溲qqQJAW ed ^qbGۘt:==?/7,Tzʜ5>}@u45?WDn~rhmކ}{G*&&w)?tm^A ~}d\Nt%kk8\*aνG?Υ8Ը2JOMZGڂQeJo9#s HzeVo2쏩KĠW>uI!:bINM\)9;;;Tϕ蔅.t 7YAl"+mY02ں уD љD%1+?~r\"URvXp#mJǤVmϺ$tY= b*ACkk*yq0G c@L d*i?{S@ X|SjRb ì&"/B|f8!v1zD0'/h?E3pB{] ]튟LF 0]U4'?$/]&;[a8( D&@i|Px~NE|F#bHr`hYpHsGCs"b{Ǣ2du$PR`.#g|cVK^Eᵬ]`#٧D"MEkٌXrh@L2:~A gXe53Xl EK-Nd='~3)է^8I( = 7pp݊]&F;ǒ6.K2O xla4|,mшʕI]7GFRH-Tw #XM3GtYR5tQI[H#1(Q(Xȏ[ZA谅$h3f})RqI(3ZguBtvx<ΨwIC%xT2ػRꇛ̉ryJ塞5vXB=e.&TQ [ŗH_ns&U6 hY|;"}"eR_-ptB9鹢׮RӑT|?Ԝ/(t@[ݴ:43n#Ym[O=Wњ\^wߴ>  cK9`@̏V;"iMNڶvNj>EwVxj)좘wPf74wr\0&+'r/ޡǡýNEkXS#{MIW&d6N^#`/uVJ3khM;}a ),?fJDV6y! U 2h t‘ dLH0_vt/H8V] #ۑϦtdy64l&8zJBt3ap}niOs+ +m!:m]5%ٗd/5"/m!p??%]O(ӌuƣ5.֘5?wa=sH?!)sg 's3Gԛ,*:ܣ{ G#xOr3MPAOnKʬ;:>P].UY/71cfMM- N:AYaJϭ`$_U2,uvP3.3NۋXTPkCU6jTjp ɲܐmC9I5&K6(v1p0 h(Uq69Q}]o!J h94]S:capB2[v+D񓟻N~ s -ڶ5=GVn愮LJ{ǢLNcI!Jc{N{-\xB4&[Or6r͌p=ytN6^4?B>{C~0,r4ye7a({rt!zZ"C~Qr =e_$K8}>MvxGK0oʏdkL-$t؏Y)L&i> s@k!#۾\!vdܮ}"C4*͡^p%+Ck%TRC꼴-;6m[p^^s]7);IrN>j.tDǜZ؁UHJ7 0Ȅ̶Ij+jP=- AQgOI`U\U[_%=d>A)p7gƜ]L Wo"hT| ;b7 ⳶뷜[I Tbw5o3=Bn4<[մR%g{(@K2}YPF=KI]n4W8rNNU(_ ZiR|ug'on"i`YB]Xt aE;ٕ+|"E0O&\MӮƥcJoovV\ZWԽ8HX&xfI=-AXJ|%r/~%!`0-`22Nqi2uiwpթ|8-tIfXlbt* 7fcNT_#Jǰ|gČ@fjs~4Llv7mɺFf<4ArFdYV`iiNB[i";lMAunbn& ޗ<" .[moў,̴ǚ{Ѯ#2'6Dg+PbTސSG}hN(SB#;=uC ǵh.wXC$.4 zg׿T(L٨jKߤNW|Gg(]\/S,˜T!QdBR\Y ڧ_R{Ꜽ΍"-3Ez/ 0=v" d-4`uswFK7ƱN}:{c|3;tC/; iС..NHwJV8:?IpR!aw4B~f^ڇaNHU(@Oe?$,狰K% |O"A+8>LThnY=b@},h8kƧ猫&fýˆ$GIpS63KZ΂[M2";f?Nu.IV `[6?P*FM;dC*7'!IY7z7ﵯUT-[9N 'C`riv{zD6@24Ўw\^._(&^[JzayWLҢJR^^2z*n.Pu-n.A"!)NSOȺ"*r-2'Q<I[Q޸yg%6 k %.Z-x*iΆI ޸!ކq%{3X!E3٧ Gi6"k8%Lo`}#0܁N[ާ5b8Z-, Dmbž~wVvO0ӂ}H tv6{D7]`n3ȟ語A'fR ɬ_e Z] Ť~זg.2ʝ\oH;͗] 6bqђqRW8̓㛼l'DA%~O[(އ Y(z/=!p*zTV$#Q险M2N|YWe&=" "G۹Ԫ!8K~v\NL/ j/ހ: ia Dk;sC=p9B$%Swe{o5:VxZ2Kݝk}V>*)yP?!>8tWut̟Q:O\l91gw|X<^ hCJrP)Iό=@VYJn k z "ؒ#Qpsv`YwgNS\ڔhVtwrpz{r"eJ\p旀s6P񧾀n;ɓr-G@FAOl],32J VBklߝb,yZѼfPoL앚L璺BR t?kU\O"VD Xnr%ȯ彯Nv3ICqVXf5c8pK[xtT7D2#©ƪg~_"6.n_WY~LUvp*E$ _$7ԜsU#~ 06D_}U 7@Ma~ QG³D]F.'W|7x%Q)I7@лZ64 [Z`XP:9PLFw.ఔ\hE>+kujo4E"w/5ҝc'  XW&] @%ctzݚtf IK9;3pRYJ H = y5'pZ?>L @4̬g 9=7/g3U`IL?8Rt!⿚ ^8rZs&͌Eδ5Li[@!& oD9ŻѡAP,okk"D$f]ׂ#h~k4YFSϸp&93,4Һ pmu+/Ħu=xc ږՃ%>% USpغ{PtR8^3 gqt n SCB3ͺ+([Е_p G b O> yRie!:ś8`;_jb@f(NDlKpoxIG {;VԏB1˵ܵQV{ء/>B 'G`7 c`й䔎9TWN6HIdRBBFG!]>nFޫktELXfթ4b7 %BP LiPuvo#s=}v}l-{%5fa8QQ`ڡA-5F-3a򾩩_;fo#ڈD3(zP[ PxEBZFE߉nbe>ekWTtP_"|T`ZyoikgG4aĊ^A־::T聸MmZ^14!vWᅧJN^QpRr8q?R>\7s$Pˉkd\0b e9 }oƌWfk \\p|"7!vfӡwx&Ifߗɪj|H%iD{H8uܻXDY퀎hk9)V=xB F0ICNO[ 4ʊ5BNq>Il,Feɿ{Ph`ǁ^}j$:pbeXQ /`bq9&0v<\a{bOF' 2!=pTYES<j_${ )|":0U(vIgáE)yDe2YwFZ dT)mӚ{#~CoY_ Rm`›6 ){ ]\،E\FCO]"q16aA\$Β{b6x&j1SxOEߑz!VhF!Ɓ\RE2+dlX 0N5us\;yI/ 2j%(bO"ɼ,{fi>A>$33k2bɯn+[P8<[cZ[n-ш/=G0佟NFG搈hBpAkIxǷa (֪w~{,v9& "pIW-:lMIG> ' w֘oCDGoSޏ5[Ew+;g1~:R1Ce.dm/زZnq8TqѼyz4Vt̽TWs.ꠃ 7Yh|^t!"cqc LhYdbN!K JzX+hÅŢ)}oLGcx0~'IN7zG 梬:鏺ؾēmB^ֺw @XIl#-wΕ6Y˷7`!Q=f- I"{}N iin|5 - AJ/*)be:pEKئ`s1=*LZ 'ӕzB4SeŶzk} }k~qrKd{83!Ϝ?<=1lOf=p.QuW XĴjanu5dso[F8gluLv"TְO2"fL2# p.ך!t?7a ҇gbhֹZ.YZ%ya[/Cc{%3Ծ|b/AGwF \eOb.5pPqDZh ЗNXl;_rZh "~M+y( nsԹ36fzxd?kYܢ;8eox`~$?sȁY$_PGj݅_-߇ie231\fO2|G<8'[q0c5-{0q0Ccއ7,آ&q|ס.p#u9i6BϞz픱ݨT =DR!K|CI)*Ro8Hd @F/I $x_cܣsܥj mɤSB9a x_i3m>`5xcXڶ=­K(yޔe0Np-и%~]E/'Mib"(1 \킺#d乘1'gH#\.a^UA,V nΙM ӣ*r)WS[X(ؗJ/=93=ErW1>(Y+[b_Ȼ nZj)mgtF_1+]ϧ=;eU GL" \\)W!S=uʷ"=4v]>0;m0u.d?c" uB*ʣ-m4E@FYtoSY3V$פuc.4A9G+Ar5f^(uxa.Jet8LD kwJhˇԮ%sEkv?(ٍ ~BT.+3\kgO3[8̩OXȯ*~Vq K~Zؚ Rl!5xAm yۧPC/V xӸw*Zz$fɫDL+}Y(z|ӿЧױ|ɧëIX^EaߵR9M< ?@T[8^"[QlN  mSV&wfa1(Rts;}go{ Dkmr*{Hin5*6TCy}^(R#6ZT2Y;!YY.T41s[nj'֙qaq$­^+ǥ~~DVn*VRɇeɈ\a#4? =@ٛ=z?:gȌWҬ48Ն%@3&1}*6ૠ>>Jn: t?WDC؎GG]HA_"F9]; LJrzoCS_îlcS}[9SmsWW3ZD@I/TW:{bvt?kWi7uzFsIs{ہg|BrV=a^/#ǂey މaTyjn#S+tfP($T4ZGӪûX滥,VԦ"ߢǹz'#-#bDx_JaKcqO/5ÓY.yg{\#Lc.M_AEaf vSS iMrHR|Y2| mPy ]Q)I!2D2ۃA mNW<31\Y>;I+s3kb"aZ[߻W~= ozP|2;;~aZAvˀWu;-DisB"I^U8Rc8k=DJ~UYncH{2u&:s4ߤ{-{")i?mCf G])?شP,gQܰYFKh9z#\BgY/3j%y gٿ u]r[&I iY>Nbۍm1ja8{UBm(ƫK!vϣoW. IO"a1JűTS'"3Ina/7:]bG~;qF"cYS H\mpN,w#Dw:[\>d$\O2,IqpdaI뚊pYous~8_$oXi\u!(HG".QU: lϺQR[ch#qId5Mg]F4!zSG΢ Q, ]7d݅0$*B˫ua D[U,^f}K{]_i ED8ZZL 01E%wWcM85g=IN!ݵZ!)Z2opa`( ׏p)3FuvrZp>N26r͸sntb7(s8fBqmhftSzA.@[eo0hcJzcT֏Tz*hc%?Kf3(8~sg6BK)k[reˉҦ#mGG]VjdC~&lL*E}XpHCB=7N:ρ_RN38Ȁ%[Ņp{y,I9v&IR2չC(1vq +UBA ތM)`sXFRVae :FWP>Ybޥ'^?8 vnAcב61$偀Ӽ` wH!4O RQ=h2@dA\7]Jvm5> %Z֒u}"-BoŮQJnF_g쩠'w4dAss6(,ζvQsĉCki>pWRZj*3(]'oZC O<;k?n{{AQ܈ Ds rtcE7u-=ܸ?sqAKWyQRoŖ+iwfa*nT <e!hNnz{pSBUXd<-P& z6<0KnRd)e`;Ab kq& qjEu8jHfAHT,f6G,2֏>Y[pE%BPI'Nx=#(] B/ wbpEGZhLz`|Q\ׄ'fK??vաPb@khsJ"#srcOS ,ć4&-ORfVRBlu+\dNpJ 7jo/R_u!D0:~KУh)fҁ;6Uf&հGO)q?@ʶevM/׼q|կ `KnsˆpoڑCL!2o6>aK'|4SR#9 :N)Ѵ!~Nb`xGD1fNۦ A;62oڌɂeXS%,﬷QǸzVDXͿ'|ßW]5pI"d Tdyns6-~xC?H}zItt抔ؼu{=~E AQ%:.&r^N+5 9j,J:_vA(8TqZEgȱs@}M] 'T94R}9<Fq!G<뒫-H)CXC *wo20.ڕෑJI BBKI [IzO]#Wߙ*dТj+e}0By5ީNa~*cPz#Dv3S<݁=r66Z*~Muj _ l]1`4^/"ء$Uf;UtJ#s2X5 %iY8xى S9[52tթ66ہ2]Uwmdncw #u_ZvO3}omW=6%it!0tnLտjQ&vٝXF/٦UK JRgW-9 !'lRpզN&,@J;I)*]MF@sVpj& p#:O OIb UqV-8" $ؑ~ʫ@3͍ZEEv%2:e ̮\Jis[KfLJ S S1^S xr(͸ eG~RF?]dL?O;C3D" 5Ӥ/Qo/.%˨/"ML8׌j&dSuS\ΐn_ά@^ჴht|O'up:-"x !n[$8+ӕm*]{]H+7:YGBdUL{HDᅤD2ʟ} W쇕4 ȰSa_W )VlUekP-!_aȈkɬܚ"nIy8\kj'դl.I<~Sqa-awJGiޯ rF0&ڿ:_CEG"_ 9$ UUЗKlȯѷqi8G=if(C], g[NK^ËYgֶæ4dhQ lTj2Y>.6RTĴÁpG\Ö)0dd)[G6bh,~4Kَl}V]%7Z z7uT>{mOL3_*|#Y5'ޒfE=detG6%,e, #~Z^n'Ah bƲȅBo÷"aXG؏pз)lfI*C&Ҳ2%8Nńz;MeWrxՌM^x&y:~Ku<c,K}O{$mpb)r?Dgoy&}kmuDUH)2[AWX(*љak RV!QJfhO,`r- 2!z 9rF^n^8ItvJթ&BtpjW$[d/ %Ioõ6b`H2Aa~()K;@ƎU&Wq&V5^hin3\U ՉPBlmM,@~;Ȥ.7/e uj1ݲrKc DZɘClCpP$I*>Wkշ0)Z6=4̅j7KoDgQ10x얪\Hl+#-evLɉ#R7@WF-^ Qcc Ͻ1廱Ŋt4@fM?u^\%6_9"6cT u'jlQ4qAa8J#>Y Ql9Q!kM(vJA,Yо. e-Q#<ZKMEj@붓Yd(a޿_{ F:DQ<*}"/8{޽i+ЯC`*}S'Jߓ^Jܠ=;anjZ굩dH#YL$e ʄJ?Ix]$ɭvƎnN$ Wr}^;4Điɝ1N:2k-mWv( ^9܁P]C-vbbg*1:l/p=iU,՗)ZFWp\)gg;]L\j 2F4[ lcm@Xg>Fb]IU E,bC>2<߯nھ.'R;Nz@չ-];L 8MY2_(O iO#<\S_{IETľ_ z"t0)W%Qj VQwQlj"$7NlQjPan+=5NuNŻ$zqT2)K̢ Шm8wRSцI1MPO(3ͨ1_Ã6(C@NIsB럁Q/ O{MoďahbnZp@~Fӱ7|[{RaeʲQZ6z o]V>evr-^ KRdе4UeG̠$ Nd`+ ӆ1S[ܬ`Mm,Q["+!pB8\c:"$|,;s?tȲPs^\ ΘL%H6DA/yj{u)w)# "]Rq͞Gea c2nؿjUk .(B î}mXG(7(j"^ oƮE\Ad uiwe?48Y#QsMHYN| sd K(@fy#S԰ |KAwuXZZg# qsJ' էpm&6aUDw[t|e:5 A:#-t4IAnUs%Lm2Lx#srbˑ~nA`FtA29_)nV V+EvB)_3сMFA7v$8k}؉0D\7R5T;\y+Uj7ٕ @AO9_k6n4q,.܅'DD_~0_jI7K?"K:؛"Pe8kEK>*:r(Ǵ\7([O=hF*Ů}~yi}WH$WQ+~JH(^d_~Z&iЂO>[qq~oa9(r_%ÇٗN#RUtɭ˼X5LL (]/\mvvӪv]Z=#R6`Nw|$1 KmiYస/Q6 ~\3ط_J`r 6Bػ[[TU#q|'$ڔw[F5Oph5.Uݎ7`Qȟzv% ZqȃN ̟x\%Wn8 G~, ÎA ]/t(ʻ|s4c֝sJ9liU()Ԅ (X,=\,[]ID!xEoGM-dQs4r9'nBV NFdL )z^lZ gJiuC␭zC.ve D4  FD"ǹ'ui^?;a2E)/0m߈GX/)yܙ}+I,*3"^l.d{ZNQp]$e /ȏڏ$ɸ1PjFteTWtK?{IN"TJF.fWvjbfzbrWӣ w1zL~gOh6HJ>kbІ 6"Bf;sa+5n6xL\$8ZKggl$_Be%a/xD4+Z4Vפ.ȃ Mα;}77p. >o*y+{NS* R lkCA3%5iF>5,O+*nc *f]=R @rmˆlK:B,SZ#O},/M^9tqd8ּ)Sё8Cyyơr+4Wyc2^trM0kp-mL^'/i)*<#.u[/8gJ%fNG A `Tr;XK j8 }zi=[x-j\z W4ng]uMj0-N16[:k[M<}v"HbKWi[3IȦ?F&Bxs1P2<ɇ\ !]o%j '1WŤ#A@9%eeTX"-XwxmH k.EU8B8mAH81;ˑMP,cGt9C?FI |j%ݏHy<h隚JH&0+ H NaXS7a|8 >; xޅ5 ajGflw^mV|;wei^*p1 uXpIm!ԭ(ɒ`~d+kuzYxpEۢIIh4+Jމ.K ʱpṢ/.,pFZCT=Itd嬔OoЊRi$)pcL$G?dZFӳO2dspF ,18mKQ68eEuuA@gCHQZUw;xKꥦ>yǞ177aXdP~#o.?ڦx|T1XUN5FR@g,\.&}J*5>HwԾ%S .kءÅ)/iqTSN ^M" >I4A {wUe"6ƥ:+zns9k̮#A%_E6C1Rdb,9! tPO O'e/CF(Uvc.t1.)^/|:f~)CUtH |Ωny V-GL>BL,Zl erxM|~ஊQks3#뀎X+8B{!$o;uNPQOB{eZ/w*VwOth9dˉ7fFo\Nr~cwpZJȆ+biU6% qv(/^C/f-k\Nsuq*4(*>}jkΪݐ Ar' m{܀4!YXwevhWSEE"4Q>/SePwvU pPEW _X7 } Gל~?é{H~E B+$zdd!/q^}xF>Иv |Uݽ`؏vcphn1Qv˂_xp#dMWXEJ]llmqHW*pJ=V -{HIh0WiHM"fk-ŷ30#6F%1qt1+ʘfAGPӶ&:%jR@H!J6C?S٪33 'R,@Aje S  TA6 ^8j&~Z{#\7Ya0]W|5[ RLU.7ݕ1-Od AMe;&(,pĈyL„'7KJ^ OQЊ5~jcwM7ܢQYIDP,*[-=rnQ!0UDAQmIj:gz?C"?1 _‹F/C.\ySdDŮy$܂|3zˏeJ[(K_٭vD}T[/<|nЦ,kQQ\ӛ3%Li7=w:G Guml%YRFՒAPna7z7,&\$} $~ r(|Rmp)xa>[ڢR?I-VS p"n>h#ʍ-y%k5"dG)=|O{`,vH'm,\GpĶqX*6Ӗ10⇞NjkLDZj57o >X N9EnnK+=)6g:cږpcz:=.xPrƓ΍/C) $Hż!L7Vџ﹩4l"Wڎ%*I 1E#W]T v09"Bfh!;cBY)zA Lh#|EL:Enslei;i0/Nc)m.<&¾uf~u*&Y3X3C@̽#,J\;A$H#%)e^!gAO[:_8n=mĜoD_PJ ӢC74*{H*eZEoDDιɅ-\*h-8S!+y,;?ԡp]D6Yu^}}pkE1ft>i -/QO[c՝t=Ow$tJf?-ºLTtgkj>) 䳛ϕW#:=!kSx]Έ%g1(?KG5i+t{÷ Ä5#z9I`VU=6&Pb|"&`.dϸ#V9BJd kK"T̗r &6= Y9?eElY^hYb"6o$mٍ#c]^8%>5 32x22 @GȂp9l|$ֆU^8-Ōh#FdfWW sZ\/^[88x)jNٜl٭|*]6A& P&{R$]Aė?e mtmb"Qݐ N|NiΑB4~O1dKl,f zL6-exH,'1un I8Ζ8?p#w42fWZw@s xxQ ds &-+6ZiJk"u;mr3zlYwpKiBdIefS2D xu}6}#:"_/oV}-l@t*%SfgjUŕM]:W5*m|%FMY^kCu42rf)-tlr+|/wdYFj*`'EX ;'ңZ"ET~iE iސ2n'l{i5h=ZY-и'l<`{Q5/;ɵQ|l{nGo ~$Bi u˝fLǁnO8^~ \?-E],N~s!CQS;|fqMy 3HE}"z+`2=/S&B?Y>;bRJnhߗc׎KF.^ԭ FpSv]gGEٸQyWƲU4g*MjieHGOS=Q6aIqCcs[L΋k!XH^uw1uf,[gΑ$UG<"6UgE^>a7hڵZ^xtڒG_$s\f㠹 cH&@IgHYbU F \oԙt.1-eV'?I[MH CGu_Bԩ]-H`]ՏPغ7rԬ-b֮c{蓲L!cXZOU-uLuI6qϓkǢOVfK+[дp~Ax=!Z(<$vreHBo#(J],Kq 1ug=2a"yWsh- [Nحj0uA%WB$DTѓu{% a|U3UWP !TF7,|o)ʭ$._ E/P}~S@S|fi 1{[Hxb!{U[pL c ,_Х(PԼI{ejl‘]̿J/_״n<5GDJcEoV6-6W6\1#K"'sıksԪ+_m ?ֻwJ̟GQRٗJ\DpЯw?xNJSG9%CUA.KM^~ؾHA^$|zw $OV1yk=WQ4;׋vV~J$_r ~vbU3>JOv 亏.K=kN$=R]\oSnziEi]j"pX'xj S1-+\nnȇm /m+\19 Ö+pAtM˔Tw'wG$)@b+?H{Jb%6BQ97m]UQDJ\l7I4!){>44)8sQOqrWˎ7kIK (Pu`N+qғxU4QRawtQ-@doG+<&Nۃ ThA7tqrJUk{K6^8kҁ_{y0S)5}a6wI[i#1(Зb -DF|L Y/D#ڗ^J-S2q[ Sy%*gۭ rJ *gxD fyQ5ů{\$b))U"sM 9ʎ zHFZ & {ጥ$dq_"Wz!ZXL+6I˳ T^=4c?e^F ktΰQ<*V@3t@GyUd1,Mzw VQ1`ݦX< oD>q ~Ƅ𼻛7Vx7|p2HN6 D711Wo$򨷵u|CW.9n|?=ܠ.!͈s72@LQ "thf+kvSI\ǬJ*jlzG X3Ӷ|OPp Esj5mp$P8%/ Wڛ_q@w?8 ٜwR$UmAkx~3pv,KWD'xQU1S{ử`n/&qqJ+-r6IVr(,SU%9IIS"@I Yӈ%O%qc-:$KZQ5flDl,6qM$?3u\ ([=&C8leۉGkꃶLۂ}fs&d;T-_>e ~lk4 pnbSRW~SMtsHb -RO\'J#r*?H9VYa!+s DJN JFZJM^{ vz>k̰ YfpHC&U(uaStWgp+֥]s6,iؙ( XhG(.9Vֳ133F ̮o$+#ZjK ixlROs$=sxo$c[{WʪsYsjnw 8lK(|ܚGeT8lm Mab|E1Gd|c_R)F>2o,XAtY@I)^hAi7T9Dm+ CzTryl^ξgE6hԜ]1tsbޡ<]; 2R ҏ0H8QkkE­0b:oo" *e ]V$rLeAQGpȷ1 S(* OҤxa= kA>'q"CӅ44۫͑%5tLN1+y؊r-w=D OEmUhg$ބMڱ=18>huaL\ƍO-ȕ%}2O,hNcq}&q}"s͗sg,[O 1J/8'PibptvKn&I;˶kVyK6x)ћ[񩜒D%8Hu#{ueؖ,@!;1nRhV>;lY:{ )nH4|LiPh,͗{屄D< rlzsc~vn%a/D{=|}?̀)朴a~y^'|NR;Nݕ 56s~qZtx(Do,ήEଐfm;vysn 4ȶZ>ݱ)Ēǒ4L@dT ^m[j̢g^7 mE a+a(["r{ Zx|UA{r㷛7曞j ǐs*/BZy!NUqc# k.&n3JϤ)ӻ~B&S6m}Y6/Pܴcj]=#@`_"R‰;ٍ~vydڟO\0͋]PjXi+6/#VI4ܱGo9)rj2rmqCŢ9}jj n&^07~VR),!~g*9$Ku(n`[ m/5@E&ulm[9Ω_:zSnfxc/Q}qhSPL eBR/ >-VbEɠBwB3Rf$C0f7sg8P:B}w~`zc6I&u@i4Eعe|.|bܪ"vƾ:'4eiACU&q : ] K|Ҝ-홣3c8{ĝ5`JuYgt$‹8h/.B Z}m;h 1bu0o\I"V1 (0u@OnZ,@ erbF%#Aɮqhm(}2fW({4z.z;@S?w7jP:!Zfu;g/_? L|r<䭞3`*Ա۰>1%h=Z8 RRzoRNi9M&Qn~)!ҩCmp(:_O rݰl*j8YpF/0 -W&]8P՗KEf%9ԧ*{7-ǥA! dݒF_pnB -d4e@8.3y~?i ~JqTĭ}|]ԳtEǕs5Q8.MG;^R*h.nBnњ]zYXaB!r 3Hc<."UkLpfd&̏CE@}K>< 7Llp6̾5$@DF` I# ɚ>$)HR]\[g8TG@l | 7 p?P1WC,n0=:q)ҙ#w kC 7RݓfɌ13qgrR(@ަ ZyR zyU(jj{*/^{bXH@bCp/8`#>Բt4@ ζUYZKJǖ?Y/KMqt[ӉjÛჸCu$?s*8[rb w3g,6@mr~%ӦJ}1rU`NEv2+0V\yoJ|7OBܱvmh,`:I4j)v=0s"hy3X8C{JJ:\"+wv&!_ٰ/y _p^k?~Ϥ~.DZYD5CQ<+̡s3Βl îĶq>c"juwc3̆HP' c`"d"ur!P&9Wnðn'ݫ6|~OSr$:l чJ˘j6Je"6i j (0C31-@1.& ҝZ|**@饑GW)!N(U65ޱ0N`Ҥ!ny_5fI,+꽒![Cn DxS.f@iCj,\tR 0< Z@XjHqhSf)PLhwDf"+yU[k]ω٘qƬ h9DZ TQ}u,5u$8Uw3 +&zϞ` "t6(;@,|zB"̊o Q4:"q>Yצni@'VuGLR%ChNU>~)WYh#D8th9m$P\HǓ7F"&EK~wzVvmňQkEm= 'F ɂ3c`-?+F4$sz¡fqx]oQa\E;gi*_fLŽrAUvZM^AX,'0|r *TKo/ӆ1anԳE˅syBv] ~Xxv1Ȋ ƠwX-|J,c/P3$tE zt:Sy&oG|D_v/ Zhwg̈́h}0Gu0[ nA$$mid/Lb>j wz CR ˅fDڢY9 $ڰYIŃslMT 8!Ut0~*KuBsų J7=-Пr FZO<+x6Wequ) zkw :g>: mZl b<[6f$b2 :$0=PJa fk(p芉 W1 俠lQ4"x6R 9`s~l22PXpmͿDmo}u?L&eIG)hX)] lDӤlYUߙi CS/?7bm1߻K8O%svY%Y@bd2I]˝t^)Sʏ`"pV-S"2ab|s6p^<_0l׃AB7͑(vͪcP/{;f 3~": ǭc6۶j܌:ܽ-KVYv3)jnLŠOK$ZQcU8[p7$ KC(F}B|y wND3" 2Bt:tf[mߛK8&6G%_f?X r|VS5(+׋bP*!R~7?AgUݎ1*}νN"g[جpCn7ݙ\9tZ/3Q{G9 rTkmZ?uҨ7YϐDw!ٵXA0ޜ<1OiC%X̥v7]1i郦a]Z{Z$S!֔[MhKǑ)0.eWug\2)&rL05cpFUEfr`P2 噦ѥ_9 wGALᴠʐ(~E3J摨PoŨ雎TMG E>0PCՃxz"QA!PH,b5nIihHfĹ&z|\{R;<`쀡׼"R i (t8@Ty۽yF?O$ZToV̏&ܓľH%FsSKnoZR$r[UE NZ"l=] x=F=rz(wTTW%nmNe^qIO /1.B> .FJڊ1᳐B YmNPMY/Ta8N?96E5 3[M\>gSZlZ]"l9f;Ic*af4o6&~|ձmyynx W'}7BbYIxb#H=3(a{'L'F|)8WeS2Qp18Y}& Wa OyAt/&g&9mO$sM{"!y}/&w@F|pـrM4:y璞Fh;q{bBeT"u_-3U%rM|S wBqGlS𥉉 w3l$G'~Dh[jd]Ú:LPgKV$.I mQ%c~ҕG*i{ K# 7ҚZyWӈ4!#AV ҡX ~B3Pl?:-!f9pk{`g9^{X|nnޜ0]Ky9> !lq\KBygXO6/?% DBPcp<d {lZ]t\[=Y[8kVQ53獌/r}& Ĥ][co,l*aXHDjak'7 A13~vqϦhKq_Nnbke1 SbݾdfySO4KM^Ay`oO-iYoSlpĬE᥃^#~ 92Y1c\Kڑ:-80HHx'~(R$˖4sKuf"!H*a4 =U$zAAHt2Ow1z|S,-T\@ %. 77!Au2wUS?jbvʶE+ X+ YsN'/-FwJ4@esS_G2R`*/ ."]lͪŎ8QWZ3%RȰ _/oԋE愀p>_VG]En+) e  W?}8BW ]DU=vٴ {|*ɲdmlG2& u/E0SxB# DzqxFB'j3emCߓ,ç_ @<D;{>o;H 6L e]؂zSsBd1&`pmP *RRse+MiN(XW r|tʍ$6k c+IŅmӖhu h媴`;݆ |Kw.Q>𔄊%#fE)6l\$BuT= ,͸c8w3ĝme HayZ;o\֢#rn (o<#7ewi Ǫjn-.j*lɠ.6r pU{==EA73j|#%V6'~ذ޲O /W$v 8afXq0Zp砎"L W[A6k6}@O/[EEY#P~G#D43[ F Vvp;D!?R_{rkiؼiX`AE[*٥Jc\(f(="29 pUG%f+ލF:WoHq8!,kڄ [/>uҐEGo'GMjr ?Y|6{lŌ?()uZ+Jӱ|JnQ$Sk3_y8X…;~wQ.C'1)7گ +YnOPQI׬?q[ClN qۡ ٞ_W=HJoYG4+KE_vH%zHQ*vOr'^ˡGVl+TA/p7t,0'c 3񟃵..HyCj{]2aZ A!hS[ "a}j6ng=Q7vaLouؙ34p<游C,#d!tY.HŶ6 ٶc.FP(ئu*2j;Bj'e/,sxj 5*i|NB D)3\#A `VtNo C̏Ԕ27Nɓ)4θ({{aergC4ȮTvoIE?'i*ur(8Dd+.:J>s1u {V% lI[}u@kgw,>@~( 痿e_cgci/:=DU3>VH-$IRkFϤe:+V9y1AlJ>L ։Iv boA342U$/& i,&nC€b1d[ :iqr2pI8phx(!t0#^oGSuka3#Clw4KB5y t-F3X-WwƔFa2 YZ