Microsoft.Linux.SLES.12.Kit.ppc (DeployableResource)
Element properties:
Source Code:
<DeployableResource ID="Microsoft.Linux.SLES.12.Kit.ppc" Accessibility="Internal" FileName="scx-1.6.6-0.sles.12.ppc.sh" HasNullStream="false"/>
File Content: scx-1.6.6-0.sles.12.ppc.sh
#!/bin/sh
#
# Shell Bundle installer package for the SCX project
#
PATH=/usr/bin:/usr/sbin:/bin:/sbin
umask 022
# Can't use something like 'readlink -e $0' because that doesn't work everywhere
# And HP doesn't define $PWD in a sudo environment, so we define our own
case $0 in
/*|~*)
SCRIPT_INDIRECT="`dirname $0`"
;;
*)
PWD="`pwd`"
SCRIPT_INDIRECT="`dirname $PWD/$0`"
;;
esac
SCRIPT_DIR="`(cd \"$SCRIPT_INDIRECT\"; pwd -P)`"
SCRIPT="$SCRIPT_DIR/`basename $0`"
EXTRACT_DIR="`pwd -P`/scxbundle.$$"
# These symbols will get replaced during the bundle creation process.
#
# The OM_PKG symbol should contain something like:
# scx-1.5.1-115.suse.12.ppc (script adds .rpm)
# Note that for non-Linux platforms, this symbol should contain full filename.
#
TAR_FILE=scx-1.6.6-0.sles.12.ppc.tar
OM_PKG=scx-1.6.6-0.sles.12.ppc
OMI_PKG=omi-1.6.6-0.suse.12.ppc
SCRIPT_LEN=529
SCRIPT_LEN_PLUS_ONE=530
# Packages to be installed are collected in this variable and are installed together
ADD_PKG_QUEUE=
# Packages to be updated are collected in this variable and are updated together
UPD_PKG_QUEUE=
usage()
{
echo "usage: $1 [OPTIONS]"
echo "Options:"
echo " --extract Extract contents and exit."
echo " --force Force upgrade (override version checks)."
echo " --install Install the package from the system."
echo " --purge Uninstall the package and remove all related data."
echo " --remove Uninstall the package from the system."
echo " --restart-deps Reconfigure and restart dependent service"
echo " --source-references Show source code reference hashes."
echo " --upgrade Upgrade the package in the system."
echo " --enable-opsmgr Enable port 1270 for usage with opsmgr."
echo " --version Version of this shell bundle."
echo " --version-check Check versions already installed to see if upgradable"
echo " (Linux platforms only)."
echo " --debug use shell debug mode."
echo " -? | --help shows this usage text."
}
source_references()
{
cat <<EOF
superproject: acd74d21015c097d132f908e7a64e2cb9f035c84
omi: 9f4a212e06656dcd6b0ca2ddd34f181623965b28
omi-kits: 5eeaa39dad97a9808a45eff37c2a6073fde266c3
opsmgr: 05401d35c9c45ad84de6eff7ebaf90e7e6615b40
opsmgr-kits: 329545760488b3f919cd6a8dbae6d253e39bc33d
pal: 2fcc627c2830128d1a8864add2e3626d7d5a68c0
EOF
}
cleanup_and_exit()
{
# $1: Exit status
# $2: Non-blank (if we're not to delete bundles), otherwise empty
if [ -z "$2" -a -d "$EXTRACT_DIR" ]; then
cd $EXTRACT_DIR/..
rm -rf $EXTRACT_DIR
fi
if [ -n "$1" ]; then
exit $1
else
exit 0
fi
}
check_version_installable() {
# POSIX Semantic Version <= Test
# Exit code 0 is true (i.e. installable).
# Exit code non-zero means existing version is >= version to install.
#
# Parameter:
# Installed: "x.y.z.b" (like "4.2.2.135"), for major.minor.patch.build versions
# Available: "x.y.z.b" (like "4.2.2.135"), for major.minor.patch.build versions
if [ $# -ne 2 ]; then
echo "INTERNAL ERROR: Incorrect number of parameters passed to check_version_installable" >&2
cleanup_and_exit 1
fi
# Current version installed
local INS_MAJOR=`echo $1 | cut -d. -f1`
local INS_MINOR=`echo $1 | cut -d. -f2`
local INS_PATCH=`echo $1 | cut -d. -f3`
local INS_BUILD=`echo $1 | cut -d. -f4`
# Available version number
local AVA_MAJOR=`echo $2 | cut -d. -f1`
local AVA_MINOR=`echo $2 | cut -d. -f2`
local AVA_PATCH=`echo $2 | cut -d. -f3`
local AVA_BUILD=`echo $2 | cut -d. -f4`
# Check bounds on MAJOR
if [ $INS_MAJOR -lt $AVA_MAJOR ]; then
return 0
elif [ $INS_MAJOR -gt $AVA_MAJOR ]; then
return 1
fi
# MAJOR matched, so check bounds on MINOR
if [ $INS_MINOR -lt $AVA_MINOR ]; then
return 0
elif [ $INS_MINOR -gt $AVA_MINOR ]; then
return 1
fi
# MINOR matched, so check bounds on PATCH
if [ $INS_PATCH -lt $AVA_PATCH ]; then
return 0
elif [ $INS_PATCH -gt $AVA_PATCH ]; then
return 1
fi
# PATCH matched, so check bounds on BUILD
if [ $INS_BUILD -lt $AVA_BUILD ]; then
return 0
elif [ $INS_BUILD -gt $AVA_BUILD ]; then
return 1
fi
# Version available is idential to installed version, so don't install
return 1
}
getVersionNumber()
{
# Parse a version number from a string.
#
# Parameter 1: string to parse version number string from
# (should contain something like mumble-4.2.2.135.suse.ppc.tar)
# Parameter 2: prefix to remove ("mumble-" in above example)
if [ $# -ne 2 ]; then
echo "INTERNAL ERROR: Incorrect number of parameters passed to getVersionNumber" >&2
cleanup_and_exit 1
fi
echo $1 | sed -e "s/$2//" -e 's/\.suse\..*//' -e 's/\.ppc.*//' -e 's/-/./'
}
verifyNoInstallationOption()
{
if [ -n "${installMode}" ]; then
echo "$0: Conflicting qualifiers, exiting" >&2
cleanup_and_exit 1
fi
return;
}
# $1 - The name of the package to check as to whether it's installed
check_if_pkg_is_installed() {
rpm -q $1 2> /dev/null 1> /dev/null
}
# $1 - The filename of the package to be installed
# $2 - The package name of the package to be installed
# Enqueues the package to the queue of packages to be added
pkg_add_list() {
pkg_filename=$1
pkg_name=$2
echo "----- Queuing package: $pkg_name ($pkg_filename) for installation -----"
pkg_filename=$pkg_filename
ADD_PKG_QUEUE="${ADD_PKG_QUEUE} ${pkg_filename}.rpm"
}
# $1.. : The paths of the packages to be installed
pkg_add() {
pkg_list=
while [ $# -ne 0 ]
do
pkg_list="${pkg_list} $1"
shift 1
done
if [ "${pkg_list}" = "" ]
then
# Nothing to add
return 0
fi
echo "----- Installing packages: ${pkg_list} -----"
rpm --install ${pkg_list}
}
# $1 - The package name of the package to be uninstalled
# $2 - Optional parameter. Only used when forcibly removing omi on SunOS
pkg_rm() {
echo "----- Removing package: $1 -----"
rpm --erase ${1}
}
# $1 - The filename of the package to be installed
# $2 - The package name of the package to be installed
# $3 - Okay to upgrade the package? (Optional)
pkg_upd_list() {
pkg_filename=$1
pkg_name=$2
pkg_allowed=$3
echo "----- Queuing package for upgrade: $pkg_name ($pkg_filename) -----"
if [ -z "${forceFlag}" -a -n "$pkg_allowed" ]; then
if [ $pkg_allowed -ne 0 ]; then
echo "Skipping package since existing version >= version available"
return 0
fi
fi
pkg_filename=$pkg_filename
UPD_PKG_QUEUE="${UPD_PKG_QUEUE} ${pkg_filename}.rpm"
}
# $* - The list of packages to be updated
pkg_upd() {
pkg_list=
while [ $# -ne 0 ]
do
pkg_list="${pkg_list} $1"
shift 1
done
if [ "${pkg_list}" = "" ]
then
# Nothing to update
return 0
fi
echo "----- Updating packages: ($pkg_list) -----"
[ -n "${forceFlag}" ] && FORCE="--force" || FORCE=""
rpm --upgrade $FORCE ${pkg_list}
}
getInstalledVersion()
{
# Parameter: Package to check if installed
# Returns: Printable string (version installed or "None")
if check_if_pkg_is_installed $1; then
local version=`rpm -q $1 2> /dev/null`
getVersionNumber $version ${1}-
else
echo "None"
fi
}
shouldInstall_omi()
{
local versionInstalled=`getInstalledVersion omi`
[ "$versionInstalled" = "None" ] && return 0
local versionAvailable=`getVersionNumber $OMI_PKG omi-`
check_version_installable $versionInstalled $versionAvailable
}
shouldInstall_scx()
{
local versionInstalled=`getInstalledVersion scx`
[ "$versionInstalled" = "None" ] && return 0
local versionAvailable=`getVersionNumber $OM_PKG scx-`
check_version_installable $versionInstalled $versionAvailable
}
#
# Main script follows
#
set +e
while [ $# -ne 0 ]
do
case "$1" in
--extract-script)
# hidden option, not part of usage
# echo " --extract-script FILE extract the script to FILE."
head -${SCRIPT_LEN} "${SCRIPT}" > "$2"
local shouldexit=true
shift 2
;;
--extract-binary)
# hidden option, not part of usage
# echo " --extract-binary FILE extract the binary to FILE."
tail -n +${SCRIPT_LEN_PLUS_ONE} "${SCRIPT}" > "$2"
local shouldexit=true
shift 2
;;
--extract)
verifyNoInstallationOption
installMode=E
shift 1
;;
--force)
forceFlag=true
shift 1
;;
--install)
verifyNoInstallationOption
installMode=I
shift 1
;;
--purge)
verifyNoInstallationOption
installMode=P
shouldexit=true
shift 1
;;
--remove)
verifyNoInstallationOption
installMode=R
shouldexit=true
shift 1
;;
--restart-deps)
restartDependencies=--restart-deps
shift 1
;;
--source-references)
source_references
cleanup_and_exit 0
;;
--upgrade)
verifyNoInstallationOption
installMode=U
shift 1
;;
--enable-opsmgr)
if [ ! -f /etc/scxagent-enable-port ]; then
touch /etc/scxagent-enable-port
fi
shift 1
;;
--version)
echo "Version: `getVersionNumber $OM_PKG scx-`"
exit 0
;;
--version-check)
printf '%-15s%-15s%-15s%-15s\n\n' Package Installed Available Install?
# omi
versionInstalled=`getInstalledVersion omi`
versionAvailable=`getVersionNumber $OMI_PKG omi-`
if shouldInstall_omi; then shouldInstall="Yes"; else shouldInstall="No"; fi
printf '%-15s%-15s%-15s%-15s\n' omi $versionInstalled $versionAvailable $shouldInstall
# scx
versionInstalled=`getInstalledVersion scx`
versionAvailable=`getVersionNumber $OM_PKG scx`
if shouldInstall_scx; then shouldInstall="Yes"; else shouldInstall="No"; fi
printf '%-15s%-15s%-15s%-15s\n' scx $versionInstalled $versionAvailable $shouldInstall
exit 0
;;
--debug)
echo "Starting shell debug mode." >&2
echo "" >&2
echo "SCRIPT_INDIRECT: $SCRIPT_INDIRECT" >&2
echo "SCRIPT_DIR: $SCRIPT_DIR" >&2
echo "EXTRACT DIR: $EXTRACT_DIR" >&2
echo "SCRIPT: $SCRIPT" >&2
echo >&2
set -x
shift 1
;;
-? | --help)
usage `basename $0` >&2
cleanup_and_exit 0
;;
*)
usage `basename $0` >&2
cleanup_and_exit 1
;;
esac
done
if [ -z "${installMode}" ]; then
echo "$0: No options specified, specify --help for help" >&2
cleanup_and_exit 3
fi
#
# Note: From this point, we're in a temporary directory. This aids in cleanup
# from bundled packages in our package (we just remove the diretory when done).
#
mkdir -p $EXTRACT_DIR
cd $EXTRACT_DIR
# Do we need to remove the package?
if [ "$installMode" = "R" -o "$installMode" = "P" ]
then
if [ -f /opt/microsoft/scx/bin/uninstall ]; then
/opt/microsoft/scx/bin/uninstall $installMode
fi
if [ "$installMode" = "P" ]
then
echo "Purging all files in cross-platform agent ..."
rmdir /etc/opt/microsoft /opt/microsoft /var/opt/microsoft 1>/dev/null 2>/dev/null
# If OMI is not installed, purge its directories as well.
check_if_pkg_is_installed omi
if [ $? -ne 0 ]; then
rm -rf /etc/opt/omi /opt/omi /var/opt/omi
fi
fi
fi
if [ -n "${shouldexit}" ]
then
# when extracting script/tarball don't also install
cleanup_and_exit 0
fi
#
# Do stuff before extracting the binary here, for example test [ `id -u` -eq 0 ],
# validate space, platform, uninstall a previous version, backup config data, etc...
#
#
# Extract the binary here.
#
echo "Extracting..."
tail -n +${SCRIPT_LEN_PLUS_ONE} "${SCRIPT}" | tar xzf -
STATUS=$?
if [ ${STATUS} -ne 0 ]
then
echo "Failed: could not extract the install bundle."
cleanup_and_exit ${STATUS}
fi
#
# Do stuff after extracting the binary here, such as actually installing the package.
#
EXIT_STATUS=0
SCX_OMI_EXIT_STATUS=0
case "$installMode" in
E)
# Files are extracted, so just exit
cleanup_and_exit 0 "SAVE"
;;
I)
echo "Installing cross-platform agent ..."
check_if_pkg_is_installed omi
if [ $? -eq 0 ]; then
pkg_upd_list $OMI_PKG omi
pkg_upd ${UPD_PKG_QUEUE}
else
pkg_add_list $OMI_PKG omi
fi
pkg_add_list $OM_PKG scx
pkg_add ${ADD_PKG_QUEUE}
SCX_OMI_EXIT_STATUS=$?
;;
U)
echo "Updating cross-platform agent ..."
shouldInstall_omi
pkg_upd_list $OMI_PKG omi $?
shouldInstall_scx
pkg_upd_list $OM_PKG scx $?
pkg_upd ${UPD_PKG_QUEUE}
SCX_OMI_EXIT_STATUS=$?
;;
*)
echo "$0: Invalid setting of variable \$installMode, exiting" >&2
cleanup_and_exit 2
esac
# Remove temporary files (now part of cleanup_and_exit) and exit
cleanup_and_exit 0
#####>>- This must be the last line of this script, followed by a single empty line. -<<#####
^ scx-1.6.6-0.sles.12.ppc.tar <m$U9}&1Iukff{n?bwzٞqw}p~,Y!D('&
H$@DK #"W3gN]̫^zիN/;g(J$צc{"UzE>llըᩫ*SQVWH J5#'f@kf(h5jȢrfBEDvO
ݯkh{>DaEMuYt8_, <ywɗC9MZd 7tg_%eN@0ӄ*4:0!뼾_-^~)u,*fjb"jT`,Md55êX蝱˷|o/ű$ʕ+/1|Y
>O2>f'xҍ]|~79!+~s_W~+~8-sw^/s8o9?_8~W8&U_qx3X'@us+8|`[X;`Y;Qe^QVQvy/cwg?˹ dܭsx'9|g8|Ër^g8?YyVk~aVNؠ8Gx~#"/+?{^
Wx{7rs ]0}S~fJ&PgGa Zٍ@8HpdQbGքAΛnM W#w~1-߁E$WDj7ylzz{{HV!aSͦ4&=PUc-/7Kcy9CŰfIZ7ཱ%kaqKSO\`4{z2WǓM@x[^_\Yvz^ވpy%4$|B̔lF^q婉uR=*O8oV go4|'ZIHDh$uc'I+
^I*RRiqinĺtjLS*R'gm6
IM[XGgPyGQKleDE
[~jTGU_~LՉRLDf&.q;DNCaP
GB'F6TmAf;;^ Hz K4G;\o{gnb{ti6r6|Ɗ0OtAUNjnHBOeZu URG=mZ}ipFh쥢0se
Ń2x38A0n/xr%v`~lf)%T~쑱@rRŅ:chuw
RR08uvxX>-XrʝA$h5^aFD{s
a僓K0LP$asjFq2mC?]ꀪIYXyGetO@D)hrw|z[tWߴq'<2&A6s:'rS` 7[G<p3'8ǰd:siҍ"NƑ]XYm4O$330ݼd;I
:0mi8뎇+w4*w8wVO;&;I{Z}=:DJz,Sq's{'g&.^
}d{F8
>JdELЏ d:
Ѓ
SxpOc0ܔot(:]IY3p|̺Jj3}zi{
?X[Q##o6<ֆ-rBHɾq8/F$k"ôb&{،QL/;'qVRCl=6ֲ6]HdcL" ϞҸ-#Ҩ@2)ҧl`h?1PDxG璝^;TtfaF[|r`-TԤ*WXA6hӌ5ߡ91Dh-$..A2aVҁ9&-hfLm]8°|B>Ph^>R L
0C(kk ңKbӪgi9!Ǘ/U2yE[NJw垮^J};=3v`dF#"ف](t?].o+aT_X<ߑpGh2T02`.|<F!(v+9ClCS1 8f/ya+ΙNjJwI NX%[2"e=aSb0G?xz9B-
pܲm.xN.Fx &S<w-vmZGdH=+&i5pw6野I璒OHcYX7~ 1ʙjuI#ĴxWgջah[U 1]oi܈L¿umcJ%);0 mp@Z/+
gik
3|+U)gJV/ajFbs[a ')^KSqU6}1z}qJjd Q$
}IY%fjm. q>0lIt?MD$TGw39\c
ߊۡ&gfH6<gPie ǨZ80ZS_][}xinfbⰉA-7Z#)r^EgdRdp]$t7S (wtF,gpBDW&Ae"#Q ٵq%XPNL
ń+ÕyJj\2@v[R,F0b);$XWpZ>.?6MlFt?M9vͷZۙx.)18:QΑ}KP06OsMЍmX3YfLF<LP37v˿wer"br[[d}*h/&6) w?xjya~1hqvqjN&`Rr7IѦK'oqY'0e57$FPĝC\X
!<m1MAsR֡jZU<42t>tjqVnuĶ69\0zB^V{C_(<DiwvnyyqyzO}ijgV}tZsϙf/"MP\;6vl|ڱ1ulb3Et첻viP;jk=Rv<wOįl"@utV/OVέ9me/tn\(Yzٙ{VrLx=~/#R{VpipD7V0R$(V6 ?m<kẑnG+vMXs<+bz5yd5|@^"`LZ4eo=G1s$lH'wۜw,1crS(./җJBRsϝ&I qvPeij=C)/do9!fΙ.w4JӷE9QLQ&FѦ
gE:UXA/OsNPs
6YxVZlIs]J}1˿
AqAB;oᦓ _H~[( @BMH_OAg]$y7:b+ ~8ͣo/9zp+OִFO=IGzg~
yH/p{gjBy{DxvTm]QdQņ.cUYÂ늪j+R5YŚk:QdIah-WuC鎮iنQCjvMG%G4]`v,GpFMEbݱ5nK%5!j/ʶ-:hMM7ʢ+ini6TKike:ejuC1e͕t5Ӳ&+Ě+0E4Gs%-MCܺZVP
ө:U54]՚ )M5MQmD]lI+uKX
EDGrEíkIBlB75&X%KPUE5fMۺ,uI2h[h$0hHajR,GvuvMAv]ɪzH6
*TZdW6\C]S
QGA L2ulm]mno(hjf)ekѰ45;U
[]nͲtGSŔe_ W!c,-Qd:l#puDqU4Y52@e21hm{[fECa<]@q(T}n@ruOǟx7>bK$\{FzL[&Ժ:%Su)7Z?}+X4- BO\2wCN
TZ<Kqi㩮'@n:NIP GOId_P IUy( yٔD品nGS w
o#=krg#]yr܉'?xruGC*CD|; Nt |p.^Y)!ΟyyJxJe@t#-9%GQͣKm]kr
h}o.=ŏ}j*Uד"ё{1$`6 GxۜB+?A%8i5 ]l_:^KJu2T+yĸ
2pDO_6J\TEX>}݅4BO w
P# CFÊS <¢<bv3/o)d\1(R{|@(.9',TeT@V.r`#ٜQ}˫=xayvnj0V脞AN+2yތw{3
W:
j(߉*\ubn.ۙqώ/2yg^;e^xo}[/"<g{~3>3s_}y/7O}ӫ+>+/?P{#[gw7ߺ^;/] '&݄@G>.L7aK9~ѭPwl@wBφkؕ&#BN*Nho(H_uW\9loG lYS|_#'ktRɜn~)7yex1Tǥ9)~\xӸnQvd5kzY%f5:;.DOhg$Qv=`Nb
d)]N"2ck{ԿZn`k@"y>f7^@9bq\牺d 4d.LAXk3χ?J^@j儭ՏO8a1W]۬m-jTJRC)mm_&:h?/XHvo3Цm5B7̝gCap,!gg\(ivo sܩ[!x!l
/tyy^8Њ
)kD6?TUMT33$ VfLgBe '9
?De m~1Tq9,8$c#KEPKRS_oSgD e+tv=F*H5kn:`LU<Jͪ@Ws[yX_߬ˋ@4OEv2uƌZ+кa"@y?Y45XҔ=|2w/Vɑ$iwΌELko
V|
7'f36(0ҕs.÷R5fcG%[{;)QKnb
0@֥R_R<as>d.*kjj8dL~҆N~g,gr+!WcWsSo1-k6o1 a3i`uRP*Ѝ51[z$cI6Hae>eݵ?4,acNWacAɛ8;~iYf 19eq>{1D}bq[RiJ_XkMf1XU/>}p,zͯ&ԙBRVq&3I
F")=KACSuB*$u>튜T/u#J<Ԛ:D>Ay_0Yڶ uD4}9x3f@R
qOF眵&^I3d:NJ˵Z\֧E@ф1fiyQC?%!<ַ+Ft[S7J
\@z
jj-}\A<]'
:`ƭpHYˆ$:Yv\\kUԑeho;CŊm
֟/{#l
c>+4He@T~Mxtp"@ӧ(7>pbMvOd{
.e(0g
'Y
nx.ƐF9.ʩÙ9'/O}Jkt%d"b.!?sİOq84߲g-T֥Et/VEՇ_9@ɗBHףx7+ŹKT)"kid<$D(yĭ?!*ҥ@+)1@p;ȃ,3.,|n(^#otJ2o<۱4}[]d >1*q4<wAj a b) `\q)/+8`&Μ%zau֚7F34J?Gڨ(L*aA۰^.'X!uBuֳ'UCk@|&)-_T-MĬʿi:8#>|4-][C&g+ûېf^%7zO8TW&|\la8zfz̆<Z=4/54'D2I^L: %k>";f*#Kg4Vy(7#㫀`Rp8\vŗB7dDśajO N[jϩ>X1*o>=C@v]AYDbF7 VoF$XC{DcX59]b#*)̀f-C.Q߽՞"#}r{6SjǙ5qEjL ,k:4Q=9XBb8al`ʎ5\1ejtKvޤoWx\^8ɣzݙ֣\<wE>i[$goL*щ8A>W|m;{Ի \kd7+]yHnRp"zXHCi&?4trٿG\wsij:/ 9"_$+h,F*D0@,2/lݾU|c, m6HtH`C,e
W\8~/B|C=L/S)"/7cӥ#c>(l)7[m*jyFh{|i&?9r%;2H`3Z@:6ۧOTqHA>2 AxM.ޞy͋sY >H;Q7?^`ob#q"cIwirfP,?mKe?q<Z/Fz'Ɣih,i?GëwN_9"a-&75w(ZJg> $'iTh}ge2@J07}~um*L-, "ȶt7AeP(mҺL;g'HG(pA6%'+
-?-h8Y"
wcqωѴcX4Z6,'NJ+);+
Iry }2H#XDs)rrr4_odtF !1$͎eT?vcTcAL<56ң7,s#?\WZ{U^3Wcokxw!늈|U(O_bB\otQI%5cd U"|̤XYZZ
!p= ̱cm?+/Nuѡ_Ygp$na_
0¦ŦqSR!]ӗ
]~y*
,$E71u|r4)`B9"b3٭藛G~eAsuNG/D =OC<so
jA:"XÇ Eq.
{|q9<f6KF^,Ki9矻Ul>]\.g(Zt'_My38BP/ϲ ̻uFǂ9Ȫ?ݧ&>3>x!1QT07%FG Ȭ&'Y3 âO,IFyH+{A?q~#٣_rQsL*Nǥ%$U0RDHj%[GWbbUԃjǖ>mⱟ,<=$uѺ=^Γs=؎С2cEAG- Ig Tܸ`Ώh\Y0Bc{
%åT!fQR Ғoj"UcwW<xszZE(|QU[@8(fD@A$'|$~%Hã263aqj-Wgǜ~+fR/3:M*]~xZi[0,qpBF}O`Y8%B;̄'}OEٍwOЗwC%߆ADsfw@Mr2Ώb&|jչP̳KUά
j^T
2:Tv^@cuK=T0v̀
'eĠ~(_g/~; TZ*E Dz#9rNJ-\"0T9hy ޫKTJEo>CSD̴ֽt_GW v)_.#]/y,76f'UdNmwbG軋IAd0PBN}NN`[
خwUO
):E*+1uM9B0BEq|6Ce+E>~ )ac>쫰Z_ܡD4ՏA( [7M(0Q/GB0fwԧGnsG* W7hUJ;uSZhP$Jmx6RpR{/$x<SE3Aر8?k.TOz;o9LNX`Ѩb<$}o=:xPU7+D' KsVdda尦@+8T`ag&~-
(Ny11+|3_
R;7w-ۦ.9;(GU~ufHRe`퉦|{COoO* "lK7Uo?ٴԙ#=5+KKHf ԵG
e/lR!3UϥW.SBa䔨Zm'vl<