#==[ Configuration File ]===========================# # /etc/sysconfig/add-on-creator VENDOR="" COMPRESS_PATTERNS="no" COMPRESS_PACKAGE_DESCRIPTIONS="no" #==[ Configuration File ]===========================# # /etc/sysconfig/apache2 DOC_SERVER="no" #==[ Configuration File ]===========================# # /etc/sysconfig/appldata APPLDATA_INTERVAL=10000 APPLDATA_MEM="yes" APPLDATA_OS="yes" APPLDATA_NET_SUM="no" #==[ Configuration File ]===========================# # /etc/sysconfig/arpd DATABASE="" EXTRAOPTIONS="" #==[ Configuration File ]===========================# # /etc/sysconfig/atd ATD_BATCH_INTERVAL="" ATD_LOADAVG="" #==[ Configuration File ]===========================# # /etc/sysconfig/auditd IDENT="auditd" EXTRAOPTIONS="" AUDITD_LANG="en_US" AUDITD_CLEAN_STOP="yes" AUDITD_DISABLE_CONTEXTS="yes" #==[ Configuration File ]===========================# # /etc/sysconfig/autofs AUTOFS_OPTIONS="" LOCAL_OPTIONS="" APPEND_OPTIONS="yes" USE_MISC_DEVICE="yes" DEFAULT_MASTER_MAP_NAME="auto.master" DEFAULT_TIMEOUT=600 DEFAULT_BROWSE_MODE="yes" DEFAULT_LOGGING="none" DEFAULT_MAP_OBJECT_CLASS="nisMap" DEFAULT_ENTRY_OBJECT_CLASS="nisObject" DEFAULT_MAP_ATTRIBUTE="nisMapName" DEFAULT_ENTRY_ATTRIBUTE="cn" DEFAULT_VALUE_ATTRIBUTE="nisMapEntry" DEFAULT_AUTH_CONF_FILE="etc/autofs_ldap_auth.conf" MAP_HASH_TABLE_SIZE=1024 #==[ Configuration File ]===========================# # /etc/sysconfig/autoinstall REPOSITORY="/var/lib/autoinstall/repository" CLASS_DIR="/var/lib/autoinstall/repository/classes" XSLT_DONTMERGE="addon,conf" FORBID_WRITENOW="add-on,suse_register,partitioning,bootloader,general,report,software" #==[ Configuration File ]===========================# # /etc/sysconfig/automatic_online_update AOU_ENABLE_CRONJOB="false" AOU_SKIP_INTERACTIVE_PATCHES="true" AOU_AUTO_AGREE_WITH_LICENSES="false" AOU_INCLUDE_RECOMMENDS="false" AOU_PATCH_CATEGORIES="" #==[ Configuration File ]===========================# # /etc/sysconfig/backup RPMDB_BACKUP_DIR="/var/adm/backup/rpmdb" MAX_RPMDB_BACKUPS="5" RCCONFIG_BACKUP_DIR="/var/adm/backup/sysconfig" MAX_RCCONFIG_BACKUPS="5" #==[ Configuration File ]===========================# # /etc/sysconfig/boot PROMPT_FOR_CONFIRM="no" CONFIRM_PROMPT_TIMEOUT="5" RUN_PARALLEL="no" FLOW_CONTROL="no" FSCK_MAX_INST="10" KLOGCONSOLE_PARAMS="" #==[ Configuration File ]===========================# # /etc/sysconfig/bootloader LOADER_TYPE="grub2" DEFAULT_NAME="SLES11_SP3" DEFAULT_APPEND="crashkernel=1024M-:512M hvc_iucv=8 cio_ignore=6157-6b74,a014-a017,a01a,a01b,a01d dasd=a012,a013,a018,a019,a029 TERM=dumb resume=/dev/system/lvswap zfcp.allow_lun_scan=1 vmalloc=4096G" DEFAULT_VGA="" FAILSAFE_APPEND="hvc_iucv=8 cio_ignore=6157-6b74,a014-a017,a01a,a01b,a01d dasd=a012,a013,a018,a019,a029 TERM=dumb noresume x11failsafe" FAILSAFE_VGA="" XEN_KERNEL_APPEND="hvc_iucv=8 cio_ignore=6157-6b74,a014-a017,a01a,a01b,a01d dasd=a012,a013,a018,a019,a029 TERM=dumb resume=/dev/system/lvswap zfcp.allow_lun_scan=1 vmalloc=4096G" XEN_APPEND="" XEN_VGA="" LOADER_LOCATION="" SECURE_BOOT="no" #==[ Configuration File ]===========================# # /etc/sysconfig/bootsplash SPLASH="yes" THEME="SLES" #==[ Configuration File ]===========================# # /etc/sysconfig/clock HWCLOCK="-u" SYSTOHC="yes" TIMEZONE="Europe/Madrid" DEFAULT_TIMEZONE="US/Eastern" #==[ Configuration File ]===========================# # /etc/sysconfig/console FB_MODULES="" FBSET_PARAMS="" CONSOLE_FONT="lat9w-16.psfu" CONSOLE_SCREENMAP="trivial" CONSOLE_UNICODEMAP="" CONSOLE_MAGIC="(B" CONSOLE_ENCODING="ISO-8859-1" #==[ Configuration File ]===========================# # /etc/sysconfig/cpi CPI_SET="yes" CPI_SYSTEM_NAME="" CPI_SYSPLEX_NAME="" #==[ Configuration File ]===========================# # /etc/sysconfig/cpuplugd CPU_MIN="1" CPU_MAX="0" UPDATE="5" CMM_MIN="0" CMM_MAX="131072" # 512 MB pgscan_k="vmstat.pgscan_kswapd_dma + vmstat.pgscan_kswapd_normal + vmstat.pgscan_kswapd_movable" pgscan_d="vmstat.pgscan_direct_dma + vmstat.pgscan_direct_normal + vmstat.pgscan_direct_movable" pgscan_k1="vmstat.pgscan_kswapd_dma[1] + vmstat.pgscan_kswapd_normal[1] + vmstat.pgscan_kswapd_movable[1]" pgscan_d1="vmstat.pgscan_direct_dma[1] + vmstat.pgscan_direct_normal[1] + vmstat.pgscan_direct_movable[1]" pgscanrate="(pgscan_k + pgscan_d - pgscan_k1 - pgscan_d1) / (time - time[1])" cache="meminfo.Cached + meminfo.Buffers" CMM_INC="(meminfo.MemFree + cache) / 40" CMM_DEC="meminfo.MemTotal / 40" HOTPLUG="(loadavg > onumcpus + 0.75) & (idle < 10.0)" HOTUNPLUG="(loadavg < onumcpus - 0.25) | (idle > 50)" MEMPLUG="0" MEMUNPLUG="0" avail_cache="meminfo.Cached - meminfo.Shmem" user_0="(cpustat.user[0] - cpustat.user[1])" nice_0="(cpustat.nice[0] - cpustat.nice[1])" system_0="(cpustat.system[0] - cpustat.system[1])" user_2="(cpustat.user[2] - cpustat.user[3])" nice_2="(cpustat.nice[2] - cpustat.nice[3])" system_2="(cpustat.system[2] - cpustat.system[3])" CP_Active0="(user_0 + nice_0 + system_0) / (cpustat.total_ticks[0] - cpustat.total_ticks[1])" CP_Active2="(user_2 + nice_2 + system_2) / (cpustat.total_ticks[2] - cpustat.total_ticks[3])" CP_ActiveAVG="(CP_Active0+CP_Active2) / 2" idle_0="(cpustat.idle[0] - cpustat.idle[1])" iowait_0="(cpustat.iowait[0] - cpustat.iowait[1])" idle_2="(cpustat.idle[2] - cpustat.idle[3])" iowait_2="(cpustat.iowait[2] - cpustat.iowait[3])" CP_idle0="(idle_0 + iowait_0) / (cpustat.total_ticks[0] - cpustat.total_ticks[1])" CP_idle2="(idle_2 + iowait_2) / (cpustat.total_ticks[2] - cpustat.total_ticks[3])" CP_idleAVG="(CP_idle0 + CP_idle2) / 2" #==[ Configuration File ]===========================# # /etc/sysconfig/cron REINIT_MANDB="yes" DELETE_OLD_CATMAN="yes" CATMAN_ATIME="7" DAILY_TIME="" MAX_NOT_RUN="5" SEND_MAIL_ON_NO_ERROR="no" SEND_OUTPUT_ON_NO_ERROR="no" SYSLOG_ON_NO_ERROR="yes" #==[ Configuration File ]===========================# # /etc/sysconfig/ctdb CTDB_RECOVERY_LOCK="" CTDB_PUBLIC_INTERFACE=eth0 CTDB_PUBLIC_ADDRESSES="" CTDB_LVS_PUBLIC_IP= CTDB_MANAGES_SAMBA=yes CTDB_SAMBA_SKIP_SHARE_CHECK=yes CTDB_NFS_SKIP_SHARE_CHECK=yes CTDB_MANAGES_WINBIND=yes CTDB_MANAGES_VSFTPD=no CTDB_MANAGES_ISCSI=no CTDB_MANAGES_NFS=no CTDB_MANAGES_HTTPD=no CTDB_INIT_STYLE= CTDB_SERVICE_SMB=smb CTDB_SERVICE_NMB=nmb CTDB_SERVICE_WINBIND=winbind CTDB_NODES=/etc/ctdb/nodes CTDB_NOTIFY_SCRIPT=/etc/ctdb/notify.sh CTDB_DBDIR=/var/lib/ctdb CTDB_DBDIR_PERSISTENT=/var/lib/ctdb/persistent CTDB_EVENT_SCRIPT_DIR=/etc/ctdb/events.d CTDB_SOCKET=/var/lib/ctdb/ctdb.socket CTDB_TRANSPORT="tcp" CTDB_MONITOR_FREE_MEMORY=100 CTDB_START_AS_DISABLED="yes" CTDB_CAPABILITY_RECMASTER=yes CTDB_CAPABILITY_LMASTER=yes NATGW_PUBLIC_IP= NATGW_PUBLIC_IFACE= NATGW_DEFAULT_GATEWAY= NATGW_PRIVATE_IFACE= NATGW_PRIVATE_NETWORK= NATGW_NODES=/etc/ctdb/natgw_nodes CTDB_LOGFILE=/var/log/ctdb/log.ctdb CTDB_DEBUGLEVEL=2 CTDB_OPTIONS= #==[ Configuration File ]===========================# # /etc/sysconfig/cups IDENT="cups" DESCRIPTIVE="CUPS printer daemon" CUPSD_OPTIONS="" #==[ Configuration File ]===========================# # /etc/sysconfig/debugfs DEBUGFS_ENABLE=yes DEBUGFS_PERMISSIONS="" #==[ Configuration File ]===========================# # /etc/sysconfig/displaymanager DISPLAYMANAGER="gdm" DISPLAYMANAGER_REMOTE_ACCESS="no" DISPLAYMANAGER_ROOT_LOGIN_REMOTE="no" DISPLAYMANAGER_STARTS_XSERVER="yes" DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN="no" DISPLAYMANAGER_AUTOLOGIN="" DISPLAYMANAGER_PASSWORD_LESS_LOGIN="no" DISPLAYMANAGER_AD_INTEGRATION="no" DISPLAYMANAGER_SHUTDOWN="root" DISPLAYMANAGER_RANDR_MODE_VGA="" DISPLAYMANAGER_RANDR_MODE_auto="1024x768_60 64.11 1024 1080 1184 1344 768 769 772 795 -HSync +Vsync" #==[ Configuration File ]===========================# # /etc/sysconfig/dmraid DMRAID_DEVICE_TIMEOUT="60" DMRAID_START_OPTIONS="" DMRAID_STOP_OPTIONS="" #==[ Configuration File ]===========================# # /etc/sysconfig/dumpconf ON_PANIC="stop" DELAY_MINUTES="5" DUMP_TYPE="" DEVICE="" WWPN="" LUN="" BOOTPROG="0" BR_LBA="0" VMCMD_1="" VMCMD_2="" VMCMD_3="" VMCMD_4="" VMCMD_5="" VMCMD_6="" VMCMD_7="" VMCMD_8="" #==[ Configuration File ]===========================# # /etc/sysconfig/fonts-config GENERATE_TTCAP_ENTRIES="yes" GENERATE_GHOSTSCRIPT_FONTMAPS="no" GENERATE_OOO_FONT_SETUP="yes" GENERATE_JAVA_FONT_SETUP="yes" BYTECODE_BW_MAX_PIXEL="0" USE_EMBEDDED_BITMAPS="yes" EMBEDDED_BITMAPS_LANGUAGES="ja:ko:zh-CN:zh-TW:zh-HK:zh-SG" VERBOSITY="0" FORCE_HINTSTYLE="none" FORCE_AUTOHINT="no" FORCE_BW="no" FORCE_BW_MONOSPACE="no" USE_LCDFILTER="lcdnone" USE_RGBA="none" PREFER_SANS_FAMILIES="" PREFER_SERIF_FAMILIES="" PREFER_MONO_FAMILIES="" SEARCH_METRIC_COMPATIBLE="yes" FORCE_FAMILY_PREFERENCE_LISTS="no" #==[ Configuration File ]===========================# # /etc/sysconfig/hal HALD_IGNORE_STORAGE="" #==[ Configuration File ]===========================# # /etc/sysconfig/hsnc operating_mode="unicast" hsi_int="" osa_int="" #==[ Configuration File ]===========================# # /etc/sysconfig/ide DEVICES_FORCE_IDE_DMA="" #==[ Configuration File ]===========================# # /etc/sysconfig/inputattach INPUTATTACH_DRIVERS="" #==[ Configuration File ]===========================# # /etc/sysconfig/ipmi IPMI_SI=yes DEV_IPMI=yes DEV_IPMI_TIMEOUT=15 IPMI_WATCHDOG=no IPMI_WATCHDOG_OPTIONS="timeout=60" IPMI_POWEROFF=no IPMI_POWERCYCLE=no IPMI_IMB=no #==[ Configuration File ]===========================# # /etc/sysconfig/ipvsadm IPVSADM_CONFIG="/etc/ipvsadm.rules" #==[ Configuration File ]===========================# # /etc/sysconfig/irqbalance IRQBALANCE_BANNED_CPUS="" IRQBALANCE_ONESHOT=auto IRQBALANCE_BANNED_INTERRUPTS="" #==[ Configuration File ]===========================# # /etc/sysconfig/joystick GAMEPORT_MODULE_0="" GAMEPORT_MODULE_1="" GAMEPORT_MODULE_2="" GAMEPORT_MODULE_3="" JOYSTICK_MODULE_0="" JOYSTICK_MODULE_1="" JOYSTICK_MODULE_2="" JOYSTICK_MODULE_3="" JOYSTICK_MODULE_OPTION_0="" JOYSTICK_MODULE_OPTION_1="" JOYSTICK_MODULE_OPTION_2="" JOYSTICK_MODULE_OPTION_3="" #==[ Configuration File ]===========================# # /etc/sysconfig/kdump KDUMP_KERNELVER="" KDUMP_CPUS="1" KDUMP_COMMANDLINE="" KDUMP_COMMANDLINE_APPEND="cio_ignore=all,!3740,!3741,!3742,!3750,!3751,!3752,!38c4,!38c5,!38c6,!38d4,!38d5,!38d6,!3900,!3901,!3902,!3903,!3904,!3905,!a012,!a013,!a018,!a019,!a01c,!a01e,!a01f,!a020,!a021,!a022,!a023,!a024,!a025,!a026,!a027,!a028,!a029,!a137,!a138,!c003,!c010,!c020,!c030,!c040,!c050" KEXEC_OPTIONS="" KDUMP_IMMEDIATE_REBOOT="yes" KDUMP_TRANSFER="" KDUMP_SAVEDIR="file:///var/crash" KDUMP_KEEP_OLD_DUMPS="5" KDUMP_FREE_DISK_SIZE="64" KDUMP_VERBOSE="3" KDUMP_DUMPLEVEL="0" KDUMP_DUMPFORMAT="compressed" KDUMP_CONTINUE_ON_ERROR="true" KDUMP_REQUIRED_PROGRAMS="" KDUMP_PRESCRIPT="" KDUMP_POSTSCRIPT="" KDUMP_COPY_KERNEL="no" KDUMPTOOL_FLAGS="" KDUMP_NETCONFIG="auto" KDUMP_SMTP_SERVER="" KDUMP_SMTP_USER="" *REMOVED BY SUPPORTCONFIG* KDUMP_NOTIFICATION_TO="" KDUMP_NOTIFICATION_CC="" KDUMP_HOST_KEY="" KDUMP_KMOD_LOAD="" KDUMP_KMOD_BLACKLIST="" KDUMP_NET_TIMEOUT=30 #==[ Configuration File ]===========================# # /etc/sysconfig/kernel INITRD_MODULES="" NO_KMS_IN_INITRD="no" DOMU_INITRD_MODULES="xennet xenblk" MODULES_LOADED_ON_BOOT="" ACPI_DSDT="" SKIP_RUNNING_KERNEL="" #==[ Configuration File ]===========================# # /etc/sysconfig/keyboard YAST_KEYBOARD="english-us,pc104" KEYTABLE="us.map.gz" COMPOSETABLE="clear winkeys shiftctrl latin1.add" KBD_TTY="tty1 tty2 tty3 tty4 tty5 tty6 tty8 tty9 tty10 tty11 tty12 tty13 tty14 tty15 tty16 tty17 tty18 tty19 tty20" KBD_RATE="" KBD_DELAY="" KBD_NUMLOCK="" KBD_CAPSLOCK="" KBD_SCRLOCK="" KBD_DISABLE_CAPS_LOCK="" #==[ Configuration File ]===========================# # /etc/sysconfig/language INPUT_METHOD="" RC_LANG="es_ES@euro" RC_LC_ALL="" RC_LC_MESSAGES="" RC_LC_CTYPE="" RC_LC_COLLATE="" RC_LC_TIME="" RC_LC_NUMERIC="" RC_LC_MONETARY="" RC_LC_PAPER="" ROOT_USES_LANG="ctype" AUTO_DETECT_UTF8="no" INSTALLED_LANGUAGES="es_ES" #==[ Configuration File ]===========================# # /etc/sysconfig/ldap BASE_CONFIG_DN="" BIND_DN="" FILE_SERVER="no" #==[ Configuration File ]===========================# # /etc/sysconfig/lighttpd LIGHTTPD_PARAMS="-f /etc/lighttpd/lighttpd.conf" LIGHTTPD_UMASK="077" #==[ Configuration File ]===========================# # /etc/sysconfig/locate RUN_UPDATEDB_AS="nobody" #==[ Configuration File ]===========================# # /etc/sysconfig/lvm LVM_VGS_ACTIVATED_ON_BOOT="" LVM_ACTIVATED_ON_DISCOVERED="disable" #==[ Configuration File ]===========================# # /etc/sysconfig/mail MAIL_CREATE_CONFIG="yes" FROM_HEADER="" SMTPD_LISTEN_REMOTE="no" SKIP_ASK="no" CONFIG_TYPE="undef" #==[ Configuration File ]===========================# # /etc/sysconfig/mdadm MDADM_DELAY=60 MDADM_MAIL="root@localhost" MDADM_PROGRAM="" MDADM_RAIDDEVICES="" MDADM_SCAN=yes MDADM_CONFIG="/etc/mdadm.conf" MDADM_SEND_MAIL_ON_START=no MDADM_DEVICE_TIMEOUT="60" MDADM_CHECK_DURATION="" #==[ Configuration File ]===========================# # /etc/sysconfig/mon_statd FSSTAT_INTERVAL=60 PROC_INTERVAL=60 FSSTAT="no" PROC="no" #==[ Configuration File ]===========================# # /etc/sysconfig/mouse MOUSEDEVICE="" MOUSETYPE="imps2" GPM_PARAM="" GPM_REPEAT="" FULLNAME="" YAST_MOUSE="none" XMOUSEDEVICE="" BUTTONS="0" WHEELS="0" #==[ Configuration File ]===========================# # /etc/sysconfig/net-snmp SNMPD_LOGLEVEL="i" SNMPD_USE_SMUX="yes" SNMPD_LOG_SUCCESSFUL_CONNECTIONS="yes" #==[ Configuration File ]===========================# # /etc/sysconfig/network_2013-08-01.tar.gz oNQZFzZހbs"e8d WG{_h@lcwdÿ]Ѭ%j .Mq)ƅV/8Q(p{|$$h{Ǜ6 ԁ/?"Hb cҏT^+i4O8v+e+vePvR;xRy`E(EIza\KH{>,X "#!VB1ql \-#w8y)J3*XcUF6#+ym!l70^MՌP+׸j8@8!gSD"s8^suFXntaYkgz<ZD/FT]ak#P(ߣvBr[RN.F!nlB2!lfWxeo:sqD}:!8*IzE Gf0!se0h).?r˶"~k\=`0*( DȜ. `c塵F׳M}Afʚ~7^:݋8HF$wK1$f4Яb^7?~ =?g< [}/J0磥xƾX8v 4:;sg'+Edg#MFT'W?ZQɲm;A2BIaXU"7Sp)D`? )"=4R,W7%." Hz.DH.x{qDq#ޘBxLU1^C d!![I}#x\gquHe2bI((A!ɏ'SP ::zOڄBϹ x* SԢ̌hW>؀f>@>Yh?~3 |#Q#,rtxϤA)E 62a6k ^\q< 1H) CENs(@4Z0@:3h!SAFEl v7\FO0Fx9kUAs2OQ1LXBoF)пhxI"&%K6wRGs0~j45>ND(\xs5rƌ?QJ) 4/eǯHwd!(Dò9!o-pH"y"ϝ5%aأ59Hx`#{E3)%5z.+`"}`KSPđ. $кqPi$rdkch:VDjq#pN0C9x͖~t:H@!l0u_yvR-poE! ,i"C U4c9(ȉt<`QX}&*yE; +7±!s5,YUђ$x1Ю9*鱀$@CaQހt`np; v~TMU]-)ruq\){E #dA#8NS0$%ӿ7K@#!d!8ŬLIـw hRQѹIr6PV{D #OVS!#Z̔##V{b2YJaqҡAZyLNdO3MT֘gT!bo.BA+*0!}kCQͩlX&qĬx2J`UgLPan_gwxNvfy{=k᠃B?&Y3JhW;+È`b8M Fb(0tI U1 _ %-&Va.P\uWMevyAK$8k9 Ne:hpXv߆gf2&O)R5>\}xH3bs/1ecP#H;uG|5bg)Ɓ?K[#Fz`ӛrQ3O&ztF xτgœCڳ! @ 6u&Eԇ cC}(%hV&FHtK"'H4(G[W.Qc*z折2` asar~{6E*$ ˁݸMB[B9 /ۨR Qg$N.T) T|`+ X~™fr8yy:+@r!TiOR=WPѤ--Sń}nI/*oc90}2)%&Б}usnm60gQB"&uc~d(t:vNP:dE8hWW9rդE)tO3S|⾧ٟԞ"$#a֧jR\P J&{=u8ZɾlxExgTngƾo}wWWGVq^U#8x{ļF02heN1n_t{@O_#ŅkS IBg>qPW9STÀnʝ=uQ 2}΍;贌4.ˉrk܇Gn=WI: _ 8ޓ$'诹!֓Fg0Z.{O4ь. e1h`ҥS,w$O!̪! M;6oMxK3CfRK3:}Yb 9`GLc:w)}c!=asu*)odHi}q ux pҧ \&z_I̜z|&6R*GxWj| ]挅nZU8zz@xrYHL(9^ n_dzIm y}&L>e#:L 9J4LNn=m6?'I_ߴAgMZL;vu+sBk36=+vhUa)cvr )IPa}VvR|A'*WTF0V $*nv9wh~_M*FZ A ̙_4~L2SQrKI*ڂ_(`wtJڹzy43. O`^S3IP]+Sin Gt٤8-K~u4t{_cO%NXmw9jGJݓahxܽ8D+iZc/y{q%`+zq?8, On,y :~;jh̩x0n¶(Kj-;j~k}_>; ՠ=C,k\ygd>=e?/g\G݋ŏCKHɫ3Tq[3z韵~nJ+umht0wFvj}^4j+>製#Ws*~>/zkU^ ?Q7 N $>)*'Χz!@"OE9Cq{hCŕs?[kw6=SͯwoJSjol[EL~l,,#.ίg^}<Q[ߦsnĦX"++y]XBX[̝%&Un tby{#z) P3 ש4uꜽ*2#']@j3'l0+?~nvB^E> mԦH,=,m~}}WFOqdnH(l1[? /l7?K7fkH§;-}Njh/ؠ,gf(0[UU~-b˘Ɠ@EPZ'Dȓ/wluŮ{{dfa0:ܪNp7[L@fϻ[ a*6 D\p"YG+ć"Pў}faq_;r+]3f.u|}j־F}Ǜ7\w϶kH "ge Kwa$=cEIDf~[Z^t5}!^չm"kAԐkR1~7jsCG7>$7 2+=[DSax`C|f4bg2HSwȣkbn%j&A Tan¿bg 䔈v2kvϼo !/٭EuGo%PXjt83{Ko3W:Nw9{όjr 6wt' ݦ `E7ewgkˍ:g׸i\f)j22$`ifGRik\6GpܑbBTFOM>ҡqX _x;~T 7Ӈo$ AQ[ޛ'\Yd KI*:B0Š< éwԡ(Ee*a1΅H؄ wPeg%7Nar_MCJ| [A2on1©o╻ w=XeUDsj0A*J,2McNQR@[dn6inۡav(k{40ڒGmK#k@[ Q\-deB6}y3P Gx釅)GDzez5"Nx[~Tc!"ňY[/J*ݔ6Sz8LRƐB׹6nkvp|Z\)~w@QˤuHRv8ZLo#ЏuafB  pi*xc42g8rPG,^Ca-[/~-9=I%m~E@ !n0FjE- p{ں[♹fbԩ`L30Iu-Nmiز2(\%oȼ!KDТE >Ё *rtYɓР-a䋰Y09uH&M-$Aw80A^# XЮ~7/IyE wS|CLouwAXB1R%V6ׄCLIM eh-jX4]QX ΟCf$Nor.YHPce@e&cZ~N?1絻c_" G#.^~g9]W옚Z"k,RnVZb\IJJܣė(TD>Pbe0X|L"] `FH6" SАϛR#Ȧfԩn{hUmhZҢsٰf; *s?񕠙ЃLk_OV albO|,z w?'5^q; #XVƩBy1/RO2WL\%5xGdeCؒy`PpE͹`c֝ գ CQ%67ݚߜI㣷Pp`!q?MnFNz?}8ӇڧOs%![o;()fRcRxPѸ46:Xy#t;w.PN|rzBHz(?>~MzϮ'e &RVd ƶ/[ImꄡH~uf=4ӽ[3)Ѥ^Ѥ.یЋ=ek9bohOO V`im, 'Q7ͯɔDV; ٖ>ͼ9aar :&FcHPtaOMyS_&FL"GW16{Ƶ(rn\x8#̏̄O:Xw_g RR!BVȒU< ^WO(xFw"ݹ ^4ye[>|| IDv=Mo*vΓ BA!MR\ܮw-hֆfQzȑLX0A5 [qȾ L9(p Xt=7~>8]^`4P]<GwEg[[y 1JNW"&̟+d\}4 8r CI<{Wl,.8BlۼG"-n'=Arf1/)ûIrᙙ%h'wQ,_M foͥF=Đ`+ c@,BaH3ĻBRԔ^POHdڂl*e@ekgb5Aq<@Ğ^.VIÌoxϦdTsv1KjҴgӞ!9iu;w{C0 ?@|`Ynok0dz/ݷB=0_RdE z̵Hi'H9LB[tݰ>L)v'i(g io{6 c%^;5y/ZO[U?ݐk1$0Mr\|"~K$w& (i"XfO\~\d;4]DdE=NfTJ|{ܫ+ݨƉiI|Є|`va/Tűr!ԭ&҈N!9/UJnCPP$MnkV>ֈ$k z&`MQyscwH+6Ӕ hPVj/ BfWP݌@2LR:9,T-|* 'j㱔㴦H3'ewDȨP˟BQG"O;11'N?5׀W f-6$_.E&АÊqsͫ2LFZ:y1*r:oЊ5Ȉj;mzjJ*Jm3"In &Jï) h3B'9sw(鵣a2ܚK< ksJxvM`,ΐP4HUȐl򦍳>V#S9*s/:kʵJ`ka 89j~TL"L{M5_ң x fI#/Xh5Kmggᨭm@%9eqKjr} `cQhtߐ]@'rp V-Rp( .o'g fSpwW[Ja&MmtMP_(emfH1<%s-9Z0m&AԌb2t^w3捖%| E:G/nΫn2~"XnpGXiiq^KXZUruizʹ)z7Oè1xp^vةJ+z5Gd(X?Gwը?9 `m%>Pէ@7gHjv(h%4\2ؙʞ7ǩʔPYCӆM^1 =;&`p;>*w׀={pdLzT5\r qF6LU8ޱ`i=풌*N$.4[c}P`qNFb~i.}C..:yQ=Psfa%=(p!8y8W(PxeKD3M^Rks0NWsW|B-a.V)Kk\O0R. c.z\> = iypk2?1#ŌP>_rkL{̯uQ÷hAh} .ClA%{x󶱷fKx& 8.wuexX^dz2n38+ &g^}v0zS8^,FkA0*0b٥KDR)ލ'a| 0XzNS'@]t}Zg@qm -Yv l+ҭ;6/$׸@Gz"סqNAl)ۡV=W%wӬ2Ш_qw<XBdC U˿;˅ndV1lzӵv.~~zF~H6qru ^(^Օ^.JzɨqnS`NQe><%6Fy ҏq%EepZr;sn׍=?iƮۃw+O:Ñ*·^h+Ot"?/?xV}Uin]X,Z[ƬBblbqcCG&v{*M3`x&៓)DvtlH3dZk7C)e//z]U@Z]#)y 2 O S@j31dE#rN7-ܣCnVI#NLEN"AP}5!\g>?XkҷO_哎U៥u@M>O MM@^i}ct@T*8Ol^slNvUW@@ʷNn/OC 7izR,GR{'Cn66+2[:#"Ma-`_V2;mYJ+w$I>&)Xrț@JċxeYv8@+Ȣl5O1;Id[̏KL̊W7h'8y$)oZ"_(RFtAx&MbTcRaQ 4ӊ/XپՌ-X*.ww6ia0%@2A:fhr˵z* MQDq*gMhot40HL>R,)iKWQ425G(VdZd: =H8fᎵFz-nE}(ʫwT!<`%]HyDq2:e-Q6C-F6 D<&D';QH  }'ng(jcUiA{(f#Tk×nM#qT*ppϲ ~ǐb:G/1[j!v ca| @pkxk&=ncx,`w=8QNx=oLNzG;IO9nb^[@zz?Fu?8]!y~*T"שzwâd!tϟ;ϟkcTܶt(_bi{kOzt(ϷOyԯt[rл|>n[~,cl[{M6v֨9LԛOll6ģD:a<Γϱzze6Eɪ~QS̨Y N$l \ j]"8\j#^| PJb٠I;Nz#/r9iw*qE@^H)L""/ \Ka"ىX7.~b<!5I\gߤ5cL\EM@<=DC\^pȆDUe)Ǭej,5r^#P)4#D';Ci"=r/6a!9RV_p V 0yuuJxtT-KUЖOkL-[j)h~uLj5VV>R]\TjfMWvkr/O3n$hA,A%u 5jn[#wLnqW4U#=*VI VuarՀ 5.ӅMY8ǭɈ,M818]G#ash9$G~ hXuC^SF6RMp!i.Y .p56oiwTxoh 3[Bhu)_w\w6txrǶ!ʪ+ɍ/dѨE"/g᮳ Bf(E&NPk f5 `iy Q^DG>&[h$#7׆żڮy]V {ϴO0|0l >Bh|Xj)W5MU̙)KM'mƹhؼ~t"^d°ktUuA]:%(:J_n^xAvLԋ?D1װ%$sx1QؐVdYV p` mYɣPL>L0qj|1iqIӿ߃ a'kغ#y҅{c3{c+zH <>q٧Dw,%id!74)%픲 JE,'Q5Z"x<9Vd ` c۷sMm!jha` w@n$e?aʿqCZyV5q[rkϖNjVΰ8$^V.\+iy,Rd]Z$$RG5*$W۟ݨ }|Ofp y8W?|&h,gi5>y7 2֨u$Np?_ hpL w܏'h>` KBp6lb;d?@!/Ї^2ހ~% 2+1`CINrc>~3 _dI2!7Kt||cǏs7&?lF5:^@K}a6":crwͨhRh?d聡wr GCۉY8wr^# .n)Q6'rB| ?A렑j"0_ A~ hI8R<|{n{{c&$nJuakcz;TY[jX.F틷^@l)5eS&yݺt{S/w$qQ$ݳecXTrrGVHAQP҇~c~Bv2yll} ;i+:Vաu^Jg)1\;',n$ ?йY%yqB ])NBvvdSoU'Ǯ ]Y' '{v`T Cۏ:S`kpOc)]R4}B8l,ZPYq: E/CrģJs ?W}:K&3#ewgPT> 7ꋶOt?#CKm! @&u9crx%&g{1g1$MdǦ4)dB+7&r \ Yvz宊D`I\%Q;rkOXtcutG?.ubeT#x{]jaaOn1?g6[˓%R:sbiؤ {n՝e9{U5nHvϘr{{S @V=Dw& Τ4GLILF.B,(x$4ms/P$A{giޒ,w_O5 :o]]*gR*r יa\~ -2Y_ϻ;5l}4) T(װ7V eO>5u:_)RCl†$TQZyLJQ 7ɔNTuR{' dqRQ }@!EpQ5 =! v9639𖃬ƢNtAQ]f)Vŝ=/ypm{xa?4|d1i,}nWͩ }bkR0{Hk lLe`ű_v >k|?q7> ?{}M.'={lq9m[Xoi`Y,WiQoQ$(x?' p0f7Б=LODAf{_l7c7HH"gt#%q&*Noz\O|=3qa뽒v>8om1O105yfS/](Rcdu[QA :b'h1N7ߘE]"3Y In]ejQiC/;&k`qz\+qėJ&FESTq~@.PRhnӤfrÁ5@˼W =QfC~%|^rhT W+2 TSM 0>-㜊zGFBq)2:o?9`[~>40OV h.;Oun8n*^No!B&|oY"kG5%0]e+e—mWg :V"A1Mz~tp":OxT$j0ǨkS<ѯ"Omf7~X0wKрUcOJK÷ScpXIdC.#$b#q\=FJDa:F*o %%ugLL?~ކ] [4n̝=nx<(2Fo=3aW >gȿc %[:#g !Puzc@z*FAR\ҕ?v }pB,00>4h:}.'gƇF{|HIM Ԝ)3@Q2_CC2B ٮ:̐9)MG_i8cuuw{tףe|Vv޾]^Wbif|t~{XHzF\v:_^);;[2xi-\%ڜȝm/t?䬄!Y39]fbw1J݊ai}LG0[̶pe;fEo[6ۧ&]FI33!B<_tH)t2w&)GjBUk @Ԃ 9Ec鲺E}~|%}֪¦ϥ?g}&Ts,m۝Jo$|{8607(V??{Q !’(7?9 !/33,)94Srr\P >T*O)-Z3}3W$`#P0zqQeI8!|ngK%Zٸ"~Y{V֯^O<_9TZI(X*'ZIƪfN|;yU++&ϔ=fF? ՊR+Aq"# tF&Rdѩțe-%TfOc@ {Vo ޮ<7(jpAzUFءmo\螣Q}~sp<~w7y-XksFa0tP`ngiR,J<1Ii`Npy>6͘)B$1)mu&yF]~pNTgܶa 7¡FpO{-VhaMӟ1g2{2Rb ۃqA~wG}~ʿ׈dE6#+}?V3.p^-Zˌ7 be4;Ck1z>~Wx̒!O~a7^: cŻ%.|^ ym'~7s'V|3gG ^}<[٦l cWw+9sF0 6s݊Sq whf`PC$$v c8h{!Q.ReͨݞDJ\ <q:͸ZIY*ctͨfrW(bVJ2/L]7O06d޴oxRG1j7Z=vv[3|?·Z?͟~5N=vMcuO>}|V- Y\sGsbVw㲺[p1 #޷LbTYwJƟ9qsj`-%a.eݓ4G02ӴLyT̨%5VnJ۪ݽ#`J2뜪8SVXm/N|T?]V$=рUO ~L|>:F}-F96N'ʫ~X&0Ю$¦hX=\<>nrVA)t5{:$:(%kt1I\(yyz)*z%V<bzSk8»(<3ig}[F1Iy9Z\LJu ւTU؂{f9cx&C\RAF;ɖ^|dɆ8AuCv5Ŭs8k~Hqۙ*!֭4ixl9=K?nsVY)eQqꮀ־+OG{ˑY:^4 :%L.*#yaJ'?7 Pp٘'Dt#,=ڽgtc)>v',lH[S![ǜك7hhխwS^YbeH+#G1>P|hx߽~k=h1Yk:]hbQvBT!UJ(1iEse4BI*p1.p?mol7{*r[czl%oYɖ#)]S\ T2[zqlZx(~#| hA.6a*QRw־څ |;YNC.FGl7<ȒgcIZ[Ǵv{No4G 4FV3l41ӑ]kc@MX{"̴O#LnAkkJD4F`8P*#CsUjGQY4&\`<)Rbv ҘMXӪ`fJcȜtna>QwN&8Aatp0u|ABͿ ˍk+GmZyv}dNENghph#h`i*H/L?I|͜Y$Rcvl-X+,FνQ:()?lZdqdAen*sikBZ˜#䟮_i%9RdPFs=ðevs)f :60mnvwcMa´konoM9 Ӡ0ه;1/NCXPz^ ׆#{^l>jFC6xO4:Oa{u)ܦJN2)"Q:0VeW\{_ʻwE'ANW d\nZɨzޓh#qP :.4]sHr薛VI+ _|{xŷE9jpv/yhK[qtKvIʑ6878mv w]wt2nuBtG`^2hWb!ɖbHUc.;]seLS#50Hgmrݚ?2pfljJns6íh*Վ:Yd1ShE1#yQ0V NlJ0`ꉲ>R4*:PcG[# O06r9]q}͇՝~L؈Y)m0|V /MummrZ^-.^nۊAs2--]wϓ菷]6 ΆϞ=gapu8 ت;lk$9zFO{p2t2_~-h0 /Pe8g0 m·Ь|߹gUn7ކ uޮ֞V?[U38'!AQs^8/1+yv* nVBx{q(~hw`pk樉uc-(449R>gBS⨌neZ[\ݙdN=c`T3?}ɉk-Eo0%p3C!R|hǦt?qb]pKwӍ}-R"6z?%s $2ʞ";v)(@#DH<$-j糉~!N~<&Auz{y9gR`0~"+E5Gp:[#<ӏnIc~K-vdEaVkaI^;MpzI4:O>Pv-@(nZ¦q P1Ɓ]ƨ?-%X TAaד'g*gi-oןoA8 a,di=2:,9%s0dU&Çٿle2 (G؏T@WTq.PVP ip8<4ԿmD!;o0g@řČg* lGaPR9#nfҭ#<F,˕ `cdGS~:1Y65W0,)ƃ|W>}+V*s%K@.{' 8c@$AU5Eg\kj8lg~dM<<0)2%IqޜԹ`KʿFLR'*0˖K/? 2ځ>0qVūMyTc!ȠGKr 7xo:V8[/QV[4Tz27jv t }VÌ<1kƣ+HGHah>] r5aQ]PD䲃jZ醝Mc\`Q aZ pPKv96iw!]RRAyp=5Rltz@kLM]x^b[ս'|>7'kŰՊ9)F.>Yl8a:nh"(63u abakWf -9*gqOnnrmr]W11{NhxAZ7otaow^y'Q2KW4rD1i;M Q 'ŔݝpE1%S'OTS"/hNuC =) ^f-\9yxCԋ-/QtO S}sPzqK3EG˺%U8G,[>Qy JPH:)f eKC~¹d ^,pCPwb[F9.aAj\C"QAd(% ^J -m$Q!쌚 QR[ح"VzICc|uJe醴?A#w-'d48 &v.,,K1v++(wOrPw'q4zWw'ovw"/.&(ՃꢔfdMyQJcPG/sfu s-BC)NhMVac;f~\XoW6PsRqDc7z-)g}k+`SC|6H3K]v};g;3>4)xxԬ. szз]3ڴac͒ҟ uIkZ7CDQ$'C.cɹh :@sӕMf Byc" {&΀KIpw4l1AmƐzM%(0?\{q hhtlvO-l[ɧAsJ—՟jF/oTf#ѓ(4OMRo)velI6K +h xf'`m<[&Ll̐eWεbozFEܒ lm^߉ūG&5:m!!Q;}TÙ} j .ĝ'+d%ҫ& $ѐѵ]D$[7n@1%K/:;+dMԗUr+RogwJ W$}LV>_: WpWlK^wgj~"O6MH=8#coN#ߜF8YT/; aG?SN#=G{pDpF]/u2VVM*jdġc[™FǓ;{?7mr5~qG/0PowEcݏق ;r[}fcv <[ Ku;^Xc.yS&+TX>HUWTq|ю5~YK r)DJR;H.1%U9dvi}Qal񪺰PYP7%acW?P$e*Z:&Gl.YLMSOO {45E-HKUkߩ5U-"ԇOevX)Z97ᠳ༮6[5WWJAj@:zDTGZB'`R}jL};_$ggOx 8z*\7 Jt'oUf-}֣Zc= n#=:)7ys^M~djt I6p.fqa^ 4m-dQ53)(%3ifJPoO/gv:;oPwTiẑMA!)UPrs”orbnv`W Ǧ(N4HQl7P|Mf[JeĪ(nZAn:+*|Mq0E=6';Ü?/N`h(k_*єnP3mă\]{'(Ys|||Ⱥp }l̓eskRpj+NT|v\32BK CX0umosK=~\# :iooNTfP! (PTcfX\qk?DH7 M`cb`2vvk|zujFwܔȯoUZU‘ފA׋y%C[4X/扤4\3P*Ɋ=w%1[656o#jY(} /?E4=\]4{ qfz'3Ǐ׳uh`Pe_EU5g|'W-Fjr!>&sxC=|t%k8Y>#|gaD/@POj>u1$M$a)3ՒZ44e^_vx1.aXUq4E+>d6C/>|0aD .ПaӋzx̨ΪZX)8+`djc~u&_%2XϘPSU aAbEU?NEuih>*m)21[&}mә2KLSc d:{䪼=D I??(%M5 Y,v$j&LD.8GXq^ 8K Ԃ*RN<0 uSKό<; a3Sb :F3饃YvN>˖ao[z]-gE!O1i58k ߨ&j\NPEyh /PU7sJ%a-Ln`iڻW^JƸrp˕sJvv{4{ae@0ȼVdpxAnٶvFFIJ^#?oln1CqaMx]XJNusE4%ɺ19c8 16_mMv3nyv=$CCN9er S/kYhBH7_b:/#yCu~;+ ]ݏ\oi0 4uF )"nt89;=G}r1]atB56 hi.E!U'T";t4[g53%ZT.!{s,gaPXaa![T-\iz9qMMsap$UV(ƒU8bXh /oꕧ9U]eЈԊ$a(zٲzH5ː}ƻò׎f_yLd,ʄШ3R;Ԉ$1ƻ.`1ohl[넕hpxv/+Տ]4a|_Hb䶍a٥]]_#pks>˭Vm$x5z VjU?}_f0tzB~CEpE k0nU j4sf9 ϒnR I-SYui@+KqRP9;uwlD"$p \ao5+D+ygly;2k1&+GmK|6|ͫ7x^B-!Qh%3sS/5ѫ@}fu ݢ5hvPb2JNJHIrAI`82E.|WTK%߁[ɐ`yu22N?$IjTC4g= gJ7wIb¾3H0f겺7LZL+f`oRT :^5 _l]SJK]]tiۼ^cM~V/^73eYӎYNA_lMl7;qs@`a YdhTj6g7lwC.'F+P^׫RWz-H>\㘿}wc\. ~cA}#S90-_lGZ:mXwi&<͚Rj8Jt5u^Th;ƝUI̙sMלSr܁-Ct%7^w;tH栖T 8 nnRv.e/Ibw`8ތmW- ˢHMgBpQ@( WMU/Sż *4F]xSYt7cɊ(hkퟃ$uu0Լ@MLK7 (琸[`d$!{B71㶓 wA2Ѹ#\s:;%˟sX!5ch-{} ~SVGMH";[[+H5Lځ\.2A_e6[t+ bh%{Tى dž!7Z9{L lNꡉsROZ-ׇ2${ޑczmD rqVRg?b<`h 0V/u,X$7_[QhAɅ]l$Yv1z89ǜ>~(JOJN\RK:tScoOhFT^yNsFDL]FhHx2*t]J`1f-;v1,p̽ a{ M81K}K8T(Ip-2p*a-}oyq8mw,\/؎sk+G?fVkԲH!)N6V jY ])w{7ȵ#=⠧ϰDS~`lœ+s7Jǘp^;Ze?J홥Gln5_6vw}32澩C"h>>*}xsrˮĔ3U|K].*\2Ë QM;tS$8a`%|1^!m6Gvnԡm~0a)@bEDҤGks7cPt{Cc nH9(M5o =d,ܠNTϘI̹\/T@RAx*2x_-b'#L`Ud;rc˸UeY2t2SOeytOc 4>J4eoBsqƛpK/c@s ɥ`EyJOEbAWpI#P2([*Q3'02a)k6%fli&1pgF3cp!ę%)?;Ha]6huj8/X'+WӮsUdLCaհY*^D >Ei[hn`{W'l%%|wTqvя ]aab߲b@a܎1ig`k0tcSES3dJNleBlپt`|)[Z-ݷ/ti9C#!|RRvփ8zQXigd(.Ph;͇b/4[ca-%N1FӖ}WoK$nJyt\$2xQqr!$rk@{%g҅4g >rJ8:7F,)Mً:<풭}\AQ+<Ҩ,í?(WO7duh2Q$30i&L4aǴ"G(`d:tiHRTBFX*끺ḧ4GHdtD"!7+s&yrCV}\QG6Grt*FIxq0Pi2ǖ@u4F+OB~HcTRZFJwhz]Y 6\:pH41aPi==ReHWQ"t2i{Nd 5yzH+up*@4a!bWZFpR: y,M.Bt0)`֙/#mPj0:>aƒdg4Lx2%Ί[VRF ^A;!X"SI#]pS㢶)(ıxb~NyBPJthQ5hfVQy[j?[rMTt[fA+MYZqEEH)zd9FvJ"rG_>;-y곇΅ZR`Fi.ϡubcLV^qCȩi7<ǥ{C(7?d`O^ӶKE1Q[I>&*讑3E3'[{FʁwI *@PsMK9QR6;<7:˽~  :]Z1`,ڻٴ رrtR-T|mbTulf-#:-"bUIu m斻L͔I1$)HBH.a4q;iWS~RA|T6S¼%<I êUֶ67i{wŠ8 G@(9Mih >; zMNqc8\[,6pR+&}ycl7Sa%*B<(VٗZj<gMzA f(  ԪӢf^Z߲yY*T+H7@U(BFZS2_)Ѥ jZ"$Xh@9EwQ"<5wV!xHғ' gdWU>D#BS" `YzNnh,0x0G]vg;nO˜apaz"("eLXH~3ÐqMnƶ`R"}7=_yQ푷X3+BB-V%2؊a˧=.)E n,kҕ:>knΙ}\4U花y֨#gfFHX<$5aq@G=K)^ʜbd&@t  tTr-" 'Ec!R>}^TҜ PD/QSMYde`vxH/ɷ  fZPeF˺):V|7"{iɈ5W"/*y 9g%2PCs38N ^1-~z dw4]Hi3\wY8s@]΢9Kݎ'a#2_MȾ߂%qQ{DyciX8G fM3m.ū4ت[pkݥWK lgD:VB<">đTѿ]$W}_>I1ScJ>q@"w/_jH#&D1ch2sJq0U3W׉ka9r{\;rU6T_1)6T?lO:TeM $6k7als,h'ORϜ'k?ɸ6.lZ'!ui'p%NT%c僧xt#D~1$Edr=MJ1ӤCnB=O{V[z_էK/1mC?ӏ)PQos4{Q'Q70{KcfJowA5Bϝ7]u/`Bu:W+(*hAWN0 1  3V шl@-@IPF֑\I4$ڟ;f7V܌yA|jlǷ)Gƪq,27BYrnGҤ P \t0o@nޯn¸p4/qߎB4 [ j6._%T+r*T${P@t 1DLKs ze{x+nukgz+ۃqҢ6{:1LP-"ã `ͮvpiS|28|9wIi@IBB_i_UKYtGN)2K WL7 SmwQ\rՅJMA!IGcIx(hP{z!/{?ogw괢Iu\*qUjyU Q b)~3QGv/ƟVTӓ' n9= ~kmz볔y0C:feMhXK @O;?ݬ΋+ʴ?a8$lO?"_Vxމ|WT?G!g1WVԨ>nי t^s~;J? ޔci?>*s0Kp8{v~^}u$@x$pQ fp8ę;D7xBQ3"f $Z+l5VK" ʔª/-PBBof {1o05[Y>.2EkS9)VI S>EJp̤'OJ%Ӕ[P5溥)=~(siXTNLiQyrB$JDPdy9222wȮPGxIzKfh*|:L:TIbJmouo<^1s5E3BgHky{Bި[nFL;wRtvnb%;U"0*O @m=P.scR1g&Vd+Գ!iYY=hBꠕÌ`$\A H$xlLa~Y h M9i^!ln'p}h潁;оFQ6:ADعOͧ5S|4Ә&wKݕ!MF1\ yI&ttnJ2^:YTLq9c[4xm9_cS2S֠x/SW?2oޒ-\ڜu &48>-3DVDŽSXrZP+.8 i4َGjH&DCy3afh.uiDbpF&t[>ǯYѮ )+Ѻ2YJ@u*qdWc!ݠ7p}v$9:lG/tH7jSRD#LhaC¶ n>lhS'餓7krzn91K3&#jsvȡ<\CS Ntߋ%7:9W$aY4c\aɢZ`([肏bGyp3/%^<dz隌T 7<s[0H_4F4Rk9"Ԗj ħ5]@MnT)aT'N_a=ޏQdPɱ!=,nVZ#0M傷{ K"ظ`TdO7~)uw/{iRg[s-)vU]1~}X6DBK3˿fmO.%OkzSH6-OU+(g0EL̫A?f0}ʎf-5'9Μܙ-\*,rPë}˩1Т?;]=! 40߁Rw`"V1tiDT]O /f0A2!|, 4RZxjy5cZ+&#Sn6 5D-~czuy'ľ9h:<;\90P8"%\F“ _`nH7YjC:o.-/=g_哶v츛h]]k=D8h黊!gvk9]o_(&` iREw%;sT@t`g~Osoq޷{؛"nhsvlig=֛&X{;lk>U$+m8G:uns^vWP{%NKV"/6wK}>{%oWݐ#H0zOYХ6pٔvS{Fk]^eQ(<+- :bE'p"\1Yv/Գ3|+[a׋GzRr~u{#uPN󗠬D+6nbhY(IeSVyԨvHގٶ^&Q3yj2ldbvBR/y6v1o/qlH>L(5}i"IM8S7srLvO7gJ%M7:!hGG9x)Zb?wBpICm77KDp{y{u^08H z#Q*R{$0$qh;*H2򷿩e^6A\q^xfL ZP#YJ:LhkxHj\QŹ52.^ϡ7\Ih=7j~>7K_E. !-wF>p F}f@>{;o{k ?{S43b ^?8r -]`az7h:јsn68ށQSi76s5c/A>NTuGv$~D'N$Mn7xM냜Vq @9n&NH4/t[^e$" n_)FIUqRVb4JR<Ұb$Ra3~̹x8$ !x5sV3EthY?DV:.L} u fZ㫵0jw[71U jx tΊ!֋MWztz'+_&İ׹#ƚV[ZXz-ئQg]L,grL@bS<右^ܳ?CQg*{+YMg,E@en! alX1N0`X52z&qNP\ge]P+Rnx${3?"ܚR`|;#7v锸'6z\;U_ݞ GfkXKHkS\ b1OR0e4>Z6A(tfIͣ_4H^/ؽzGˌ# ''ug.6ޢU4L}_[cOc %A»"i@c}ǁdUԺP+m^,*ct4x_Ϧ6 Ⲿ>Q9ּY blUJFGe0%49BȞ7o_zd^Eh(v2R~`ĽZi_35઺Po8ģhpbfnZL?ilx ΐI4 qGi8hawbXGS ycn>#U ."g.boXX;@=x$<Lhn[xqRp$/wښjԟGPdzcLyY8`Fm2 #oFߌSF6ƖT*izFI/ЊR,%`cD!T1zZԤd9'a#n4m.qd,SM&g/EG!EO,%F ]={{;{N5]}GCQԠߍ0i̠Z۝hd5.c`G>=A2mg! =7ԺgriJ4p)-ڸNCfhF gJSSjYEB2"Dx nDBwI 0^rxI-ŭ3ɆCF (|Ș'$"e"5v6L"ht j"gt lm&K[Bo|RD4H D%#V8}{` a FIJ\Ń 5_ T_N"HϨ[(K Ml Сp<(TΜUĐ@  S{ l &;yIGMI6~=[OtrLf@wc?#Y, ч9bmx` Z&1oO6tv) GR!@jm{;;Cbt[u: S3ZZteCqdz$Ú-.4!5ӓR0֜Xf]2dx:Ɯ͋' P`Sꊳ١RTn$7poT'}6e6X<2}#iS  A)Ы³,.O^xw3C44&j 'k 3WFp\4Z!MӚȅ8r,~t^W/)?rOBگi Nfh8 vvL2z| D.J>bVr [#~7.?}&'xW:FezBG@)=}yIg */E^5<v#sI]Q&HW}_=],VԵa!3To$2_υoH`꿌y &Os4lq-Ԏ ╏]3,5  Q+Tb G'8awFqɢ~s叺O{Z2 8~|VGR%uҹKxiͱP^ŠWʓ"n֐2@3Aq(UȡįYz'Oӱ+h2XQ9Wz`7vH󹰛̽]caIq۽d<]a|y! ~r}/1t5-s9\'',,,9>tiY"݀.}Tv;]?~/N3Ƨ`Bu]ǏY66w1R͹GV隸2 42&@pn+bS\fہvjjVWWHw棞 4C2z֋[J5dTgWX}Spct0<|F$NqqiC{G R[y\NM%#yUrpw~6$l24(70IRE08ݬ$-Bk?S~lVB?JNk7T|ܒte755 kiqgew "4rw9:/W@g_㕍F u j~ٸnWx:Q%'Nײ,[łJzUmdTq%; x#2fcGaq"@J2aFݻΡ+Ÿ(5zZNߜ܋_uBI$(BvBqʆE8;_D%٩.c/_=nFQ,~#ht18$, ] ]屬Wzh9}i?v, mÁ+ iblW|1%JMwٻ/Mxrҍ,ѭ Ձx Kp7QlfFrњ2c鄬j!e5t1zγxvϞtpe^BXhГg$S!0'А>Pw<g8 1 z#yh; U% w߯C[hwo%`3 4U8r;dPQE7uG4e6@]֐[)Ê_6W՛_{I&4:C9 ) Qi|1%¹j%zgg,ɰׁёSGu4"-&<*j7t+A`Dm$b0n!Q}(Г\ū˩:J~-;_NcU X}~IH& T|S=1^z^uZr*`W@4;HD?Q??H·>Sh`R/̾[QWϻAC)!tZK."SueN<6>1^ilEN8Z7be rLlzWݟ7ʈgӂƒv^ %Э$M(7răQiY`AA& 6dpۮ;рL}~%DO 'e]40S8:ͺ Gh 162 '9 ![ǟd K>b{#QTeZDjqgDJR*h-q)/}#Nbϧjʎ?pFm-9p#sS,2b.?$\am T$3:9EސDK'DTU*v{,0:@#P4JȺxgKUhjS͊mool%Pl~9 m?=pձDC0lYC[;WP)= 3@qB,WqZA&WR2~j+PreugZp! Nv LSde^Sn { wmXbJ+by f.\˟Qje”mCMчK&4"D u98q& XFd\1 M7u..i-"IOSa#w%#gGٱQ6-c-x/ɹ$2R9גîŠuQg^ӦHCW<_Ȯ)Jբs׭Qs9{w*3WR;Zt4UDiOJ4OȅBǗ\3g"3&y*Zoԗu׾Ѽ󍨷V`JT˶O]44$'dQ 741"E y{LABM*.vPw'5;V:ě!v3ؐr[[熺Z%l*=f`Y4 ?bb8lu4? '(v6 JO>d׭J!M]!0 Y/̙G d/ى_%#0&G# ׸(fj;8=<$,*DM+GǗjbߵ1 im=a1>B# /B;' 7A6Ebcj.95de@$gWBrLT=Pm Q-YTg*5e'QMv xbPH>=(,AsYKF%RsxHZ[Qɐ"j(P,ax\K@pNXW&2;7GkbݯE^acD3y "φa=.vB8""L߶8b1.{"[^@ ,pwFŹ5XX./,7Jy eÍ2Kd0le N:}>Q˔քDeycFI9=pY-:i!ӱ}6F n^NQf& [`[0Dp ,﯅ucC Odx&>~pi'-ۂwJLtd h0JiM#񠀛ev"9?4]g7\R?V%B&[oUԏ#bNGL-I|ymX7MQdt= D!4[0zp y)Ƴu(0Z (h~`Ͽ%/N -8!fؿW.AIupzqH{8[0?*^R}_?.X]L֣5kkh[{o&zVU?)g#s(*ʖpDiuNjOP~L~(w|ד&E}XR.2Bvea4MlОvDn!60fٽ6 OR6N\cұz*t /i!8E\wdfFȕ!MÜ+mcP}1ڜVB)a{BsǝuLI xFC0 z,1 /r2cy W $>!;i]|H<徾41 ;҄xh Y̶ۜ0̓IriAdok5/CըW1 ZhB h.nRr e;3Js-᭵j >̼#ݝ2d_i;k+yFb1gтB-oʇzixG;L90-PFyPokCx0͈ZUGhZ0Al()kBR5,BWr(ws&Nɔ;5 s(lk{DQC6=h0A=f0mSPI)6)\MfȽIq2_-: o#5(И)yvYi쀜w7>`L4j4flhC6ԂW%m4S4d~ ABD$/2=xł{R!3''3N@Zl|.Z=uNd|%p61sI g,8P)B%so;|˥\\]Z?Mu2B}&ޚGѐ{tߐ^Rhj^qHk_WO +pR^ MU yǻcu< ,PCi>Wk76)*F寯 MSqpk3Զ8(feD lG @H9(QLҩ !$axJd]f{Bi[ [m J&!t!]2.tmB9VYt2!TIZz#:e_Ǩ+,k4!kE3+,mZ>ki$?TԪB +T"=&egmvwlV-^ntynA0~#7@EdalK:{O7d$0n" }caw2g3C3ybRN7/,/?ZGS v&Z$jG5ٿ7qM5,v7xa.vܼԛdw_q_Y4lzN23<{7yn%8֌L3+:MpNTsXlB wh׽b4[Q;$ahA*ŋq?F]ݐv& [t=w^E7>T<< KC` 9~KnZ5' V#X)"6D$ tPi`%2VGf#ܮn}rn"j02ϣ5K'_ɼ؜\t_/ rR ;,FN!مxRk{ظ VA|Eۺ eOL:FObHd7.!Z7]w^oP^^[I!)~#n~ڢ hfDW).+RkR7Ӡ.A֜ "Ė0 w UP:7@y-+Ě:_x?g|%;|9*81/ݺ\ݽnGx< BZEw]77 3A ZXykmIt\yb_^~|k|n<-?ߍt_y+atg{$R+Pǐ4dO).WCXOAk^OD?Fbrr:WgB1:KnL/2667%!Y).˷,"Dpao/3,Gmf ^y4ۉ8!;';hbQm~6RCIf8d8?'(ǀ)rfixAOScRlm4>FoN_'(b^QsTYY\ݔ43p8TT52}Ŧ+lLV"- ])cL(xQLD8,×ե.84CJȓ뉌5e+۵8byj| (nP"R{QSu!#'+Ilh|a]!;s#gF21Mʚq½w O+7??c.gw}MɅgt2O1"0GmjBw ƌC{)ʶL;whqwosgo`s_|-W4 TUSj*qW!f R>u0pb BuOrtzs&2P4df !|Ig*?uLYv}o+k>"FSGI;{W7VSjiqR6vp8R&~+LWL-/:&Ss-=2&ʟn՝Zjuˊz-u=ޤmtb fAfr\ݰs_]//a6=x{[/z~V'PpТ.j6"ti D4@As 7y{evvvIZX߆kÀ ;OΥBO1^)z&h^Ovp[.&خZD>.Ar,h{vvM&jʧUAEI gB >cVKFqh*n?-.H\Sc؀E?6 #`Z.(r=/( ec J4@QƏۨT*.XW!41 TP{Ռ"q'uWwn\w t4Ƶ'kq~'5sJ<'Ա\P ݃-~HLz7+ mXUfFg˚֥a!{p%L8mwneD7!*kcwʴ or[o@ӃЂ?=ohSpE*qk]9Sgq#|[?nܾRa}Bgw/\v.A)@(7U`ь.ފڍ~r]=|>`%m5Vk12xFr:]qu'̺zܻ9䮸Jy*Υu1C>a';*սjx=OKb:ѩ=+y(i?!lQyŜjp<#1،( CvDSˁKNⱷ`^mzqVV"nB]NaFċ"U+aˎ ,r;-o`J%h %$.@vGFQ!>=L⬜CVi(#tT 0)ێ|1'h b9@@\g;780WH Uqo 9MNMq 3FA}8ի+h5RVP9tuMQ6A$+1S[(X@v%zѰ^xдv(H!p'cקY 5AaCYnam =[3uf +#õ"53k</p֘ EzBuSg3ҶJsYQzeQǎ;LyN(#(yfwLc7M$ܡ98=yּ:y;L-NbĿZIag΢x%y[1YX]N?_|^+J0vZY-dlFIBh^#4ܛ~`\GW$AL(EC! :]f 3 P*9Ȑү[M̡]8n~uEhoƥV)ecǝ3r8\xᐶq2t3=5ĿX(/BuBΰwS6{Ҟo3\LI!/8&bhn%Y}F^ЌKэ >aePמ_.觺:<յLtlRdYUA( R 6H⍹aۛ@/wa џhfpfo]'DV?>|XIӧӟܟ?R+=p33~DB$ nEha&o9&*&Hd1q͒cpľn`vd@ɛ(7sf19= ʽE&'1kahŸꍆCͦT*Y9 |.jo&0+78i-~e]fwbrY.c^"0m8-0Co^K7xDW5w^@2%8ila#gu:9JLAeiBH4nD Zopi؅k`Mm٢NBC,o) )Wh+jA𑊙,z0c#[^ҭflY|xH@[)*$(H(A=sҪܗ\[fL2JeQJ PpJP߀*yZ KH戰Y09uhl8ШClp0eBiUsNs74[q8li0)lo^ۍݝ͵3h?z'o63t!7ݯό}/{,c6DR>ӅqN&VƖ u6']28L.aU=d꣙C-?RGc>_ =cF\QOrbfGFj͊}d+N[MyCe3gv#F;[R`*yl"h|w"bf&2TܟIYo`K168UdkIM$j`}#fBUw(9Xw8Ȯn{Ȉ?7TP>R)oȧfXR%pgVh,dUVB>+TDRphG(|[J@"z]9<V"@1,aJGONCʮg9V% FN=u'<Ҡϧ0<H=: ː1x +Ř\hu  q'nh\Sn\0.a(}^y*0@3FO9U5bD!4c&H ߢWFJB*NV/>c:m41FeWYr"I)UL9ˀ%0wJA,kdJVC}Ra2$TFElU`N (g5106{vTDsq_o8'( .XNYRțS+^9?Yj'!>$|9h(\jzv2Wޕ 67'7A?4n뽨%!?2r4E%CmB$WNagļXhm^g/78,IOKZ=(Ľ: _(1cr^G"MVܪ: *&G#A`FƆRBl7)cPy Sϖ["(%BVJǗ|#tJ9.픴ɹɪNwXnْ,?s vr9$C,/);9'Cc:#5OϘV\X8Sv lk35uVB>U>-'vV. OOJ[Qs/H8o#jE_`pNo]e{S//t7\žh\aX,RQƲoKr/fqq+n1%4(J P+ܔ`HM쑢:Z$z7v4${  J#x(׽8x(Xَ t֦z!L̞& ݲF銸;d%^C!Ԓ&I0a Ъ],ʸfپ C,ؐHP}iK^T{)*`c\5c+XfإW_Օ8JF7wgq^Рɝ3.r{Re%I wx<1\&A賁UDL?GqM]F4ޏˊ YKwz53/cst7l_7،J/'2@Tγd0=:Lwc RX mG(pZSw}L0| DA$},,y89<*nkc`iߕ#j@:mB\~hTC%=+Ysg5N>--?j#}-M:l|J{r q_UvaL cL);1#Ղ9t" j+zƭ:i㪧S i_;ڦVht=Jr:~K) & Dt`DuWB&iuN1fs"Tؚ]ݠӣ&7r)Oc^[XuNWdO224;dǭcqŴɉhhB;ƄЊZ6πICV䞍KoʁΩk&ϐ˰rwsCss{=W~4WoIa+v Eʞ]ֆz@݌qFNP}L$'`F !+z/=b˶Rp_c4>Vr $כXӓ;T'N=JtStNf#g̭G*4#wSrT-1F55eVj)YaueԆO?lA NS=ˍp+>2*S%kC\יɽE=:RCU'[@.f&dlqVJP^uNLA_-CDdr['C7& ܽkO:$1vCMHCI,a|}q)Yu?_) 03vC1\X.B56=ǨQ{NpbTSڏ[ a|/U+G]La\|asSHkGHa^dcA UN %VM;`qZKL%X5'{fK?nzfI_E"()sIWd^?/A?jIi1'-yDN~pRE$n<ƣߒo\=Cz tYZ.#(E<-&CUݪm͋-Jz]UIǣE}U{ ׯ EN($ %Xz{H)Ih`8 c ]/.imIfؽW$&~]7ʡF9ުy}X0*0q+롾0 7_Mb9+ḵɓؕ',J*H6`*j'EiS FcBa;Q>Kcu9<}.𠟱z}超E;_L5#c6ECoN)YRnk7,_)T2m]^LJK1QlXSl*wJMQTc<.&ԏ]xl%w# /E,,jLü^1J8͵-H$X7siw(O-R$"w΁6)B'9^0|2 ۈ.hprV")HFJr++Y64|sƽkjڢ Hh8|䷈{!6_@{Ʊ?Zb" $$.v 9Am'dA`BYԷg$q8B3}{qO҉S^XP8YTQ#<5ʟB?Deٵ,; Eٓgfg_n{?7kWvtȊ3޳Nt­$SZv#GiDH7WnkŌ uZlbĸtӌ:rXi뮡sIވ8 }g#x̙ ! S:_X]N?_7Rj'8aوT4?>:Xzz#4Qͤ[]3%{%ϒ>Db7et=u&L`7*?:6`])qp)cZXԣlyg]ؓKqI9`EN eXX+L1hf¼=x]nξg_a=Q .n4.٤a ܿd㥇!:Hd6QY'FnE]"]mN}GL k2z-Wp5e NtDhE73>5cvIKE4Hs#$v't8KR[ 4yQ={{x0K(#9Q: Ee+ Gs;JIC,#OM}yI!UַSlGͲ1Jv>,h67w։4/~2oUqbEew9{;˃,~\?xݧy;ۿ8 ʓu<)CL,(zpt:ԌvQMjumua@uD5Vgww:{e})4yp6J?iՎȟ[ޔv(q>A< BXϝ~'}v8UM|Gl gKfpɦ?7-O=>i?TwnHv^W;Xݛ;+gwN1R~Bo0›<q@VIď5Ŧr{';#n9g,7(ηL 8x{`ZOlVm1w0,;Wn~de ojo7 T|/eii&݋̓^IlRPُյ/J;{{V/aWc?Aa ̾7[7ӏ̾>]8u3*SN.wdxѳI |k)͸};KZ3©&lkfDV@ERgC. :.*}׍SP2‡4,/gy=y]g1Np9pm-y~skż7OWz vo=uX,Vܞm6]zN6_YcɝLd\9Be&;Fgn]&L~\S>mɽ{? 72畩 i+t͓a6 }2EEZ16⽈hbְ$ uu!z-f7JejY"䷷\5HG|s킸[HF،Z]>_nV)(Zš5Y Wޠ)ݧU^c.]"͌1lwcݥ/g;mK^eU}ccw|/?ns>NP+1vIYE[y\AśQmzdo4OLvLN䷽8On8dYJ"Gt IHxK<0W4Axp0.'N p^/άrNAw^VEqEO>Bs ՘x }^Wn`NEl]N1ZF2R66jbwO΍47Xh ,IXSMs88g9(76TcS\9'` !tڡtU8=n&_.nG{ā'Wm&9G}qEQo'zB<ޛ-˺1t稘ޑ4҆2 r#Vl8/au`FA,ႄ#'[)iSC@m}N2{:Kϫ˫uzHwDQ.4}y71=Ɂ`=ۃS>z}Ih=})^A?;f`DQ&C(A$^iaEXmM/ɎoBYt%En7u'qp#KdB̥Zcoelǡe⺍ 1m*Lk柟C>dVY5~)٬;:CFhiۉBy11HSá<'@vOmECOg(/} iP^^9?)ԍ~r$b䕽'^n˱H(TY )jd:c2y60Q˹t{jǼmsGovn+ss|Y f8A|o7!$i#|?=ӼW=?tbwm[1z7ڜ/~dtΦVm?YdVtEJu,1].qJRw4U>jrC"P\<`(CξԬonw=(n-;J}qm"Qg|Tw2~M,'9K%˃-"D3Oj7D㞿Ol_Gm7tcl}d5 Qo%Ĩ_̢Ilr;7#o*nV Fϩso6WIA^תTI83;EE'i*R)#/&aNݟKrKeWf=w^ei)gf*uxNq&mm0[Yl2s63☗JX5[QTI(}c4݋coۄ]ޖۋV=h4S.Z?_.OIc|w=$='yG"?=dZ( zXJkG{\7M/ULA•>r fp]6Z1w@,Q$7S"x`K%?ww=h|S'Mc$znii/IpwjSpŽ6yzl׏F0T]5jg(?&%)05Hr'T7Ԙw3,+hWd&,m-ey$Yŕz;1WiӉڶIp]SZ{Ramz­Eoj?u Gkj`~nh{p)m UncsQIDսChxGq.&M DhLRН:WhnTꉓ"is$mF6/P}::)+?ғ~RU4<hNm)b=+_YFsDĊgNDf0 h5'l2|ަ+j9oe2tIAaxNwGy8).DQ=C]]LoN.\xP.l9{t׹Hu~ɫ0 l+hG*2~Fx.{q}Ov<`#wT]zQ+ *e]`ntiuy̛Uh1V +@JSA!c$a۞y9{n~`u/ oM6͉5$yEf3fJCʅAc+hy!cNF>54NҷlFbl+Дmjַ!(,3Y3|{붱i&WY#sCƾz^2$0Fx͕Za/7LzW{ک~{`{++OBSܛ?6u90EvAͅP3N>gq7J> [@dE ,\C,`ƿ%'.2Ќ.`8H@mjYgPb h^N~)` |ܻT)LtX֑Kbvj\-ߊ6jՊ?J{KZ'ECsovvD|K ÚSaMԔJҾmBr.ڵe^s[jf&c' 88T|*ؙWqMyu&㨱zX wb[" _b$̝:;xK+M+Nj }W!2A*gd `@@֘@@y(;!&u}/bXԹ0m8lej[@Q'4;?͟v݃Or[c>p?R9E5gɜk=xKvF+=9y==-ᙈ:y qOÑqt.??' :޻/C'FC |,u^zuez:5{֣&ci O4M_hqWA6m0 @&= 4,& _p%L\ظx2rSp3qrb&qTI;{ۈ }gǾp3;ى7ζ P|0_%ƈ\?IOYs⪼<[L"3oHKJۭ1ۓD-uə6;(766,g^847qtWgsdS qWy5K`j-ʗłš]l]a/]Un}.%ܞJZg F+Mt+}0jBۋ[&6dߕO1rQ4\?YNaY5tcܓgiyu9[f+|Rj1\\^FݐVD؏:\760A<'#-@gG/.zk e!TzF]푩E0{GB ^`nOcX-wB`VslNAlPn%Aul!ĩ!EID뉘)sE77K&9;[=;#yd-a~)x}~5*+oH=埪5Х'uThxb=TF??mdDniuhL?~LJxsh>S~ȑWk{חVW%/;ˣ͍17]sɾ}qqt10N̓㣃]ٮޠv8}ac? 9bc03.,WW*e]ZOe7?iϽd_Y?W]NQ0a`~JT~|qiuzIzRq*Acë}qISYgs /V+)US? xW^d4|? <{ث^+M3r/=W<>ߍA/j;M=p ]Fz,H_j{ǵfұOR"!r2<'9joye翲|*}w۽R}y1x].A[.;zi~nRA>K/lLnE/'tå?'yzOvQ<~TW1/L?9LS+|g+Sk| Z_?[ l]畩k|fFt[ [c<08U3HRX9x/|b 3dZ28u^[ 3'*LB+N3@}]&7!9/1Ļ:1H,jЎhpʹҋ栗ǜ!wZweuU>33ޡ?\{FE˖[ܴt@מLp] Mf /=M/X{dw݋|/Kln^{F?oӲkSNdU8=nZR84&ofz)4Lx!l3&yDVywCJ\p~[HSV)V%IY8@N0dB+m+7u&MwnPP7a1'=M:wDpA:).A0Dqqg 6Au#xR({$'"R՚H˗qH5ۊS*25VO`@f k\]r`ܫ݃MsKmS<':55S`dWo7M~ q(%9Dʘ[`C"_wuhoޜ:v7|̉A>7'N@N})TR7{]]d=:ZSt׺j~:+zl5N9L VZ^:~Au2Ew =eZ: %"va7hI;.7 ێdH;cY9Q6r0!ZҐWtX1%(E$o |F!nQ;C =vu7(wy('pPVnDоob+\??05$DW``\5{L{Uop " ^j,t˜%[;+Vd{E:&Pr47S(28, P,V_D mm8C!xޑ8sJfqD4w?7j8GE7=%_?onml.=ejo#`SdD1;惡`nm,Y_1N90A=/R}r%߈z)܂E*%S+h$ =Zp8G':I R;oP S§w R#zq @ R@ 5AVQZ$-^8+Ơ!Qm1p#O(RfC(F= V(&5?azKUVbB;urxF,"i51K[(Kf9|?Gln؝#b= oڲrM^Qs]~1rWo*$u V~"_pleᔸ߮eEj=SʆٍBk Y+ #k}VkcC>Ey hޡ 1'$K\m0t4%_p]~Gw5ۅ/{8 lz\Sahr/T0\@Z8:5!@h=a}cCJm3?g4s8w74# " { evWȷUp?l\5=g!bqo2˥i}n4 I^tE.DےBZ`fN0}wH ̓q؃n|+<&*v)IArr SXPrzz %CU>0E(smA&X#WB3闳JO{Ay\2%U;7p1B2E Dۙ&-DcŇg+|Yl+AXgr{̓}j^x /ZYjyqzcbS{u=rΡ@:J.:`c?0jc;x"%nTˋ\Ό5Nԙ %r0yYX?mBIP:;($zBc_?8Ƽ{-r^$9x,TUǐ} dIS-j}iȐa,\pmfZr"^ݟh:4/EuNbgj/S+ךqH8v)t&< !M.hpsUʅ>5.Bø(#::“Oή˻U(&&q $KkEqZt+YgbгO.D\L3` z yrC; IK[sm͕SulT!I+oHQI@.K,H!bϖFz!laǴOy ߍq`f53lQjԎ6x&Q89RP(tMo( CZ\<דO]n%]5y1R}Q$% 1.pģ"' ;-pgSV(XIxfrƁkrspzc$2×2r27.U )λ:pįk q;! ~!xhQ. U5=uM0ʈG!D|_YV U5 }`rJK hPbqSF g˪ e*d oGZ|s:Ӷ9-sBxl2J³q1F54vbb9$~aTI`(fGW'"WJ`Y6v?_TV3+_32ۯ>-#qd(K(6Ͽxa.Ga9Z* `aK9|]Sp5jN~-r]Ң%BB_M,fl%^"s3ܢլ\0(.86u:j e?18QY-qkrCXEIa(]٫`7_Ff {=xi},S:Hkjf<4VG._COyI،]NXLc<40ľakэ^sh#RN^JѠW/ι^Io-j8`/,VQ|Q~ky^ʂ0΍L%4qҰ.H yXy9ԘW\/GԁPC;ÈZNvkhP 19lߒ`|dkeU~W&(Q`;_z5Dڊx]4g8"U8̓\eZ DhFv%`([1)N#1(2W;{A{A.]MF[Pe:0H18^:0/{0"NRfv26ozķ'shY#NV$tg[gOe_؃O5#|e_ ՗!hi:(GN4 /ψ~]xB䊺td`CrYt`_b(ʼnVE`x(?}ߟ"iLE{^(bTR`j\hؓL:Va!0RmXHi.\ 8Λ4nI?+kw~}c"tf$GcɒMMK?1"uR |A=!NGu3UT>\-W"um-MnrxTۮ[__ZRӝ=Rwr!Vm&1 }I2 [C?`DW= I7Eϖ#)-\Ӂ 02Ąl a,oA(kpHHR3N.qYnFGǘ7iY-@4tx܅in+>LfWZzjs+&[C=k:Di; =ps$xߕʑ 14^+m,\ $k R;kY a}hK5Fr>A$4/h$5 ?dB^%9W(oYii`ìP*(^J?{6e0Cڸh`x%MySHg#g3HB=8!=0l\U GOd_'22v6|NHc+6CkD&lpp_1)&ZFD=1 Q"A+Fai!`f9_Bu؊n~MXfL^"˄8؄K۷WoGÈFj A@ P4]b.H4̚}KzW/AC'j,x4֭DטX-ܷ&ސlVxغm_}+@W*OPc !,vLF`%nolS>;XIțgG`8~7i8/֫:wq`L> 0A}gq 2փQf0YY5V8?avFhXI%VF4YG<)"-uK({Ano|HSǑƼbZI=(УtVgdph,31ld荶~Lh9k/@3ˁƫZ}8 }# -AY*ΐ*t8<]UBŠ|f h@9՛ok`FφMJ0pm簧ljl`&=_@Pj> ImGNd 0GFPqFHv֕X ן30v*69ښjۉCth ^ԋ:%W`2@Hsۚ8m G,;݃GtVk5/\nND*BHdx930@ͨ'[Tbm} A'P sƫѵ˄ wqPTzs c٫iz#q4csE]$sS͘Cae#lcDo[S4b^Aol5>J?tŻ~rѤw쪍,$ztFOǁޙ$X0 VW5!fjfuc& rݹ?5496Ȑ?]!&s^ςUikw]WWWz_i,8uV}> \iXd&Akч$|Afdy iD0!< B!G?-0wI]-FI4Qh?F'ko uAB;J'_d<ԓqZ$P>:e{Дzt{\"6[~)hCe(Ͻ91Ca3Ovt,MŹ(9Bn,@W ,䔕&J b;d3u4ZBGV˹ROpq|B1ْ2EtX;X-F6vv uN/zoh5ޞv"2l%6T𴘣6䨛 aG"26yiG1~ -#e[4.qRvR$|hoe\^XH][uS -L؂ϢsؓYԏ|L}:HIr:9$]~" n3a,tŎDg)$4CR;n[hԷk5ʚ-ۇ0Ty3Է-vK2L6-ICPҝW(77KR|k9S0XkĺFh2Zڤ$)+ toqW&,$"lN\ ŏ'S5L`Dٿ9ܐ(';4"]cF1G! BlKY]pSKW;fk91%R\E 6ueL迗]>qqb.vlpwاoyLP\8V(=LJV4IH'G":_9"tؕJͪJ w"&bT}hd:e)/b7Shxp\[7*$X7^3²e࿓$pr\ty+ouE,ւ p*~5J/8hz")m/frX ׃p5^FGb[RȺ2ֻNwu&<(6~푨 FM;x~3?.KGqt昁j2#yaC@Ce0O LsԅM3w-JbdC'Sp)*~FK m4 [Mް;2r_1g2b8]}P%r}./{z=ɘ=8Enʃ?nljfu(zԑw莱ܔ3hQgY*f\052Ψ+>Qi\;DN "IqYк$Z*Zu02ƎK XԽu@Sqy 't!aܯYr?=$PxvgRfݏrjCEaU?1ɸ23or1IGvIn4oW,Ri#k}d47VS/2Kd3HW!+؇:Kl6×Q5߂m,wP]=_s Rp4L-lGYsM(~ǬBقA.p4.p5RҺj4a!bSI3{媾I9`lwn!F@#nIz'*,<$ӂ+չm8ӉfuZXd_6Yw1^5.TͫM3]N/.bp֠hLVmB7_ILFΙ>)q-jkw< 6")N@Lqwj$I{Erų nMk%Ԥ΍z nGtd@h91Ηĕ#ȱkb?~+Zc'UWjcNܦf9@9e;хƅ Q|aH{,l(4ۛi$cO%@"%ii0AuXI6Om}XqU9wBU y`^BP"0ј=(]ue5ޢE[az*Byy漽h{ƌ4u]lv3 m\8߇|h`+&#I%kg8"\ٜhLi:o"1qݛQ7/.ĩq]x:TBMbAETo_'yt#ĹaM斍\7"Ы1у$Fc'r,| A+ zDk_'S*d|p?O|"Dw`"$|I sX:S)Ԫ 6\XX\ rH? <4io5wzi5SJA8DȝΎ*N@gL}eyՊ#Mqu/8|HSLJ9v:ƩK֬s68nm:ߕM9 }TK+_G~y)qM5H03^[f?JVS!⯫=.t^|&+sFU^^2R$Mdư7$ sV$8;L2'ɔȹ.+B!{͖n.ZaW%*[D`[ `ϏMu$vw>˴Pp4+9N0p"A؃~rD<."Oh1>jbUM 9v?e U_lp^RZK6G踱y܀̲EWl; by7 H(od<u?4FM3JUK<@ Ŭ%P9솒GYZƺ6g4W@q0o&V}YD'!k~ kH 2ɝynv߿$1@LW5dre_bd}Drs&dF$x0qW<\bn\v>֓܁ͣ7J WX;UH5aRHD9.F V:j)Yi@4 B>I7b93Ls\e^b#<#uUM6riŽM&:z0Ӎ֙``_bG׏Cju0L鄊Ϩd{<r<ڠnuu:Γ(PMQ*}Wyp^ݬԎ7ޟ#\0hsP)q{ò[vw7kgo>nw^51ݚ?WÄXs@|]r?Ɏp{hYڭBg<'l9*Tu~g~g~g~g~g~g~<+ #==[ Configuration File ]===========================# # /etc/sysconfig/network_2015-01-28.tar.gz T<["GU zʣēb/*^`7+ 蝦Cd'SU]3IvoFyKOD ?x_wpoVgl4̦aaglDJ_qߏ)5rxR=x5PoC㠹o.Xs^{^T8ڧ'U2Uj6~нjQzxP*\vLf^*\ _Jt^{\􆝑R* wi| k.Oߍ" N_wFU9ZFf-Zs7"͸-\l0^-88oЩJ"4(OKDד_ٟ}CJ|Oqe=3JG>Xp>mֹ" ٥ffjjKsiu^?2g\5x~4Fyok{]hzv~0u`ƩGm{7v&qqE ;ޤ]f~$|40?P/["dc[ǖ~̦FH֔{<,WvȪPBid+Y vgεdzBR2"#!V1q(l \/=~EVdcM)x\QƎ+Յe,k Mض6q YHz_p WapU:p=>sB"$q- *Ǟb\4!z5\V;gcV_"q,Sb%~$64fǮB|:31G=% #K9s{0h_n,#el7c2в v-`ys9w/[@}'q-PIK,Rp`g a<({F`Outiq۶p %l@4Kӥ` `,i)%<+2:gDu9~]Y)N{ ħ2BIaX/,7Sp)D`? ),=4ݒ-W7K$=s"$ tryqDq#ޘBxLT1ZC d![p}#x\NJduHy2b8j} w{a`!Xɏ'S9"C1 n/a"^BX4+8Ld,3ʬ]beccdS]7gqa{&)E@Y6`hK++[?)x(iD(* B䀙e-V  #OX4D;kW!_B3#" < "FTAP̓zqH,eݬ68X/W$d$u A۬i9WRKǣQ/ŀ (<8qs7HtùDt8~DMKx{vuUwo d,(r:=1#03r',P(4<ɹ5c;ôPގ_,tY81wBxo~Da<#% ̽25s娴y0RLԋ0MS :Ry5iy a9!o-pH"E"ݓNk)5QJ<ðk,Us%qoF]DgRJY֨dYP=KZD܂"Z /@k.6i$rdkch*VXSjJ9ACΜ`shOZ0\$q.4TX"cnή~]r@N."K(y=Ff3"Ue:0qkEg,V@>VA5]_G$(SUf'dMIf #&drs|DYjHk Q]ZaT*v@`ȽF>U|h-QiJl!ba6zj!jA*Ӗ)JM(e*1?ad;`n|~}>{ۯz!vjA6P2D%3uʕfL |Op8DlƂ%jp Ja^} M-pҋ/3*VY/H}z"f^ᇵGUD7l8x^!!]v\ΏdbtWK\\罠FI[P0;ӔO: fb>oR~[:MCDC,|L0GQAH/9"Ni#-k aJ1ԨjgM^ |4PBH{&i<0k+3@i?;r4)&u e6Phh+ec+@W;ȈV,g=e1sjRހL)DADHЎ8P -<&Z'2lZ hi59U˂HeWE$!kC >[aX$k$fœ @TV"sR<`VCy}.(zi:a?&Y=J(W:Ja$א*g)43 WHvTTT"(i1!Nz_u.SS]AGERf2ksnT'Cc}ɘ8?Hb%eC) 9g`S15SUzdȧ Y#vxl55n:uXdbJZp``LL@t0=6,x( x:"óݯؐi(J 5fQ⩭ A `z#jtE\SL!Ls!LWX_c垀!avYݸMB[B9 /ۨR Qbېa*65\,k ]`pYDf< !ZTiO=WPѤ-J9^ e$)QD?'s(RסXw jMQy̭YPrsgTҪݒ?3S:fm{O2" ߫^`~E)TO3Sx|⾧؟Ԟ"$@F¬O<%ٹ`)X қ goDJe`(>lTs?C]]}ſg~uO7WU[Â2A,8sxb^I#$2˜bй<`FɽZpCq0/$:I6~s>eJUn tPԍz'ne²LݕJFV?tZCjD9Y$x7/̅`N77"kII@h+{քL` e]6i #%CUN99:bz7yBe5bO_&xs}¬jڔcT;?Q{8nZq޽>oWĺ*Wfs@:2U|`p5ܤUJ=jp-z#êUl$em&NG@zSDZkO6Acm7%BY}9*&ȀIGa> 镊ޡu5*4<vLa^.IPa}"r!VT_bҳ `@AHT\PqU4[M*3U|o`?:)U(%$Km0y;*%^e|aVe\Sy><7rWnS3IP] [4\)*b IqZcAb_-;i2<J:cR=evk.[\[w={3\Nzg?Ώܸ;xWo{a4دM3Qo>) awUZ=<5}_TG'/awJ^ڄ(l0?ٕOOǞ1&lg9ܯo8{>'==z0d7ͺolz,99[J7ǝ565O~ܵY]17}Fc'6c5TVW_GCG3/[)w`//ڿyU;c fѓ~=1gsv4?)*׳s|h#%;# 5fD7M٠p$kǫ]pJ[![7Plyz Vcto{Pv@!ft;'Cwڄ[D+AU8ƂG.,"|Y 7_m^ rqy{D.(dv˅-PƋ">'ό_xw* $:7ȴ_Q88;5,32]nEp(9AtRQsK]5hݯ{%ʭ"꾆XDb1n(cn|Do4!7%;M5GVԱVt{n|H$0+aBfL_pg$Z Ҕh)51OqxL2Vo93>O'^om96޿;a63t\6xO~r/9.]v͊ȈȎ;rYW&? wF(dMU-4Ί ۖty\oG_{l;*hoOQg):[ȳ7OB2u@"6 T~ t>fŠ-|Q;V.>4*uT$|ä ~(;"a ucM8r F l'rvxpGnZ[oV[wKCak<L|~4m: Z(i,=yBrx$e?nCfޓ6k[eDbh$z^ʥnJD^P+ergS8Xc"VQ!<i@qFww#  PJLctg7>aEMPЩ%Eu-l0l\u8VƣyĻSֈζaY6'Kj&l埁)NjdbqzmKP&ŗAr,yG%Y^$E~J>q X RʿG<rPF E|SdҌŽ;IR`4ޞ%9MMj;q?rxھ8A3r [iZPAp{Tõíu!(?5{}FGt!24NTs5l6$wiFbi;$_;89 f1A7}b<0aru9EZQ8q?l>W Qc! q́)RKdcMB MJK+qcWXxC{*YF oWc[! &!ax4*)uj}% m4I6mwi9lXՉdAVj&/'/UͰU|TݏIM||ȧBs"r+NzI)+d].yx Ț #22!lk<0Ls(\MnN doєRnoND~(8ĸ9MUtE^@j@":V2NzLv3<@LTTychB1zd1D \R |(^t_8c-i|E!@@GݣhC~t?  aZ->s)Vo塖d*0Fk0a k2kMDhN4ښD>Ͱ޷qÒ>X!9֠ 1^d vS=ecph}{ӟ?o|?8_V;񰃲bV*e> q UMZ@o#5j?1;2@dGЋ - MC'ؔ z"Yv`k/5iaM&`b+*ԺFND|iWN35M,ՌMz͈hHNs0K-|^dNV0ϋ,f 4`1Vɒkp(LInŻ0mNpcy̫ə3v(/+W08hM Cd3})~4]33:n#ןi??@E@͞m?$I j8#3a^;]h3wi)Id) zo#+d*s/N֫G'T<;\lҲ->>j&"PMo*pΓ F!MR\?ܞw-ަfYzLX0A5 [qɾč8;)pX}7~>8]^`4P<2gw`? ,cݸ1^ eEL&3?W/ZqɈz4 8r0CY"{Xf64U5\p9ٶEZNz .S30#F Ʌ&Тa*Gs8IF|5&$D&75l[ C<&T  !: %R(KUR3zB#K<]#i xY.ր {BDz[%3ֿBOk뿘 Sٍ6.iӞKO{~fg`O|?3oWYfrfZsvN8#F%ft |I-)<PN3 4 SJ3yfblEwÞ2٦؝Aꀭ2X>с5M[܂sg{7Ը;mN9h=%nJW]xCV.rOdԺ6Ep9-c2`7UqG;m=s~4bSHNiK6yŤ)'=(I;O|EEh`5"f >j{g,%AҪ4)k (0Ի!ڿ拂y%-gBbb|ڬǯ{F_%๊bJ]- i}LdC&#Иfm2gvm!ɸɞ(C̞K8L`<_vtT/xPn"ۙ&/uʹ Șbp@a)0~k=+LdCpt.i݀WQC>ҴI5rwq(FEU#,6N(F/\㰃q.l8{UGfk[V `w9[}5&x=׺_Ҩ?q4|QԤM> Tv[Hqi}_%;G9B)/ۑB#ȵ R{")m32^fl<a'{Ƣb;Mu #hIQBŶ-{gf:*=L7ƏJ\@;迒$^\zQGbZbF _Ͳ@N|J` 5>qZY.t#荈`nW͵,w tW?p02Nl' GjTj0sE_ˆ+rX RazcMX̩t">GH": OP0?.Ung/ղ'|svqw4VEv3@ԫeN[7ek*⻯*ӭ Rk˘](:X[-ޔ]l jGZUڤ<;9@dAVT0m=Dž"oi0 k~QqN1Iـs@pm*蒌ZVmrBuU F6|acO@ufjžBh"HaVSWM!əN]SƋչ} v,m8"eb,$HUDh {$̒1ŶIfnD, 5F1ġm2A'+_ShbbzTkV3j11f=lE ;V:qM[M]+}apvy= ̪w͌$FO #{ Gt'1׆M!E/X:/g϶vJ쀽zR,E-8?( ķn|No0/ ;o/uz_<~t'o:,r~f>Fӱ8GAoR wp ;υSE_dz_3BD,]9Q /˗fB{(YIT8kPu75q9vvWˣ}t.)ӧ|HYgԤ 0Z W5.Aw F8m 4# f”LeWc}s^kJ1+]c`QQcXbReXfmX|&nf1ЩQW9UhdN m۲4iemci~Yo(y͇,*tK%ھCVdgZ;ُUgļ n9ۮp^~X z&s^#vԩ)MvVVŽLa>oo$i,4PnR¨6 I^y0fu۪ xf+2İ & Mr{y`t[?IzJI 0r*xS4NȜԻ}OHP}$)?KmA_lS<폟{}RM%^{P -+Of|U>ޢްFz=7ۿۿdU 8QnNs^tG`m_s0ţ3gV? ;:G(׾,dAׄ@H"y$9}Y, 8wڙE659FݭQwkփIխ1iTjG򯊘C=I=sܜ]تw7LPa%\0uj|1iqIӿŚ߃ a'kغ#y҅{c3{c+zH :>q٧Dw,%id!44)%픳 JE,Q5^"x<yVd ` c۷sMm!jhgaU`@n$?a꿝qCZy*VV5q[J՗ONjVΰ8$^V.\+Yu,>uHGr2Qic.|uq)M#WLk*I''k!aG^/r?4{EC_h/48&;ăa0慥jv4 [#m I6{Va U}XYT?_&rk#{." *d PRg//2Y$h6>wUoLF#~&ٌƃk>u$%lDtn'"QѤ4D"Cіqأxϫvsc-I8BUv KoݴZ]4oRjƦLuQHI6R[{g+zzA61IǑ *heWy6[v"^W~u&Cs(94>y)mr@ydǫ&P͒,΋Z Jql$8GyB㓁z2{p H}ūZ}p7ov7MU03WFN_J_:Y,uJ/.ʢ׋ I[1T#X3d ELD[pTJ9-qrS~)l| )de%=QPy])YvG8ϖwi64줚vkvM83i9|Y\򇙙8Sg2q*X4/C<%!Q_5~w^ hAH=4m#ӗ+0=ۋ9Y lmB';6/!(xZ1sULR2(wU$L*ڙ>^#7s?; 0W<$vqCՖh s~$B[$p(C_z#ĠQqgvls[FwA=658 }ssh48o'bE>ya'k?"'d4)|_Q'0PmCEq2t Nbsnп1K$FE6fv?ABÓ@{ԺӶ^2'vƽMՃ𧻓$KV/L>),%.F9 f烰]paI"E kHy8 !} ӱ5 ]K?2{̆hؗK<Ш@Ve$ Ha}[9ǃEuGFBq)2:?:`9[~>2@V d.;Oun8n*^No!B&|oY"kG5%0]e+e—lo> ):v"a1Mzn)DuIg hu) `qϦx_%*(!^ժn*`&ßx4'/ߪN'R,Zن]HG)RIF8xp 3?k:oI[VT=S߫9LXT_1B'OlzEz23M1CLHQ 1.e-_;jĦMÚ[nocoFl# oBee뽃_ppg5mH}gT1?NX ԡk F3δ#q Єl5 y)MZI|zt"/ T[KJϘϙn[ {@`il)ݘ;{,HxQd˅׋0zfî #|$}&LxKtl5F.wCto>۽59}B^+@t7.-Y^a0a|.itw ].Nό&K'7j3RsF| ]8$LgSAHi:bJƙsק-,&.'bΆ+H6kkeۛB3jnD@ΰk zMYm;n眅0KK4n .Eo%|1g%iz猘8?'Q*V|n:OLc:bۮWwޙ5/z۲>42JZqBōUmj&FBgum0I%RsOk*~ D-0YTKSx=֞.k_ϧ_gK\S}gjO[]N;f,f0~XDqBQԄ4$/7<~40ةɖey㝊^tyR|*r _ n8 X만ayHB쪨^/p0קv; _NMaa'Gg+(J/^Bd%Z#UX_巳gG!%uf%1%6)B$1)mms.yF]~pNTwܶa 7‘FpǏNmVhaMӟ g2{2RR ۃIA~wG}̿׈dE6#+}?V .p^_{-Zˌ7 be4;Ck1z~Wd̒!O~a66_>$c%.|^ ym'`ws'V|3gG ]}<٦l c+9s0 6sSq hf`PC$$v c8h{!QRe>YDJ\ <q:͸ZIY֮gthfrW(bV2/L]N06dެoxRG1j7}vvG[SzfQdN?[x'EmMn ]lz'O<{ӑʬ}zӹ^#91k{qYk]8Ej}&1M%O⸹zr0L8H0IS#iZuajM+Sh*_A b?ZʌFC?H rrغ?GԨE3nGo{BQLl!iXrVvɴ4JH2cEJȃ;,7gҜucBݦeU 3kGpH;gd6^㇜0'ѯw׻ͽF4D*rMe/dY_n?9"(+vEk*Sݹ\9 |7q)|Svǃlحusy\|>:F}F96NʫM a]IM7ѴxP}*嬀̓|SItw)Qyg|'(-]c(rȵ(6| ůsh'L,euivv-3JȒ!q"ÈF\d)ȾYw\c;V~somk/[{wn+[̬[bvy i>qFWMWaOG0 ,%0V()L:R@p@Am_o'!NVa|#p[@qfɳ m $_ԊOӉ{e?N#Z#CsNh6[ȮZs}s;1 =ZAHXfZɧ7ҤEn5m "#G_1d(!j@ ou£XR,6t.u0i)EVd1;ri̎Ϧcv,qia0H5L dN: r0( @ ;gI Ѱ4:Y8\{ !Md-<1UK"3 4QKlbQ[$s$ $?Gk>fN, ;QY,ɕiV'_t#UbبF-)Jqvʓ68FYP>cB6p2A'3W,),eZuY.Qu(줅p;` tʄr?L7w]XSa&t0YÛ[[S94(LNuySaTWmʵȞ))v*s(R٦SF^A6lon|V=^IfC"@$B2JXf8s<4 JA^ɂM`r`Q=QGJFEs0vxkd)`FFBR; 5pÓӏ1+]0EGOkѳ婽C<_NK#k[[Zqr> z\&ӥk ~_YvP'y|l7lwp=?`S[t-=C4w|uuy$Gi.AAw“B+ON|Garw|=xGfWMdi o;w?[;pd;5yVgu9$ȃ j %f%N]%AprzJQA86ΞM nu5n&GQ`LiJ 㻬]y+׿;3,٩x| ̜wIq1"9}EhfnnD>D ÖOؔ8\lknynquoWj[fXǂ<9@RfZS'?߀(}Du TҲ~ǐ^|6/#ɏ'""<NOҾxo3;YJ Orz@dƿ{3]gkdGW? +蔭bOhVGGF`fYIFg M8`=wäu'c(;r C ww PhwWmba8(IagPbn`ߝ_1,Trg1oð˓AOU³4 N7O6rUrQ0lw_춟PYIևT*ciC_7ȲLَZ#G*ګ8c{4nm:isZ6"ʈxט3pbF3\luQd(a73V#Jb1WhqI?,hrjD߯&Տ狵Fu7\Yl jD'331IEMz,YА_Wu]N(l}v|0'LIsN"SIк`T u"ޫ lDRͿn@,Z}1߫j}X*f7rُ -ɍj?;Q';ӱZz2ܢT֠ղc@x Ƅ_60f扱_3]y@:@*GCDZå ꂚ70 h&]TJ/FߕhjPJQO D )`O&֔6<ĴpUJ ss15)W&Pnhɰ / l{fޣw1RQp:GK',RP'mV]$&fr3.5LL>lͼ⊚ÌaT8W HBR 3"ya,Y)4ELG*- -Y4N%NkEuuw9}:JK1 tY?n/r8BCb"1p@#A9 pQ^0dp]-Jbpb(ccb ʚ%7y]XRXdIq% 0e5(P6XNFC})K: Qqo_a`JfCczX2BP ӦojR!Dv E>_ϝD=Mi$4]1@U&l'80ZlEMGcc0wm.w?88u80k@W_w657 5Pԇҫ ?+T)45`r|c d9"=Fwsbi׎1>NkPF%MN<%:/BopNnogk꧵_h1nۤʼnM<%S9^p_C)*gWďG}N !RRz7+\su>h>y(]ت~9enLBV'!0{E6*ZQQs0E~Q+%%̽^~9eN ۍOpeDj>ܗ㥳8'L?6\Mٮ}'4 kP:l?;yz+9&ۜ9OLby;&ep4WB]pxM ڞdf&?OlyTQpyfssor1hkz#g2Ne);apK6>0OLEt)^ѹќ"GCAzrS)Z޹s hKm, ;EL1ž &%haIxU揱. U}AB1³2:thp.Y@@) ]DmCE5hVySC$*H8"3$P+H0mu*Q1ʼByAĬWìnSG\-bcE(nꦢ;hS|Ρ"Zcgm}N0[TC#ys fYtؔ"@dv6L&k9^'Uҥ86z{yN~oum㍷pv6(5`w!MٸȋPbl"%SCШLs1 Zik!9P@1,I3Szz{z9Ghԁ4ټ9x*hM׍lj4>Re*8o,H'Fjf}h1PxlЈI6^zפjT+Mmzo9Tᆝ޸\|-Ԟ 3c{>8f x"ΥB ,M5S(`fAƨ(cA&r:m|vg ( ~^>4%k@\Ll<+=m5n3T9aWdC~CFM8Y C5KFd\*E:^pP)f!]`FO }zRܨos1Pk^rm1S-ۯAC3feռ<'%\L\xDVis{3OV@]=hKnažJojb`XM(W֙L~y`y?cBMAkT+UW,8=h઴ej.˘lMg,3OY$ܓ9g%l&n7lghJΓ0t<c]rvA,cy@2)EU:^ya(g2;hTx@i){bG#gu,;'[e\rw"w̎F5oTwGHFR. Q[t\<߆(*^m{@DF0fL74ZWs+RG/ĿGc\8jٹX%{χ͍_}LJޜae@0ȼVdpxEnŶȫwvFIJ^#?=hn5CqaMx]XJNusM4wHubsp22b.mJd'ʄ#b^-bouqt`Vm.+rILH6ԥٚ7E](t:K mE=.<%Ӓ)#`vb[:c1Nņ/%ٽ$1 & OQΎ{M"&6qd,aW5E<RW!L}l W8`w*jպ?[^2p,̌n6IDi$>&}FexR rϞ~/Q" `{QG`ʠEz =tgOYU/K) #:;z"l@a.аrRWkT# ԖDҀN&^7Ctq[ קI|i%׭Q:ήGp0qpU}ȴ)glA2tEr-M)KYLe|$o=oPrEvKQ1:Xe8!eC$\mwJXLBxW,M-?+2}.W[_jCM^4X+mcchvi66::8lU -f[/J5w%7Zäni"P(jo|WOPOW ݸVV7]^zLhc N&420.a`4L UrctX 7/a#o<kx|mpV@%SSͼU~8_U`ѕ9mZ1#ʖcElE?Ia;0/vi¸*}IyJ3i(wBFD8#H7ϐ-d-{O þYZ i)K7OY'C'T5%Umy 8`ī*][N; rC}s M4-\F9gD-*dC(KTYI7W,g7l<$m5Ȕ?_,GLCٝIYwl^5]Vf)^Oiz_n[]JAZ;[;ĕmgJb~7k붐.5K^c2k/ūFZy,#Kܞp2)苭cG9Nq,;,!+ @F MnEP~<`ܠ9 {zU_V_B_gk7|_|˅a1oxFPhRLwˀtee#V|_[6qy4Q^fM)SmXP% @t f/&* NUI̙sMלSr܁-Ct%7^w;rH栖T 8 nnRv.e/Ibw`8ތmW- ˒HMgBpQ@( WMU/Rł *4F]xSYtbɊ(hk_$u0Լ@MLK7(琸[`q Lȥ?eA so Euַ8k;|l'[dqosk+G?fVkԲH!)N6V jY ]7ȵ#=⠧ϰDS~`lœw}(c{e`{M׫R(g3y4F?<Ȝ?DCPpQO !I8SŷX4 ;һ˥a!C<1KN7L0Z*@6^ ^"mk|oh'.(J I d &OPK,MJK~d y63;E7Z1Ơ醔/}T&ȀCbʚJNDUjIĜk I$5ȍ"s{#U EGcXT qQH~kW+5.J.Tؖ*5b|]'ADB<YZ#U9-nkXYJXl"5$9_7A["B9 #%u8Ip)1TV@d1p:6 Lюl٬D3&dy1GaY YZ`?B8f9y\ Vռ'iqT4->E,5-ssqfS2*hJfi >f4,=3O:hQÁDeVGG~uJ-1YKi;V{(PAqSOTrJ8:7F,)Oً:<풭}RAQK<¨,í߫(=ˏ7duh2Q$30i&L4a,Ǵ"G(`d:tUiHRTBFX*끺ḧδHdtD"7+w&yrCVs\UC6Grt*Ixq0Pi2ǖ@4F+OB~HcVSZFJh=Y \:pH41aPi=}ReHWQ"t2Y{Nd 5yzH+uqTi  K[A+-oc_8w< {G!:0Z`r(Xkt zǣ*pcI|pZ23q&8X[U})vs0RG{&H7.2ehĀM>"H'O=n Xr΢|רӵ'la7ay'.VS[,áUD`4h3wj;t\Q#RGYoGƗO`lބF铣s.`RNsTN,.ϣr}aTNELX< n6m„sv,T1U#VU,YˈqkXldZ9B7.Ss?dL`3)69a R""һGryM";jtGnZǔn/`/͕T1Ƶ0o ERgrŰlh͝C8tݺ"JNSZ<ba5Ď)~KS;'@P܉ ƊT1`e~K1"dR Xaz!bᙫM}č$mSŏf?x&q+R|RI{&3<8ts?t;j\Ӈ߀kӯp@Ĥ!F̟Yk;aﲙ6^&9[3}99Qj9?8O6D>jԻ֍!Li p[e_hA2BN^/˧9$/ /|RL{)k~ePqV \Um^ exZi|TG/.k]⋐Зc)h^xh"0-EwBFf'  x õIj`my7^Yl۬TpmO}?w.`f݀GYI"-HOж']u"M&`'))!Dk#{EN1iO9w:<ĤypP^V@o[JPIGi ׊RN$(C\V@bS/fvAI%`o$Vi 1ھ(7gL Ve9+erjf ǼHه# '$ 8>'|`%Mu>'+I!$/ D/ 5s/W5^ (ˏHs:?rG{lG⸠op)]c[<5")G6exx{l_mWCU?N|.pO NUqN4Xdq,re` 7{?wWcW8q5T[m*ҍtE(PEZ˼qjf!B~Mlx'dk3PEnzܣ~u#o fNcWٯZI^eƗO{]R2EY&פ+'H;|ҭ:6Oݚ3hc7Z<)4w@pƿ~!OZ:)^vNr3@5$4S M0M05[wmap?.iz cڠPІ\"JmxڥjB$Àm hD*xM]h54r*3J\M@K[FTpIQKV=m;(@SIڪ;i +zŴPѣG-Iw!%f,r3 segh]x1wn:&jD, t;0=^~!6! N4-G!mMAHc]5A̴% ,jPbnsM%v^-/)A{A4ZV GRG>t\9|u+&}P)|݊ l3|!ԒXTOv+]-N-#\b [~Ǣ̺̓uE+szY6xءV'"`Vrex;%镲Q'³YWBXe)^AmȜ5eZ[UT7 lj/pXT+ы)9{z?qcU.`"= sߌWCh΁2zo8wTFOӹ{@f%i<a-"u7Wyi;"h 5˒k`|ysX-uAEڳ'O/|OVWZ=Y?/@OQain{?3hQ  ?w>G#gQu! cA?d:^Vupu`SmoM1zL졌~C ]hx~~^MITmG=U$Q(IG,9P}d4,fbnJ2$Ja7 wު43tGV jESGgMN90V}c9W1ʪDh3t;¶&XjG3hnݷjmwnmmƅäyNpF0=hPcmL N}vo`Ar&hƝD&'C%0jE)NvZ 5rHXݵy>,^#u///-@7kJ-kZ ..ae{ z{mk7 SHJ\Џ(ݚoT@PN2 9,8H<>7+W#'aeNrJV־7B7-;ꜥvqrN)YJ耸bdʸajj=*̕S-Vb H:*O wEQx vEGڳhxOi`S,=SOj&VORϫRh&)|]H]{%܏ 8{1݀ܞ?^pѥyUg]k{/Ջl#1s$+o2E@NxZTzJfUp^ZUU_ !a{a<\PU` N h糲dU18тz=.ΌN ݙ6_8_NU ;Qg Σ/sJeLdmkgWqs(|Aݰ G͉ +j\ކ/s(S"dL^|TTB*+6o݁c" oaRN7PgR*MM匧X#)L J )1?.YLSiCgjd`M PI::E=i (AY Zܭf"BA%3j, !/:&jsl;S '5a~׽-)"Nw8G\xP['0*ؠF}0rsZggڹj47{}p@-TܩQ|00&;6"[}(@I[dJ^X ~vnsNp)"tb ɇgmp &ja)KRv@xcP6=VuUL_= eKav9OFIF]ڈJJ7\1K#5LcfVu,uW4pY'_GHэp*{L$f 393Aoy춡N L!/AL]jȼyKJkslR2 \J\hN:, dL3W\[]N0`K˥kA*d; SNBMOPԪ!ћ)pIeb_Xvf||'% ۑA*~ \\m"ߨsssOIU0_V ۂ꧷󳭣M埼'Nq=U?w8TR\}FJas )%hJdcrMMY0n&kC.MX63W2.&{=pKfS4j⦆Ņx%B618w{"C֚/,mHgu2*nQap=Ϟ֩(q4QM(e>1K3&#jsvȡ<\CS [NtKe?>9װ$a1SlQcumP0K[vɭRt#` 8lC/~ ~|MF @9-zt/hspZn#z)5qjK\AU2.rr|7|z%zh>pFrD&}ՍWkhj@c`{>TriHۅ? :kF>16.&6Uektl_ʼyA˿EZTYVsEGK ]UO@k,p0\:"Вf򯛆,lۓKoZޔ:cS*'>Cę" p4u0ȶLC_m736CpK/ItϤ3x3w&l!f f9,jlrjhkfa^_'dt=Xp۪TYd0p_sўj 5A,|KJ*:yscD \)wֶ51"GB< .QhMJj'Q.#_^le񐋋gȉ>)P' Б`r@]ū%R*@uz˒$E ww^mf7VY .*}'pVgqoy3"/ϘMwov76ss}_Va.v3x'\{mKhtN7ӻaIƔw{L{T9Fs%{ (LvqB>{} \we#28q"i"Lv{ hV䴺#`bLωp79?p^G~,,06F/#10D^tR7|L㐲QR&MC' #dGƻ Yh>ѰC⼕85@d6] Zeo5>+w:tjd7ʭ֟\m@*HA5<:@PgU+oP:Xؗڕ/bcͪMUQYmӨ3. &3FP x{9&R )(Od㙼xyfRxw퍦S5[sy *9("B>Mqq h euō_?ɢLRC"-},`vYKrtXdoɏ;Z U ?6v\f{&5Ani~]|TYBeQe>;8+*vA'͌"ejiV]+ykE r]\]/:Jϻvpsqr`ni2zA&>d٪ނ"OѩQ$ &1) Y7FgLR݁ΎGTzVc>?J>,2 6=gΜ3 |G%uYSTSFS>U y^t1ZwIϨ_VzwR减& &rqIC@X*+熋]h uh d=ŇĮ'Qs zi=S3 :5$ Upm1xƯȎχ ]*U6 mJ-8TvWly٩#Nn2GsA 928|_8u%L#Vq.ot8] ˸FFB$(Q`Ɯ |Edoq&WG[S?ugn wZo_yxǘ 0QxǬc-kirKSU,>_ fs=]ԧ@+&%Ӓ4ۢ4"Iz#A2WYhq}d$<֥t Uktc~CY|v,CD1HxOS$69<7*MtP\nE!QiPX}fsq[;Ggpi@g7Rs{q~^P's}"P8ԺPz~c-۫ե'D ND5~T=Upo֛khapeWN?rl@M֛Tɸ>_[Mq`=&x>;!H=_Gha<hˆ7skcx6n+.2}fxQeIs=Ej7Z[b~*J>d.A6Qf~N K^옂Q"I&*JV40Lf@7i IҬkѠ{*s}xP4HU0K:O`olkdSqqusk,rH1*u{mG%㣊MZ{RBL=A2m<`! =7ԺoriJ4p)-ڸNCJPt4'seۀ)5,c"!XN"<7NZ;\$i/9]<僤xv֙d!f`ƃ`)"O$΀g+h{ogk5 P`09@"`e%sAݚ/QL/]kr$gԭFͥJ&tIP 8XHOgN*bH [Qݩ}`6qy\]ټȣ$PY'OM ~9l&U3Ŋ{1PÝ,~ 6 0Ua`-7a|'Z'$hJ0DdQ5Y\Ȁ4ZAGU:: ?c`9@ZGi:_HxɰJť&J>>. h͉ef: OFl^R?Np >PW5Xuar$9N|} 켐?.c@"OiA8I{Z`8ʁ^eq9~Ei 91Wmp=YHTPq@E6‡<ʬn)=hGwׁ@. 6O7xc](m@z*~Yx~ͪuq 6DQLV+19$G{ugH+k4Z*M(xw?lOp߸䩜J;ydg^Qtq- 5]O0ǧ{ɓge*Te-"v6;H2AjJuX{wl>R9C!F2(C\L& +hkR1gNSjX(Bȯ 2)^E?0úra]_GPe BAM/f_eHϼ}t#vh,,9'P׌g%.gt)U.\.< 5k; x>.¿ay 5KEBUe~M?ɰ~%\Aƪ2Tֶ77@lχdu<֎'X ˳ a>N1@g:E{Oiٟre?;aa gwG˲NtSLԠ@2C vHGu3>X\Uo>^9*"9]WAFFεEl*^l0xIM4V|H&QPq[_̐Wco nŒYw?,-/uscSAʢa+OX?9^黉o$oЄ}[/!ĐMQI*U%Tpm Ob-ԪvY( )M &҃&մ湆|E5 ;,;b .aVR鍻G@E kh2~L"V/7wէmbTt氶 L1+S87m/)lv!YϜ*a{2,e.xH#y}FCbcM.lA"`DH#Fnvc)-Wso[Dw=$P9ɪƼXY' ܰnhm$sX2iǴwō&Nʓ\QY:2C ĺG9ZoyvNٓK(@t zd1Y'8n'R ':!&Ac$:O~gx?X ?n#MU0Y+/TTn-xtYM7G @5ifdJb׭5WŭmxEE>6PB HAG@r}ԁ-9÷ţkLpZI$l&#?^K2ju`tdԡc"#xKIo+Aa Gjō(J@)QD,f-7zx-p9UgSio~eGijˑ:/w$a7^o'"f|KϫNYK_C8 x\fɗ(0BrSSg⶷XȤƒB]܆ p'Yu@9a|ԯKrġkfjǬXѸYVQ"t4F5$$d ࠜL`xgXlqoD1 LːiWk{JeTrAk1sHyw{>V(Pv騿F^/hq ->(ρxt["`Us! [hN"YɹP,:G$f^v'juC~h|haRߠTBū'߯>]^A;TjVtvggs6(Gb!i9%:jaFOqJaW Ξb0*0iS[_WkՍ}ւ q X`eU&++?E8p&%!ٯdQqm'70iµNVLə ΌVd"[=}Q#CՂQU>WA.~^4N$!ˈ^E8<ͷE$C9` 1ldC (;6ئe/%98QDF*DZZrسԹ5jlݫٺ~Is| 5E)Zt=v/ucONe*~G+@f(IɝC PsP#P$zF$OEƊڗ[=~*L?c)KdDl3n#FF_BR8$}i#66HKES.J$&|jZ'x3Dn|fܰRZnkPWēuRG} 6YZl]akV=4ND)qɇqO^]-K!R! y%#;뾡tCpT1yČ!X'1PE唨YEROw}pLBo[twEWEZ͛ U11sМC2 l3w+twY!9&Z*}k(I,KsUq⊲h@?@B;P^g(K$RJF C$̹%#& ZIg v6jcYm#A枵rJ,XB")qX2rPzV-neo%,·_\*3. cC?lkvv*1_FBY1 u&hF:r@sT %փlT2HY.iEp5K}R< D' z$Xa?lok}'&QejH:ayKȽӷ-Xˮޥ֪1ű70d_iauir?W*+eK9͹ZYBlCtqYC- [gقO25!QYAR`!fhdi"9k֧dhiyNZtl_x[#jdVg$L7,܆KkC!|h5S&e#\imݺ.Vi;Oۊɻ7=#`5q<;\cՍėޅ[3Mdނ?xޡK[6eeܲ^r06rFPƯn/nEAh?(NvdڶÙCOe\C-п wnC§G 3[t2"SWB*@'Wb&0FC{:2DzWGga S MX+zl}7%= yZ{jاkx6>3/+/WL5evI+# X} 0{0ɞX}~KBaqԏiWReT(!\pyaY~2 AK;%=sr)Uz n5V .5w\0'Muj ]*İܧ}zv@;#- N"}r{/}Wѱ(ǃk>v4@_ LԻ?O$~0S0.G6F*PT('"-*?"}Բ166ܙPXj'M\dn $x0*h=;9C3la̲A'!lNq ǤcI7GT@^Bq.v?l':͜+sB u9sW"5y$N; b9RXمO;ͦ`@'Xb^Pd̯ H}Cvz0fu,}}ṙkc89ַw 9maӂ]ߘW_kG_8z nYW;D7c0/؇r\T*~i=8vfޕZ[k5/7|yG;e/ʾx>) wV2ȁc΢ U[z5zav8 'r`ZNZ2 -` g`PRƒ|m*jR P\oXYZzzP{bs;9S'dʝsulj6rw:sjq(bf~<=f0>i0"SmZx͐{dZt@ZGjP 1S-`3o9o}&%"/ X3hԈiP4/cc/,цZmhh*6TH\_!e>{l8V7Bf ON f_qɵV1aLm]b zEݰC%@K:Amb0YpDW3BKQJw=KԵ~T[dL59!]'Υ,Լ0 V:-wxx!Pcy!Wk7)*~fo/MSqpk3Զ8(feD lG @H9(QL֩ !$axJd]f{Bi[*[Ol J&!t!]2.tmB9VYt2!TIZz#:e_Ǩ,k4!oGs,mGZ>ki$?T՚B +T"=&egmvwlV-^ntynA0A34G@EdalK:{y7d$*0/o" }caw3gs#3ybRN7/..,?ZGS)v&$D5ٿ7qM5,N4xa.Nܺԛdw_p_Y4lzN22<{7yn%8֜\3+:KpNTsXlB wh߻ c4Q'$ala*ŋ q?=v& [t=ro}ܩxx*80sjݕëܞg7Nƭt\!|G.%RDl02)IdP`Jd$)G]9܄D|`"eG/!/kOny?9辀_v外AZwX* 2}qCY #9ekfwq$9anuTʞ6uĈ&#oVy7KCB&൲`Ի-3Ro ޤv DCRƪAWQ[ML͈ 3h]*VR/n;A]9D8݉-/bUDt*t nY[W:5u %KB÷rTpc_^ɻu-{$y%no@ g b7xB')Fys4r N)βKm<`@2 O#g7D&!px%NRJ{#(z/Mvu'V`uUƧ4Kɰ({nE<ϰuQus8r_5rmuלt$S~q G!6g{*'(Aejϳ:^q s٩v%L5q~,7|.؃Lw݄ܟ۸álHR% ~O%l{Z%.\Zǹ) ?w[OVʧғȦx{x"^ i)QhdNh ܞKS;nbͪ b@ mEf@pkb.8 ūY!= 1:P_8$@\cP:b⑱WrŬ>R8d(%CE1|G͵Jĕ(l&i_o]#G 4Hqy\)Wfmt@f&i#DH!v(ghHt*-2E8H T|a\>kDZВBW(9ex&`}]-Ho$f՛ēގ a̪6Ke/P\T>ۈQ@ruQYZ@^מ=Wk NK g?'k0_DK͗xFBa>; '(?&iPz=l9.]qMs]D9x4íTajﲽ_66jEgAL0P0-=O*ݨTe#%@c%۷6PL@ǰD-U]n{-!H$]TP,,BV$cLNc"0T܊nKy1dR⬂:b9-cكΐT8G^,Z)/˭W,N|$/z'vT(?:2-[^քO\ݬgSm $6PQ_R9;g^͈0Їvc}gOclei:ҳoU|?1}AS*FqHuE7/Kï@BҐae8\ƪs## jՓɿ* 2ç7j^ՖcU*KFqʕSCشBwV:J%ß],p3 %Ô5 Ie%'7yH yc=5zceAa>ϻ0@*Pٟg,킴=W=" bB&[Efod\ØRЖG$ݹmֶv4ު!aZ?7#O&lÛ$sr 76{o+#7􂬪9qhblG/vU)aT.J-])Dx7xR{w@o5 -n+eO -ll76J{#{:]hU#:s҉ܔ@pZ;+YYi5űtI ĠݥYcy-Л|\TpމDI6'RIdG^j/s4j}&.5Ivd%0m/qK;dgvHS&ZY4Nie~SϿN_%ŃgN=ipqhьgsL4O)N}QQ2]L)URW.q8bϒ9R6ٛ~s-oonm fWߺ JMZ;}*L@ \|>G&n{@zC/0A;IB΂Xo>Pl4D?i#Lt{)hPbePGW|&()jwjE-/M+.GRSo~ʰ%'djG#Cs7ӭS RoYQreAvQӟֲnWLC,0 (4ܬTNvC+`bwe >voo7  quE(B@.Ci;Lt K#48'Pz׹WJF mׁw4 R/O.DрbRWMf\i/r蜙Y6(X/'+r(4/M,%~-r?Z6ⷼ'WRZdk|?k_aprx#X_EFNɗrkKMD~㈾qD_bGIF7aD7:$;1ɯk}NmŝxtI6̅!ۂEu{mGoT<TAfԙNu= {u1_٢mPvsi]w31#;t8!P:QzTrjPaxmX:z[0ްQ, J]bo);̈xq]#Celw!]ŃQCnG6UA^ѠFU3`Dq>(ӈ1;<ħ)C,9`?B'I@~}!0+*fi dE~}{xs}|psJ׍0cFЇS~̌P .lLgXGq!lDr0euPdW~' MKh2w2FN}:/Pq 1tl|ʹM\}d6 dp-&gHGO>pg 5&Cr2ŴPTƙy01-R\V+eٷaԵS7:cʞnSM@InwhwO@5NSKX!񯖴{~ؙh8B^I^v/3}L,-VRgV*qCߎVQK*ZQЯfX.I(S!JPg,=g[[G&[qirJ~i`LNm:F8NLg3>:A0#ʋPs3ÇC鞴;0eE`lٛ~J4z02\adKFQG7ײA'>Z9X#u4a鳯%ޣ>h+%$'VD-%2.6Y%dFb1+|d^ j+#r`s8AuVȸ^ψOi`Nդ! %vw,saڽhو|v ڴPjuK)q2,%GG[y=Lvy:|ufn=…tYûV>u.];s۫}#I꣞av*i1ѬHGfRĽ7T6sfm7b쑺q*ډ%ٚh7G&ҍFw'n)"kEk"CŃD z+o-j^PE6aLJ 7bYl.T0{W|Ìu|01궧C_z@?E;9J#A|m%%P[w!`AV h%2>\qat ix0 $h4#oxlx! ς~S) '`'@*^Q,TB^؉$|^@4rG:Zs}]1O@aø .``[!- }J0p e2؂Ok8Ox&H 8FL(fi3Z"7A!HITi Cc Q5&t6{4 \n2sXD43G*+X'WbCnS9H=(HY5'&#Bu@`=P9Qitֈr'p^vcJhPI;YV)| U#EuBKI>n iBI,5&FH{qQrЭM)B(t ݲF鉸;de^K!ԒIø0a Ъ],ʸJl_!V}HlH[sh)#.ĝ7o]+O@R1{hOQNIB;Ǝ5i(\4ZHmFM18V*k]Ncd\>ǃ `Sw&cf#)jk i' a R>r0#Gq|@_ڥo"!^ʱ>WAv V9veu%Nki@ѭ=lYf(4hr̤ ܞvY;pu4o&-OLo#plfC$SQv\3why"vVĝf^)~͌]8M;Ǘ!E06ap 7U , &ayO.C/ 0C: !)݆n{4jw xh D޽>s $=@b".:&R4ORC9CJ_B'h=4mѼQ ***Y>>t&?M?OJ˭Q؟LչKE2nV"#382v zp#vze"|Q- ?^6q9dç,A^'_]4fMO)^")3ɾ֜R00|[CQ⁘&8jɧ+Zk 'vzKʃΆ&A,)Co:x<[i9?}9'0Iɜ!yC<'Ks$ݰVkeSӫಞoh&)ڑ٘;oy>T3vxDDj{oB4dɿlQ@gLv:cy_p Ӯjga?<%Al-[ak\sx~5O`{h;Fq{{/z/7ۊ;˽zMOaPnGa5iˋr_;s #hMᷨ;Y^HKhʨTs1ClQ3NJ '5S;0xfX {RX:sur_~|m鵭.^xIv' 'cYv-vFQ~lg,镻3p+c;5IU#fO'[+xW7yfFtS{FC1bFiF]l)6! O[m#sr $y0Z?FI\oDBv`SX6=B%"F?EWUGzesӔ-+$Vt'CHwA_/o~='ӕ)6+=|&5ePqJ3[Eu)_`GBW(]TS9"$]Yh4FN]B~^,G^?~E绰Y\cp^4b":el6w*mhmPT {tVXa5IDd~ƎX\vrB yͧ6@./͛w sQe\7ϟ;/6f{uyuK|zgK5a L@G477Rw̛͛d`au{@!L[hUfOVXUW?_J^tu$W?~ʋkmM^)|zZN1'{mI\?DE#9@URr &,,i=DOúmkRd~vSo{~CR".Yo>1]iUEz ݂ig &";Uaۖ$bĽbfnb'%/@ QRKE!P|a{@6'_/=6?~eD8/ԪJuۍwR {9s #WNs%ESm77 O,ɣћ@|XpGKh9.wUJ3G42?I~Q1rBx\nq1<5uIyf'XF&^lNX 3Zb_g&CJG0=Ϗֽ^fMT3sLAZI鳤)D/X-@'s].B !ßj:6`])up)cz[yp q}t=s&mx/ʴ-|-fW ׻S>y NS \f+uaڻrb xb:"% b.{襣\i\٤a ܿd᥅ם!:HdްUjqfEew9{n;ϝ,}\?xo7 >XqA`'xP/YُIᛍht:+2l2v:€ajE,cG.$& F2K0[j=Yԁ_m5D>ox7 [kk?|m+~ّ֪?)(W&օ}(nx 6t5V/a=w]txZ_M)|YMތ.Ԓܯ#Q/0p:3쓶Q1SɎKTg0`Syqg57`A?50[<q@VIďn5Ŧrre_N ~=ܠ/`?cxCe؋;.4v=׋o5ښ*L^Jn_닄tQz)M|f@t-7Z{%IBYw:?VKPzW?ol>5lcJz, '(Wa?tVRMk޷/˿RfO]1nD1-uڙ{Z#(c7}#h+'U4c9<.t+}H[Of5`v,%CƦ8dޡKuRJóѲjp׼Ai Dz{ZW/< vRI`m,!<|.I/'D5|H;]SXmoc:43I!Jfہ]M&, G-T ~Iw ),foy.^S^m$m#<6gKJl^*&8q*@K 8.$4-uvਾW/zҢW;pƉ ,~b, [=T!@,&7yyKA>wq2SRND!O~yu|k#`|U5_[GMVV׏_֏w|5O뻭݃V' W;PE^EMdɝiaI͸*u#d ̿7 n0o||7O\i|իtsH/e xѳI |)͸~;CZ3©&lѫWDVAERC. :.*}7SP2»i>t򿄟YLuYɧ8-W)%c<]q3Ӎ>|nâdIG4+~ϝOoӡ8o1%;8MFɚe#TMa*h̍uIV/k d7%n$U*_JAA uO<ޞEgG251PN>#3.:t5q|PٍΓ_Rٱ*zc lJhy*BTcg<_cȿNvZG[!P:׏_O e,V!03IB}>#ٿuJ^Gצ 5ra57=!GZbpznj'QEPԠSn#ދ vNK0 sn.dtZGPlU-K{Uf7[;lqF0"Ǧ/ւɝ\R,Q5ek<4=Hk4AKOͫz ]"1dwsƖݥorOw^}cC-y͍Əy<>]ȿyS\:}c|1HWWP+?z@{^6[$13G@q~!PW>UWI$^Qv13+] H84ˉ '\b 1S@jTtEQv\ѝϴpB5&V_U 'm[Fr"cͷX36^IlRfFè55u؆F^L9l^?[|6ECqKZT\U=h*–3=*!T pz1GTBI;1tHty/-?g[oo.DrKL3%YJ+^cZ=wir2纭2uU@=2%hJ~ac4&NARI&/Y"c eȨȐR8•R_FBl'aĩIеr~z{Ή.GpZMބr_G¹'9ymߍjͶ)N>=s< \d4W5~-٬?"#|ۍ.By10HRӡ<4$@vOmICOg(Om GhP^^?.ԏ~vO$b약 '^cy-0 QQAR+ef2x60Q ˹^Z>rYx譿{s=V?ҕ~wq1 3 "7}s0~3{7?[0[>$yw$df6o\rp;BggW)]DѻRN:-,?{VOV=ƥX{7E/ՆƊ2Kv7\4どԷ!uGp*?@{b9YR.hLƟo!'yrT߯'bycoQ};]w: z6>C(b/f$p T9fXқ7ifn3q;ԇ3o>gIA^TI83:E%'i*S)#&.aFrJegF=;RHn6>#qPڬŁF69C'g[ W43BNo|)I0-`Dv`)0Aۤ]&ىyMqea9[ů څd3!u027YG^3TIX6ϔFjLf9L:;8m^>f҅4iu@iN0k^F=J+TOO"ꆚno7˕C3mr5UW*#588ގ8fk/AO~?6$>6 ;)F ά!YFrfwڃK b2.yʧi%k4m-D0d!w*9@9K_vTFI\ԽnPO*ysz.g*~ԯ5V)N$yWA61V97)U0󩭰Hh vY,ҞoxbE JAþ{EFZdiW-̼◨7hy`TV/>ߘ_7S+Ky'Qz;<Ә,qhDp'~By #1yw1\~fϝ̜$-tLFtgkܭ/8o1V#VDUR. A`MX/F6a*FU VkGk\ioon39GNߞsTY z2nKa,%J=o!YEG+Ѧ*jۦ 9ԅ lf}3NM8΃QX- nSi!Rv;4Xw&zx;47wQ?9@Rn$|P%/o{^{෠=& wڕ;.;"7 uΡ$:67t/X'yʻo$8^^F轡f COK煷xxD"#?L31^ 4^%G cu~%yjlޗMQXf,6fxj#:1ISL¸ pMᚫCLbXJPoKfp^F찺NGɥ4IVAX'.h2@zfs-]:0v8u<ׇܽһL{ A{~8}moU=;8Au:31pD9O8Aiz| a-nye܋q[JؗJ\tyEi ~GXB8pbI$|6m8aGah/㧃wBVRÙ]w¯#Xæ!f _d), n3hv1͢ڙmLj9F4ÚEc_ַ~Bc! F4}GI~3*ՏO7RX^3xq ҙgm#ne42o&kƓ'.v÷7aֿ{;ɑvVg\o "^ws?dz& `0x>\eoy>nd?תG׸ns7]xv{+E:A53(Ή:!l$FLh~0z8hz}oJ z# Du@ʀ$G$(+©`*w8VjE PT+߯YO_lQUYJ}؉ !a͞bʺow!%%\׷x\qm2:ç[@i?vL5My:z&WII)l Zl#+?ҎmRvcVs9Mr#W ); ҇Fb6ee{ۼz]E?&IӞO=^{QFĔ#,wu!\R^H%h3-M S^x-Lvjg&%}:G I~4L2^x 9[ěHr w+t6 yn`=.SCok0ZȐH C i4ᴣ ?4D}iW3΄/8fNlwLl_?zz1319jΞ6"yFB}ę5/~j[v&zꉳc3_5̽$'<;ȱ4yN\oȳŴv4~zEXRn5yޞ$jefHA&a9ӌ ִCè-xcGGh;ES$ӏ{L1Ľ_^YG",$? Z k~~}>ƃt+bc#TjwRBdε%|b4TKל\xO?&Ddz`v)gQ=&$8qo\ $.%Iۡ&.]k̋(faD>[ԖW+ՕG׸Rj1\^FݐvD؏:\'60A<'#-@{G/.z5e!TzF}푩E0[G°/01j;\ JM!0i9M6' ~6(@rN뒠G }ѻ{SGԐ"|V$DL6S\!hIӟ<Ӳnϗ۸U=U-r96>~v~ }Zgck.qƏ7bĊ[D|oX?/'+mm>?--}99FallwkN,?\<9_@ Xzyd.ံ(xC{MQuKRO$b?cOfI֞7?F8.,!OJmL\>{e]=?:lo ッݖ[CG-TkߗkZڳBnd\{}! /CT驔GGz˴[579LC|!wҬmnt+}Gommeq ~fn)[R~Uڽ/UؼSqM6תٗkK;{=s_o?V/ Q㥇?U:Jx?om_ucѫk+U?Lὄ;hnz"N^ {nnwWXJmRYh< :^J확* qwU+זIJ^q]}j gW2_xE/Z p*uZqkwKlmVS?PK-V𤨇? Ju?D*w0p`}KArٱKUK>lm}O?gp?\뿼la>YTx+tK}(Uн>W1.?9_Gg+׸ Zye`D[}>7W Dao\{7P{E|]&ܺjEG?\|\}\u}_{mw_YeKXyV.վv72yQSR2f7 WAIMʍ4={_g?$,G*ל Pn5a;yj$PFJul9^WVCeH)?Pi7ŜإECE-|+٪MA .#@}G7"93 +/Ż`^"3NHE +窵gK?eX>nk5֖+DVW57'/i]=DNt D\ ӟώ/|]~Qp'tk渣0Fv}gdell}hR/Ł9߯vsYFHV{:Q C;F~(Mo,R$P;G(WFL o}MLsIIN?J -\DĶ) m.8䟍P ~}"O8:t #f*O,-DE~s7`bHN1PŜ 2'L|G+Z'||ֹ-/E8ZTrX|*hi OIHr>XXs-&Fdd#NA?Ĉ=O1 I/I8IK C~J&R ր(%3h{G3pҒVX-Nfz#@CJ]溰h}σRrG'ビfp69u'5i"@KC9>;+cu#ii6H{1} R$D\؅]0j:yj9?|f:s 16=Kg HPXm6~{ê7i>KMЎ+\ zeɹ2P.%-*ޠr vwEX [_/6Q9iȟFž,)GKoĜacN}- 4e~`' &/(TkD7Q EriA&-Z=j0X Ps7zgD|r#a"tRDV>Tx3GLVb4/-]^^YtL .C3!g+ fmFō{5ʲ}TI-O \>&~=saѤ*ũݢq"I==Gz#wRTFX!=,N<3\NYđQ>Y7{saQ9L}R%_Hn3v72 7Xe\ Q)S&7|،N 81o Jj&y gTݵuN^D#9=gfx0hڡ_N{(Z ;FQKdq3:{uGfLѝq.`OF>BEIi=]Rtk܏mW%pγg_f47TVN\> yP5 hn"QHZ!sK7^As/XLHĩ)0 |"HvWd2h~\Bꪲȴc㐽g9N-j=ןz~[原}:Ke/ح´ e.Q>0.!YҐWt1XfExB#Tl0?D2h܇]LZPULkࠬB7*}_V ˲t3ꅣr:a(2I߉D 6X1K VzփXɢK'Pr4RSa ab"NbSZ'廐D #_-G1l"ji杁{ۛĺɏ_[b#V%mXsvrE**CqQNMm W0"q؛6I~ލNYVMݹZ#SS/W3,0DhqUA '6S?]1v?UL? Vjh㊄E< *usPX1AFn=&RY͈;0( E9}SO g("؂ -Yc@SZk{s[WLT;};"n$,1 pkc wIvY|oȕ"?6S }Q/mA#&UH d$ւM5J<6^>Eld%yO E1U-|*x` m`ks7E8;t h5pFB-p#b\YRcP뒨1ph=sKks`ߤGGrr(ŨúCЪAK~44!b&ĄV2a3I+[PC$+mz3>a-0/1wA/"J;'/,W:d_c8qjE!ZXUآ׽d4ЏG.rK.^@1x\xu7?#3rI56NѴ}I)049 ;Y0nj8j. WwS m F4؞K!d_ٽNx#  ezU0l\5=g!bqO2ˡi}n44Ivwm:|Sx@ mII-0;v]o7źI;LOT4vAmtUm 9@a4 5&LaBɁcXf :)xU MAI~'xt_]a:w %UzRXឪpU5kSl>NP4HB{捅!w2 X2S1lǠfXcq #ƚ8&;)Np8~UXɨEXf:̂߈P`-{EHUFV\yp()*T>dB!a, Jo@d a5O{,ӏiqԅphP"q06;<|씈YRѥu]?c1훴b[KzHFKrQ͎;`]tlc}93Lw}aG_Ϗ`B n7D$^wܵ /`w3A%|djL[_7tL3` Q yqrzQ M{J$ckK >8uzDs y%_dpLÓa~yB f4Z;}Bo1J3\f4bQ/:TBRQH0 o_o %!F=/CҦ!{FE9S~, >DF$sV$IvRKK~FmH/E{/33J#VΆnk[WUe1qijQ3ۂB\ݜ4&o`Rݘ BVҶ5 +#hxK^-Wֈ\5HD< es$WVeUw%zKޢ3o!2$hpuj_uD(eehbؔF<$~JZ-Wn`Ub"\X/_SaggR_֔ T'#q/x8֛Q}p|i3u;9'h61#$,m~ibD`&~yɊ aQ%x_3WvPpaϪ5tW*k?5:Rz2˯>-idbKl6bIZ`IV* `aKz9|}e1jA=-Z*([<մxʔi&Q`'0Cfb,Nc.FggE)fg(.G9U)+ p(=8Ҽf[^pĚ(bOC^=dƀ=ڹ22 g,?G)@ZW#0!'̞j<8pVRb 3dMfnr Ϧe:Єrv҆2Ez݁H;z)G`_\pD#ZveoeU<Cqb$>:]>*|.9Q'/2 AKA8"Vw9vNxyJB)Wԥ%ˢCFNN"4|iLE{(bTR`j>\gU$q2)q?0ϔ \M=dAb4!YCmd;.xo]' |oA]s9jщTHEX˅$`$YcCuԽ&ӌw,YHijPGC6n?]>a>ȑ Ӧ'.jcIrbZifrxTicQ[RלiPB1"5-$bֶfr0?ol8+ؗ$C Z&?[C`DsW=tAE!FX naO;oS# gccxx3rwEsC.XC"qrrs?>ƼIô%:mDgi]mLqme񦩧>>l9نd-CN0Bh:%RVujr0$A,ijx lAExm{ɤTg]Onc!̒Τ"GC4xؔ5MvFhk@Q4cWw~Nv#v7R2J/Fs0+T͞FaU 7MbPHІwQ!>ЫAN;pmA;}N*b1ccM9ubvqao#$^H--Ifw|zN6ҶCE{!9\?~JybHXqy @d.BK?&@pAV¡6qϬ,R?Fr>@$c_> DkUMȨd ds4gOQ^F}+|fISo`VrZBx](ⱆ~"L@<6ה6hxTY$f$7i: c ZV 'uidRXl6L:+Ge0(Rtan2Q{4"^҆dP3OMZLh.{|3+gt*GwF#2g?P(3s{OaVhȇlڦK</3A4Lj&I2[mZ40\ڒ&)_$ܳ=j3$oL6 *msȈdT׽sC]<[Z>g剴!JO5 b"@68EMt) T~ʨq gb#~qS\4  YE/:lE7w#2 g6B`;^cc3yP\H-ra2( A@lAYo2~I 1p$.;"NHc+e^r1‚M آm+|$Lť jbVAb1D.i(ĭMm@3`Уm'+ yӔ'WjeS4ԭ^})%nu1TrxP -0RVB[80K?if8qThβo㚃`5M:xz0I͐/&H! $z*Yx?HxܓǥUiAXh`g:m͉I"3fVj)tCGyiW' \'vo :A~T)'`G!6Փ;W> W2}-m>](*.)pl4C&4SHsnCT+CKd*rK,Ҩ*]cln #k-l][d˘bi`1''dek?ѻIdjJR*+& 179GNY?nq=MCA|E;iNY AcPmH#lJ܏+4"FLb"ܤ'GHڃe95Ƭ^%s36ݷA?;yldJ\^]pJ-Flgfդѣ)x:S3f2s#'ź;jInU)\t Oc۹gUU}>l67A,)rV5(Ga8/MK0%Fl6Kqr̳6Z`I(g3[AɨZG\o#6c%[sZ78TgnrfݟDҷz/^Y|xA#yNQG鬎&Xf>c^ɸ-È陸sAg wqx"JzWA~[T!Ur&O9ayڅA!rр3c<*"7 0 $`1N:`OLbkځFow7 (;&M Var:3*?;+gaKLh޸/h^hu+ƥ d v4qX^wwWZ(pY#:! !SL|5nQA((L#!h_3Ι?6_Lu^&)>"oH`W/ouԚK^O s,鎣+t/$៛*m +`& x;Aܙx`|A:P'M~ǮArKK@X/XH 4U0s6q`MɾQ 1s B|JQ\[]]^y)[TXumҰ̂.{͹ q+HHɆ5QaM`DJ\@,ن@BFtvH[,a,)v=:mFI4Qh;F'5:o u QF;^J'd,ԝqZ$P>ά:ey)/8 9Dl6,C<|-ІP"y b/G$g<+6 vt,Iř(9Bn4@W ,䔕&J b;d3u4ZBGfR]Lpy|B)ْ3RAtX;X-F6vv uN/zQӰ+ya.,)[D;Ĕᑎ mE; ?]̍%ƶ=tjѸIEH;s6J[% ΟEO:%1O!8(Ti,uV68uRs̹*6GEDd* v;]so)u^eKl65ʚ-ۇ0Ty3iwmvK2M6m3ҜW(77K|k9S0\YkĺFh2Zڬ#)#tO.qW&,Y$"lN\ ŏ;S5L`Dѿ>ܔ('/y9G:re*cCYA;rd(λ8wrb Dl ʘ/)4\fu+@s-l9pHW<8pqQz0aih2/N E"thqE!|KeG+˹+>=UQW-ݕKynE,Mļ RI7Q7pR^2nT9฾5oU@%I Z#n6`ge'I:RX ,U[;QTc 09Vq#aDS _"=d.rxcw=kL3xu:plI!ʈ38iՙptFB[w@OZ7qN|t\ڊ݈6tT<*ke{~Xxg"eה.5NBp&`i%T#Kz8LQA3ZEPlca&XXn~ C߱):'k| H n*[jqm<bʈxp19\wH=X[6[FO[p1;SqZڊ1Y!xY!lc*gVѢa(S+f\0529;`]g|"Ҵ#wZDҠy5IU+Zu02ƎK XԿ-N: |WJlq UU⩠q*io7+ U+\*[,2,)%nVQ8oIWvVe?Ubv?m_M_Ӌ ?V]a`d~p+8?u6TX719Cvu'R32%d,xYH/|'$ b-]+;DJX |*I>i0GPpH.3MY2ڪ,đ+jı0*Z?-[f=ĉΖec֤ =oх;aVr Le|'$t]TrD,'nRM`bh8J1Qo8L/HFkfZضA{`_(ٜyVT1+.Pu`v8A8w DR)VMh+=4)sF6 a2"Ԁ\՗3!Gm,WdYcXgv3pP:MfѬR 둬5W"p;ƫ哪yG6%'W$_q-oNIy͌ڡoBjSɦqp4o5w 5דBW`HiC#$Psp3RJ-g*j>*~љ!ɤMI7Ѣ9Kvpd#2x &tLWd0 WF:;<1fې*fj7T7+QJ" YOb>hn1 xܫT+zee^YKΥ230(n<ɋ}9d[Ԛ)lTx^DA禄䜘7R\,!U+Dgg+;r֧9! 5>MeRgq'vi{jZNeV]ݝd1L dK׭x"%Q!Tt`#J;/^KPuIQ&# Nѭhh,(ӑܪ,& Xlh!^2Nzeۯ͔"n[mH\pGB|h t5۔ḭhC`c-P7PoL*?`us({ 1,ͮˉ{a|  w#q/ S8&y;0.E #8& Kh0Mǚ؇Iѻ.iDfwuhz(8.mpLGu$(@6lR&$ ʚ0; ;;rRr96cMCw鷃>p"aN8yh2R9qrFZʣDUK"G 9< dlOL5?9,xGIL6aITbv"$ْ6Ϸ cTZ U16yK AC8Gc6{nK]CFԚm#҄IwGwrs{gAdhQ>M[1  ]xH*-/Y;á rDEewL@ZaL&K9׽}\NJ7;lA!!V(YDv.]lG0B4QLin- }*l =x.Ĉ8`} ]dA\NA>(D#H"zmYkzgJE/uaWc=L$2aN1KgJ9qZӁ A\Ԋ_#+A'aނ&׽Ţ&Aq] _ABߩYZBP :r槳S S_8!^HC\ yy^m=>ְ)NZ~:nC_T绲/dev/null not_in_systemd=$? for service in ${servicesToReload}; do if test ${not_in_systemd} -ne 0; then test -x /etc/init.d/${service} && /etc/init.d/${service} force-reload else systemctl --ignore-dependencies force-reload ${service}.service fi done log_dbg "Got new settings. Services ${servicesToReload} reloaded." fi fi } case "$0" in *if-up.d*) getNetConfig getOldConfig ifUp *if-down.d*) ;; *) log_err "Don't know what to do. This script used to be called from dir if-{up,down}.d/." esac #==[ Configuration File ]===========================# # /etc/sysconfig/network/if-down.d/55-samba-winbindd unset ${!LC_*} LANGUAGE export LANG="POSIX" export PATH="/sbin:/usr/sbin:/bin/:/usr/bin" numArgs=$# configname="$1" shift interface="$1" if [ $interface = "lo" ]; then exit 0 fi shift shift options="$@" function log_dbg() { case "${options}" in *debug*) logger -t $0 -p daemon.debug "$1" esac } function log_err() { logger -t $0 -p daemon.err "$1" exit 1 } winbind_offline_logon=$( testparm -s --parameter-name "winbind offline logon" 2>/dev/null) test "${winbind_offline_logon}" = "Yes" || exit 0 source /etc/rc.status case "$0" in *if-up.d*) if rc_active nmb; then log_msg=$( rcnmb start 2>&1) log_dbg "${log_msg}" fi log_msg=$( smbcontrol winbindd online 2>&1) log_dbg "${log_msg}" *if-down.d*) log_msg=$( smbcontrol winbindd offline 2>&1) log_dbg "${log_msg}" *) log_err "Don't know what to do. This script used to be called from dir if-{up,down}.d/." esac #==[ Configuration File ]===========================# # /etc/sysconfig/network/if-up.d/21-dhcpcd-hook-samba unset ${!LC_*} LANGUAGE export LANG="POSIX" export PATH="/sbin:/usr/sbin:/bin/:/usr/bin" numArgs=$# configname="$1" shift interface="$1" if [ "${interface}" = "lo" ]; then exit 0 fi shift shift options="$@" function log_dbg() { case "${options}" in *debug*) logger -t $0 -p daemon.debug "$1" esac } function log_err() { logger -t $0 -p daemon.err "$1" exit 1 } SYSCONFIG_FILE="/etc/sysconfig/network/dhcp" if [ -r "${SYSCONFIG_FILE}" ]; then source "${SYSCONFIG_FILE}" if [ "${DHCLIENT_MODIFY_SMB_CONF}" = "no" ]; then exit 0 fi fi INTEFACE_CONFIG_FILE="/etc/sysconfig/network/ifcfg-${configname}" case "${options}" in *nm*) log_dbg "NetworkManager Mode" *) log_dbg "Traditional mode with DHCP" if [ -r "${INTEFACE_CONFIG_FILE}" ]; then source "${INTEFACE_CONFIG_FILE}" IfBootprotoAuto="no" for CurrBootproto in ${BOOTPROTO//+/ } ; do case "${CurrBootproto}" in autoip|dhcp|dhcp4|dhcp6) IfBootprotoAuto="yes" ;; esac done test "${IfBootprotoAuto}" = "no" && exit 0 fi esac if [ $numArgs -lt 2 ]; then log_err "At least configuration and interface name are needed as arguments." fi HOOK_FUNCTIONS_FILE="/etc/sysconfig/network/scripts/dhcpcd-hook-samba-functions" if [ -r "${HOOK_FUNCTIONS_FILE}" ]; then log_dbg "Source ${HOOK_FUNCTIONS_FILE}" source ${HOOK_FUNCTIONS_FILE} else log_err "${HOOK_FUNCTIONS_FILE} not found." fi function getNetConfig() { HostInfoFiles="/var/lib/dhcpcd/dhcpcd-${interface}.info" HostLeaseFiles="/var/lib/dhcp/dhclient-${interface}.lease /var/run/dhclient-${interface}.lease /var/lib/dhcp/dhclient-${interface}.leases" unset new_netbios_name_servers WINSSERVERS NETBIOSSCOPE for HostInfo in ${HostInfoFiles}; do if test -r ${HostInfo}; then break fi done log_dbg "HostInfo: ${HostInfo}" for HostLease in ${HostLeaseFiles}; do if test -r ${HostLease}; then break fi done log_dbg "HostLease: ${HostLease}" if [ -n "${HostInfo}" -o -n "${HostLease}" ]; then if test "${HostInfo}" -nt "${HostLease}"; then source "${HostInfo}" OLD_IFS=${IFS} IFS=',' for server in "${WINSSERVERS} ${NETBIOSNAMESERVER}"; do new_netbios_name_servers="${new_netbios_name_servers} ${server}" done IFS=${OLD_IFS} elif test "${HostLease}" -nt "${HostInfo}"; then eval $( awk 'BEGIN { FS="[[:blank:];]*" } /netbios-name-servers/ { netbios_name_servers=$4 }; /netbios-scope/ { netbios_scope=$4 } END { print "new_netbios_name_servers=\"" netbios_name_servers "\"\nNETBIOSSCOPE=" netbios_scope}' "${HostLease}") else log_err "No dhcpcd info nor dhclient leases file found for ${interface}." fi fi export new_netbios_name_servers export new_netbios_scope="${NETBIOSSCOPE}" log_dbg "new_netbios_name_servers: ${new_netbios_name_servers}" } function getOldConfig() { OldHostInfoFiles="/var/lib/dhcpcd/dhcpcd-${interface}.info.old" OldHostLeasesFiles="/var/lib/dhcp/dhclient-${interface}.lease /var/run/dhclient-${interface}.lease /var/lib/dhcp/dhclient-${interface}.leases" unset old_netbios_name_servers old_netbios_scope WINSSERVERS NETBIOSSCOPE for OldHostInfo in ${OldHostInfoFiles}; do if test -r ${OldHostInfo}; then break fi done log_dbg "OldHostInfo: ${OldHostInfo}" for OldHostLease in ${OldHostLeaseFiles}; do if test -r ${OldHostLease}; then break fi done log_dbg "OldHostLease: ${OldHostLease}" if [ -n "${OldHostInfo}" -o -n "${OldHostLease}" ]; then if test "${OldHostInfo}" -nt "${OldHostLease}"; then source "${OldHostInfo}" OLD_IFS=${IFS} IFS=',' for server in "${WINSSERVERS} ${NETBIOSNAMESERVER}"; do old_netbios_name_servers="${old_netbios_name_servers} ${server}" done IFS=${OLD_IFS} elif test "${OldHostLease}" -nt "${OldHostInfo}"; then eval $(awk 'BEGIN { FS="[[:blank:];]*" } /netbios-name-servers/ { old_netbios_name_servers=netbios_name_servers; netbios_name_servers=$4 }; /netbios-scope/ { old_netbios_scope=netbios_scope; netbios_scope=$4 } END { print "old_netbios_name_servers=\"" old_netbios_name_servers "\"\nNETBIOSSCOPE=" old_netbios_scope}' "${OldHostLease}") else log_dbg "No old dhcpcd info nor dhclient leases file found for ${interface}." fi fi export old_netbios_name_servers export old_netbios_scope="${NETBIOSSCOPE}" log_dbg "old_netbios_name_servers: ${old_netbios_name_servers}" } function ifUp() { export reason="RENEW" export SAMBA_DHCP_CONF_INFO_FILE="/var/adm/fillup-templates/samba-client-dhcp.conf" netbios_setup if test -n "${new_netbios_name_servers}"; then if test "${new_netbios_name_servers}" != "${old_netbios_name_servers}" -o \ "${new_netbios_scope}" != "${old_netbios_scope}"; then servicesToReload="nmb winbind smb" grep -q -E ':name=systemd:/system/' /proc/$$/cgroup 2>/dev/null not_in_systemd=$? for service in ${servicesToReload}; do if test ${not_in_systemd} -ne 0; then test -x /etc/init.d/${service} && /etc/init.d/${service} force-reload else systemctl --ignore-dependencies force-reload ${service}.service fi done log_dbg "Got new settings. Services ${servicesToReload} reloaded." fi fi } case "$0" in *if-up.d*) getNetConfig getOldConfig ifUp *if-down.d*) ;; *) log_err "Don't know what to do. This script used to be called from dir if-{up,down}.d/." esac #==[ Configuration File ]===========================# # /etc/sysconfig/network/if-up.d/55-samba-winbindd unset ${!LC_*} LANGUAGE export LANG="POSIX" export PATH="/sbin:/usr/sbin:/bin/:/usr/bin" numArgs=$# configname="$1" shift interface="$1" if [ $interface = "lo" ]; then exit 0 fi shift shift options="$@" function log_dbg() { case "${options}" in *debug*) logger -t $0 -p daemon.debug "$1" esac } function log_err() { logger -t $0 -p daemon.err "$1" exit 1 } winbind_offline_logon=$( testparm -s --parameter-name "winbind offline logon" 2>/dev/null) test "${winbind_offline_logon}" = "Yes" || exit 0 source /etc/rc.status case "$0" in *if-up.d*) if rc_active nmb; then log_msg=$( rcnmb start 2>&1) log_dbg "${log_msg}" fi log_msg=$( smbcontrol winbindd online 2>&1) log_dbg "${log_msg}" *if-down.d*) log_msg=$( smbcontrol winbindd offline 2>&1) log_dbg "${log_msg}" *) log_err "Don't know what to do. This script used to be called from dir if-{up,down}.d/." esac #==[ Configuration File ]===========================# # /etc/sysconfig/network/if-up.d/SuSEfirewall2 set -e unset ${!LC_*} LANGUAGE export LANG=POSIX export PATH=/sbin:/usr/sbin:/usr/bin:/bin . /etc/sysconfig/network/config sfw2_active() { { test -e /proc/net/ip_tables_names && iptables -nL reject_func >/dev/null 2>&1; } || return 1 } case "$0" in *scripts/firewall) case $1 in net-reconfig-init) [ "$FIREWALL" = 'yes' ] || exit 2 sfw2_active || exit 3 /sbin/SuSEfirewall2 bootlock net-reconfig-done) [ "$FIREWALL" = 'yes' ] || exit 2 sfw2_active || exit 3 /sbin/SuSEfirewall2 --bootunlock start running) test -f /var/lock/SuSEfirewall2.pid status) sfw2_active try-restart) if sfw2_active; then /sbin/SuSEfirewall2 start fi esac (*if-up.d*|*if-down.d*) config="$1" iface="$2" . /etc/sysconfig/network/ifcfg-"$config" 2>/dev/null || true [ "$FIREWALL" = 'yes' ] || exit 0 if sfw2_active; then /sbin/SuSEfirewall2 -q -i "$iface" start fi *) echo "don't know what to do" >&2 ;; esac #==[ Configuration File ]===========================# # /etc/sysconfig/network/ifcfg-bond0 BOOTPROTO='static' BROADCAST='' IPADDR='' NETMASK='' MTU='' NETWORK='' REMOTE_IPADDR='' STARTMODE='auto' BONDING_MASTER='yes' BONDING_MODULE_OPTS='miimon=100 mode=1' BONDING_SLAVE0='eth1' BONDING_SLAVE1='eth2' PREFIXLEN='' #==[ Configuration File ]===========================# # /etc/sysconfig/network/ifcfg-bond1 BOOTPROTO='static' BROADCAST='10.1.235.255' IPADDR='10.1.232.76' NETMASK='255.255.252.0' MTU='8192' NETWORK='' REMOTE_IPADDR='' STARTMODE='onboot' BONDING_MASTER='yes' BONDING_MODULE_OPTS='miimon=100 mode=1 primary=eth3' BONDING_SLAVE0='eth3' BONDING_SLAVE1='eth0' PREFIXLEN='' #==[ Configuration File ]===========================# # /etc/sysconfig/network/ifcfg-eth0 BOOTPROTO='none' STARTMODE='auto' NAME='OSA Express Network card (0.0.3740)' #==[ Configuration File ]===========================# # /etc/sysconfig/network/ifcfg-eth1 BOOTPROTO='static' BROADCAST='' ETHTOOL_OPTIONS='' NAME='OSA Express Network card (0.0.38c4)' NETMASK='' NETWORK='' REMOTE_IPADDR='' STARTMODE='auto' USERCONTROL='no' #==[ Configuration File ]===========================# # /etc/sysconfig/network/ifcfg-eth2 BOOTPROTO='none' STARTMODE='auto' NAME='OSA Express Network card (0.0.38d4)' #==[ Configuration File ]===========================# # /etc/sysconfig/network/ifcfg-eth3 BOOTPROTO='none' STARTMODE='auto' NAME='OSA Express Network card (0.0.3750)' #==[ Configuration File ]===========================# # /etc/sysconfig/network/ifcfg-hsi0 BOOTPROTO='static' BROADCAST='' ETHTOOL_OPTIONS='' IPADDR='192.168.253.218/27' MTU='32768' NAME='Hipersocket (0.0.3900)' NETWORK='' REMOTE_IPADDR='' STARTMODE='auto' USERCONTROL='no' #==[ Configuration File ]===========================# # /etc/sysconfig/network/ifcfg-lo IPADDR=127.0.0.1/8 NETMASK=255.0.0.0 NETWORK=127.0.0.0 STARTMODE=nfsroot BOOTPROTO=static USERCONTROL=no FIREWALL=no #==[ Configuration File ]===========================# # /etc/sysconfig/network/ifcfg-vlan60 BOOTPROTO='static' BROADCAST='' ETHTOOL_OPTIONS='' IPADDR='10.1.247.1/28' MTU='' NAME='VLAN 60 HearBeat bond0' NETWORK='' REMOTE_IPADDR='' STARTMODE='auto' USERCONTROL='no' VLAN='yes' ETHERDEVICE='bond0' #==[ Configuration File ]===========================# # /etc/sysconfig/network/ifcfg.template STARTMODE= IFPLUGD_PRIORITY= BOOTPROTO= IPADDR= NETMASK= PREFIXLEN= BROADCAST= REMOTE_IPADDR= LABEL= MTU= LLADDR= ETHTOOL_OPTIONS= RUN_POLL_TCPIP= USERCONTROL= NAME= UNIQUE= DHCLIENT_SET_HOSTNAME= DHCLIENT_HOSTNAME_OPTION= DHCLIENT_SET_DEFAULT_ROUTE= DHCLIENT_ROUTE_PRIORITY DHCLIENT6_MODE= DHCLIENT6_RAPID_COMMIT= DHCLIENT6_SET_HOSTNAME= DHCLIENT6_HOSTNAME_OPTION= BRIDGE= BRIDGE_PORTS= BRIDGE_AGEINGTIME= BRIDGE_FORWARDDELAY= BRIDGE_HELLOTIME= BRIDGE_MAXAGE= BRIDGE_PATHCOSTS= BRIDGE_PORTPRIORITIES= BRIDGE_PRIORITY= BRIDGE_STP= WIRELESS= WIRELESS_MODE= WIRELESS_ESSID= WIRELESS_AUTH_MODE= WIRELESS_WPA_PSK= WIRELESS_EAP_AUTH= WIRELESS_WPA_PROTO= WIRELESS_WPA_IDENTITY= *REMOVED BY SUPPORTCONFIG* WIRELESS_WPA_ANONID= WIRELESS_CA_CERT= WIRELESS_CLIENT_CERT= WIRELESS_CLIENT_KEY= *REMOVED BY SUPPORTCONFIG* WIRELESS_HIDDEN_SSID= WIRELESS_PRIORITY= WIRELESS_AP_SCANMODE= WIRELESS_WPA_DRIVER= WIRELESS_AP= WIRELESS_NICK= WIRELESS_NWID= WIRELESS_CHANNEL= WIRELESS_SENS= WIRELESS_RATE= WIRELESS_KEY= WIRELESS_KEY_LENGTH= WIRELESS_DEFAULT_KEY= WIRELESS_RTS= WIRELESS_FRAG= WIRELESS_CIPHER_PAIRWISE= WIRELESS_CIPHER_GROUP= WIRELESS_PEAP_VERSION= #==[ Configuration File ]===========================# # /etc/sysconfig/network/routes default 10.1.232.1 - - #==[ Configuration File ]===========================# # /etc/sysconfig/network/scripts/SuSEfirewall2 set -e unset ${!LC_*} LANGUAGE export LANG=POSIX export PATH=/sbin:/usr/sbin:/usr/bin:/bin . /etc/sysconfig/network/config sfw2_active() { { test -e /proc/net/ip_tables_names && iptables -nL reject_func >/dev/null 2>&1; } || return 1 } case "$0" in *scripts/firewall) case $1 in net-reconfig-init) [ "$FIREWALL" = 'yes' ] || exit 2 sfw2_active || exit 3 /sbin/SuSEfirewall2 bootlock net-reconfig-done) [ "$FIREWALL" = 'yes' ] || exit 2 sfw2_active || exit 3 /sbin/SuSEfirewall2 --bootunlock start running) test -f /var/lock/SuSEfirewall2.pid status) sfw2_active try-restart) if sfw2_active; then /sbin/SuSEfirewall2 start fi esac (*if-up.d*|*if-down.d*) config="$1" iface="$2" . /etc/sysconfig/network/ifcfg-"$config" 2>/dev/null || true [ "$FIREWALL" = 'yes' ] || exit 0 if sfw2_active; then /sbin/SuSEfirewall2 -q -i "$iface" start fi *) echo "don't know what to do" >&2 ;; esac #==[ Configuration File ]===========================# # /etc/sysconfig/network/scripts/dhcpcd-hook-samba unset ${!LC_*} LANGUAGE export LANG="POSIX" export PATH="/sbin:/usr/sbin:/bin/:/usr/bin" numArgs=$# configname="$1" shift interface="$1" if [ "${interface}" = "lo" ]; then exit 0 fi shift shift options="$@" function log_dbg() { case "${options}" in *debug*) logger -t $0 -p daemon.debug "$1" esac } function log_err() { logger -t $0 -p daemon.err "$1" exit 1 } SYSCONFIG_FILE="/etc/sysconfig/network/dhcp" if [ -r "${SYSCONFIG_FILE}" ]; then source "${SYSCONFIG_FILE}" if [ "${DHCLIENT_MODIFY_SMB_CONF}" = "no" ]; then exit 0 fi fi INTEFACE_CONFIG_FILE="/etc/sysconfig/network/ifcfg-${configname}" case "${options}" in *nm*) log_dbg "NetworkManager Mode" *) log_dbg "Traditional mode with DHCP" if [ -r "${INTEFACE_CONFIG_FILE}" ]; then source "${INTEFACE_CONFIG_FILE}" IfBootprotoAuto="no" for CurrBootproto in ${BOOTPROTO//+/ } ; do case "${CurrBootproto}" in autoip|dhcp|dhcp4|dhcp6) IfBootprotoAuto="yes" ;; esac done test "${IfBootprotoAuto}" = "no" && exit 0 fi esac if [ $numArgs -lt 2 ]; then log_err "At least configuration and interface name are needed as arguments." fi HOOK_FUNCTIONS_FILE="/etc/sysconfig/network/scripts/dhcpcd-hook-samba-functions" if [ -r "${HOOK_FUNCTIONS_FILE}" ]; then log_dbg "Source ${HOOK_FUNCTIONS_FILE}" source ${HOOK_FUNCTIONS_FILE} else log_err "${HOOK_FUNCTIONS_FILE} not found." fi function getNetConfig() { HostInfoFiles="/var/lib/dhcpcd/dhcpcd-${interface}.info" HostLeaseFiles="/var/lib/dhcp/dhclient-${interface}.lease /var/run/dhclient-${interface}.lease /var/lib/dhcp/dhclient-${interface}.leases" unset new_netbios_name_servers WINSSERVERS NETBIOSSCOPE for HostInfo in ${HostInfoFiles}; do if test -r ${HostInfo}; then break fi done log_dbg "HostInfo: ${HostInfo}" for HostLease in ${HostLeaseFiles}; do if test -r ${HostLease}; then break fi done log_dbg "HostLease: ${HostLease}" if [ -n "${HostInfo}" -o -n "${HostLease}" ]; then if test "${HostInfo}" -nt "${HostLease}"; then source "${HostInfo}" OLD_IFS=${IFS} IFS=',' for server in "${WINSSERVERS} ${NETBIOSNAMESERVER}"; do new_netbios_name_servers="${new_netbios_name_servers} ${server}" done IFS=${OLD_IFS} elif test "${HostLease}" -nt "${HostInfo}"; then eval $( awk 'BEGIN { FS="[[:blank:];]*" } /netbios-name-servers/ { netbios_name_servers=$4 }; /netbios-scope/ { netbios_scope=$4 } END { print "new_netbios_name_servers=\"" netbios_name_servers "\"\nNETBIOSSCOPE=" netbios_scope}' "${HostLease}") else log_err "No dhcpcd info nor dhclient leases file found for ${interface}." fi fi export new_netbios_name_servers export new_netbios_scope="${NETBIOSSCOPE}" log_dbg "new_netbios_name_servers: ${new_netbios_name_servers}" } function getOldConfig() { OldHostInfoFiles="/var/lib/dhcpcd/dhcpcd-${interface}.info.old" OldHostLeasesFiles="/var/lib/dhcp/dhclient-${interface}.lease /var/run/dhclient-${interface}.lease /var/lib/dhcp/dhclient-${interface}.leases" unset old_netbios_name_servers old_netbios_scope WINSSERVERS NETBIOSSCOPE for OldHostInfo in ${OldHostInfoFiles}; do if test -r ${OldHostInfo}; then break fi done log_dbg "OldHostInfo: ${OldHostInfo}" for OldHostLease in ${OldHostLeaseFiles}; do if test -r ${OldHostLease}; then break fi done log_dbg "OldHostLease: ${OldHostLease}" if [ -n "${OldHostInfo}" -o -n "${OldHostLease}" ]; then if test "${OldHostInfo}" -nt "${OldHostLease}"; then source "${OldHostInfo}" OLD_IFS=${IFS} IFS=',' for server in "${WINSSERVERS} ${NETBIOSNAMESERVER}"; do old_netbios_name_servers="${old_netbios_name_servers} ${server}" done IFS=${OLD_IFS} elif test "${OldHostLease}" -nt "${OldHostInfo}"; then eval $(awk 'BEGIN { FS="[[:blank:];]*" } /netbios-name-servers/ { old_netbios_name_servers=netbios_name_servers; netbios_name_servers=$4 }; /netbios-scope/ { old_netbios_scope=netbios_scope; netbios_scope=$4 } END { print "old_netbios_name_servers=\"" old_netbios_name_servers "\"\nNETBIOSSCOPE=" old_netbios_scope}' "${OldHostLease}") else log_dbg "No old dhcpcd info nor dhclient leases file found for ${interface}." fi fi export old_netbios_name_servers export old_netbios_scope="${NETBIOSSCOPE}" log_dbg "old_netbios_name_servers: ${old_netbios_name_servers}" } function ifUp() { export reason="RENEW" export SAMBA_DHCP_CONF_INFO_FILE="/var/adm/fillup-templates/samba-client-dhcp.conf" netbios_setup if test -n "${new_netbios_name_servers}"; then if test "${new_netbios_name_servers}" != "${old_netbios_name_servers}" -o \ "${new_netbios_scope}" != "${old_netbios_scope}"; then servicesToReload="nmb winbind smb" grep -q -E ':name=systemd:/system/' /proc/$$/cgroup 2>/dev/null not_in_systemd=$? for service in ${servicesToReload}; do if test ${not_in_systemd} -ne 0; then test -x /etc/init.d/${service} && /etc/init.d/${service} force-reload else systemctl --ignore-dependencies force-reload ${service}.service fi done log_dbg "Got new settings. Services ${servicesToReload} reloaded." fi fi } case "$0" in *if-up.d*) getNetConfig getOldConfig ifUp *if-down.d*) ;; *) log_err "Don't know what to do. This script used to be called from dir if-{up,down}.d/." esac #==[ Configuration File ]===========================# # /etc/sysconfig/network/scripts/dhcpcd-hook-samba-functions SAMBA_DHCP_CONF=/etc/samba/dhcp.conf SAMBA_DHCP_CONF_INFO_FILE="" netbios_setup() { if [ "$reason" != BOUND ] && [ "$reason" != RENEW ] \ && [ "$reason" != REBIND ] && [ "$reason" != REBOOT ] \ && [ "$reason" != EXPIRE ] && [ "$reason" != FAIL ] then return fi if [ "$new_netbios_name_servers" = "$old_netbios_name_servers" ] \ && [ "$new_netbios_scope" = "$old_netbios_scope" ] \ && [ -f $SAMBA_DHCP_CONF ] then return fi local other_servers=`sed -n -e"s/[[:space:]]$interface:[^[:space:]]*//g; \ s/^[[:space:]]*wins server[[:space:]]*=[[:space:]]*//pi" \ $SAMBA_DHCP_CONF` umask 022 local serverlist="$other_servers" for server in $new_netbios_name_servers do serverlist="$serverlist $interface:$server" done echo -n > $SAMBA_DHCP_CONF test -n "$SAMBA_DHCP_CONF_INFO_FILE" -a -f "$SAMBA_DHCP_CONF_INFO_FILE" && \ cat "$SAMBA_DHCP_CONF_INFO_FILE" >> $SAMBA_DHCP_CONF if [ -z "$other_servers" ] then if [ "$reason" = FAIL ] || [ "$reason" = EXPIRE ] then return fi fi if [ -n "$serverlist" ] then echo " wins server =$serverlist" >> $SAMBA_DHCP_CONF fi if [ -n "$new_netbios_scope" ] then echo " netbios scope = $new_netbios_scope" >> $SAMBA_DHCP_CONF fi } case "$0" in *bin/sh|*bin/bash) : ;; *) netbios_setup ;; esac #==[ Configuration File ]===========================# # /etc/sysconfig/network/scripts/firewall set -e unset ${!LC_*} LANGUAGE export LANG=POSIX export PATH=/sbin:/usr/sbin:/usr/bin:/bin . /etc/sysconfig/network/config sfw2_active() { { test -e /proc/net/ip_tables_names && iptables -nL reject_func >/dev/null 2>&1; } || return 1 } case "$0" in *scripts/firewall) case $1 in net-reconfig-init) [ "$FIREWALL" = 'yes' ] || exit 2 sfw2_active || exit 3 /sbin/SuSEfirewall2 bootlock net-reconfig-done) [ "$FIREWALL" = 'yes' ] || exit 2 sfw2_active || exit 3 /sbin/SuSEfirewall2 --bootunlock start running) test -f /var/lock/SuSEfirewall2.pid status) sfw2_active try-restart) if sfw2_active; then /sbin/SuSEfirewall2 start fi esac (*if-up.d*|*if-down.d*) config="$1" iface="$2" . /etc/sysconfig/network/ifcfg-"$config" 2>/dev/null || true [ "$FIREWALL" = 'yes' ] || exit 0 if sfw2_active; then /sbin/SuSEfirewall2 -q -i "$iface" start fi *) echo "don't know what to do" >&2 ;; esac #==[ Configuration File ]===========================# # /etc/sysconfig/network/scripts/functions.netconfig r=$ROOT NETCONFIG_DNS_RANKING_DEFAULT="+/vpn/ -/auto/ +strongswan +openswan +racoon -avahi" test -z "$MD5DIR" && { MD5DIR=$r/var/adm/netconfig/md5 } debug () { test "$QUIET" = "yes" && return test "$VERBOSE" = "yes" || return echo -e "debug: $*" >&2 } warn () { test "$QUIET" = "yes" && return logger -s -p warn -t "$PROGNAME" "$*" } log () { test "$QUIET" = "yes" && return logger -s -t "$PROGNAME" "$*" } find_current_service() { local name=$1 local pfx file link for pfx in /etc/systemd /var/run/systemd /run/systemd ; do file="$pfx/system/$name" test -f "$file" || continue link=`readlink -f "$file" 2>/dev/null` test "X$link" = "X" -o "X$link" = "X$name" && continue echo "${link##*/}" return 0 done echo "$name" return 1 } netconfig_policy() { local policy="$1" local hint="${2:+$2-}" local Id=`systemctl --no-pager -p Id show network.service 2>/dev/null` local service=${Id#Id=} service=${service%.service} if test "X$service" = "X" ; then debug "Systemd did not reported any enabled network service" service=`find_current_service "network.service" 2>/dev/null` service=${service%.service} debug "Using '$service' as network service" fi case ${service} in NetworkManager) test "x$policy" = "xauto" && \ policy='STATIC_FALLBACK NetworkManager' network.service|*) test "x$policy" = "xauto" && \ policy='STATIC *' esac debug "Resolved ${hint}policy '$1' for service '${service}' to '$policy'" echo "$policy" } function get_variable() { local line while read line; do eval $line done < <(grep "^[[:space:]]*$1=" $2 2>/dev/null) } get_ranking_idx() { test $# -le 1 && return 1 local s="$1" ; shift local g=1 shopt -o -q noglob || g=0 [ $g ] && shopt -o -s noglob for r in $@ ; do case $r in +\/*\/) r=${r:2:$((${#r}-3))} if [[ ${s} =~ ${r} ]] ; then echo "0" ; return 0 fi -\/*\/) r=${r:2:$((${#r}-3))} if [[ ${s} =~ ${r} ]] ; then echo "2" ; return 0 fi +*) r=${r:1} if [ "x${s}" = "x${r}" ] ; then echo "0" ; return 0 fi -*) r=${r:1} if [ "x${s}" = "x${r}" ] ; then echo "2" ; return 0 fi *) esac done [ $g ] && shopt -o -u noglob echo "1" ; return 0 } function read_symlink() { local name="$1" local dest="" if test "x$name" != x ; then dest=`readlink -f "$name" 2>/dev/null` fi test "x$dest" != x && echo "$dest" || echo "$name" } netconfig_check_md5_and_move() { local SRCFILE=${1} local DSTFILE=${2} local OSUFFIX=${3} local ERR_VAR=${4} local NEW_ERX=${5:-"^###"} local MD5FILE="$MD5DIR/$DSTFILE" local OUTFILE=`read_symlink "${DSTFILE}"` test -f "$SRCFILE" || return 3 mkdir -p "${MD5FILE%/*}" || return 3 local RET=0 local NEWMD5SUM SRCMD5SUM DSTMD5SUM OLDMD5SUM DATE BAKFILE OLD_ERX _read_erx_data() { test "x${1}" = x && return 1 gawk -v erx="${2}" ' { if(length(erx) && match($0, erx) > 0) { print $0; next; } } !/^#|^[[:space:]]*$/ { print $0; } ' "$1" } OLD_ERX="${NEW_ERX}" if test -s "$MD5FILE" ; then OLD_ERX=`gawk -- '/^#/ { if(NR==1) print substr($0,2); }' \ "$MD5FILE" 2>/dev/null` fi SRCMD5SUM=`_read_erx_data "$SRCFILE" "$OLD_ERX" | md5sum` test "x${OLD_ERX}" = "x${NEW_ERX}" && NEWMD5SUM="$SRCMD5SUM" || \ NEWMD5SUM=`_read_erx_data "$SRCFILE" "$NEW_ERX" | md5sum` if test ! -s "$OUTFILE" ; then touch "$OUTFILE" || return 3 test -e "$DSTFILE" || return 3 DSTMD5SUM=`echo "" | md5sum` OLDMD5SUM="$DSTMD5SUM" rm -f "$MD5FILE" { echo "#$OLD_ERX"; echo "$DSTMD5SUM"; } > "$MD5FILE" else DSTMD5SUM=`_read_erx_data "$DSTFILE" "$OLD_ERX" | md5sum` OLDMD5SUM=`grep -Ev "^#" "$MD5FILE" 2>/dev/null` fi if test "$FORCE_REPLACE" = true ; then if [ -s "$OUTFILE" -a \ "$DSTMD5SUM" != "$OLDMD5SUM" -a \ "$DSTMD5SUM" != "$SRCMD5SUM" ]; then DATE=$(date +%Y%m%d-%H%M%S) BAKFILE="${OUTFILE}.${DATE}" cp -p --backup=existing "$OUTFILE" "$BAKFILE" log "force replace set: backup created as $BAKFILE" fi cp -p "$SRCFILE" "$OUTFILE" # redundant, but... DSTMD5SUM="$SRCMD5SUM" OLDMD5SUM="$SRCMD5SUM" fi if test "$DSTMD5SUM" != "$OLDMD5SUM" -a \ "$DSTMD5SUM" != "$SRCMD5SUM" ; then log "ATTENTION: You have modified $DSTFILE. Leaving it untouched..." if test "x$OSUFFIX" != x -a \ "x$SRCFILE" != "${OUTFILE}${OSUFFIX}" && \ mv -f "$SRCFILE" "${OUTFILE}${OSUFFIX}" &>/dev/null ; then log "You can find my version in ${OUTFILE}${OSUFFIX}" test "x$ERR_VAR" != x && eval "$ERR_VAR='${OUTFILE}${OSUFFIX}'" else log "You can find my version in $SRCFILE ..." test "x$ERR_VAR" != x && eval "$ERR_VAR='${SRCFILE}'" fi RET=2 else if test "$DSTMD5SUM" != "$SRCMD5SUM" -o \ "$SRCMD5SUM" != "$NEWMD5SUM" -o \ "$FORCE_REPLACE" = "true" ; then debug "Installing new $DSTFILE" cp -p "$SRCFILE" "$OUTFILE" else debug "No changes for $DSTFILE" RET=1 fi rm -f "$SRCFILE" fi rm -f "$MD5FILE" { test "x${NEW_ERX}" != x && \ echo "#${NEW_ERX}" echo "$NEWMD5SUM" } > "$MD5FILE" return $RET } netconfig_kv_filter() { LANG=C LC_ALL=C gawk -- '/^[[:space:]]*$/ { next; } /^[[:space:]]*[a-zA-Z_][a-zA-Z0-9_]*='"'"'[^'"'"']*'"'"'[[:space:]]*$/ && \ !/^[[:space:]]*_+=/ { sub("^[[:space:]]+", "", $0); sub("[[:space:]]+$", "", $0); equ=index($0, "="); key=substr($0, 1, equ - 1); val=substr($0, equ + 2, length($0) - equ - 2) print key"="val; next; } { print "="NR; exit(NR); }' "$@" } function openLockWait() { test -z "$1" && return 1 test -z "$2" && return 1 step="0.25" loop_count=$(($2 * 4)) for ((i=1; i<=loop_count; i++)); do openLock "$1" if [ "$?" = "0" ]; then debug "lockfile created" return 0; fi debug "wait ${step}s to get lock (try $i)" sleep $step done return 1; } function openLock() { test -z "$1" && return 1 PRGNAME=$1 PID=$$ PIDPATH="/var/run/$PRGNAME.pid" if [ -e $PIDPATH ]; then OLDPID=`cat $PIDPATH` if [ ! -e "/proc/$OLDPID/cmdline" ]; then debug "pid does not exists; remove lock" rm $PIDPATH else if grep "$PRGNAME" /proc/$OLDPID/cmdline >/dev/null 2>&1 ; then debug "process still running" return 1; else debug "this pid is a different process; remove the lock" rm $PIDPATH fi fi fi echo -n "$PID" > $PIDPATH debug "lockfile created ($PIDPATH) for PID $PID" return 0 } function unLock() { test -z "$1" && return 1 PRGNAME=$1 PID=$$ PIDPATH="/var/run/$PRGNAME.pid" if [ ! -e $PIDPATH ]; then return 0 fi OLDPID=`cat $PIDPATH` if [ "$OLDPID" != "$PID" ]; then log "cannot remove the lockfile. PIDs do not match." return 1 fi msg=`rm $PIDPATH` if [ "$?" != "0" ]; then log "removing the lock file ($PIDPATH) failed: $msg" return 0 fi return 1 } function find_first_provides() { test -z "$1" && return 1 test -z "$2" && return 1 REQVAR="$1" STATEDIR="$2" if [ -n "$3" ]; then INTERFACE="$3" fi VALUE="" CFG_TIME=0 for dir in `ls $STATEDIR/`; do if [ ! -d $STATEDIR/$dir ]; then debug "not a dir ... skip" continue fi if [ -n "$INTERFACE" -a "$INTERFACE" != "$dir" ]; then debug "we are searching for a different dir ... skip" continue fi test -d "/sys/class/net/${dir}" || continue for file in `ls $STATEDIR/$dir/netconfig* 2>/dev/null`; do debug "searching in $file" get_variable "CREATETIME" $file get_variable "$REQVAR" $file debug "got CREATETIME=$CREATETIME and $REQVAR=${!REQVAR}" if [ "x$VALUE" = "x" -a "x${!REQVAR}" != "x" ]; then CFG_TIME=$CREATETIME VALUE=${!REQVAR} elif [ -n "$CREATETIME" -a $CREATETIME -ne 0 -a \ $CREATETIME -lt $CFG_TIME -a "x$REQVAR" != "x" ]; then CFG_TIME=$CREATETIME VALUE=${!REQVAR} fi eval "$REQVAR=\"\"" CREATETIME=0 done done eval "$REQVAR=\"$VALUE\"" } #==[ Configuration File ]===========================# # /etc/sysconfig/network/scripts/functions.rpm-utils unset POSIXLY_CORRECT ; set +o posix # we're using non-posix bash features sysconfig_remove_and_set() { local root='' local base='etc/sysconfig' local fill='bin/fillup' local dflt='' while [ $# -gt 0 ]; do case $1 in (-r) shift ; root="${1%/}/" ; shift ;; (-b) shift ; base="$1" ; shift ;; (-d) shift ; dflt="$1" ; shift ;; (-f) shift ; flup="$1" ; shift ;; (*) break ;; esac done local file=${1} ; shift local var val f if test -n "$1" -a -n "$file" -a -f "${root}${base}/${file}" -a -x "${root}${fill}" ; then rm -f "${root}${base}/${file}.del.$$" for var in ${1:+"$@"} ; do val="${!var}" echo "$var='${val:-$dflt}'" done > "${root}${base}/${file}.del.$$" if test -s "${root}${base}/${file}.del.$$" ; then rm -f "${root}${base}/${file}.new" "${root}${fill}" -q -t -r -i -d "=" "${root}${base}/${file}" \ "${root}${base}/${file}.del.$$" "${root}${base}/${file}.deleted.$$" if test -f "${root}${base}/${file}.new" ; then mv -f "${root}${base}/${file}.new" "${root}${base}/${file}" fi for f in "${root}${base}/${file}.del.$$" "${root}${base}/${file}.deleted.$$" ; do if test -f "$f" ; then . "$f" rm -f "$f" fi done fi rm -f "${root}${base}/${file}.del.$$" fi } #==[ Configuration File ]===========================# # /etc/sysconfig/network/scripts/samba-winbindd unset ${!LC_*} LANGUAGE export LANG="POSIX" export PATH="/sbin:/usr/sbin:/bin/:/usr/bin" numArgs=$# configname="$1" shift interface="$1" if [ $interface = "lo" ]; then exit 0 fi shift shift options="$@" function log_dbg() { case "${options}" in *debug*) logger -t $0 -p daemon.debug "$1" esac } function log_err() { logger -t $0 -p daemon.err "$1" exit 1 } winbind_offline_logon=$( testparm -s --parameter-name "winbind offline logon" 2>/dev/null) test "${winbind_offline_logon}" = "Yes" || exit 0 source /etc/rc.status case "$0" in *if-up.d*) if rc_active nmb; then log_msg=$( rcnmb start 2>&1) log_dbg "${log_msg}" fi log_msg=$( smbcontrol winbindd online 2>&1) log_dbg "${log_msg}" *if-down.d*) log_msg=$( smbcontrol winbindd offline 2>&1) log_dbg "${log_msg}" *) log_err "Don't know what to do. This script used to be called from dir if-{up,down}.d/." esac #==[ Configuration File ]===========================# # /etc/sysconfig/rhn/allowed-actions/configfiles/all #==[ Configuration File ]===========================# # /etc/sysconfig/rhn/allowed-actions/script/run #==[ Configuration File ]===========================# # /etc/sysconfig/rhn/clientCaps.d/distupgrade distupgrade.upgrade(2)=1 #==[ Configuration File ]===========================# # /etc/sysconfig/rhn/clientCaps.d/packages packages.setLocks(1)=1 #==[ Configuration File ]===========================# # /etc/sysconfig/rhn/rhnsd INTERVAL=240 #==[ Configuration File ]===========================# # /etc/sysconfig/rhn/systemid username operador operating_system sles-release description Initial Registration Parameters: OS: sles-release Release: 12.1 CPU Arch: s390x checksum 2f1b0a9c2a2b5edb6a649a1eb8b997748e64f914b5b1cfe756e227838cb43249 profile_name zlpro12.risa system_id ID-1000010254 architecture s390x-redhat-linux os_release 12.2 fields system_id os_release operating_system architecture username type type REAL #==[ Configuration File ]===========================# # /etc/sysconfig/rhn/systemid.save username operador operating_system sles-release description Initial Registration Parameters: OS: sles-release Release: 12.1 CPU Arch: s390x checksum 347a5984e783d2292f85b0635dc66f328cf3b57e1e46a8fccc050702c231464a profile_name zlpro12.risa system_id ID-1000010254 architecture s390x os_release 12.1 fields system_id os_release operating_system architecture username type type REAL #==[ Configuration File ]===========================# # /etc/sysconfig/rhn/up2date stagingContentWindow[comment]=How much forward we should look for future actions. In hours. stagingContentWindow=24 disallowConfChanges[comment]=Config options that can not be overwritten by a config update action disallowConfChanges=noReboot;sslCACert;useNoSSLForPackages;serverURL;disallowConfChanges skipNetwork[comment]=Skips network information in hardware profile sync during registration. skipNetwork=0 stagingContent[comment]=Retrieve content of future actions in advance stagingContent=1 networkRetries[comment]=Number of attempts to make at network connections before giving up networkRetries=1 hostedWhitelist[comment]=RHN Hosted URL's hostedWhitelist= enableProxy[comment]=Use a HTTP Proxy enableProxy=0 writeChangesToLog[comment]=Log to /var/log/up2date which packages has been added and removed writeChangesToLog=0 serverURL[comment]=Remote server URL (use FQDN) serverURL=https://lnxsmt01.risa.smt/XMLRPC proxyPassword[comment]=The password to use for an authenticated proxy proxyPassword= proxyUser[comment]=The username for an authenticated proxy proxyUser= versionOverride[comment]=Override the automatically determined system version versionOverride= sslCACert[comment]=The CA cert used to verify the ssl server sslCACert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT retrieveOnly[comment]=Retrieve packages only retrieveOnly=0 debug[comment]=Whether or not debugging is enabled debug=0 httpProxy[comment]=HTTP proxy in host:port format, e.g. squid.redhat.com:3128 httpProxy= useNoSSLForPackages[comment]=Use HTTP for package, package list, and header fetching (disable Akamai) useNoSSLForPackages=0 systemIdPath[comment]=Location of system id systemIdPath=/etc/sysconfig/rhn/systemid enableProxyAuth[comment]=To use an authenticated proxy or not enableProxyAuth=0 noReboot[comment]=Disable the reboot actions noReboot=0 #==[ Configuration File ]===========================# # /etc/sysconfig/rhn/up2date.rpmnew debug[comment]=Whether or not debugging is enabled debug=0 systemIdPath[comment]=Location of system id systemIdPath=/etc/sysconfig/rhn/systemid serverURL[comment]=Remote server URL (use FQDN) serverURL=https://enter.your.server.url.here/XMLRPC hostedWhitelist[comment]=RHN Hosted URL's hostedWhitelist= enableProxy[comment]=Use a HTTP Proxy enableProxy=0 versionOverride[comment]=Override the automatically determined system version versionOverride= httpProxy[comment]=HTTP proxy in host:port format, e.g. squid.redhat.com:3128 httpProxy= noReboot[comment]=Disable the reboot actions noReboot=0 networkRetries[comment]=Number of attempts to make at network connections before giving up networkRetries=1 disallowConfChanges[comment]=Config options that can not be overwritten by a config update action disallowConfChanges=noReboot;sslCACert;useNoSSLForPackages;noSSLServerURL;serverURL;disallowConfChanges; sslCACert[comment]=The CA cert used to verify the ssl server sslCACert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT useNoSSLForPackages[comment]=Use the noSSLServerURL for package, package list, and header fetching (disable Akamai) useNoSSLForPackages=0 retrieveOnly[comment]=Retrieve packages only retrieveOnly=0 skipNetwork[comment]=Skips network information in hardware profile sync during registration. skipNetwork=0 tmpDir[comment]=Use this Directory to place the temporary transport files tmpDir=/tmp writeChangesToLog[comment]=Log to /var/log/up2date which packages has been added and removed writeChangesToLog=0 stagingContent[comment]=Retrieve content of future actions in advance stagingContent=1 stagingContentWindow[comment]=How much forward we should look for future actions. In hours. stagingContentWindow=24 #==[ Configuration File ]===========================# # /etc/sysconfig/rhn/up2date.rpmsave debug[comment]=Whether or not debugging is enabled debug=0 systemIdPath[comment]=Location of system id systemIdPath=/etc/sysconfig/rhn/systemid serverURL[comment]=Remote server URL (use FQDN) serverURL=https://lnxsmt01.risa.smt/XMLRPC hostedWhitelist[comment]=RHN Hosted URL's hostedWhitelist= enableProxy[comment]=Use a HTTP Proxy enableProxy=0 versionOverride[comment]=Override the automatically determined system version versionOverride= httpProxy[comment]=HTTP proxy in host:port format, e.g. squid.redhat.com:3128 httpProxy= noReboot[comment]=Disable the reboot actions noReboot=0 networkRetries[comment]=Number of attempts to make at network connections before giving up networkRetries=1 disallowConfChanges[comment]=Config options that can not be overwritten by a config update action disallowConfChanges=noReboot;sslCACert;useNoSSLForPackages;serverURL;disallowConfChanges; sslCACert[comment]=The CA cert used to verify the ssl server sslCACert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT useNoSSLForPackages[comment]=Use HTTP for package, package list, and header fetching (disable Akamai) useNoSSLForPackages=0 retrieveOnly[comment]=Retrieve packages only retrieveOnly=0 skipNetwork[comment]=Skips network information in hardware profile sync during registration. skipNetwork=0 writeChangesToLog[comment]=Log to /var/log/up2date which packages has been added and removed writeChangesToLog=0 stagingContent[comment]=Retrieve content of future actions in advance stagingContent=1 stagingContentWindow[comment]=How much forward we should look for future actions. In hours. stagingContentWindow=24 #==[ Configuration File ]===========================# # /etc/sysconfig/scripts/SuSEfirewall2-batch check_iptables_batch() { if [ -n "$USE_IPTABLES_BATCH" ]; then IPTABLES_BATCH=/usr/sbin/iptables-batch IP6TABLES_BATCH=/usr/sbin/ip6tables-batch if [ ! -x "$IPTABLES_BATCH" ]; then [ "$USE_IPTABLES_BATCH" != 'auto' ] && echo "iptables-batch missing, batch support disabled." USE_IPTABLES_BATCH="" elif [ ! -x "$IP6TABLES_BATCH" ]; then [ "$USE_IPTABLES_BATCH" != 'auto' ] && echo "ip6tables-batch missing, batch support disabled." USE_IPTABLES_BATCH="" fi fi if [ -n "$USE_IPTABLES_BATCH" ]; then iptables_batchfile=`mktemp -p /dev/shm -t SuSEfirewall2_iptables.XXXXXXXX` || exit 1 removeonexit "$iptables_batchfile" exec 4> "$iptables_batchfile" echo "#!$IPTABLES_BATCH" >&4 iptables() { local i echo -n "iptables" >&4 for i in "$@"; do echo -n " \"$i\""; done >&4 echo >&4 } ip6tables_batchfile=`mktemp -p /dev/shm -t SuSEfirewall2_ip6tables.XXXXXXXX` || exit 1 removeonexit "$ip6tables_batchfile" exec 6> "$ip6tables_batchfile" echo "#!$IP6TABLES_BATCH" >&6 ip6tables() { local i echo -n "ip6tables" >&6 for i in "$@"; do echo -n " \"$i\""; done >&6 echo >&6 } fi } iptables_batch_commitpoint() { echo commit >&4 echo commit >&6 } commit_iptables_batch() { if [ -n "$USE_IPTABLES_BATCH" ]; then if ! $IPTABLES_BATCH "$iptables_batchfile"; then error "iptables-batch failed, re-running using iptables" iptables() { $IPTABLES_BIN "$@"; } commit() { :; } . $iptables_batchfile fi if ! $IP6TABLES_BATCH "$ip6tables_batchfile"; then error "ip6tables-batch failed, re-running using ip6tables" ip6tables() { $IP6TABLES_BIN "$@"; } commit() { :; } . $ip6tables_batchfile fi fi } #==[ Configuration File ]===========================# # /etc/sysconfig/scripts/SuSEfirewall2-custom fw_custom_after_chain_creation() { true } fw_custom_before_port_handling() { true } fw_custom_before_masq() { # could also be named "after_port_handling()" true } fw_custom_before_denyall() { # could also be named "after_forwardmasq()" true } fw_custom_after_finished() { true } #==[ Configuration File ]===========================# # /etc/sysconfig/scripts/SuSEfirewall2-oldbroadcast convert_old_broadcast() { local i zone for i in $FW_ALLOW_FW_BROADCAST; do case "$i" in no) ;; yes) warning "FW_ALLOW_FW_BROADCAST=yes is obsolete, use FW_ALLOW_FW_BROADCAST_{INT,EXT,DMZ}=yes instead" for zone in INT EXT DMZ; do eval FW_ALLOW_FW_BROADCAST_$zone=yes done int) warning "FW_ALLOW_FW_BROADCAST=$i is obsolete, use FW_ALLOW_FW_BROADCAST_INT=yes instead" FW_ALLOW_FW_BROADCAST_INT=yes ext) warning "FW_ALLOW_FW_BROADCAST=$i is obsolete, use FW_ALLOW_FW_BROADCAST_EXT=yes instead" FW_ALLOW_FW_BROADCAST_EXT=yes dmz) warning "FW_ALLOW_FW_BROADCAST=$i is obsolete, use FW_ALLOW_FW_BROADCAST_DMZ=yes instead" FW_ALLOW_FW_BROADCAST_DMZ=yes *) warning "FW_ALLOW_FW_BROADCAST=$i is obsolete, use FW_ALLOW_FW_BROADCAST_{INT,EXT,DMZ}=$i instead" for zone in INT EXT DMZ; do eval FW_ALLOW_FW_BROADCAST_$zone="$i" done esac done unset FW_ALLOW_FW_BROADCAST for i in $FW_IGNORE_FW_BROADCAST; do case "$i" in no) ;; yes) warning "FW_IGNORE_FW_BROADCAST=yes is obsolete, use FW_IGNORE_FW_BROADCAST_{INT,EXT,DMZ}=yes instead" for zone in INT EXT DMZ; do eval FW_IGNORE_FW_BROADCAST_$zone=yes done int) warning "FW_IGNORE_FW_BROADCAST=$i is obsolete, use FW_IGNORE_FW_BROADCAST_INT=yes instead" FW_IGNORE_FW_BROADCAST_INT=yes ext) warning "FW_IGNORE_FW_BROADCAST=$i is obsolete, use FW_IGNORE_FW_BROADCAST_EXT=yes instead" FW_IGNORE_FW_BROADCAST_EXT=yes dmz) warning "FW_IGNORE_FW_BROADCAST=$i is obsolete, use FW_IGNORE_FW_BROADCAST_DMZ=yes instead" FW_IGNORE_FW_BROADCAST_DMZ=yes *) warning "FW_IGNORE_FW_BROADCAST=$i is obsolete, use FW_IGNORE_FW_BROADCAST_{INT,EXT,DMZ}=$i instead" for zone in INT EXT DMZ; do eval FW_IGNORE_FW_BROADCAST_$zone="$i" done esac done unset FW_IGNORE_FW_BROADCAST } #==[ Configuration File ]===========================# # /etc/sysconfig/scripts/SuSEfirewall2-open use strict; my $config = '/etc/sysconfig/SuSEfirewall2'; my $tmpconfig = $config.'.new'; my %zones = map { $_ => 1} ( 'INT', 'EXT', 'DMZ' ); my %types = map { $_ => 1} ( 'TCP', 'UDP', 'IP', 'RPC' ); if($#ARGV < 2) { print "USAGE: $0 \n\n"; print "where ZONE is one of ".join(' ', keys %zones)."\n"; print "and TYPE is one of ".join(' ', keys %types)."\n"; exit 1 } my ($zone, $type); $zone = shift; $type = shift; if(!exists $zones{$zone}) { print "$zone is not a valid zone, must be one of ".join(' ', keys %zones)."\n"; exit 1 } if(!exists $types{$type}) { print "$type is not a valid type, must be one of ".join(' ', keys %types)."\n"; exit 1 } my $var = 'FW_SERVICES_'.$zone.'_'.$type; open(CONF,"<$config") or die "Unable to open file $config"; open(OUT,">$tmpconfig") or die "Unable to open file $tmpconfig"; while() { if(/^$var=(['"])?([^'"]*)(['"])?/) { my @val = split(/\s+/, $2); my $fc = $1 || '"'; if ($fc ne ($3 || '"')) { unlink $tmpconfig; die "invalid line $.\n"; } my %new = map { $_ => 1 } @val; for my $service (@ARGV) { next if $new{$service}; $new{$service} = 1; push @val, $service; } print OUT "$var=$fc",join(' ', @val), $fc, "\n"; } else { print OUT; } } close OUT; close CONF; rename $tmpconfig, $config or die "can't rename file $tmpconfig to $config"; exit 0 #==[ Configuration File ]===========================# # /etc/sysconfig/scripts/SuSEfirewall2-qdisc do_qdisc_settings() { if [ -n "$FW_HTB_TUNE_DEV" ]; then modprobe sch_htb 2> /dev/null fi clear_qdisc_settings for DEVICE_DATA in $FW_HTB_TUNE_DEV; do IFS="," read DEV BANDWIDTH < <(echo "$DEVICE_DATA") if [ -n "$DEV" -a -n "$BANDWIDTH" ]; then test -e "/sys/class/net/$DEV" || continue SMALL_PACKET_BW=$(( $BANDWIDTH / 7 )) if [ "$SMALL_PACKET_BW" -eq 0 ]; then warning "illegal bandwidth settings for $DEV in FW_HTB_TUNE_DEV" fi VPN_BW=$(( $BANDWIDTH / 4 )) if [ "$VPN_BW" -eq 0 ];then warning "illegal bandwidth settings for $DEV in FW_HTB_TUNE_DEV" fi REST_BW=$(( ${BANDWIDTH}-${SMALL_PACKET_BW}-${VPN_BW} )) $TC qdisc add dev $DEV root handle 1:0 htb default 20 # adding the queing discipline $TC class add dev $DEV parent 1:0 classid 1:1 htb \ rate ${BANDWIDTH}kbit ceil ${BANDWIDTH}kbit $TC class add dev $DEV parent 1:1 classid 1:10 htb \ rate ${SMALL_PACKET_BW}kbit ceil ${BANDWIDTH}kbit prio 0 quantum 3000 # and interactive SSH $TC class add dev $DEV parent 1:1 classid 1:11 htb \ rate ${VPN_BW}kbit ceil ${BANDWIDTH}kbit prio 1 quantum 3000 $TC class add dev $DEV parent 1:1 classid 1:20 htb \ rate ${REST_BW}kbit ceil ${BANDWIDTH}kbit prio 2 quantum 3000 $TC filter add dev $DEV parent 1:0 prio 0 protocol ip \ handle 10 fw flowid 1:10 $TC filter add dev $DEV parent 1:0 prio 1 protocol ip \ handle 11 fw flowid 1:11 $IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp \ -m length --length :64 -j MARK --set-mark 10 $IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp \ -m tos --tos Minimize-Delay \ -m tcp --dport 22 -j MARK --set-mark 10 $IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp \ -m tos --tos Minimize-Delay \ -m tcp --sport 22 -j MARK --set-mark 10 $IPTABLES -A POSTROUTING -t mangle -o $DEV -p udp \ -m udp --dport 53 -j MARK --set-mark 10 $IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp \ -m tcp --dport 53 -j MARK --set-mark 10 $IPTABLES -A POSTROUTING -t mangle -o $DEV -p 50 \ -j MARK --set-mark 11 else warning "illegal settings in FW_HTB_TUNE_DEV=\"$FW_HTB_TUNE_DEV\", skipped device \"$DEV\"" fi done } #==[ Configuration File ]===========================# # /etc/sysconfig/scripts/SuSEfirewall2-rpcinfo use strict; if ($#ARGV < 0) { print STDERR "Usage: $0 \n\n"; exit 1; } my %services; foreach my $service (@ARGV) { my @a = split(/,/,$service); if( $#a == 0) { push @{$services{$service}}, {}; } elsif ($#a >= 2 && $a[1] eq '_rpc_') { my %h = (); $h{'net'} = $a[0] if($a[0] && length($a[0])); $h{'sport'} = $a[3] if($a[3] && length($a[3])); push @{$services{$a[2]}}, \%h; } } my %rpcusers; for my $file (qw(/usr/share/SuSEfirewall2/rpcusers /etc/sysconfig/SuSEfirewall2.d/rpcusers)) { next unless open(F, '<', $file); while () { chomp; s/#.*//; next if /^ *$/; my $uid; my ($service, $user) = split(/\s+/, $_, 2); unless (defined $service && defined $user) { print STDERR "$file:$. syntax error\n"; next; } $uid = getpwnam($user); unless (defined $uid) { print STDERR "$file:$. invalid user name: $user\n"; next; } $rpcusers{$service} = $uid; } } my %udpports = (); my %tcpports = (); open (RPCINFO, '/sbin/rpcinfo -p localhost|') or die; ; # header line while() { chomp; my @line = split; next if($#line < 4); next unless (exists $services{$line[4]}); if($line[2] eq 'udp') { $udpports{$line[3]} = $line[4]; } elsif($line[2] eq 'tcp') { $tcpports{$line[3]} = $line[4]; } } close RPCINFO; sub getportsfor($$) { my ($proto, $href) = @_; open (FILE, '<', "/proc/net/$proto") or die; ; # header line my $ret = 0; while() { chomp; my @line = split; my ($addr, $port) = split(/:/, $line[1], 2); $port = pack('H*', $port); # "007B" => "\x00\x7B" $port = unpack('n', $port); # "\x00\x7B" => 0x007B my $service = $href->{$port} || undef; next unless $service; my $uid = $line[7]; if ($uid && !($rpcusers{$service} && $uid == $rpcusers{$service})) { print STDERR "$service/$proto doesn't run as root, ignored.\n"; next; } ++$ret; foreach my $h (@{$services{$service}}) { push @{$h->{$proto}}, $port; } } close FILE; if($ret && !exists $services{'portmapper'}) { push @{$services{'portmapper'}}, { tcp => [111], udp => [111] }; } } getportsfor('udp', \%udpports); getportsfor('tcp', \%tcpports); foreach my $l (values %services) { foreach my $h (@$l) { foreach my $proto (('udp', 'tcp')) { if(exists($h->{$proto})) { foreach my $port (@{$h->{$proto}}) { print "-p $proto --dport $port"; print " --sport ".$h->{'sport'} if exists $h->{'sport'}; print " -s ".$h->{'net'} if exists $h->{'net'}; print "\n"; } } } } } #==[ Configuration File ]===========================# # /etc/sysconfig/scripts/SuSEfirewall2-showlog use strict; use Sys::Hostname; use Net::DNS; my $res; if($#ARGV >= 0 && $ARGV[0] eq '-N') { $res = Net::DNS::Resolver->new; $res->tcp_timeout(10); $res->udp_timeout(10); $res->persistent_tcp(1); $res->persistent_udp(1); shift @ARGV; } if($#ARGV < 0) { $ARGV[0] = '/var/log/firewall'; } elsif($ARGV[0] eq '--help' || $ARGV[0] eq '-h') { print "Usage: $0 FILES\n"; print " /var/log/firewall will be used if no file is specified\n"; print " specify - as file to read from STDIN\n"; exit 0; } elsif($ARGV[0] eq '-') { shift @ARGV; } my %dnscache; sub dnsresolve($) { my $ip = shift; return $dnscache{$ip} if(exists $dnscache{$ip}); my $query = $res->search($ip); if ($query) { my $a; foreach my $rr (grep { $_->type eq 'PTR' } $query->answer) { $a = $rr->ptrdname; } if($a) { $dnscache{$ip} = $a; return $a; } } return $ip; } my $hostname = hostname; my ($dir, $zone, $sflog,$src,$dst,$spt,$dpt,$interface,$proto); format STDOUT = @< @<<<< @<<<<<<<<< @<<<<<< @>>>>>>>>>>>>>>>>>>>>>>>>>>>@<<<<< @|||||| @>>>>>>>>>>>>>>>>>>>>>>>>>>>@<<<<< $dir, $zone, $sflog, $proto, $src, $spt, $interface, $dst,$dpt . while(<>) { next unless s/^.*$hostname kernel: (?:\[.*\] )?//; chomp; s/OPT \((.*)\)/OPT=$1/; my @arr = split(/ /); if ($arr[0] =~ s/^SFW2-//) { $sflog = shift @arr; if ($sflog =~ /(IN|OUT)([^-]*)-(.*)/) { $dir = ($1 eq 'IN')?'i':(($1 eq 'OUT')?'o':'?'); $zone = $2; $sflog = $3; } } else { $sflog = $dir = '?'; } my %tags = map { my @a = split(/=/,$_,2); $a[0] => $a[1]; } @arr; $src = $tags{SRC}; $dst = $tags{DST}; $src = dnsresolve($src) if($res && $src); $dst = dnsresolve($dst) if($res && $dst); $src = '['.$src.']' if($src =~ /:/); $dst = '['.$dst.']' if($dst =~ /:/); $spt = ':'.$tags{SPT} if($tags{SPT}); $dpt = ':'.$tags{DPT} if($tags{DPT}); $proto = lc $tags{PROTO}; if($tags{IN}) { $interface = '> '.$tags{IN}; } else { $interface = $tags{OUT}.' >'; } $spt = ' '.$tags{TYPE} if ($proto =~ /ICMP.*/); $src =~ s/:(0000:)+/::/; $dst =~ s/:(0000:)+/::/; write; }