ploop-1.10-1> A AlpA?Rwْ Զ8Ufqk3xwR$hl6177bf83650c78c7a5346975e2e15c27b434f896c'(Y1I~?Rwْ Զ#JO/74)z'nF"|7&6<FT>8B?Ad   `dtx       4 ( (G8P 9 :? F>G>H>I>X>Y>\>]>^?(b?Od?e?f?k?l@t@u@,v@@w@xAyAzA\{AlCploop1.101ploop toolsThis package contains tools to work with ploop devices and images.Rvrhel5-32-build8GNU GPLApplications/Systemlinuxi386 d87d큤RvRvRvRvRv0c096597ee9709f45d72dfb731ed6ee0fda7eee861580b0f22329684a4eebafb9f1db06087bcdf448862775c7d7a03d81fa144d74cbdbab24cef376ccbaece5a79dba4ec62c1fb558eb90dbeaeb933berootrootrootrootrootrootrootrootrootrootploop-1.10-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.10-13.0.4-14.0-14.4.2RRQۦQk`Q<`P)PaH`O`OOOjO^`Kir 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: -- 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 1387230905999991.10-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 /e ސ歑^Ksystem_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?X]lW^$N`< (7nc;ıBcw}wԳ3Y;N>P~+!D HD}"A()TTHs=3]NxasϹ{9=d*|ӓ~ROiSGv'ܼa%*vUӶxu$[V)ȂKKl^ D7r.V^?6a[U&d*'YPdK&d6u*d!$Q*{.q˜UafT Nfgf3ᮌ0Uv*&'NJrzfaz>Lv~rfz_r3㜙>QŮFuӰV`Id^!Qh^Uf&Fal: .%s9y$5GFmR-VxMwaXV+԰UəQ);7:5Ѻe0%V&Q$zA[UI^Utxef)(+mlj+Ѣ岢2'oL;GbQ5tLÇPV5 LR*u\xy]&QXF+0\ρ*5k,ʆetmZ*dL'ۻ-)Hm(9JԌJVV R0}p Tqj'H'AF pxO_+*F1rt٦k B,YȄ:· B&\a^ͱHҷ.b;={oݶ"KL(P˶ qH]""IgYfT]b^(-E6uBsC%"ԟ]0< ~ա6pVаR!E4X(c*a0wdMZ`zRM/e:ԩj< #nad2]Zd'a{(\"N/G'tP \T!ErƂ:uAVمx҉Mqx/`:Vވ̬nNtQ _6JOEɚCUqW#,iw=vLa.-(q`Q²ރ8 u 0><1'4vq E;UW{y (?>0>}o$( y'XN:sò"ۼA`q!2L#=0d%afȄ8aUgbeCTF2&* YtR%FxNA,H^̉{0׷z'6؅+w!E L+ ZqyoZr5 `Wa1QhT3l bm] Vdù,ӵy x-}$ u(IS]zKM BeBM6R^#bU޹m|7S<=qnb1njTxq)BEc΂2ca:A'!z*6B[5y-.aRGɍoI%6 {oþoZ߆u" @NNψoo}?_tcY&SNiO%S6(܈xoa5q#9ܧW5K Dk]ؿC$}*/i)Ďm0Pb\}89w; 6ub šس@b1ԓvƬc {tL8ȁec Q8'5:Km_ Fƚ"iֶ>H[+X䓑݂:@b.ij2^9У?2T #N|~]'vqZ@Q ?o-q v&͉OB=Exo ˟yo?Mbca.];}{%:/tvq|`ۥ37Gwwۯ߽ο{^h{>hc׿?u~~"m3X_G(|"Q}F{fPn {? -|?.{q;8?}/P%/"-G{7F]% (Sqh;x8ϡ|h䯢k^h{$r?U!?g?|'O# 'ZGOaݒ;Qk--K'PC?_A=9ןlYMU.e @E ˏ1@Q&ޞ3ݓ]6Dc"Ebԃc0O!=pH `A^L.LدUuUzUu+9ON6*?Gg^&nMʷt?VJ/UyOmJVJ7ޫG7RJogy_|V~ܯ[T~ʏu?;J)\oh~Q}h> O/?UGwor9_/^p#'1l}qf@|_;VokNyCϞ+W/oK_yӜ0emYw^9A+Vз 7?ʯ z^yҿMvģwhW[rcDC>R^, ?Dy /:#OCv+u4 kŘZ#Min#a-PYf⾹U:z~3MrEu4*JbvuVu( scaGT 1t0vQaZ {Ԡ~&L$+ )Dq51#Vd}TŽ Dѽ-_ef mNZQWw'$!DFq9a/g ǂFST0tvGAM3@hu}ExҪFJb] VL ~H?F+NPufh1)Y=pvw&1*Ql6W9*"v@iizL ltdQ-<~pz Gb) cH,?'d: 6 A081| bv_i > BZp7#rԑotѱ>, ٌ+aW?ix Qu* }$<cMQr&~`FGz  3Fϧ`͵*DŽ?2wφ<] k1"?aM3:^@2ԊQM҆GAE̅K 9+&Mu<9ب}8c|ɞ;vu7tuw 5a+xd_O&/^W~W:]hWӌ-u,Kj~}_uh,b[Es[`~BKLzuE?])=ҘCti?'\mQ ܙ]Y_Bf>NOD3"l$Bi"-Dxv{牨!£Ddt^"(f!.B?@\,rDbLD= %bD4D4DԒ+hp7$ނx+jjm""N\)xV"UwejjVnU7:XcoFϨ~dNbb}kG~V`lSU^qN7]}yX;޶}X;4BVlP< 0k0 jJ+Kc2j:+j8$Q6X2f4VlgjV#mij-VSmkUj j1\h+m=VíW\tKo>ۀ؃5lP<kؐ8k"^$`I a#XRa&59lL5A울SIbaM?b>aM?IcyÚ86#78E}?|O?{8O?3J/C",}8 _<ϑ8?%qx~Ix ={E/FxXs2S'Mw gL*յngjelz87(tWud#%ߧAoW|׬۪Hc*^W9p/tK Y?Z}ܥ7Ȕ;Gϕr魱6f0Uvl^_0Hy٧}LwJBO4Vnܯ|8]5_]ϼj\^_臣m^T_h/џiwLh/~,6/QF,Ok- UvۙPԧoġ'#z{P8_aFQ/>8Go 0{ ρLcP2\S (Eo5NteVHFί_:/w_vebSvwוjqͷ(/"yג)Zۧ!a=nWflxm ҥy![б5X"fJ8F58,a!:Vp1_ރ߈WT@?]?!Qd.٩gym:Z %\9wz>Uf({X?F-eO ܤu@M^% d߶I~{ZBbN7Ō <D F֍xyPRί'w DȽLrFDO4V}Rn?VI{Fw'Bό4K}ٚ%;e.h'gȳpw`lwh (BgQm-6y@Yرe)d9 裗 oLMA8?= ] M8!܀Wަ]=|+4Rǧ0#ݔ0-O,``r9Ez6((Z< .s3RFl>D:X!C6Q!YJSi3S A̯M@RƐs:*cF'iZ/0ctMBtqH7HYB:{K^A6`Up dCY ~f>YCw(7#"`g (KM? ёmlё6%eDFC>QFo y-F"h6{("B/0?֑ߎU!)!R2ƟCI#'+?^CZĐƢ%?622g(I5LŊ[yntb ğ4W:=o3NOi"hEV0@{UXo%IZ}LUeW A>|+T z|~حrB5x!bOÓAMj(2w2Ѷ)6uq~ODBoXPq]еV-Iw %{K(z|Rmg XxY$׸IN Ӿlx8[՞3*S{vo!)8Nqz Zdr)j\d E܂bKވzPrŝ+E!b[Fe k15T?K):>gw) g:)vxJł~ g/mˋc)CXL;;σisT:b ? +!ԏ t }~Mwyœ [`S Jaթ>ڦ&qZ3O{C77ƶ"ڄg=LS7h]8|B+tQCT%BWDW1菒zTw2|ZQ592ʀXr``,rjO >VFߪ AH ).^}7G?\qH΅@2[&2Ư@ټll$ڃޣ1$#~ȿc'.;WyhSB)5@X 74~BAr"zZI5} :.]Т%~FSPnCNaD=fwS|)^*W3;*r `Q! ۽R6ul#Ƥl'hP ֗yTA;جˢ"7 fɨBXYI[ M*=v"k)氯jňl!-YsR୼Y›yQ^q!OϞ!1,>lI`+;8bs'l @M$^_TwK}ԟ0fJ4jvhfgOi_5af/DfhQ Yo΢t˕NO:]gOHJQUNB xGLFg'ׅbz.خ=66ev11ȶ"R܈(ʹ6/#-e2aդnɬmM3_A޾nܔHtuHS>H >yhs]mA[ա<PG8B7!9}8B>Byl"O1ᗉ`9ȥ nVXGB~*B ނ> Rt̓X^t< c#=/_Eji=a{>`#j01i@0-Il~%yhLtsgssν;*BU~V^jaѿ&Kt֠ZyL܊ q +0}r!DzgRBU2&{('Av's#]ϕ ^K]S`ذϪa}!˗dxO||qnJ:䦏CzbnBxN#oj{ HPX޴݆i#㰊̜;]`( ; dd,}mT_Ӫ^ODInTj[U&k X)ݤ}c8&ܭd[\0 &`7PFPB~B}x@ ŜViu@oE+2 V^#ۇ3d SF}"}~oZb*FXq`1ˣR)~Jط ^PhL1FAry-d;}=\\BrIHGO$Jn?[kiփ6^̪q:mWq{zOL*voR\ 4G?Ag؅5m2Pe |x1٘ Qڧ7*O_AD̳D٤u <+'E(bf38ti/rCn8.!9nyg#E7*緡Gbt '냴N{ u,q|*a%szv]xLo%r]?S&,}׊3uQ]oI۠O:u;2`.mE)R+׃VK">5 c&-48 ]AW jvr4͑aD%g6jT}^˝8GRVAcX$ TEXaձig|S#x!~q@.ĥ I˫[J$vmnMXaו5j6(fՑOEC Qb'P/M/(d=$} pT%F I$?YAI")ҐgWRLDB/Nǖ1CI!NkbtXv{ι}X݁ν{={;O <gi(Y}vlto7XGxmS"8n coQX8mG#z+ı 4bUn8; E)Ao_ fFyf#hԁ0:hsWwualfG3©|o?3,iQm6񉳛BzLLxL瞳6Ia\)LiaDBg(9t'bp`{6{f=Dh6@aݒPB"< fs Ê.g7;]eEJ ݛu_CsUG=9<2F }5h]~{Dd{_sJ.:*^Cd܏$#p}N?Oޏ`1oG7sj: OetpV᠑Q.Ќ]E 1 Rנ;vb93BzgjxFby&NXwǥ 3VrdxU8qZ7am.J-%twya 3Gdڃ^Bn;F#Gj@ u_rFc7%M1 ~_dB >|)M 6;Jq*Fe)2a ضvb'cݬcax&Bl8U{V ^n 뎠AWhpv ?y(57̅P2Wg~Gџ\lez{cJC$rτ8ae#$ԗF!6h~Ш!H͐FJzK>@Zo[&G"6|sfk `%q|x{qg6Po]0cO^`N*# G1(+D"y {`;;PCƽ @shy߄VӫǽXPtP/e͘&zfee#B^=sl)Y 5X=ʍ0=1r;@!h\9.БN"q;0 qROQ|}'lz;2gaT%CA:R0BZ#"d(7z/WGiB̺@2̧(|q(xocG |jrUwU#^ŞM1_]6m>fDB<3DaU0cO"DN4he&C%2D5DRM"<T Wm̏6nh[]KRd*u#(T(i$T>EUMb`vce)/nJMgkUgƓA ;ӿGq^BQg#c H@=XatX6:QѯZU`'nÊ}hOQ޺;Rq@(#ZȌ~^MCTn: 3+0 afpsL^@t3Q*ʏ !ӽZ2>(ĝ_Da` ɤ9s`uP?KYƇۏC z!%M,95?2݉E3 (ɠ3g~Oo:1p)%Hh'y/]]]*?Dp ~Y1KvX̀zv(cwz% E < +8B#PVq+r8vd@l1?iBy4CXIrfJob)Dve6W^oގ#.)KG(oLG,L?%Z/.k 0LvR'O!Fx,MoV&pIIhģ7}EFJ+>d3fzF v*pC[j&%{LP"IY-b{JG~R;u ZUV8,e6A45#)z ,-U C~MDqf9fz&.0_i?k-&֚z t"wD,a>]e:W1[K+_:z=Jy.y~#O$>5wO. ">11)ZC8;ČY)cB=+-=SaHkhwђZ=Lx@R?*K$S e A17\iJbe'--ruCjåT`Wc6XL"tE,oKyΦ$V$q*<8rc mեJHN[ PqI0 IVVGo]JMw&~A_4[HR͓KDE7=o#ˋbmBrYő[vo{w> a_*ea`%qxBӦYvL+/(+ KVGזJP^P&a*&yVgkUfi~P;@XU%= H,GW7K=L2,dI{F.꘿'q`6x,ia3|,/] mS% - pIMجWRmz7Q-suc"㹏n%Q:D3 Hˎ֦jW*g pEMj 4y#VXR}-fXLDg N! mP1 aidb^O E j'^BH ֪NԴSϠ=iqdZ*M[ :`O]=o0e KDQ%VYR):Tl@jW6H}0B>ΘJ4!s>p]T3~_\,zQ@Zp2c0Uf!;J!ÞN7%p]`.vfys . ~>]Bo 1Ut .02ov~oIV]$G1f;T$bt7ZRpP~ jN*IpBP ߫Xu(qIFQK?ybǃPI"2BQP{F{}_u0gl .j$uNR(ڗu^0N@JmLtD)&Vz%%]_ 2.X(:N6^GYv:_R;RgD5UӒR㺕TXJw˱܊shg}~h.fҚѻ\&vѨeX;sh[ⲴR;wX`ՇENqqUMZ6kh4ͭK<95ō,wդB2qK헒 gKTbҶf ]UܯzVQGP)NOݥG~'Ģ( 0`ݢ# /PpQHj14:vX/+zhvвרY<)[ lljQ}Yv鬪:12ק ( WfX }GӅ1ƣ' >f %.Hq;Y%Eշ*+J%h<5&LX?'j>qO ִO)5W, pS|:;﨣$$m"' "KFTxO yT%~A/p,N"u֋#9Ǧ4х8;5z7=6R4ǧK8WE ИE9J5DtgOko@1\3C;E]1#p,zH2C`q#яϓ)Ƿv#,Qi):3Ȯy5^~x:mF49'?\QysQzjEPXm2J:˧p_~陪IQk<z"Oԡ_DJ>pJJ*!Rp)I@ R(2+% jU-Rv\> l ?' >VJsy)KI/J˟I1 \ _Znf;k7Ru)g\.疤.2x J,p N~*pS94 0򃔿;9 ZZ3UeMQ3n6En2ԃ Onؽv=9s ;| zZ} 1v>9`ɽ`۽;۬v)v2G:{݆=7ֶO+gʷ̜5̧2{64Bml9'`͸f sex7̘4 h,ڡ[ u|C%f㧆ʆr| uo}nl(o*j j4Ce Qgq9x{BDqm^ ս{6jz0:*k{6M9A7' i{Sߛc*k B C`กa?^2,{aͬm, }{'W}@ _/8Q$ :$Hʧ2#3o '1eptioHy(C2@e" @@ @qm$qY`p# j\PN{ @L4 ;@@yV]l[~v[ i-uBu)&HֵaݖeĤN;~3uفTFȐV 4 #E@ʶ* Q'UZǺ&Ej6hT4=swݻywp{)u?PvQ%}ɏCv>bG=:g9Sґ 㼆ka;g ke[>^X;g^އGJq-3,0G6PāVH>00 <~z @A`i`@+ $F ` fY`?@=ZN 0LS40@x z @A`i`>y}aYi πw1S?*sA x'x5"x6`\l -'M}mQRn/m=f+Vx{"iYV x7vWkb"mҹ(xV,?Wߣe>}āff=ۏou2|ϫ#ct 8^/3+ʐu*DO KǭI *OJgDum/U7a@WǃcO*z2Y"i蝕_{W =G7to =k#lcЕ[Iz|uET+.㯱!hّlGKjXOto=BҴ=Qݴ*J}k!-MܹKP=lmKv߆RennTImSDʁOVm 1&"ҠNĸ {}#J,5vSON;x6wv0lxl&5ڂ?Ve;ʼ7Kpحkfb߭c7ڇW ,%  ;h"b(R5.z߃O/~l9oy۟Z=[vUfƓo}qڕw<{w~JۯߺMepY*qzIWu 5VeT?,ψk5J|G%e-~%/M O?)ŅG,|.b2 _ P :Լ]$l?) Os51¿9ǔ*?v؎s J\[{4пx5/GlgoI+\c9$߹.^o *''K9)U2^XrIGDl8 UQ8Pm]-kpKer7/Y\BhQG}=#B&¬@`1Uf}EƚdV~3or $29:jKd-USF ٖ]>G͡{TET{R 5 n4*XߓuT}9ضү&wCV¥Eh1\^Pm] e2[n ˒%(FwI;4m_m"i6$"%sJ\%yC6C0%l(%&>cG(WueQ} % K\q5u(ǘӔ0Sg(7eLޠ܈PބyO wyօyβAcas YBR~7<͝U% N(Β8wLqǡܸ,ICaYﯹY^ y,a㱹{gI{u(:T%C?]lo(A8 m](iVɖll6-tPGL8;'a9kٖl+)^B[UV]CL͘VvCc(*&FN{{|ؐ2M+'}|~ (x\%PD>2 FF< Y"QZ(D>24FfȘFSS~MST:j#J7OmdT!*}?a%DSV@SWF?Q)ڨ%LS#7==^`}\=EgL`ct鰷zqBU9Lhcѡ$? m*}[}kݘw5"ݡNJ,BH~# 8W*B.& K7]X4ĈߊgcF^:ǛNcWK_N/Q}BH2 1=] wt C/H {'YuPV_K|ا}8U4%qI#At];H$!>94sy_"50 ,,▬4*/?dqlOW79HQ"5KD}2gk"IV'^8!}%l M` ^`[-nhr!T@cWy y@ƛPWpy_\:^Dف;Km~,ܝ0'ک3Q [D1w,K-dLEJ<ɡ)ÓpOpֶM։J_kqɮۗKve'~[Jp~NDD"\c'="<SzbA:O8(9)YX:྄-Yi \|Ay׸cNF̞Srթ%ML+4+ʩ+̞7KMk4͗S|T\4O(`mj?,ϓRYe?|I~F2ViQ΂5Iwsd8W0|T,4<*i;@m G zu"ɇHKqIf`Z9ԫoT7Iz1,ɀDkY74лD/g&ʊbaf̡rAk61I򷀎TAA~j,)os'~"so "ˠ^)HHnDgY͞Yߍ7q*b(9&zĬ ҩdrgbSI1tĬ䋬95=9D1ɺWbݜi_W ȦP,{)Tb]'v%]^zC32]CLݱ"_5JT:Y* 6UJ ^&b/0#/ rU<4􋸩Evtx"7qAk^j1b"bS6ph VŔ?́cK}3yi_Krc^~Pu_~t(K]?KF.\k!SQ ,{3z+}/CSGb^E-{g%8@z}>9̾~~~uĺOvDᣩ{ {*k_LAh|~"Q=k#zӕNGnMwq |΅=ߩ-N|`6h; ^Lw`zStO.D[zimjO s2J<۫&SFMٌb9[/6h$*6-"zz3nit[U(X {Pr@BS$;/B4M!ƉrEGM HY)~F":y_A=Ypq5WhqZ^MQ :|3dc% 'b@GX)&$RIsgP΃BCVVLKAzIY%rqTqlk"Q}{'hM/p~ Nv}_z _|}_{゚{PZ[;RWDKqhh;rFfsZQ1r2Ah5jZ5A~&]^&|{ֱp2#}W N'Z c@x i0h8ZEԢcK%q4%u+e:RUYm]u֕ڱqKUn$h\8+lml;3o3v];ÝkG;-<\UT Uˁ<̝N0FN : p?'92'e--N]0Kɫl"]óT%-.O|?c1"3G9l/#d f̶ߖLrM@OTo^& [tn[ƛ:**R4a ,D0Ƃu)%bm[[C MJyVg/I7UUsL]!Cl,](ZT&E]Eƈ( ;iSO'Pjj$ Oj7S.vMTqeO$YNW!qq\z2b'oZ=sݮ=lкn?[E:+yohiP3ބ&7 wX[XE U٠̠#;|t3VmWT/0AlC;? :«ۅ{$¾*6:|_ElCN5GKEm_^5 'v2|i1h«J%3}r9]#G^ۆ 9/1hM1%cU9?AkX.fw$ _1IJ°M a}{ocIc͊DU-V<d%/yuThE92nnq]LT Ξ h$ `E_/Ohk]V9YX`?&M_]?G\Iqu1%VbQ<+'J6F(byw!?^B ]&{Fq"Z9R¦rY"Jgtcg1߫C$o-z,/Z!9zyGycKV`W}wv zY+dnryFK.蹥Y}L箶aV>˭!n ybx".'PNL '?z8CopAуz ߳c/T!cRk\h:؆ ToP7Sܾ }t<1ܪKpiDg})?J5H4 1k&{:ȽrTh4,hD7BK UU7y8U1mM  J1DVOpXv\b@{f,sdh?aR랦#*!>NGJ^ok#w)+{B=W'w=0;X 3u#)?'|9E#3M`,%]Gޚ0bB';,5Mf^e^N*\"G~a;v184t@]]fBCr_/, ϧGE.M=9|A}ӠDDS*R#L5tN{8֡*D͖IL^L&r$8V湝yN2=o*yT)8 U1$|~Esh]W\*.Ɲ%~H. ivv3c5C`c#ȃHٰ2s(G ,a|S{ j;vWA*7D)x6,l߽|kٌ *I*P80I-@1ђX5Ls7Ӝ1KISv\m+[WoB<lu$cu?N4:@-Aϟ}D6o /ѕxޤ'fxO@jܶufI>D[`ݨ[ Co.Vw6GLPD9Rteur,ST>8]qN9+@o(V>OaйogVγ c>旬t]2?ޝ(bq>^O8Qa^s(~j4J#߳Zh&> Fπ;Ǔ 3)^Ec w/Suv~ؑH _,9z |X|&@~vn;+lO"+3>Nw\1۞ ΄C]f 8^hU:"vBٛlbœf*]4](ASfCIpeq Q*YX4JQ>O@cWRR#._=;ZJhrāZì9WB(oפ 8AmP 'EFE8kҌ^M ;ۦ֟$ 'v aڠã̦gDXovO.yiJ%1Ie&qHhENlbO^,/`$/^${5qA2~egg+aH RݗJL'pLM>0 F2̝NVI}Zʼ! b2)+휻d<ƯB k_^RI?x@\j&C* =;Gx"y&C-BHlw+Q8pCbUA ~a.^Xo$Ǵ(EjXkB,VHB)PLp{5(dmx,7}xe#jȷ A y}1!S&fCJ\ ~_J E*^cXYt{bJmDHF ߬ٽC{ ^O'FM\8E8oѰGVǿ2|7:Zx[ΉC$ӧ!r*$Vܜ{W+Xy85(Rh7̭ʍ6b5Wd}V ꑿ|$].r ۛqkSdPnM h\F7}_GSd %~`v$̀Vnܬ11zkh䄂Yvs}iW~ 0亘 !8Kofs<} pː;jnzM:$_k7R<&i 6Xbd. qRߤV6<;{qnRxtF'=`5b(ÅU颞,gfyv)%LBeno96!mM}cg@ Z,ê586K8tD$P^B?cEτ$}Tڨx_>@ ڸ7f nȊ\hHnQװ #Y嶁χ]*1>$ZvD]!"l~BX{K+};p&fCV.n3BPHŨDZ0Nvzs v(hU)WK3Zqdn+/h&_EXim^#:~Lmfb>+%@[̤F%,2${KߒZ}ҭ՜%2xShgSji@W!yLW$߁UP?b-TYe(;TC|f^b Q0`Mh eJnr{8I j%5XDNXV<9V6opKlK (e&A[OkAd5~8CcZe&ۜ%OAy _(PB$ P~ 0?;%J}Nqk~4!dW? N!ZH̝;Nx;ᱬ/߻f)X #g=v]vqSth NOn$ԭ +VU\xNɓ SS>3U%|{pLs&Gxp=S*";lA־kUtX9O+c#!ZULGLi=c{P1<,Heut^dippk/@ r#9|ތC yz aR9zakpܮ5Fc,<9'EXa,1L}8,JWK XX@ C~O#l(Ki VP1 xo\'@1avFɪyٖNUK?x˄mM*R& pB"}MX Y ZANfN` ArxҤ /Ĉpš'Q_=XX {mLY~Eٮ QHNTLD FY}L #ĩf1 Xu Ek_G9YNAp+%")պw**u]O^^5;j81,P!܅?ձt>Ņ|"^;@MGЩJZ]D| 1!quB DmԠFIa|YS/. Ҷ!dMD4Ӛ*HG~aP= uBxf.9]L푉yRiKi} m|r 9_d&QH~D,]L=ͬԤ(OyNv bj 3/iI%G>'A6)ZH ʩQŒn'JxО$Y2,Ds8xw"y-q\,Ȕ%GO^oSm})’U:uz),+RTdKVoBҩg6Ehb q:>NI@rFc b[O uXyIuh L3{֓L'Qby%ezh- }ِb8,դtlgc:8gLnS?_[[ r:ntT