ploop-1.11-1> A AlpA?S=ⷒ Զ /g`6d`zx uH jP߁xMU81eeb1f89dc04c943498673e2459aeeba5761475 Te)?S=ⷒ ԶCu$%2x[JhVIs*-'*Cp >8JG?J7d   `dtx       4 ( (G8P 9 :i FFGFHFIGXGYG\G]G0^GhbGdH0eH5fH:kH<lHAtHXuHlvHwI0xIDyIXzI{ICploop1.111ploop toolsThis package contains tools to work with ploop devices and images.S=ܨrhel5-32-build GNU GPLApplications/Systemlinuxi386 d9큤S=ܥS=ܥS=ܦS=ܦS=ܤ0c096597ee9709f45d72dfb731ed6ee0fda7eee861580b0f22329684a4eebafb78d175ae8ee8d7661d7f2468bcc099ad9f2f5d2d3ff4d7727d57ffe779932375a5c2b401270bc6512dac4ddaf0428ea8rootrootrootrootrootrootrootrootrootrootploop-1.11-1.src.rpmploop@@@@@@@@@JJ@/bin/shlibc.so.6libc.so.6(GLIBC_2.0)libc.so.6(GLIBC_2.1)libc.so.6(GLIBC_2.2)libc.so.6(GLIBC_2.3)libc.so.6(GLIBC_2.3.4)libc.so.6(GLIBC_2.4)libploop.so.1ploop-librpmlib(CompressedFileNames)rpmlib(PayloadFilesHavePrefix)rtld(GNU_HASH)1.11-13.0.4-14.0-14.4.2S 1.11-1Kir Kolyshkin 1.10-1Kir Kolyshkin 1.9-1Kir Kolyshkin 1.8-1Kir Kolyshkin 1.7.1-1Kir Kolyshkin 1.7-1Kir Kolyshkin 1.6-1Kir Kolyshkin 1.5-1Kir Kolyshkin 1.4-1Kir Kolyshkin 1.3-1Kir Kolyshkin 1.2-1Kir Kolyshkin 1.1-1Kir Kolyshkin 1.0-1- New functionality and important changes: -- support for 4K sector size (including GPT conversion) -- ploop replace -- temp snapshots support (ploop tsnapshot, ploop_create_temporary_snapshot()) -- ploop copy: implement fdatasync before freeze (improves CT frozen time) -- New DiskDescriptor.xml read API (ploop_*_dd()) -- Obsolete *_diskdescriptor() calls -- Obsolete ploop_get_base_delta_uuid() -- ploop_log(): implement subsecond timestamps (with verbosity >= 4) -- add ploop_is_mounted() -- ploop snapshot-list: add snapshot mode (-s) -- ploop check dd.xml: add -u UUID option -- ploop mount: remove -u base feature -- ploop tool: add -v option to set verbosity - Fixes: -- skip max fs size check on snapshot delta creation -- ploop_resize_image: resize up to end of device -- ploop_delete_top_delta(): fix wrt top_guid -- ploop_read_diskdescriptor(): fix get_basedir() len argument -- check_and_repair_sparse: handle EOF properly (#2897) -- ploop_resize_image: add missing gpt size sync -- ploop snapshot-merge/delete: deny snapshot deleting if mounted (#2887) -- grow_lower_delta(): fix a memory leak -- ploop check: fix -b option parsing -- get_partition_device_name(): fix chmod argument -- fix alignment on GPT partition resize -- fix GPT partition alignment on ploop init - Improvements: -- ploop_resize_image: enhanced inflate balloon to max size logic -- tools: add {} to specified UUID if necessary -- check_and_repair_sparse(): log filefrag output -- print_sys_block_ploop(): speed up -- ploop check: try to repair non-top deltas if they can be opened r/w -- e2fsck: return fsck exit code to caller -- make_fs(): add -i to mkfs -- fsync_safe(): use SYSEXIT_FSYNC -- Fix uuid strings size, use define - Documentation: -- ploop snapshot-list: fix and update usage -- ploop copy: fix usage -- ploop(8): document snapshot-list -s option -- ploop(8): document ploop replace - Build system: -- Makefile.inc: fix dpkg-architecture handling (#2877) -- Makefile: add ability to add local rules -- gensym.sh: better usage and error diag -- gensym.sh: add run mode- New functionality: -- Added check for and repair of sparse images -- ploop check: long options support -- ploop check: add --raw, --repair-sparse -- ploop-check: add -b BLOCKSIZE argument -- ploop-check: accept DiskDescriptor.xml argument -- ploop umount -d: allow to specify partition device (#2788) -- mount.ploop: implement -v and -f options, as per mount(8) -- umount.ploop: add -n option (ignored) -- mount.ploop: add -s (ignored) and -* (reported as error) -- Added ploop info -s -- ploop init: use v2 format by default -- ploop init: create ext4 by default - Fixes: -- ploop_get_devs(): fix snprintf usage -- ploop_global_lock(): create lockdir if not exist (#2767) -- ploop_grow_delta_offline(): Fix uninitialized struct -- ploop_ioff_to_sec(): fix for v2 -- lib/ploop.h: include sys/syscall.h (Debian #728173) -- umount.ploop: fixed (#2788) -- get_image_param(): added online (from sysfs) and offline (from image) cases -- make_fs(): turn off periodic fs checks (#2769) -- ploop_store_diskdescriptor(): check rename() -- ploop_store_diskdescriptor(): don't return -1 -- resize_gpt_partition(): check fsync() -- ploop_balloon_change_size(): don't pass -1 to close() -- ploop_grow_image(): fix an error check -- Don't ignore chmod() failures -- print_output(): fix output -- make_fs(): fix max_online_resize type overflow -- do_umount(): fix diagnostic lsof verbose level -- plooptool_stat(): close file descriptors -- ploop convert -f: do not return SYSEXIT_PLOOPFMT -- ploop check: fix exit codes -- make_fs(): create ext4 fs with 128M journal - Improvements: -- Support RHEL5/e4fsutils (tune4fs, dumpe4fs) (#2812) -- do_lock(): open file in read/write mode (#2730) -- ploop_send: use ioctl_device for PLOOP_IOC_SYNC -- use access() not stat() where possible -- umount.ploop: improve mtab handling -- mount.ploop: use case in option parsing -- {mount,umount}.ploop: don't hardcore ploop path -- ploop-check.c: rename uppercased functions -- ploop snapshot-list usage: fit to 80 cols -- fsck: use fsck.ext4 not e2fsck (#2812) -- check_size(): limit max ploop size to 16T -- ploop_resize_image(): fail if umount failed -- print_output(): improve output -- ploop_mount(): fix/improve error message -- dumpe2fs(): don't hardcode path to dumpe2fs -- print_output(): use our own default PATH -- do_umount(): refactor and improve -- do_umount(): eliminate extra 'lsof' call on EBUSY -- do_umount(): don't call lsof again if not found -- print_output(): check return from pclose() -- print_output(): return exit code from command -- Fix some wrongly used exit codes -- Remove unused exit codes - Documentation: -- ploop(8): document check, balloon discard, info, list, copy commands -- ploop(8): describe exit codes -- ploop(8): better resize description -- ploop(8): fix ploop umount -d description -- ploop(8): fix ploop mount -d description -- ploop(8): improve convert description -- ploop(8): add missing OPTIONS section -- ploop(8): make IMAGE FORMATS a subheader -- ploop(8): other small fixes and improvements -- ploop usage: improve -- ploop usage: update ploop check synopsys -- ploop init: fix/improve usage -- ploop usage: fix mount/umount/resize - Build system: -- ploop.spec: require -lib of the same release -- ploop.spec: require lsof and findutils -- Makefile.inc: add -Wformat-security -- Makefile.inc: proper LIBDIR for Debian case -- Makefile.inc: add CPPFLAGS to CFLAGS -- Makefile.inc: prepend, not append, debug CFLAGS -- tools/Makefile: simplify SOURCES define -- setver.sh: introduce build id -- setver.sh: use getopt -- Remove stand-alone binaries: ploop-check, ploop-grow, ploop-merge, ploop-stat, ploop-copy -- Makefile: add Coverity generation logic- New functionality: -- libploop.so: implement SONAME and versioning -- Introduce ploop_get_devs() to get all mounted devices per dd.xml - Fixes: -- make_fs(): reserve max possible GDT block for online resize -- do_lock(): set FD_CLOEXEC explicitly on lock fd -- fix raw image creation (broken in ploop 1.8) -- return SYSEXIT_SYS on ploop_find_dev_by_uuid() failure -- ploop.spec: run ldconfig on install/uninstall - Improvements: -- Display mount data in error message on mount() failure -- dynload.h: pad the struct ploop_functions to 64 pointers -- gensym.sh: add code to check sizeof(struct ploop_function) -- etc/Makefile: ploop.conf should not be executable -- Makefile.inc: support Debian multiarch -- Makefile: add distclean target -- Makefile cleanups- New functionality: -- convert from/to v1/v2 ploop version format (ploop convert -v) -- ploop_mount_fs(): add option to run fsck -- ploop mount: add -F to run fsck for inner fs -- export ploop_is_large_disk_supported() -- add/export ploop_get_spec() -- ploop fsck: rename to ploop check - Fixes: -- resize_gpt_partition(): skip if there is no partition -- switch snapshot: read parameters from image we are to switch to -- ploop create: error out if DiskDescriptor.xml exists -- e2fsck(): properly check e2fsck binary exit code -- ploop grow: check size wrt format -- tools/Makefile: don't strip binaries on install -- ploop init: fix an error message - Improvements: -- create_image(): remove useless assignment -- number of log messages improved/fixed -- tools parse_size(): print error -- tools/ploop: allow T suffix for blockdev size -- ploop_grow_delta_offline(): use delta.version -- tune_fs(): drop absolute path to tune2fs - Documentation: -- ploop init usage: add -v VERSION -- ploop --help: rm -P from ploop mount syntax -- ploop(8): add -v for ploop init -- ploop(8): add ploop resize to SYNOPSYS -- ploop(8): add ploop convert -- ploop(8): add -F for ploop mount- Fixes: -- default image format is V1, unless specified explicitly -- tmpfiles.d file added for /var/lock/ploop (#2493) -- fixed creating strange directories under ./ (#2623)- New functionality: -- Large ploop image format support --- Now image size limit is 64 TB (was 2TB) --- Kernel >= 042stab078 is required -- Move ploop_grow* functions from tools to lib -- ploop grow: add DiskDescriptor.xml support -- ploop init, ploop_create_image(): add FS blocksize parameter - Improvements: -- make_fs(): create ext4fs with lazy_itable_init --- 3x smaller size and 3x faster creation time for 20GB image -- lib/ploop.h: "unexport" some internal functions -- Use /proc/self/mountinfo to get mount point by device -- More clear errors on parsing DiskDescriptor.xml -- print_output(): generalize print_lsof(), improve -- add_delta(): print more diags if EBUSY -- extend_delta_array(): print errors, return SYSEXIT_* -- run_prg(): print error if execvp() failed -- lib/balloon.c: print file name in an error message -- Introduce and use p_memalign(), fix errno handling -- Improvements and fixes to ploop_grow_*() to be used from library -- ploop_read_disk_descr(): set *di to NULL in case of error -- ploop_find_dev(): always assume ploop cookie is supported -- resize_fs(): try harder to find resize2fs binary -- Makefile.inc: ability to add CFLAGS - Fixes: -- lib/lock.c: create_file(): make sure dir exists (#2493, #2597) -- lib/fsutils.c: use ploop_execvp, drop absolute paths to binaries (#2595) -- ploop_log(): fix loglevel checking for file logging -- ploop_snapshot_switch_param: guids are const -- Recreate ploopXpY devices on ploop mount -- ploop_find_dev(): treat ENODEV as ENOENT on /sys reads -- use basename() to strip device from path -- ploop list: check for extra arguments -- ploop balloon: fix -f option processing -- Fixed lots of memory leaks, mostly on error paths -- open_delta(): simplify error handling -- Fixes for other issues big and small, reported by Coverity- New functionality: - * offline image shrink support - * tools: added snapshot-list functionality - * extend switch snapshot functionality: ploop_switch_snapshot_ex() - * ploop.spec: disable udev iosched config for ploop devices - * ploop list: added functionality to list mount points - Bug fixes: - * ploop_mount_fs(): use mount_data for first mount - * ploop_mount(): do not allow to use ploop on fs w/o extents - * ploop_{create,resize}_image(): fixed size checks and rounding - * ploop_create_image(): fix memory leak on error path - * ploop_get_info(): fix reported disk size after switching snapshot - * ploop_get_info(): fix when ploop device is not mounted - * ploop_{umount,resize}_image() and many others: do not return -1 - Improvements: - * much faster resize when using resize2fs with EXT4_IOC_RESIZE_FS support - * ploop discard: add cancellation support - * ploop_resize_image(): use real blocksize - * parse_xml(): deny processing DiskDescriptor.xml with several - * do not auto-generate dynload.h, instead check if it's uptodate - * create_image(): display error message for incorrect parameters case - * introduce/use SYSEXIT_DEV_NOT_MOUNTED and SYSEXIT_FSCK errors - * alloc_diskdescriptor(): log error if calloc() fails - * ploop.spec: require util-linux, e2fsprogs etc. - * ploop.spec: require libs of the proper arch- NOTE: this version requires vzkernel >= 2.6.32-042stab061.1 - New functionality: - * switch from old /dev/ploop/ symlink-based to new kernel cookie registration - * snapshots: switch to schema with constant top delta uuid - * use /proc/vz/ploop_minor based interface to get free minor - * if ploop is in maintenance state, try to complete it before doing snapshot/resize/merge/mount/umount/copy operation - * ploop mount: use in-kernel I/O module autodetection - * ploop balloon discard: new iterative compacting support - * ploop balloon discard: implement --stat - * ploop balloon discard: implement --automount - * ploop balloon discard: cancellation support - * ploop balloon: allow DiskDescriptor.xml argument - * ploop umount: implement -c component_name - * ploop list: implement - * /sbin/mount.ploop: do load ploop modules - Bug fixes: - * do not crash on empty DiskDescriptor.xml (libxml2 workaround) - * ploop convert: fix converting from expanded to raw - * ploop copy: fixed check for opened fd - * ploop copy: do not leak opened fds - * ploop create: fix gpt partition creation to be 4096 aligned - * ploop create, resize: round up size to be cluster aligned - * tools: few exit code fixes - * multiple usage, log and error message fixes - Improvements: - * ploop mount: check that mount point is a directory - * ploop umount: reduce retry count from 60 to 6 - * ploop umount: print lsof output in case of failed umount - * ploop create: for prealloc image, use ftruncate if fallocate not supported - * ploop create, resize: add check for correct block device size - * scripts: de-bash-ify - * assorted code refactoring, cleanups and nitpicks - Library API changes: - * add ploop_resolve_functions() to aid in dynamic library loading - * introduce optimized ploop_get_info_by_descr(), remove ploop_get_info() - * replace ploop_{alloc,read}_diskdescriptor() with ploop_read_disk_descr() - * remove ploop_getdevice()- ploop copy: fix data loss during migration (#2287) - ploop(8): fixed according to doc team review - ploop mount: tell about unsupported underlying fs - ploop-copy: improve usage - ploop-copy -s: added mode to copy to local file - tools/ploop.c: do not return -1 from main() - tools/ploop.c: fix/unify working with diskdescriptor- New functionality - ploop copy is working now - added pcopy's send_process() and receive_process() to lib - ploop mount: added -c option - ploop(8): added (still incomplete) - ploop balloon discard: add --to-free and --min-block - add Preallocated item to DiskDescriptor.xml - add add ploop_get_mnt_by_dev() to lib - Bug fixes - fixed offline snapshot creation - fixed race between register/unregister_ploop_dev() - create image: if fallocate is not supported, fail - ploop init, ploop mount: fix -b option value validation - ploop mount: fix usage, -d is optional - ploop info: fix usage, DiskDescriptor.xml is required - ploop.spec: make main package require -lib of the same version - fixed a few ioctl-related error messages - ploop_create_snapshot(): check for number of snapshots limit (127) - ploop.spec: do not own _libdir - fix SYSEXIT_PARAM value - tools/ploop.c: do not use ploop_err() - tools: fixed/improved usage for many commands - tools: do not forget to print newlines - make install: use /usr/lib64 LIBDIR for x86_64 - ploop_create_image(): free disk descriptor if fstype is NULL - create_balloon_file(): fix file name in error message - create_balloon_file(): umount and remove temp mnt point - create_balloon_file(): fix error message and return code - parse_xml(): add Blocksize validation - Improvements and cleanups - ploop lib: add visibility=hidden for internal functions - tools: use parse_size() and is_xml_name() where possible - remove merge_top_only param of get_delta_info() - ploop balloon: make it accept either -m or -d or both - ploop convert: change -t to -f - tools: unify parsing -f option - various code and headers cleanups - setver.sh: add -v, -b, -i- Added ploop_get_dev() function - Added ploop_set_component_name() function - Fix: do not clear in-use flag in ploop_fsck() - ploop-fsck: add -d flag to forcefully drop "in use" image flag - Fixed handling blocksize for raw images - Added user_xattr,acl to default mount options - ploop_mount(): added ability to pass MS_NOATIME flag - ploop-balloon: add discard command to compact ploop image - ploop_get_info(): return old info in case statfs() failed - expanded2preallocated(): if fallocate not supported, use ftruncate - ploop_resize_image(): Check is it possible to fallocate before inflating balloon file - Fixed merging all snapshots - Some fixes in ploop tool usage - Some log message fixes - Add function, source file and line number to error messages if DEBUG is set - Build system fixes/improvements- support for variable block size - default block size changed from 256K to 1M - ploop_set_log_file(): make NULL a valid argument - logger: introduce, use and expose PLOOP_LOG_NOCONSOLE - ploop_getdevice(): expose - ploop_store_diskdescriptor(): fix for a case when image is in root dir - Fixed expanded to preallocated conversion - Remove some unused functions and non-existent function prototypes - Introduce and use SYSEXIT_MKNOD error code - Changed image -> device mapping schema - Use strcasecmp for guid comparison - Made ploop_merge_param.guid field const - tools/ploop: remove -b option - tools/ploop: remove unused and untested replace & add commands - Log/error message fixes, improvements, and unification - Makefiles: fixes, improvements- initial versionrhel5-32-build 139656311299999~1.11-1mount.ploopumount.ploopploopploop-balloonploop.8.gz/sbin//usr/sbin//usr/share/man/man8/-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tablescpiogzip9i386i386-redhat-linux-gnuBourne shell script text executableELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), strippeddirectory  RRRRRRRRRRR RRRRRR ̗x˕nBLsystem_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:man_t:s0?Xn0*Eڛ–-$:P,,~CwB;%)IE7czMߣg~vLIzFs̙վ}[jޚO꤆ߓ:k_GV#i9ֲ^*A\(N+IXRoq*gZDS+ px,Ij咷 ZQ$ i(`,T[0S ԯrnwɶ[G:æm*<$)(Dnɶ^O;{#=^akk{eVaq^5JI߶/v[87&ӪRMc~Ȩ J[}N&F^@30u}%z~Z;MgOID-[ r0`;'GCص&C[2 x UVF>Z֘>T{ n c@Q(fۑl"[JBP_4mng1H9z_LI8Y0>lB~>錨>d X}ZYY]={47rrݴT}:# ƳGudUt !Zތ(YeUal  +Z'"k:RΊ7Ly>*⼧kZˡ#,j>g uqNRcYJ9\lVntU, Z6\b4,wB\__6m g)SM[o2Yr̀UXvdid̈. n"|% P|)jN\xšL)(}n5V|7|ϼ Gӏk߆Sބjr$y)"Z}~ƊE 9MS(:YOV|riyoE8ã 9=dW 'B'At$5XZ|HZ/S v%Z @Ÿiw~r< {Ro1 ~krPsVTޮT1kӷ HhoQ J`22t\8F_\UrwݻWʾJ/KPzXZ*5+`S ǟ/}.i8^#ұ} ͰOŶRI6e '&?p,l(d p ZߩR7w-O|*w W4l/N-\oLUesrpeN̆/%¥)2 \h'%c6AD6g /La!βy//~Ͼ߿m7FwnɏOj:i`㹺gV{eCњӣ4@_KKBx7ɿSawd,N&&h Fk^ij~y¿?i>|6:U4U*2*.ۜ>y%z ':ѷgC ג 󼉞K5p {*Vb|wo 8_GkF{G4yԫ֜/WEc*g>_>{4Lg^ujy<_?Hь|?S<ɯK~jy//OÊ̤z|7΃+e>AxD9CYfi|\;L8¿ ϫ~".ߋv$+}5a~,>1?<%ψ3ʄo4+cIefsgnqc|{wol9kaG#FLPƽƃP\Z;x<W@X#vutJ hީ}7BQ+-ozF\(0 祃tª]V*fF axee#iU{ X#EibhGdbtZgδXt ( H5q4!_@F4r~-WN`,p.X%_TZH@V`(/~qF8jw;Y89_zUFP{#J=W!o%;Y}%-?~7T^l""v,8WNL{exܾG.Ȍt;Y}f|< vz[U,U2< ){MTfl.MaϿhIMYkjf}vIH_,v3["(~RY 3PpPN;f~_/@i; };PΤ;rvI?D]Kz(Ǡ pR/Sj7P灗˙ 8O΢+^~|9c|xRWK?f: WPA45ǀ,).pRǁ}Nr^/}pR$@IPqM89CΔ&xRrP \%(\-JJ(Mt=PE+(r*Wy[V4{54[krnJ \+Jxx$I %$%?P]$@i2O%%Mf?U|D.dr6wl\| be W,Ņtu*?\ c!rdF=*Cы3 R"G&U(c~ 92KuLɑiz#rrd!(?3Z^#5^SǾGF.'Gf]O 'GO=O{Q?92ZgS?92^S?92_稟@Q?9*.P7*'?g,y?K>c3C?x?xq| ?x30H~_Nc2spE~/0O>S?9*P?9*MXQ>'GӽOJQ?9*R?9*~rT8=Dt8a'G9'GcOJ 58*w~~QׂB9YrTJ=S/!Gԋ3䨠z9x9*^A䨰Vo_N/ G|9*Wz;W.'Geֻ~'S?3?g'~݌??S?yO{'Sp #cx2灇4މ q:j 鉾?W*,HfMIm㦣}slnK퇚^$ZXܣ:╨Jf~Kźn9ro`d־yJ }gvg͋񷓬y@u=\G2?oңٯ͝Z͖LP>z#~P2W˅Uc/Ӝkhm?`M}+2$X] s3a|a$A8k +w.gonqiZS~qYΣ}?P9린_Ri>q쯘¾~k__iе} J9)[+q[k_V7p_sұUw_~];S7Ucw?_0Uq?:sn3cY̾c%:[}Ѧ:\5d-ƭ#^j(xplDZּIB4ِ,$]NZF/j t >%6=bnC8Y`?LvֳN)H56OÒ' {emz aχij)ϰSSX˗`Z~'},BIFhYǾ> }/ p)l}D^7tt@\L EN̴Uo\[S/A5RGu"3c.˅:׎ "V;dX_)MΧwTˠ|_[Jŕ%f혓_F*ug'3 VnJ>wղnxvpvgH>Jl2~H̥%t=~:x1znUW{GHyq_is>+rsy9+կnGQR[xz<wcbzN & [B,9Z8Mof{< 41\arQÛ8ZZ-#O.~;24s0Q-:;V}Bxx/ExU+ꩳ~ӕHY> ?ק)Y|ZMhAN H IIjR*XAz5n!=S]Cl鲉As("B)ZmJQClLDcB{defwyo|l6/ }? ʹ=%WxL[;B"a.AI"\6ju̟5 ;&QU,D}e*sIA 1&oH.GFiܪ%z{ܥ-L!_X)ޮP1M6_*z c >~vPბD ܅=4qRaq =UmPBDžbEjÌlJG->-5:d,=:c^[e[BDV^nA3$TV3Ѱ[[aHWI khx!/ؖul`-c =1p|yQ^妻| a [M{@7v ~QYPN<( QeBCU$(G,M#K? `3)i$,Qz'5tiWJ:6R`mgQp*1D!-he }n`ZvitH &p>c7Gxtds,`ĺP} .)ovn!N~f@O}[]{W6~-R(ZOhewD'҃B+mCV*m㥦4qf8AXA:cJGHsڒ S;0EΑ!gC5(swJߜiL)nz~J<8< |2+BMKCcȫDžV 0a LU0?TK[Y.=牱f7;R= tUd(Q.!#@II7H(`TE}.oW0/?AA@`D ȆWUvOwhNw{nխ[6Fi2x]L6{X\YfB<XoVhk6xƷhmܓ>.Ԙs@jNk˕xĮ:IN'?4q{LqڧYk:~w0cFVpDp$ZG5i0D~֘j-13{i:dfnAph>jGcVfR8d>"6PH寢jpW.kYgbB?ۙ,Ͽ_$? B0\4 (R1h/b8ݟgJ2D[I& 6?әlXGc%_q'eR.O \ yFUϋ:p5,~4l |cmQ̓]c1y/l 0(쐇A3݅p"$h ی wLu "~FS:u1m@ ~&Oھ>'+iJt2J]n?]8'sߍlkb8>mI\~I-0/&_ex>f8[) W!Cmb}#"'`pV㡳f:[)+}VY^ `F(Ɏ#xuf)Joߣw-N"?RN(w"ZG㐹 Q$hxI'PJnjU"]G_givܼ',ldF%#d8$6'XqJIg>㼒Ov\PˎdɋVgacg#=aȃ6cXhBvr8e wy'߻K7+ٷ㠸ov )GVA*dt8G29P- )TV2ZGu==a+BUE#^qP:~v_v;ĜuwL\|(;Qow<&0P#>_R+lҷB_y?]+Φ`:)21P?Tx,~zLՅ%͠DxyEȏJ jXX.&w,1 5L>0 Χfϲ[hTQk9. \ڄx(f,Lan7鞏z8Tc:u(fZ>WK~n;k')x<]e ;"{%`N&D8I1C_<~@xTUki c=e&>C5ӊd㴒~,*ʧc-=:GFd\Z8G$4a#MN5b/4M0jG{xJ@ª)FF {HblGC4Bz2~8h'Jú[[X/(0K!wAhb*٤ZFo ('1j1l`amL:ݰ}-QPB9|io! ߊ%!: M}FzQWbZ]4(/b: CDUª<\q4vF,i~ˀi㒿tD\0yWv:N*;DA 8h\(0ψW|^\{~xɉ頔 KјC߅'\d!uٞ!٬y s 6- =?Y-!w70^ Xc8]䉻z@ d#M\őw![\n=Ip}k~ h {7%6Iv):`:%.3oP~X5FFsMڽiFYE)V镃%b{"b0DZ σ~տK@ҁyחPKWW-Arz)% T,ԆP)*wlf3m+.Ř(wX6ٱ3@8z JnR] DÇ,h72ׯ~@ h΢0aXjvZO6̴LS|۽_34eJ ht"S=* VWcH4yx`Ձ=ARpVvot3?^緭<'0kEEZqlU ʝA€9uL#C0 =YJ!6m?唱Dyס MZ^=PR+nGBR/>oHn[a0i=xپXA4`XR/ ϧPvҼ)uL/B(ьÄwPfŃ@_Uv`{}[,ÆЎT袶uCGE0rٸ3b,o Ki*evJS60q`M^jgWgZHY~RCFAO?2&B !-񞿯]UJ)|+W]r+PWQC*tuĠrJޘ؀kILͻV*6yVV<')# /4i5Hߋxs 3Y3Oa9 z,m~ų֙ ll|cnP+ALD6qlmJsd]䝽 Ճo z ub5؈߅[C[%lONelh!j\9cb>HX 8 esp0o V]~OS>GlQu|k[F?D 펨v)FA`%iGz*T- ~q)uƩF-[U$1իU=Go,fYi/sj{rH. 5$~t_F-"/J_~'%Z+m%1\r"2jJ3*~jq%ŬcS6KĄvD~rn҃⼌]S{gW_"=eP ϿVo_Go\< ԙ}mNG/Fjr8WaO뉸K'gaPYCZ{v?kms7ۧFޗJ_jp-"F-mA̙%WGcugale:}9xDiD|Bͩf",.s0&,i[hW$u38[4 n>h}@xEUdc+x̨3Xٙz)^B+ LBloFBފhO1„1C<ڲ0i{l F7Fl>&\ʎ!pd_b:w}`d+ȖDhQobY^Z2}lݚ#Ŗ\ ٽ⚙l20߁ BXXLz\GfXДLƪFRi̝HWqք93CCʻ5uW*OS ?Ae9r^y!޻p|/OU4bV\/Zʥ7uaDށ4 ӂ)J\xjC_%{# 1蝊1JVbZg.dɀL/xQ fĮPNQL#} NMO133Rv rTa6taJu loWEЙ^IHkJ%Rnrn >NϪǃլfDʹKvd`JJ@kyP13ڔX`*/2eWڡLL<}-? O_ef+cDl-^V?ɑ%ff.FL [$>@e)i6|;0!Z5lq^޲ q h{E2R9nP>`F-҃H}=."V~&ƤiOLKf2yƌT,@Tbfr#i)l;"'j싁)F &!H|QS~. -NpiI&Q?DR6r;2͎g f?(>vrjqPv`v\A~^&e"p#HSLǬIZÔiEp3ǚ2+Y5Ee*/c\אdMO4+j'T^=},ow5k蒡t"0~G^jk!}J0Uj VPcjC&~*;?/׊kD5/JX2: SXSLsV[iRKsXUh#}iGAFwؒm}tڌ)IiȏY3'MZ+|+~$tuE~I$)xS `PZ S9iWzAt&͛<屴bgkat*L;.Gm[6Et9B ѓ3_ fn|FϞCcӉ{ ȩmHί~G;Ďd=Bˌ.nn~*۵ Z󳛡 5'8*6>/o(t1 KH#Iv聨 ]ȗv(o+]ӄ%财kk͊P`úEk 菏MW6LbY"66SK LL 47 _hiKPlyM9Ϻu1ϐe\-㍮|V^h\d sahIr V~4c  zYOz7H+PQD"CfbsXO&q 1T7-p6+Mn.8N]s#hH)a_e%/I:#rqq>?*q̫x)oGbgF=&J ~˕A0jtrzqїOxHp AƵ&&x 7$vMi|LT+KdiL Ej\-4)].CL]W{J+xL g]jZ^Y6_5`@5띁MJV,f\>7b:t{~z_͵: LR؊2TL8{S)yq8VJz R /ZyW/2\OK0ޭTg,J"%I幌`!g`q CU6mk7HKedl"Zӹqd:<=j4r|8lVo*.]!94`g9Ǐg+]Pi}8pU|% `8]mLtAJ!UUmm Ö8aT2>Ü|qChSX.q4DJ."·uFEIQETr!;{-Ώ;μ;3y_f~Z['gM^z[E>==й`])ŷwwoyu {8]ND -13X4 eY]E"8+X_8Xi_`'@_C, 5xuuuv5if@YyS)- c䢶Y|cl$4Gr\Bq]f\1Ǯb'ge'<\D8ZhR &gX"t9D,xD$#ZVsc'd)P6ľȺ'BL*ߏrTbPGrD\:,?ΐv&eޣERF`$;o]N*I]G 4K+dnѤ2YMI!H&ijݬ4﬚xf5kDAKX:Ji4$gy2¼1pW t2Ag)ƽ_16Nn3fmTSI`W_ӱ\+'Vh_I1, l5x. u)q;ԟf1`OQֈm"J7.$=EM1&+8Xǽ^V'U ϡբc';Ov|{2j#^omD؜h5V%1BG WK<\]pbÉH fPlVcL\ZFu=< rLuN (Rn^WW #'~wvtZehDdRQ<N CK"@&=,tF[gԜN8#L:GB$KH$gIG}U"6oҢX !2M&wxĻ%>#]T.ea"[My_[:&I@)ttr4[]S"-N:33BƣߧkDX^/dGS:I/%ɝm\L2u.d#-Bn;OZiFNNllO73<0@KOϒ)O? fl>Ms5GNl׷{ {c~\i!͙KIfDaf1b̬kƋ=Yg<66eelorQoijѼnq"[wߟuONPgQ!k`.g6HhIͫ,9`֔5uxv5<勜*M=?6x \UVɻ>=y7Wer>8Ou0v7`8=p<|? xn%? H~/+9c9瞇>x_$~9J|<9˹]Ipx*7p=} {Uw=ut~Ip</;ߠ=znp ΏO'=2x |^WY*EiuBݤf-.]!f1$9m2j#?-lJNoK6rDT6] ~FN8a#%)޳wCn#O@T> yF>I+߄|HNk,@ y}!o|dDurjHEiQ|w6~UQwS< (~l 5[d#m= y66Fث?WToPy)m`./st( d =OWiG-{(䴟nZ18*2?nQLj2#Ȼ"653KihEQ[N3Ӑ-v*԰oDnK[>zݢ1D9P2җkchaA8,AD#}X,sZFmCE_7 4 [jvFzz\u(FC"uPԳ!QeXݍz!B~iFG؄H1cE X3v inVhOC>-r*AW=3Iݷ _PN +-`e(&XTQSO+dV~_+ZAQMbAgɗjKJLJ%ݣayjYy`O& GwoA\80"NJU 4H80"^@Ɓ)`` \/B@ 0L3<k& / ^ 0 lxf I``XV5`p } 4ъBhYJkpa%?]kLU݅Pm} BihٝٲOT#+_=-Y_ F]`o}CMGcAfvZ) fJ-a;&C,53S15d*։/*F yMG,ѣ0ƈQpZBcaMq}O!9QH'V"qZkF ]{"NزqbѶ&B})?(J߮3ܖI {qz=5C3G$r;I$pSN`4Iz-t2:]:c'm3 P9/.e>[B_ zlzNl^gP{P% <x<a@#`RIZ2?^Ѷ햮QPg:xӎI|cym@W:o\:$^R>.*jo~'x4<뻁X\MvAKʏ<|ҕ!qnjtyT<;grfs=#!] p"`PH#H;Tyݒ_Yh-+1SSH~(nˡ/?baFr4ƿ%Pph%4 IQj"kMlf+A~C!4iuoAݬnT% M>A[ÏhsgϷeQ3}=&'9c\# :rZv>8>s 'a#SsӕU WXrsϒr\q"0@;A ܨ%=@i6Dɂ&P? T xJx~&à(-f4w$$Ai/ :8 J4t:KP.ҞJF/4Z_ t1Aiqp-^m,@?f] GzA-I '丛.@/SDN<"(#<")<"*<1GdiF=@3GeF:X<"/M63 G&sGF#3GPZLZ(.@D<2'v#g?ȨhbGfE <2,iqgqyd^dG? ,V˲ϰ/گeϳ˯?L.`ꠒ?!O'?:9N \_ytTw;74&B(k~1qiWnT6%Bف縲{mkx2oݼ[۔yS2א@~؍S!KA]V3CRS*8N#z>'ONP+! ;FV%f3,-6A͠@|TςU{O 6ը& gÍ|:rfE$ 5xT-PA0Y $%חף) `,|fL{aN^KDe*K%`_ώd"ggvNLoe{."s<߆ nz[BZCkv/zZQU ?hL"wYgFѧ]`Koa@D;Z[2/D;U—eļDIWPwFbˆ\ $N^`bv>Ama`DO7>զDe#P&RlX6Txtjm-kIB5.,wOh 0'$Y/2Q>zÌv5nPR)𮄾d_ӗr7zQVME͢=S:01yKnmG4~f; ÌQm# _Oo{( D o1 XxVtoxi *3VkVjuي* t\N 3>AhX+Veܽ륑?L04DSm R[l84ڀvI!SxIjOK;8_KVSƷC/"g_mCMWԸr@ƴsDLx{Oη6==֤geO?o&!.E̽j~ -jknvNc\|vںkN%D14/<᪡졸A% Q>:"ٲ;6x;sckBl!X8ikxs[?AEC&n;5wnJ' Sr=yF|;[7{+J?/D)P6L7BY_ I7HwDS?ҤGpo& B,j &/Ah8PhD4L;|+xnt?SJPTD]b?X_rNx^ؒh5%" LI 7^vAvIiw{8XͲ}BN/Rk껏Ez Р#._ N;p_VͰJJ@~3lJԃ" pu tKBӶf/#W`/oav-a?oH0'^QhdxtxY4*QsWx|y{;{~;K}+"κֳ@sO@g sͅ`0pa~L\AYۀLSޢ~->wPvSzԮ_xK}2os>wM0>w-0r6(sYς>w,ۀ,r;rxks/~רwgA} ?}Tsm-; r_<{`Vb}tp8Ck8VM,- ڤ[V U ̃l 8ǐK6 ɾ R0fc'"DQBTP?YBX$"SJaΌ}tsw><3ܟ ֳ f N./C.HCغÜ=Ao7w7LGc } zA իcUA % dj. tgI>!YsIT~ةũ?Z[[`%l$LjJET#v 5(ynC_QKv* ODmJ7Hl5龤{n?s7 3F8gwú,H w01A `o sq800]j:UAL~au8P(xa@i֜;9?M-v P~n I(7,/6k'F'<%`Nք a5#AB3 w L'P/D4j::WBkE qۓ{Zܖz&-]~dX4oB_ڼV0D!kkE˚k参&昻 l-sh0\ A<ۚK,~o뿓 B@55I~+mL@qP"dqE0+EZo_㰆0^4ùOf+b'Z"c!):#qԈ/ EIws!>gC&@#=[(FAʟ&}\MpGow덁Z H~<] HAK R H@H@J .  oُH_ }@ :kƁ5XI}Q+sй|Љ J>,J>J>ԼJ>L8ze>$J>d,l&[HKT K^0 M$W7|sޠ~@J.^ G7LǼ>N׼ }@ŜoY"+@|W|=)Rη8DG,|߆3 2+sm!0 T0 `] X`kQfcL03 X `#lŸa/,oAi!6HC1G bj>G 74s@ >GJ`G ̛m}߼s Kӡ_Yn1GJ$z= *)&z)ϓ٘#[d6HA2sOfcwݘ#%-{B1GjtD#1)jJ(H|$2mclK)Vz,] ׀7Oww7Jń !Uy:>p& {]NoTRiwkdzeܴrP]`D1D$QJD͇?8O|0@JZ\kH@H43ոȗ>SN~]#vW{ rq ݢ#V;R ?k1ܙ27\'S ׬7w'sSL{1sEE{㋦8hU|7{-rg5 ήdق1B"ŖPzyڹ}pOIr ?nN%'T3*#"ek1;˜VLZ(>)le~>0ϥ"$f&hb{L@uX[NIqӬ{/}0_)A?>1* ̽S&&:sp,lћfeuf)}:lw8xy|1 EqSH*U[Dg&v}2ۿU<ڀތsQ zĿjѯMgvO( ƺܧLvrQyZA5[&$B|݄<`*]S|e[S#vMO C=Y^uAߵYDHƋw2|c-Ę]e;$b~-qasHݧܴ7tm"]%r$=?`y3>nnU O)) |AsQ03,vйQR} _A |e5ھqU5u6mSȢLt"I/-)]I#1}4O BIydgtΟeO,oc)1 ~90jkzLRKcKe1pk䅾gzϸCAP=|4,;]Z\Nu$Fz,`9ɾ#ō޻%JSjk+Y4xzXku'Aw_GRA1bg>-U(Գ-&oq2;KS۳ 76{^ӌ@#ddžW0| Ȁ1p99lu`f&fǩp[(ՏFaBEV ]|=RE/wӄZ yG,OĿ O:`)Wae.ϓ, y[k q&C#dcAf1j|X .T(5a7EۭF|j5gO^=އ4 Jp J#ɻ4V,g@qtHp[4+QaPn Sj35@h7|3eNkFl)zY_JqL| 1eڼ٪h4=-i!;$̧(8j_ڈB؁ΖM?|ڃf..힥/+N>_3XDJ5q*5xKj:Y%j)CCPSKΪg2!שp,`3ݶs#imɵaUHWw5bz}Nm'^ZdO rofY>sؾc}"pK1jadDJ726sUnec00m*.~ʺ KW˘2-QR:Ū}4oG,n~r&^ێEu]RjpMrS4Q)T|X,lD,j>\r# dkx$C H,:lJs$TZn퉻x Fheլ|Ü^‚+&9_vxUBY^c񌜼2T4~: S%iFnbulag*OCWߌ1].kΰyJF?u=5{#kܟ{+fWPuƙsөi: B7w1JLwY3m/ w K^bv_TAfb4xr?f!zh,4A)u1ޓ^V02z{ӗ(Elwp͋g5 O5 FŇ:A}-RF ՝j~,'? ~/L!$}n,eiq9 ijQ7$?507SdsM|g\gVy>p/wz!֟ڷ3BΒҭĝ;;} 6}T3uZ9Q!h_Y{:Θo7QFsP7Gxj@Śd=ek?zx'Vzskm|I{Dž&]|ng# ۳Sw/V ymX <x<1+:)-9yHRbWpK!1 VK-#W:jrU=QW0#SA=net*~r牺"VWi-X@Mtla0Hʪv/' ċ(T-6U5"'Hg`@l$J?ilnf8k]O 9-'3vG섀NHp^g.ozSjiײ[Ǘ)la|ٶ,c=pxKYNV;N>߳ 0| pO,y;e'X_aјLGGG:oZoA7(icMR@v+J;W±Y|iElWAt e >4c3;䮾McMEdnK&O[l%9$\ZP'zgZ,="k3gFwӊXmA8Y&LEX((Y<>z\+%AަS1z!^ V3ωDpxʷ)- 4wZ:%RCԻm_}p0Suu.TEF]{\rb\傚"*(kv1¤k1WmҽRqq҉M`xtv'X*[MN3/35}ddk֙Y9:FÆB_%xbU5)k TH>(%x7ٳ2VuL K/ǫpQʬ"ӘR3RʾEA.9\87,(]Vׇ"@Q),ɝ[.%\KGOm֌.PR<.A [?Nfb^iAFw}_fCQ w;.H/z>#:6cw yu\j:j"rđ郐F.5vйzmޤa(8PD6j!Jskfiվt3yl+}IèkϤN_R(JHϥ;y{0?ݛ^\nV:1W %svC;3kcJJBIIt3`~,̻ۦŗRAic<h 嶳L78ENvOfSS-$F=(_ًđYiekb89_7N1_/ᇶiQ Da:֑)nswNT K<<qȑF@5'a8@eur2vNxtbЄ߬6R W8|5mktW pX iZ\Y]wEB)dE"`p~pB vXK"9i2mǬ’>BmM~U\I޿xi.Jfքw+Kzޏ:^OlisΈ T7j-,D(Sͳg+YhdNEFe'(a[l_@m4r4_EB))gfͲ^ X>g<K?x sĚ sIN2Rh7dE5w, "wUz>k-C8yvp_ YkSP Z/FZDbH&"5Q]YtNoWu93)\#@F }IVWW" M_IC|~Y/3̪rm1s3P6l\_o~.\`RZll&wX>޵!=ilq:wdIgKD%6pZ;9nL_Bvi 5w(\)J19#졑Av!tʇ.:~(ϛV }#Cb9$s^\Q=}ӳ$avp@Ovüfr2+rA>C/0+եMcFG,CwmJ(ϳgczl7B">W;K(Qɛ1̕#M,.zj}HXVE1\Xt9>7AҤSh\ /hN[!`pXϵ elfgh$;kkL6{;_kK]/Y8Sa6ExT`/yҌ{;xdT/z45$>mjhc0{W^^q@gFsֈOًן*G`|{Gxn|'vDa/xًLRkZ=)D{("ŠsR̘>NʟRmsz+clU 8 Я#9RˋQDmHoʒ,dM{B1ʻ0r=O R2/ +"c'9Yqs]nKjؚhJ|DƝôE!P13g蟨yD=*{'OWQb0R)]\'Ϝ|QDL<:F?Ǟ?Bu&~ʋ`l(EQSRBxi'iක`w|ۼȇyCH\B|-:6r>!J3=Y ]H:|C"3{o:)Mʅ{0} h#c̚ň66eeל[wz%]ko9]N:0$fw %3+*k\dbp/H1U{({O] M1fb^g2f6~m7xv=`Ǻ>>scda“X3=]&T?OZ =xUwfVI-RT/ -VH,jͳi+ Lĥ jUBpU IypGjۅݿ-o_j_6Ya `٘4lYC^Huwt0sOx;ou (r=4\R峘Þ7P|"w{vӺR${JB<9r=8?֟N|6jw䜌ֻw\8G3uٴ=v)NIY]F:X7} ϳ(`~mzJt*"`feVUB&(TV q;2- {5iU2WmmyA6GE"(+[cj?ic