From 67024140dd683cfc49bb8572a2dd571d1c3f8fcb Mon Sep 17 00:00:00 2001 From: Pim Date: Tue, 7 Jan 2025 09:11:48 +0100 Subject: [PATCH] feat: add cpu_by_group plugin (#1468) * feat: add cpu_by_group plugin The current cpu_by_process plugin says it self it can generate huge graphs which are difficult to decipher. This plugin tries to mitigate that issue by automatically grouping processes by their cgroup. This also solves the issue that cpu_by_process groups processes by process name, which means atm you cant really differentiate between f.e. python processes in various cgroups. The remaining processes that are not running in a cgroup are also split between kernel threads and system processes For user & docker cgroups a human readable cgroup label is constructed (if munin has f.e. docker access). The function in this plugin could probably be expanded for other often used cgroups * chore: add example graphs & update docs * chore: update docs --- plugins/cpu/cpu_by_group | 360 ++++++++++++++++++ .../cpu_by_group_KThread-day.png | Bin 0 -> 24530 bytes .../cpu_by_group_System-day.png | Bin 0 -> 42026 bytes .../example-graphs/cpu_by_group_caddy-day.png | Bin 0 -> 16232 bytes 4 files changed, 360 insertions(+) create mode 100755 plugins/cpu/cpu_by_group create mode 100644 plugins/cpu/example-graphs/cpu_by_group_KThread-day.png create mode 100644 plugins/cpu/example-graphs/cpu_by_group_System-day.png create mode 100644 plugins/cpu/example-graphs/cpu_by_group_caddy-day.png diff --git a/plugins/cpu/cpu_by_group b/plugins/cpu/cpu_by_group new file mode 100755 index 00000000..1bce15cf --- /dev/null +++ b/plugins/cpu/cpu_by_group @@ -0,0 +1,360 @@ +#!/bin/bash +# -*- sh -*- + +set -e + +: << =cut + +=head1 NAME + +cpu_by_group - Monitors cpu time for all processes on a system and groups them into graphs by either cgroup, system processes or kernel threads + +=head1 DESCRIPTION + +Works similar as good ol' cpu_by_process, but groups processes by either their cgroup, system proceses or kernel threads to produce smaller graphs. + +For docker projects / containers the processes are grouped by either their docker compose project name or container name. +For user cgroups the user id will be resolved to the corresponding user name. + +The plugin keeps track of previously running processes in MUNIN_STATEFILE + +=head2 EXAMPLE GRAPHS + +There are 3 example graphs which were all automatically generated by this plugin. + +- System-day -> system processes (processes without a cgroup) +- KThread-day -> kernel threads +- caddy-day -> A docker compose project named caddy, with a single container named caddy and a single caddy process + +=head1 CONFIGURATION + +For full docker support, ensure that munin can access docker. F.e. run munin with the docker group: + +[cpu_by_group] +group docker + +=head1 REQUIREMENTS + +- bash v4.3+ +- docker access rights (if using docker) + +=head1 AUTHOR + +Copyright (C) 2025 pimlie + +=head1 LICENSE + +MIT + +=head1 MAGIC MARKERS + + #%# family=auto + #%# capabilities=autoconf + +=cut + +if [ -n "$MUNIN_LIBDIR" ]; then + . "$MUNIN_LIBDIR/plugins/plugin.sh" +fi + +PLUGIN_BASE="$(basename "$0")" +PLUGIN_CACHE="$MUNIN_STATEFILE" + +# Check if docker can be used +function can_use_docker { + if command -v docker >/dev/null; then + if docker ps >/dev/null 2>&1; then + echo 1 + return 0 + fi + fi + + echo 0 + return 1 +} + +HAS_DOCKER="$(can_use_docker)" # is a bool, 1=true + +# Left trim white spaces +function ltrim { + local var="$*" + # remove leading whitespace characters + var="${var#"${var%%[![:space:]]*}"}" + echo "$var" +} + +# +# Create a munin variable safe & human readable cgroup name +# +# Supported human readable names: +# - 'User $user_name' for isolated user processes +# - For docker containers +# - Group by compose.service label (the docker project name) if applicable +# - Add container name, either as group if not docker compose otherwise as graph prefix +# +declare -A docker_cache +function safe_cgroup_name { + local -n local_cgroup_name=$1 + local cgroup="$2" + + # shellcheck disable=SC2076 + if [[ "$cgroup" != *.scope ]] || [[ "$cgroup" == */init.scope ]]; then + # if no cgroup scope, just list as system + cgroup="System" + + # Unless it's a kernel thread + if [ -r "/proc/$3/stat" ]; then + IFS=' ' read -ra stats < "/proc/$3/stat" + local flags + flags=${stats[8]} + pkThread=0x00200000 + + if (( (flags & pkThread) == pkThread )); then + cgroup="KThread" + fi + fi + elif [[ "$cgroup" =~ "/user.slice/user-" ]]; then + # Extract user id and use user name as cgroup name + user_id=${cgroup#*/user.slice/user-} + user_id=${user_id%%.*} + user="$(id -nu "$user_id")" + cgroup="User-${user}" + elif [ "$HAS_DOCKER" -eq 1 ] && [[ "$cgroup" =~ "/docker-" ]]; then + # Extract docker container id and use either compose project otherwise + # container name as cgroup name + docker_id=${cgroup#*/docker-} + docker_id=${docker_id%%.*} + + docker_data="${docker_cache["$docker_id"]}" + if [ -z "$docker_data" ]; then + docker_data="$(docker inspect --format='{{ .Name }} {{ index .Config.Labels "com.docker.compose.project" }}' "$docker_id")" + docker_cache["$docker_id"]="$docker_data" + fi + + IFS=' ' read -ra docker_names <<< "$docker_data" + image_title=${docker_names[0]//*\//} + compose_project="${docker_names[1]}" + + if [ -n "$compose_project" ]; then + cgroup="$compose_project.$image_title" + elif [ -n "$image_title" ]; then + cgroup="$image_title" + fi + else + cgroup=${cgroup##*/} + cgroup=${cgroup%%.*} + fi + + # shellcheck disable=SC2034 + local_cgroup_name="${cgroup//_/-}" +} + +# Format process name as munin safe variable +function safe_proc_name { + local -n local_name=$1 + local name="$2" + name="${name%%/*}" # Remove everything after a / + name="${name%.}" # Remove trailing dot + name="${name//[^a-zA-Z0-9]/_}" # Make Munin var safe + + # shellcheck disable=SC2034 + local_name="$name" +} + +# Format graph name as munin safe variable +function safe_graph_name { + name="${1:-cputime}" # Use cputime as default value if unset + name="${name//|/.}" # Replace any pipes to dots + echo "${name//./_}" # Replace dots with underscores +} + +# Calculate process time in seconds +function calc_proc_time { + local -n local_proc_time=$1 + IFS=":" read -ra time <<< "$2" + + if [ "${#time[@]}" -ne 3 ]; then + echo "Expected time to be in ([days]-)[hour]:[min]:[sec] format, got '$1'" >&2 + exit 1 + fi + + local day=0 + local hour="${time[0]}" + + IFS="-" read -ra dayhour <<< "${time[0]}" + if [ "${#dayhour[@]}" -gt 1 ]; then + day="${dayhour[0]}" + hour="${dayhour[1]}" + fi + + local hours="$(( day * 24 + 10#$hour ))" + + # shellcheck disable=SC2034 + local_proc_time="$(( 10#$hours * 3600 + 10#${time[1]} * 60 + 10#${time[2]}))" +} + +# Get array of all previous & current running processes +function get_processes { + local -n procs=$1 + + if [ -n "$PLUGIN_CACHE" ] && [ -r "$PLUGIN_CACHE" ] && [ -s "$PLUGIN_CACHE" ]; then + while read -r process; do + procs["$process"]=0; + done < "$PLUGIN_CACHE" + fi + + IFS=$'\n' + for proc_line in $(ps -eo time,pid,comm h); do + IFS=' ' read -r -a proc <<< "$proc_line" + + # Create dot separated cgroup / process name breadcrumb + local proc_id + local cgroup_file + proc_id="$(ltrim "${proc[1]}")" + cgroup_file="/proc/$proc_id/cgroup" + # cat cgroup directly from /proc fs, as ps is bad for parsing multiple variable + # width columns and trimming whitespace is quite slow in bash + local cgroup_name="" + if [ -r "$cgroup_file" ]; then + cgroup_name="$(cat "$cgroup_file")" + fi + proc_name="${proc[2]}" + proc_time=0 + + safe_cgroup_name cgroup_name "$cgroup_name" "$proc_id" + safe_proc_name proc_name "$proc_name" + + # Use everything before the first dot as the cgroup name, and everything + # after the first dot as process name. + # This ensures that we can also use prefixes within cgroup's, fe + # for docker containers we want the compose projects as cgroup name + # but still prefix individual processes with their container name + local breadcrumb + local multi_name + local multi_graph_name + breadcrumb="${cgroup_name}.${proc_name}" + multi_name="${breadcrumb%%.*}" + multi_graph_name="${breadcrumb#*.}" + + calc_proc_time proc_time "${proc[0]}" + + if [ "$proc_time" -gt 0 ]; then + procs_key="${multi_name}|${multi_graph_name}" + cur_value="${procs["$procs_key"]}" + + procs["$procs_key"]="$(( cur_value + proc_time ))" + fi + done + + unset IFS +} + +function cache_processes { + local -n proc_names=$1 + + if [ -n "$PLUGIN_CACHE" ] && [ -w "$(dirname "$PLUGIN_CACHE")" ]; then + echo "${proc_names[@]}" | tr ' ' '\n' > "$PLUGIN_CACHE" + fi +} + +# Emit multigraph header +function emit_multigraph_base { + if [ -z "$1" ]; then + echo "multigraph $PLUGIN_BASE" + else + echo "multigraph ${PLUGIN_BASE}_${1//-/_}" + fi +} + +# Emit base graph config +function emit_graph_base { + cat < zMz(4U|Fxo6jb~zc6K3&)T=&#*S+Zr~KQZ|U!DM6{WG7{hsM<#i<~yjKZJJvyT*E0t zPRAX7oc7p#F3OwqMG^>;!WDQ{+-GET58GH8lERRUbA?y zMxAHxIg_ojalCPqOfsaMRGe$VPq?}bew{eIpN;dbdtb(d7s0_-My93Kznaj;&!^V5 zwp_TLqFv_cc5CntvPY|2B*@5a43PbgA2J!gf2(3`XSY3KY-&nWe9g)WtT-5a$BsBT zoKckMN!afUiCy*l1%d~(&Xq=q+d z-aJ?3b8~Z(hzwAoT)TR~;f`F~I&yMHN5`%SXQ}q4rl#_8Z{DTR&ZE-O(u?~kVxKPAxpy_2Glh9j^r-JuGLeeh0=&cN!PRWwt7#$s@pr9z)yo>Ing@uK(GEH!W z$ZbD=|Dm%-R~0pI7VKaZ)<1FO%9RTj9#~LK_OB@q*>he%BTFV;rNz|N$;rvyekRXh zVqsxHF$J%a#{)WF2>k?4D4U#GeYob*1W8-1GEY>-@bf-$^&E zxu#|_=l%QlJ)I7-1=@{v6ysOl>MtJSrRNLzP#(zM)X?DI=y=P^>#*bG?NZ&@nVF7- z*82L1vF>syDJgL)Mju(e5aaiEIaPnUEl)~Bro_b^ja6QY6}Pu%`rQ8M)2A8JnYD3ze4LKbi-o#eeEo5XvDt;zT)Qj!`X3_>Zi#Nm zydE7E)^u~-Mk=lb<6l^>v2zcS+V#^fsjK%`9`qu0nu`|{6qMP#YB9C4yO*VzoScmR zUy{J9cQx3Kti7VTTG5L{OHVHwA!g@vNJ8R?%2j3MyG!L)f_b8!k&i!9sA}#oRo#_>)y|W?j!Uo{OBLvXYLI6w^#hGXbB?j6@!8WE7B`__$xzJAmd+ zV4zrlf}*07^$%q$tNj&Hi`9{bbknjPKYkn=%gM`Y)RyN^9>98P<#EV)CN(fn>C~x> zzNK^&YpwdK^X*2o5PK?#PwI@8C#09V`}=p(Q%+1wY^C(d%(OdyzUh=;zKCh_zQwug ztvL2bafSevPn5(qr6N@3#!mZh)K;4rYlJ= zzD|4X?d@H0h=ZPTdZb-2MBZZRwP}km0xLN4d{V>G=)27}Ha4qPtwI(_H>{FBefod{ z-T70m$c2~r*V>J=9d?;}y%Zwlx-f$TWYUykV`o=xXWEpaIa0V>;JVvtso`FY!BeGZt#jw%rKcVT%Ezmx z8*U1b&v%|3$3|t`d*McIVAUhB3H!Xs$w@?F(2nEP4}?5Ov8t-7EaK)Jt#<7VO61Wl zQy1e^5*v*BYNFfg>(j5+KSg9*OgH58RE!W$b6Z|Im!#IYoEi`iklF6~Xhv8j`r*Te zNE?C|UzLa_?33dP%3GZJ%Erdl(9p0vTjTcX)hqJ^na?ll`$ey}nZ9bNk(%F|A{$pX z*p@&4vmpt0VYt8lpm~Rknp)%M#IrUMt;HVet4>P0F4+J2*?@|%nO*8zfy;dA<#*-} zPo8*`yG9~%*qhz;w!gnirx)YsgL?|x6Tf~PaB#YG>C#ARZdhdGP=9}7ozd{OY!4da zt5=1j66^clH;u|NY4_iz-SJG-_}H;yDk^lOA73&|ln(#8zocFN_L_*p*JL${$<^EZ zpQ4jNfm+0RI|$Q@2jNveGAGCC=uK_@=9wFPXs;#qrt_gPO8 zXV7jx)pC@1Mz zMn*<@`u;t8Hgd|wDv!FKR5^QgEcdFlwY98l$>RL9fBfk-_r^xGSY>gm?+TJVboBJ} zw6vE~B3Y=t<>TA3ERODFIGgzS{(XASyA{Dosvc5wK2L@>zgFiD-xIIQiv%MmARtFk zq5le53A<*1G0l0q|MlDkN_VXy!}PKHcZP?}7NT`n);P?`+*r?ij4P;^LvU4eO<09~ zR8-WNGiNSdyqLA4Y@}lDvVF5>oRV{Bq6vrnR$8D$jm8WowsX0%sv!TXY}pcH>$Sus*GU8gu-8qmn7Ln zaD#ATw(uw_5D_@;V_X|%cJ=CPZNKA||&e)*z)=1k|v2>aHp z@!BQ-?2Vg6MMWtoDafgjishZ=w_D8SvQ9*|C0jT3TU!gJF9x|F9isv<3TpZJ`o7cL zDwn9*MSXK7KsB24=&g=4Q$J;1)kM`fZHdd@T3b)ME?x`4^UA#UQRQiEP_nyUp4@=% zW-Xz4_Uu_%*|ntGHGR3+*+CI>`yD5ZHg67GUg(oH&e#@sc6yst6@!oL`IlOnnP#j@ zhQE;5#OtP}r<;sKNU=2K-7PxYS4~Yzt{=pH&dzQTUp`>Be)JG!bPbPOc!P09wkgwtRGhMzVB}5f-CYHuciB;6}LGd(~e#-p{{eW!;o@Zrcy?UkM_GW9@ zw`(GHE1^QITd;=o?A5DJ2MTvIaNc!qNeK(%3m5XHpww4k71pSifTL~D=pIjh?K zNxXWfCH=~HPlc)IC0_c_(9jf(?0XOB^vHrM6i%J`TIjay$Gjid2IVI#JpAfqnTi{< zJLDF+*_WI1oibGtBSf!lo3*`X`X)0oGdI`io}?-X7!OuNus=0D%* z&5qoeqRQv9w(-HMSHhx?SlQUL)YawV>im{P7>0{_DuUe>#>#OuX)S}uX+1qXKncM^ zrpCq+PE&iA#GXBSrXw7VAOOOed6JuZXm(rF54MN7pEhjaHf=9x#baji<3FpnWq71u zJ|+Ka?fDYA=Ng?U4QF`idxrXB5+x!PQ6~rb`yEC*5Lnn-NRed~_kqDCCVc(;M0nro zrro=DZ`=0mBkhIlEiJR3&ng|B{$@3IRf=0!_*Hgx_Vee@C>kXn@dYe6r4b0U%trarO0y823Pp``LRe?KPxO;M)CkYF%tO#nC9orjo)IEvqx;9 zqeH?xcP`|_PWe-(9!WX~n*|nxu9`dF*ViXz{i7C%e?OC7QIU*fg|LLgLyE?i#}n!s znwofcc$^#^w|&0;szqcQzo_V&oSd9DZ$cFl5}rPtnw;$Lk=w9g1Hd#kRlEu?;HjN- zwCy4^^o)#3krL-(l~vE5pP!pUFw)pHl7IR>ETf^p;{7f$Ir*BYDa!%l&p+zosxs=E zn#6c{u?5FbGEfBs-DWp>6z?OVJ9SC$nO$&#LO2(L@1_)b&XP`Zdr2*4=Yk$A6?HsCmDoY|l zP6l&t8n;&A4t5!@;2~nMs%qx7lh+L?YN4rDm*0{5$RgjqcKl_$f-32rZ7mrY_p_v=J-c^f71GWvn@muyTBAT6Og*VlHaKW15OzxP zvyli=-~(y5rLWfuHBs6wUYvchm3%f)m$X&&jtI9Z?Uv`MwXr78lad>`=_#+#tx;D@ z*viIcX322G&8X!G+ar^$TetRG=j=Ka+ALq0MG7nQcJbpxxu-$z5_BR~`GLl`Zr^Ob zzrR1w2|&F9x7EVT*ntBFO3u>x>_iv>!yG!~R1_DdPB zuWxdhr0YU6w@^&4wfaVey{VGtOHRJ@bw2#EVD9I=U8fXWcYiv>-%Y8x#5N^V#uphG z*-T&a?p++xQP2DA$a(8<1vz_<)C+sp3{(S8VJqURdy&qlsJt?6cn+M-z`*dc-0169 z1E;AOjvm(mhDTLzMxEY&idWM^*(1Jj%sTZL1A$wyYL!!ioD&<0ZZtMFqOPEqF-(8= z?p@l*-Bq?ozdPxMT5}l#6Htw#4_bZq7i*KD2)TbB(AH>aVOCs$D`*h;v*GzUirBLW zie9&FJ$>@TDB}w%P0FRr>KMhP9p^rs*h9YilP_bq+Y2(0<1Q}w4QbNCLd55FNGx*SY?=Ujv&41}B-e8Q8M!KofhkE?0`xNr#GAc1GVJTGJIPm*{}0)}pDraJD5^a&c*K9yz7i=xn^o*sOE+hOD~@%NwpZUtjr~ zgxXg+`lsoV)qHvKIXsDSr$*s`?z~7QMkSF#(5WeWTGvXI@0^~V9-4x=?$%G=MxNhX zog`#`DYT&c27{41gAsFyQHHv+^GI8MSy`D@*1DoRM)capk8lUmro7LutoJ{y>{pc* zDWz0iWG_Md!NDxG_VW6Hfq_!DGI8>8YpkPt4BGMLtvPlMIVay)ui;Qy-a3=UZP~)V{lX9T0d@$WvaC_PcG=|S36{_KP|a9+?p$Py-nkdDKqI=OiU3n z6+oLbkTuefwY7+r#MW)w90wZtGt>{8eG}IW;91qv4}w9ws;VkBHg+b9(ZTWT*A?EWU2^9Q`H+64ChDM-++GH()FEkUZ4MfQ zDeECyg+lT?o?99mMb{G;T)WvTg?|0|CF-+^xTUqix9jK`yY>7}eD*yo^!DAm#f1ft zZKtiQCQuk9BqTl?Z@Fai#Z59lE-vozW*P0;!1qeDWg0>FqIH$6RF z^WlREU&te|>sslC{zrBZ8>ORTbavs{GhXL!Cfag-iV2`Zgv0mp^1kobJzwKA_Uo6+ zTz^8j|Mv4*T5PnmvCH&CwGl!;8kIEC*?D<9c|%$K5$xQ`;tW&q5ie5gzHo(ZYSx3K zDA)c^ySzvi%S$eHcGFGTZmm^Ah1d6|*3goXrIdKA-`v&JHEO{=VeMB?x5IsL!rGH2 zL_SjF>OEKVtmBiDAK$+(DjypgYkq!<6sz!1q#}#_{Xd^1C7u8L`G=V&__If3#CD}t zJa_IKiL_ek&B-V;%ZrIed-`4ex!e4YX7YdN3IEw>9l#&J7Bfua)_Xww5Ic-I#b9F0 zngCUw`sb~2FH{m`-M(G4D!df;_(hq{9NV7^MpIv3?-A&f&qGec;B6v3KT+oG>hAVm zqoF_OwR|E(M7Y+{Z?fyy_nwMSy`KXEXh{F_*E{HZh&JF|n}0qyFS>lHev$9X8D3yOd-#jW$MDD`ncej{J#21@4lK->hb5c<$ z4aPt$V`(6wDkzZ%$jF!|0O`cu+Py(6$#BR}Y(j40^km&UrmNuczvAk!xcCG4cu^4% z5m8Z<#LpcaI^9h3ef{TCG-iJ_X@|%gXlQ&xgWuEN-{LFJfwwOz-p$ANP{M{!YFIO> zt+n-qJ#Yq-it_;ForI0){x9-`vwryy-s zSLyBT&7b?31Y%}>dPM2uNzTTLCwJaMICy$`A}%(uN{H;((T!#s{9Wf;FV8Eh|3qG2 zb>yRiR@}tr2QUWERUT)xVBPI6_ej`4UQ0_03#+75^XyFAWHbnq%J=WzS68d?((l@} zD@iR`J;(a$<;$_IRD)J)i5ssNTlylUtUUi~9|dR6@NkMsA{r7Ppq+F+6+y;_`ubP9 zcc6ux>62bQnNY73EpsM(?$P&7>^x*QtdU{7buQg)4wa)R`O+0-d|M(lBq&Bc z+<%3dxIh6qAG{rCN~EsW>dDd3pozkc5Q~LSsqeq-ZJDjHd@*?b+0XJV|06jvQ^}n; zLE%NZoZfXE|hR3MOYJ%g({^ z)G6O$=I(w!+v@t=^dC?%rDr-kl%!^RGMcn@NFdUDOW(3ekc_G$4({H)n}SnJObju5 z+q=BjzTBx7_DkuCaCm(JHjm5P%vkqTkuP9KZYQ9o0?VB` zRe8N|v9Y!my)XjirB?oPl|;V*TpY1vEE-rc2{y|On>UwlUbE)3!j#qhkrTeYzDURk z%dFV0l1@{D;rp+Y=#HU|fs|Xf`pCI+4QYDilN-AZ3*|K!Cq+$utO!mnD=8^y{sS^9 zIk*)#ipulbwyX)vq|x%`ZelrDV)q0zdbHcp?47N99w=~IsBi_Dw!AVJ`jSCU*^A3Y zO9I9~KHd`Ku1Vtyp=YbUCwQRxhkBT>N;yBM?CtUv9UB!sIMqet;)qu|I2`Qsys>H- z1zN)g0IguU&1vOk6>})r*=4@-PtZeOCxPNz@R_XpZ<26fR|=fn&#gBYonRvJurf?g zDO|Wz=g58e_^vT~kb@MlPSe9+yYJqmiBz=f{Sflv#a@p;X=!$*JFwkt*~Qs3I4uk> zV^*Sn?G~jNuYzzi&U*_jpp%-Flb)SD@Y*I``a2fh0Z3;=jrDF4&UX2+rEc*G7Z;Zw z@!4P3zOP?JW^OJu_aknz)C?JW?x5?FH>>}m2Yyj+hb?Dlel9+f_)5{uM7)-a{N_=f z@mmF>wv;L=G|7SvImp?Gs`lSAH-7K8SE6!GocRYim6n$Nr@D{%IyP%XKRfzUYs80^ zg=G+1u)e+XVX>*a((Hc;!rKP1E9v)upexpL4&P0Ag z#J|xML&(_xnopb=4LVj7Yj2K@nuFMhRVI;0PgD{u{C-JlCaYEI3wO6BvQqy3qGnu_ zB;E}hB$dra#wSx!1U7Hp+!d>s5Ldrx{&2bjk>6-Zd?9>-f+LlJg?T5ssy+n#2?@p6 zhA_$e#Ke<(8Gzb-OLfyOEI_a5W=eOE2&)80%D3vH4lH+qDuPHh(F@yJzG?-vu|y;U zk}{%r8>yH2(Tr1iJ;vt>2n4+AJhAhh*6SNox@q=kX?1pl?YVW28lm32nLfU;VD|f?+S*z$q2QUObLf75L-Qypx)7(h60I7g z&D7MxKYzZh*OcWtBO`O;h+m7O3knQ2EjC>FsgUm=RDBsP#AjrjKt9-ywf9sg`3p1PkdQPqa&D8+{*B~#mp9ydVfYXXQoaJY0% zJ7{gy-^7C!PxR5^K>pz0yZ3XTyGsDk z8C33mZN&JFmek7Vkl)sKVqyJ^iAwOuu3LJ71U-@clVG`duDPE>-%*GK5Nmg~g3bYM z7?Q@k3=Edy5$Lmj<%nnfOJ2YiEJKl@CRo8DV5h;b-g1a!C zvM$uZ%IZ?8PBCu1^up-7r%#_E&rPMUG5rqOgxa5#3zN5Qk-N)uba!uIWj!6M{Pyiz zKfRCN`?rgkX{72L0TV&`0m8w1Gds8KCo7rX=%v_UZl87a`l=tAQ7LLkznX#`mY7CK z*$sbl0rdryX?nO7|9EuB&P-5!pU%H`d8@H^z~1@%6Fcdoq62B}+_{6jo^Mu8_8Wjw zSJ!(#?q-?1d3tKc0iRvkatyv9ckk|Vo-s#!oP;>4;Vs~tEjKg5mh33cZ)7h zH1t;U*9)VAgX>?O?%((umUl=VCLfwU>N|8dfgKz>D3i*BXxE1m>lZ)Ylv+K{f;P%M zG~MWzMf48g2UYb}mX=u>0{(IXo6kL3vx10mL2+QDJN28)lWTi8Txc^xI1F>amKj2~tC~Q;O8wIrT zZXdTtzliMmCHGGXE_QGf|3dHC_U0%7dZM5>Z!Cxwll!#20d>y!+VkqQ@xAN)ReORbxwfi|G#|6EEPYVj#K%cCT2;@RY=T)VR$k#{6(;XbO zwAuz+(vSNwxzjvPNm+u<39`49ou8w*(9O-%bP&mD?5L0ID}&0=43j1m-uvM0=jZ3I z7#Qph`2d;c<;C=}n7zM&qqx#$xe>2eCERmq5QWG$0GWVqS0K7t)f{e8;!h=uR7_Cj zrQpPR*tJcJj_x~X!1kvd*!_C&;D`a4GxMQChal$BlKA=gou!tOGuyaqPkXrpKrr8B z9+mK}X3JkMfYjP#KN;<2PNlvv`@IY%pMjd?{IRQ{Uq`FoU>4FXLFb%Yxamzo!WB6= za;bp8z|9*r9H9UO8hq);AH1me*r3qn$=rY+6`RDif3^`#KAX=Q+=v8~#FF#T`2XU?i=G~RPny8;d9W_a({9U|+K)al{=K0&(sRp?>$I?i zAv7NZS_nXcFxY%XS($7;Na_p~@n-I!6%UrG>#L^vL9LABO(+@~ey@k(SAA$i_W1E> zlS7W10Cna+b>tcj+nK1|Z(ver*CTT3#@Bv&Uk0|=oY0FtEJQ;B%bA~l7(Au4=e3Q? zL3~&BV|tnTOMQW#_{%}kl$VrD9{$bKRB}8e(q+jJLF!}WbJqt;O{29mHC=k%2cd{b zwi+zX{i4owVZAv<@Dps3QPpx*U9~3<`6VnbOw^z$-@*1=^|`CD`{^5hFe)W~Zk5x; zT-%{ro3^((jpTp(rV%3ls}4*a7|g{l_Y3|>G8c`ECFe@19URTg_X&Br4KyaFrlzjE z)o;ugL8>%!6@(T?ux8i>rlv2Hc^Br}mqALjDETWVHGIvyZf9rb*6lCmcz(^_jdvx+ zkM_rN*73<7KYpNt6TI}sw5!C2Sj}ad9~80suT+D)e=2z3Z$5Zz(6o4h7Hg)?9c&>U z;c9%u!6Ey?Uh2)8mk|QLCakgL^~wY8-n|QwJNBrzp}s!LK}*Pqdo{B5adH;N{8N_| zk5_E?5sFVnP2%zdEJj3yX}dZEl{`8ph)xCJ8Xg|b{eRWXc}*X*%>7{y?Glhm+l_K( zFWKfRSTKW5c6)Bh*5yP<8 zEuP25*n9sApDf*t7SfZ0jA&*y{OEcCGs=(k52n0|pj8r))iXQ&{>gCHTpe9q3uL(* zz}Ny=H=EkJ%_mHNg&VU*h396x~=ypyKi0H1ytGN02 zKIm}m_}>j%@KKq6CsI3szab;Bb)A$K8$xg8DFWao)ZUbgr2iY5t(%0(IX3k4tD&_c zVu08%^DGB9f|*$fO@xGdO_9Hcq!xW9?YY>{tQ^r zf45q;{J-g#BAI;`#;yJ3tRUF{lN0PzQ^=pKQ=MY41q9uIb@@W;d_TY?3Oy3+YWJAu z&woO6oIB9*e{Pt_k?eDs%#bF?@4bCX3Rh6m)-HrKB_@W$`Ts|!wCT=lKb?=KTpVgB zmnY@MjS$fhR<{$1q(S?HT~_u>NK$={32ymgj~yBc{R1rzbqfs9Z6Qsp6>48@bH6| z->&tz=qIvmlN};^W@ZN6lqZcBNocs1_76f?P!}y;a`@Z*UrFuh7X@lx;ZFZ^i;m(z4Qep`AJslwgwa1%0%^yIY$GG>~o8=cxIYPa4DpRujzYSpx$DIXO^- zxP|2asMu-$G~pgxN@!#dspP(;u<=Y{EvKfqqrlz#Ux0by0t3cb`vnUZ=(cY^WqRBF z>i-3ubl}3&!B73x07Z{g65*hDvE+b62(kiZj9BRrpEMYxYz7*cRsSM550g!ITmnS4 zRRO5Jd;6Aqd+ULf#Bg30n*kkFSV%~ul*_})UJylWflaxNI)9>8vy!{nZLpL8Xy8Nk z^Nw3zTJ@*6=7#>JZFD$pNG@*p8|L@};*Z>+{P%{UOBokGc=Y}ngnn)!C>E*$z1QiW_n1NH9{&hFO zB~ow(op=ogO+(W8foSOJl5Bz!5_7=yP$fX2XPULDBsCyW#MK$yBI*m-4ZZ!h$E}0^ z-xzagsu3SfMv51XpZ*tL&b-%2mt(&}jw~1Wi%M8WK!L#_vADRH{_53z`QGnUkD6Xw z)VuJz^oe>LMmvMvgVO6J4el8g`5Mli&dyl1B>x>CV^;b2E zJ1{Wt&Yib?m!qKpY4{wupHSaF>E}n~5sXq%Qt_Xd3J0NW@n7pfgc2cJ;IF1x|8Uxf z?A63NlC1&Bsr0u|Aa?n`2_186|M1bY6O(9%SfyPx1i~N(O97HLmsJA46S4tQU;kU%htii$+cdQ(mv*jX`;H>_ z*@-^n=C827goK3X%m2lQ3A@f`9oTR+lJ0qlKttT8l^Pp7s;)$Yj+cE_ba}^T@J12Tq z(N24krek8*CJJp}w^Phy*)cV$lhoi6_*X@V?VmC}s&BTsY>naZ&Cw&G`V@~HTJkp9 z1W86NpV+!pE}bQAVbQMUqe7(+gjSF%fB*E=wzKVn$Bsx)CzX3ATBI-KbM9s_lSF^7 zv6Jqw{iqCINa+3hCFSM8yL&;|9FVhGE@*gwy6~vvw>WmuKi28$I}cTs&?*V*o*R(w zo*{q7#K;JQ1tQafg5BAdzt&t~@M=QfoBYZrrHFnnpdEuP!UP+nFB%c}I5G2A0 zFE8P6)8^F6^pwZ;GO)uyhCUKj2vck8*M)_JUOL_TsVy~O=9vL-8~K*KALYUGu38d5 zAK%hLgZ_rrI!nr=L>%e4v1z#*;>Dplb4t0 zNs5(^e_Uq-Ny5H;f~U(z{g6&rBYRUXga$@tbCke5&bQkbTFxX#;0=a*nxH2!oV;!UAPSY=@v$`qf~I^jyyy2_cAe&Sy=zJ zGOsf_-Cy_;g>XTQ zrB&K+ddm54vjK!b)dTBq_3?p_y+sFVl_k7*$U#DSWs>MMK#DIEKCWn_UWjj5$YJT( z)mT0tTy{iDm%%(>Y!ZzFY%+_J^-AkEvw=x|0Ro*F%DgB#tm$^Q=qkhZY%6c^>v;i* z|C_X0Pcp(s;S$S=d%})v8nwCD0o3l}?_XM7g9_SinA2XRr^8?}n$YiFDBxL( zD(xVtb>#}rin2iwJ2y9nc7$N8lFq+mpja!(R`WJK$aJVk`(f3~N?fQ*p1{WD>0O4a z`hL{Yl6D*q(0FZB_xPBvv$Hd7jBc)Ctf>C=+o1pbNM}Eh^s4(PTge7J0nqWQhC$#KYo*qKhU3AJ`?G5I0~{ z78Vx)%5`22yj>)nIa3Eq%I!D)a9!8b1eWR|Yjtj_i29*jr(v>w{L@@_4om0C`ucd} zm3-`EadA9-x(as$#+DHI_!B$dj<|9K!AwFt9zR~~9X`KQY|nZYZJhVJBW{y|bL;#) zoHD75$xNrE>i9N@{;uqDUT}LumKl91dNt1e(_iSi40D-^%BS<%E)Dhd!4bs6v~$Os3b$k3jbC~{nYwBQj1pgm^SF!8 z#iC=4kiE#r-d`-!!VfaoTL}-p#Q)ciTc%%LpMIRAw2xD?OX!G+kFcG#m!5hOr;jFTk!75v0@W78R_rt;xo;)!ZkAP=j2jL}l_ot#I z0WpKJrS$5`9Vx)=);w~g`043Kw{Jo+IykoZ`&&P@!#OWr41z8%QQHo)S)XP0!Gi}; zERImv*xI`OYB&!$L?Fx!|0r4h*!j*I8K;^3v?X;RV+IW%0pVLmXk@$>|0;7TY+KKLzox1JazT-km!HSb9>%Z;Kp|f6Vw(!J|E8Rqam4! z9ugC4lHzBRfz=R>Nq8nuQ7S7d2~{>U)E53kxN4=MM_`QW?mnxkTB5U$C{=8M3DMOA z85h9MzRyTx+Z)%((b1wS=DIsW+Fo+sH6^ zHaJGf?jrssL>`gOookakwLH}Ev$ywv*|)4!rVrN?>!#gS;`x5!#0kiJ*!d`V+a9PL zq(Jq9LZTtS$Vtz}CWU)~P7Hgqt`1#-Kkm;CPe>HHx?KKprxX+xhBDg+TlEi(f{4nAR`GSJ8efuG@A@?-K^M)`TAqqn)dpB*`B)-{T zACt3`wm=wI)MyHikv06?->2Hcd!G8c^9wB^_&!HRg@ZT?aISK(&J#AIZS zf$GUxnP!oX9$hjr`T@g({>XPS0*jJm(GYA0GRx$tXxJT2I~RV2>0#g3^U)xdRtvfl zNoY>7&@Tbm5%TRr=RCEf!){B?78YsV-sPw|>xVS@SIO|wfA8zFv$che0krnD$F{#r zNMAmi9K?mRbRk$nQBhm)9k9{s>%PBl$&B$Em&G|7SbyOQT)TdKupj5y4+nVn>^Wrf z^S)xjBhVNqM<>ee?ml*p=Y9Rb&En+JF0_qE<)y8yi`Xhl1KP`ulRwU+mJCQE!G;C} zje!t_sPn+;hEM?UW?9a&!jX#Fxwia~iiOtwbQMg(@fscgr(o>Rt6ecPL=CvFPZh3` z;w~RA0ZTXfDJ_TI5KK70T`r944=SJ16STkea_O5^q+;gv_JYB|K|q}D{m4W>Ww~}E zWl7AyiP(bG`oj1JG@djPYbrlxZxR#1-T1?`3|B?` zL45cTYz|9HVc$~BWS|3UG!j`^qD>fQfTRi0hjjEPT4zxF6(v{>wy)FuP`sec1y0rg zk19ookL6FdnHU*8OHM|ax{S|wc)%pe;d}U-H=5CZWF9a`p)Xy3-GL23LG+W%t0{eZQZ^CFjCkGb5wBmAyzlFdReI$3IjO zUt@ORWeV07oET_y)S@-DQAajEW5Rz_aK?G^3k)hE7U<-XsJ;yv_tU~mSzdv9fT zGD%n)UA!0$SA<13+$*;$E~|8}>?v41-DPTFt-<5-XAC+V;U*SE5(;5-hMS@JcTMSf zg9F=6U%lE7N?~*ilU2vK>fl4CqoWfR78YkwG%*>#$H4H0sRUrib*qbOq?a{d_qjkk z9^Ah#TgJ)oV;w*Vx=I+7wjD55g<=s^{I+`xb49@+AqE0v`n$t+?%nHG-o2Hc9!?QB zOm)_rgI>KfKN7fIj9SS^C_w1qhg~qeUAul=8k11Uyc${NoZw#J|5>mS6nt4*s~jx! zT|S#ll`o{qkX_P#6e<*y2_HYdl0Hz3xFRXz&%DHIeg(K*Jg%;(xj68$kch=s4pqn$ zH`bXhaGrp-qB*tr>sKcr**D3|cs`YKCLcetsP~!BzJnW5Y+j&nxzX-MHl)eK zvk6hJ>G7+W(pa9YyLfoEE1Yjny?oTx_D%km?$tNieGQ66O8Gjbb(s^!ojR8cN9!3c z7YY1%UYK~kY0{|}E-$mMZ#D_;Rxflt41K<$BHOYT!%Fcgw8Ocm>!m{E)cYu6hrVV4 z4d@Pfm3LcYYxu~%CFm!Csaauxbr;AMv|g-s6%1Wf$XJ>6w0$EnS}+cgikQYawG2pM zX=R1F?=bY`K%%NK%k@vI3_)q13f;@8tD>TUUtZkH&{i5D7Z*O^zv|;ES3x!6ornu% zDIST}E~`hahH3{>8zC*vF``v=|biA$hK$3a;46qVwWYu8IeMR zeDYLOfqCa!q(&&xoSukGOs*kAKu-lSr>HY}4X})1l33;DPoHkm2;1He!X(*o6O%ns z+}e~yxbkyY`jsWVGU2q_bf5Ud@FZ_{Dmofudst!{KYyn1dJAo>72{FBF&GF@<+A}+ zRN#gucc{IvFge*@E)ETam!~I_c+vabakx%8K#Ds{6(V-T#l?9c`C$N$8uMS+&Is$- z`T6blVUrxJ%x9wd_gxPA{cVC;`*8V3*>+9s|9x<<0*_H-IM!-0A@I7Nb22$Mq8p#R7fZDlpHrCcpo;<;nS{{Ty z{NdL(*EUj6AS+|)!3D}GEeXI86hAt2RC1WD6KF}~2Qpv3#_{4Y)g)b ziNVmRs3?QeTbf2n3Qp5x8VCeRV#Reu)%-8>r(lBEZfnMj(U^t@uu>+)Yutj%5*~xg zeGFDoHNPwGTs1!?TVUTW+j!egkJuaUtp&@7J#i~irSMzJhYuexJ_6acb8{?`A~LDt z&%}gL_E+GxV9_YOvz4CG09FBeHVo*#JFv|k6D$yg@Ld2rFJ1bIK8a!Pg;a3AFd)bs zKi=2V!{PZvrT@*fulIt3!xf$$Aq>Ru-_7X>dh#e7KVFXC+>L5kO?o!cNLjtE^P45s z7ZWlMG@MroOQno>=3Wf%J#XJg`=`!$+`Kt8+m+A6?t(d-7z^iOK}zq&TQSfi_V9Jgc5)U?uVXS5383Wgf#LbzfKK23RYeq{JvVlF?rlr#s&4PIDnF;FQwMdw?J#T5>Jfzht^_V#A6vMfVC10|-f>U+c)k>Ixe*{5X{ z3tD-1r1y)*DTtkEEE?Gb@`#)J`&+M#Jm_ZN+SJw6Mb|BAl4m=lj(dfk6YU5vM}~T` zT-@b-Oz>Wz1Y#-!I~!XBZK;Bi60mJqfe`rtJ@yTiQTs5J@~^nryXJR3Onsi4(o1W(!C>wuw;z z!utx4gUWA~a`-=xj(VTR`oZ3Np`m5^!f93;!-+IY1Qo0U0 zIUM{Jx;sqcA}1fEh=1|~W8$wayjZ~z8koGK`A|_&QB|dh8U}C06P4YhA0Th$n+lgg z9zDu+p0x}f;$+bQ(qq<`=s;NjAQglsYxaN#0W1a9bbcen)xDTQB_N=1bK;%MV2I5By%<{gdc8XXpR zyKhmme!yrxmq;+5y^yhuO$OnXft{W^c=qi^!3YT(SOSsbK_6_(^fte7SvdT=vF*9Z z$V=$+aSg}(yb7P{lZv@oA7Id&_yolS53 zgW@&VXzLcVR<^K(XknP`jzUK10awAGpdehVxB(h#*29j#(V6n`UqAv~y0jhbsJuMr zQgR_qPEM|%A4q?J?9#S&c9@5I$F^-wO8^#DYWKK4 zLMtJ2C>lYHE3)}vSI9Vy*;>Np@ZB;SJ@t28GmP>L9Cj{l#Vf+f-OK77B-_w2fwYi| z5VEy9sYpE7MxSO=6WHi)#Dyx-M|ap0Z5@m(o?v;CA?FENS* zHbFhlKJDep5x6CM@7(FJbTBpDtMy7-Rn@xp!`4Vej5yAI++Xud_4%)XrX8Nd5F?E` zsv{h~?rYZ5kch7TesJ*7xVksj+qKT07ejwVAkq+23k*~lXM6!Sis8jlUq(g-2GrGE zJ9j>T52yI%x}&$KcJuP`qI>f9XEhxbDAVZ+ZPIeW*WPp}6Jxm_jTJOBA{u_TQ!g&2 zr&{@DpOIRD;%fkvkQ0nWwso(Q{apt=tu~S<4rM~Zxa1F)j@qf91npr{uy+?P5(3(& zxAI^y#^pSt(T4Hw-hDAmcbylh1xN;NAsE|1#1LmcIM0k?F4a>R$y;9jPH}VPcyA^8 z!Pd{8pS*1N{CV3`BJ2g^aL4~0dZco{BcyGKPyYpxBu+y>to7j7qsR~B=ghKEO3+T!)p*s1g9zxmg_Qa>sgCvg-wAPL$*ls$Np!5BKm=) z#SyoWmUNy&hjPI%t!JdC*S~TFLeTa@nKW-U0A4lkjEznyH7L>&xO(-f0{50bdEEe@ z6S}6Pt(lNr{6BCI0aUWF#d4)ug)3Hwm%Y&pXI;<&w*;!;aa7uAeO*+9B zf<}t};K6WG?CXpSe)ZQzh)i&?2n0^j`=V?wzl_x}oBw@3*A|AM>Ybj;M@|3^{`m1D zu&GqE_L(#8G`i_6;BVhm%0nE$pgidWcd$^n0=2hC(|a@!Z!$7E*KiY~Stz%c@7BQ zfwA$u3VqN6fQMz({BI7NTxm7_>2`P~oD%nqJ25xxDP)A|hIPV07hv|j<=B{fd3}|N zyc;LPpmRG6BktEQWE#&(I+up3+`PHdBVDvX}%8B~t9Gz<3#;UR^^&NNA`iq@9gH z_PM-^FBAQ1ve-JNNw>a#{|=NSfSU$>lzUBzcA*xOjkY!@XHwwq?xAgzigp`pP74iX zz;PvZZ4TZF9}!a1Ltl?e63!Y)k7st0N1~T*R0)Z1;klJ&&jW6!3x^a;jgNnUVUt9< znO*T66eJZTC0Mv1ul)iWI=`tXE1UO!ipL@c5$M98)<^`@HC&Zqj2tu+p#1VNbAimH z`z5IXq?=qE&Xs9L%|ze)@$@^f0A@%&Z%zbN_5uX_JmnoQCrB7wB|#i_mHOKK9#rjo z3YoH}x7Q;38*a#+^C>^9bFkH}L^+UiPNGtSE=yLsq^%tt5s_yW9T+9SbWR7t#uo#ijZfzPes3^w9e4@+y&i{mla5hnuf)nf} zI>%&<>`&j^;;ia0mTQ=fqa7R>tze)e&c3JxccPAgmb$v2d-t#kFC6GF`<2{GZHmzzCrU)^x7AYRtljH4_X-_--4+mJ;Ug9$Kj%rLGtmi)nZ}>r4#d- zTB$nj7KQo(a!Cz19f6or5I2R2z0DuzPvC@?IFJR^E;$A5zG=C>CwATer^H4En8_7H zF-=%o$$fQy4P1qcboFXWmczH}K5kE3AWVZbln+WWMJ?M(Vlwg_lqLzvth7)Vm)C0|gPTPG2@1Q{Fy2UyGrC}xGI%-Clq%T(3W zd7`2$60;?d7Q_ zgQY|p2=&of$_=7T7JcWe!K)}3N>Q>gbiPeIhdFHZN6xTH!Z&H~fgVF_lwP`)FP}Yl zz$E#48Z?JG8UIt7xwif@j3kQ7)256ZkVt=W+{=CdcBjkT$YoU1@p0G% zw<;w($_ohKi%@~lY=@j54RKf$&%S-;@O~2WU{L;q(1TY#ilX`DdFvK8504v8*J%Ff zThljvwo;P`<9#C|g&-W@8}pNkqut>s$rd<6Ci1@G!w2MHO!oWWC>1FO3eL0(AA2n~ z1YhoE3XUh=N=$9RyERIjhr6Ppe9*BU6H#O^I1 zrj-3CwlUV5!S|Z(-Sq<}(5`B%zi=E!%Kf*9N~Ij_3ZBDN-M7x|02C2%R>djSei)S@ z?GLq5^2q(Swn5_mjWrQ7ANuPPUTPN(cXy}jSI}7nH~wZ?z^y1oO2pUq8)C%A@FUYb zLQCk`Fm5gCt@oR_#5m(#jDJSjwSkHzPS{vcCqU+THJ3*cT0zPYARVLzcqE}K1A@v6 z6G#jPnGtk8kn795ad{}wc6MS!gZf^t`@nJTYn1;3YqX~^FPRKcX z>5^|#mwJGYuW!2g2Lqz(`P|ru+n;{n1xUx=a9l5e?>AQt$`E@Tte>Ycm~B11xU_5G z7E~ef8R~Z=-xQ{oiLQg=q|jwvR7?F9P1j0~{O*)D92DCh$GBUa`XAWjAUZfm?>d8} zF@}0P%n+Jz8Wgns>hS%2kl|TO_i#}C7#_y352zkggDxDqbo-b{D8Ys?6Pdv>TM`F^ z0Z@Vcf|mpK1M-2K(|^T}uJmn0H(jGcuuVYRfkX4wNuulE#raViyO&|(bza4YCOfk; ze^tsdEiU13zY2Zz5K-HEV-pkI|LLN`6+|D*TT6~_r==Z(n8CPpE5s8*Valc=;G#sN zKyU@2h9s*Y?I>uySP_O+q06f5wdWrLpSz-PV1he?-eJz9&3E0S)u`Jm5+z887txdb zhcY|JOxG0EZO@t>9R=7qz_X2p=0>D`iLOv|&1MP;8ONtv$o?aDEH6(DAAVZ(JaEm- z)s6A-{PzPs#HU&^dmOn`p`X6}M<`W<;w}9RdyN%Dmf{318a_2U_5NemP^ppVckV~~ zZ`a*UDO)9cT_N=Jv1Tue-CMjhDQ&O0hib*}^T)d^i#t3jsHv~qZyP({8eQ1j88H!I z+hcC;SUnv+G%~W;o+ezwTR!QTd+;UTl(*mWXPRO^@kxODpr)ewSY54^V-4kuzk{FN zl9ey{vB!y>aGa`RWg3h{9^M$c*(0HgsCjL(I~76vrs@Vq-E>l>uSm$cHM!iJ6%!LGHWnIwz;6 zAxVDG*@rF!uIetEoUcP@&0o5Krroq%^g^;4sRojtz56l%#D`wXaD_LiskL9f;sm@q zG&%NTkD>7oAKq};Kwp0WlbQ%#oKMi2V>833rLC=v0}XZrO47YhEK)mjawi?!fjB(P zN<0FIqPh8k=iO4>7H|(IPi|Q1yKJaQUx}+S?`yQ;dd4MbUr;OZ6Ksq zDa{5CC|}*m>RiE(nuDo$C-^23KVz?q<2V^it#`uE$LL#XUmdSPijV&J(>QN?7XZ~9 zigcU}={QBz$B!418{xOHF*JOdmUf0Op@e*&%U3 znQoDaie_~KzuI9dM8P2h?V&Fr5fR^NYe%sYc6dsGAx0tpvMjP2^W6|+gM)+5@ijn8 zfuy{8>Kgz8lmLuK+`C7o;jK)njy@?b&o#-i@8tJ4h5SKe<63WXq9?QnasXBjj0Qd8 zi~SUcdEx0${!8YOprl|OaFC1wGxDsZHUeqVppxNblSzg;Sm&a4Eldd8?{LH1pOmb; zzy_v>V-{3)J#8B~vwJ}_5M$RKo272M89>V7i)8XI!(DIs{5eA00*JVqopw3OMnV&x zg=uqQ-r&mfo^Zdvx=<7tH%4$+{f9Y(THTjO{xx!;s1r*k@Ky zmV4t}C#IOTQ{5s?_5)fH5(?5N?;azF$-NAWjEw8|Y}g*L^&@L|{i55Uy8cN7I!eua zW4{7-eW&?@D#L{O#HIlc8w`lSi3rvl#Fl|Db9NuPKIr~eqFoxp#-279Z`g%%PD-_B z`fAn=GV@eG`uh5dTb4uH@)W?Vn_Hn^jJP$CxX2aF;CI^eXu3-q>Fzz8?p`|-|DQ6> z{+;c6jpHdgK@U;Ij%`|TNFOprszHM`qjtJosi&IasFmqeQ*unRkZRLOjd_}B6%j_Z z;V9C%%wx1{^UyZRA;aYzmK_bKm#-e!pMICU#f1@7>rX z3bh+nslHpvgYqXGT!d@Mud2=3J_?)G%piKcT7AkQOT%mZgLg2I)4hcTlPelB!$7qO z)p=imxJQ7aV08uBb-WWh-hjRP;K6lRG0=t+i(Fq{idl&(xNR`%B2yf2lpC_yc1?ILNgy~u&qoKh3Rc&Zqn~1>t!>2m zP8pr-A$acEb^&2ytW7&|{hP);mb_{LaoYx01psG(pZeYhdNv3IKpd z^2eP9J3^2U#=GRpCuybUzdhAr(0u%sYe1I?Zas zfIrw85V>;@7homO*VpeE`>A))j%>vS-O#g7Q07=74CmV*b4WNFv13sR94{ zsi~I^S+Ue#>Wpw;L zwj_L}OiPnM>f{6GXUxXB4&pGfQm`BnepZwhP%ycdy}aKrE(bCVof0~4FjH^ba8N0G zhpDMsIzjNw~b7RV|yELoZdVd>@AOXt{f0&!D6~P z^~ho1L%kS1I-6xhXl7x~J7%8~yzhc2D?w^powy z_vWodK!A0GgP#B&9No-Xq@#675oO?DZcnGHw%R7%{m3>i$-^B394urons{TT^7kLa zc4_6wlV5&r;ZCzbuduImv$ai4D%vXH03|*Du=S{Qsf zy4uoM=}?Eg&inlf7MZZHY|8z`MHFtP>9N^mKD;Z+Xj8IIz6)aB= zO8UZ$Um=USu1Yb2#Uq({R!6G?fqld|(X{n>LB6f2tGfqh>Jw=Y-S(t}TZ0FL2nkuF zND);x+#1ns*hV!J=oZ2%=Z?@gr17x2M({oGVvo|F!O~CUO5mq!cbGej@`adB&0Rf6#jZx6#K6(WqKCix9E!qBEN#t=o zt_J(5a^347f1nw3MR>1V7grdG;)V-_BwW}c`1|2mEZL(QT$xPsxJT&Ck#8h#L^`)l z#5RthE$W?e6f1&j09t&_`AwLz^ptQ;-w0|7t+jvlYjlH}7EKl5LJXq+j*^u^!MY9n zq83RVML701ck8XWcc!_3I(KzShX7#JAfDvzo!TWK!zj;zw|`4laU^$ZMUr$oZl<6jBx6 zCGLRuT{DB6ZX}R1)ZQ^EyGhRn4}Tv~KMGG>P{AAQo(HSyf*oRo+0Wegcpzuh1>g5W zpU-YWb;YI`19e#4@J%L(iqf#_zu?wM2NpsOxTYI<)< zhiaMM&L&Y!&L4qbGNAnk=B-0dg)V%O1oIj>&GInMWcKA-ov-q-tje*zS*T-?2raVH50$?nUSq?JfWHqDTb zYz`yajNkZrzZk-|Eq0QZmC4A+I{FlP@n1^&^Q!jOtc>g(^=u7Eu9-O4+Z);%+-uxH zLUMrQvh+D+r|%O*&dS%?me)%Z$TkTGe4;U=yt;K?G!0c#tF!rJvdR4I_TL?@;}+A& zwPX9z?iZ<~?UU#hy{=)A;bKvm^2}eRVn+_=vvZUThAf+@53p^CZkP^f9*Sh&6in{x zJ)EQZ`i=8%XM+2q)5CFbcJV&usCEv8+aoiD#e zdh{`nQ<9Lfr1`0?Y%v1>2N%gaaJS@)L*sAUUU?JT^PIk zeSiN0Yi_f3!Yj9PH8eD|w6t71i{8BX8L8uu&}8!a_wUKcNq&C*jH2J)Wi3i|?~w43 z-JQO)ok>kitu0+kbkn1 z&qgs%p3v;92&CiX%ckWMXEHi;D{gVI*S{78c&=^UNvwSIbGj2Zd7@^9@tdcZSi#Vc(b1zvyQ}M#4fuZ&kU(2_?Fv_r84j0t4`oJeSzCHWT9ct-T!vdgSQQ+Ckgx z+x@V2j@{12<^EL59SwDLaIEuWT174=PoLK0qFw(p+n~%D{$|H?@k)ARB%S2Q=janW zJUlr$Ik4Lk#`WZ6WC!wVZwe$SjgF7Y{<&prENt;z(7O@)R3Cq)K(CB+|Ni~`b?aq& zB+S2OkCv>jTAe@dlbUL#q0uqXo^|NZp`h*G+Qq{dGS(XFV^0lCOlWFo;Qin=!?=|5 zubTsz-@bo;!eo2x+BF%O`_c#5InqwKM;B;Tb@%WfW@anH66?1f3P;NgjWi`* zQ&Kv3=unlcY=xS4sO7Hw7ymw=fDFKZ;579=YJ!n**{I z=U6jUHD|V~r$u}wn%}Y(7SKnMjsKRf9{tQ&KRNc))YL=br>|eXPQ|ZfML9C)CThcf z{^G^$Gml6JmRI~wUA%ktX^flT)BJpO&hYQ;?MsV`<&~Ax0RbW>#{H<8$$mIE1n)27 z;|zZlGh4wYm)ateq(ok3*;AYrxbXY8P&5^psHi9h&3zu5y{9B^Y*rR#wIK1;gWWQm zFd~=qZy28LDe)X>Ou$lKy?Paa+04??9Dlst zhzp^BC1a*|)RV>5+M16=)>uj%fK9ZyTM9S58)c!#s_4w3*B)^` zkI*P4qM`U{@+2#zQY8FoQVGX@ZrPldst{_X{pX(yw@k&-d__}zkv8tlte42{z$&*xKQkt?CRl{5trYt(&hc41Cx9NDcxEGINJ$Rek zXG17Cxwx|Hr!U!f@9eMMg#=6D45&dd7?CR1mLC15|fx<5gS%s02k%k8GMlLutKmYstrpij+ zKeWp?pOY%w73ZQoe(+#_GQr~szk#o0LZdqc((#+j%$oXo79n$0clXsI*M+%~hG~7T zvz`W79;+_0tX`Mo!fPzDMSS(DOD)f8IEcov?Aw>rWD+mosja0IG_d$J<=PIbis4yc z1Haw-jsCn~#EJk+s;NaQaxe*7b^`RwTZoq;7~$UT-@pI;`*(zkvGH+$E8vW=u`xF{ zH%(1V|2gw`yqt71D6^JhL-MwGj?R{XNEF#tU^V@_y`inV4y4 zq?42a@893L`JA%ySKLOxYE#=6zYB>zzP>_2LJ^N2e{E^OQjNwaUc7jbC4`QiUc}>% zlfLh#t}Y_nTACe}W1mgS?bhd`uiP?WPN;cs!?TCwwA0V;W*Ieuzxw<2j~-24Ty#39 zw*Ns=7Tfl%TM^(QA|sI@e7(IX!(`bPV5Fk^xt6#edJ^HMe2kF%VQL1Vk@6kj-~fi* zM@!2Y{;567c-Pi@Z{F~U#!XF6>)^9$YhOujM#4VH7&LXdYo7Ej%QZE%V_&7xRQBsI z8qeh1Zee`A<`YMIk&KPJPt);83#s35_q~TQNgcUX>*G4>uRP;Aj}OFH6$bxrD zuHT}rEIYqV;a!sA)vKX#ag(E?JFGlXop<)0ayN{MHFryD6A%&*4BY;>g1N6@lwZ4W3vII$GM|38AjIa1U);TCIWMBMY;S93vWADk{1xUm^Y} z=${RA`y8}i*qTY_oq2R#WyPTF=wb0!>NB$~?bjL&(&~lCGM2>8@kH+0y7}(e1Ch1z z-4nlL>_j7Lfxp-TD{SrT46@oOC@6rG($mv7ZQ3NqZinP^>m^8b(%5AaF4^N$lzvpQ<;IcBA>$hgZUDfMW zEb6+`<#kItY2V2nS8qu+LPIXDm6Ky(V#0UI&NALLI9;a%TQ@y5#S<>$aQ&PrSH!v9 z4G|F$BO@c_<4YS?3|dKtn0J(ACL6kEKOQChM>iyprC-5UmjEu z9v+U|yRXMTR3h(VU-4qXg>tzE>(_BcL%YH$$7_M*kqapGI1&A3d%Nk{Qd)Xf0^9mF0IMk*4oO4rDbJaGD)ppzkY3PRZ3CTKPGmf zp=fSzFN)tcE`(spN41000bAM1ZwknFmz+@@6Sx;b!ri!;TXtdeX1ePp0tE?)E`xZ{ z>(_F*f9@!yyiQLSO8-tO&g{08cnLLMg*MZi^7Fi8Y{1rGIfCu(n!M{h3zCHZ;c5Q#V04t{KH!AZrSetJ&%Eb0cA@5 zBUH1Gss@&pm#K5FI6FHJ4h_9he&z2^)-S~Q6PyA$3qkwF4P!I2T3tSR@(XlkZcm)W z$V>SGh-8%MaAQ zj9aB;68&1?8PF4MTtD}3Z&m2{P47P4Zl-UYr)g|#ynzA~b#!`KTVE)pkj5(9NKpom z1m|*-kA84)Fp!q}*USvt$8!CdV)qpx^KWJ2#&&ULk~`-H zo99byG&up6l^h)x?hZBw?3i0zTy<l7Aw2OiWB;y@Z%S{LdvRF_4o=R=2jc{z%y| zv_kZX+Gjc1JITwU{>8gr1Bo zPm_m|4AE7SXAe0!Q=uL2BaPfBPi5wje$BDr;kFg}4YNs0H*gVJ0PWH7{rd*70O(p@ zUmqMC>?QcWT)Y2)Fi!%>7(E#3zbJp2uSDUZXF8#~v$N21eXTA=c)!kR zUfRGttl|KAYRbxjZi_z=*|UrrUbT$Dbe=vvu;CLzge#pQuL|7l4|HEd1q|j!Ayy<) zugn*v3)02tdTvtE5tI%5{8xD*VbvMhMJ`Lf2BV{+m-*k+QxW$o;T(RDtVTtgqO8R6 z`1kMInX2Zf^n2Z0q@>DndpuTZjuOZj1b&RQr0Qon)jT>PO7Qqm9omw5BT=GFp(oQ| zd!`5IFcK2da0NQDt)O5~dgH5lS}RgRcejV`lKq}Nd-}yWn5w8GN$0!d(-UQ+i@E-V zqb+KI~vJKohzUtKp5qwTIQV`1tA>~~i#VOzM$lEXGl9a?S9 z%l?lYY76-uUe3AwH@d!2IC{;D?!We*oVX8vv!4hPMP#jorRBSid3377WJC)ltr5Mb zXttm*tg)!gvhfRlmGzeIK1*1EJ2&JTY(;|yfEo^l>e5&0@@WE+T7C9jvX7eHLcFh8 zvryoQ6VY;55l2Ty_OM&OzR+!W5Zr0ku3Z4FpeO=lb<{O9>U1Lcj~_pN;>0YNE7HlO zr6qvJzs|YK&4rG#g5>n+({envH%STc;o(PUb`m5!(=~?4*pvZ^LPHZ;OeNM94Tx`k zM`8MN@}Bq0qwsDJdCS}&LLH|%qfeSeoO`a6;`X!moPohWoR}jl{;R3Ol`HkY-H&CC z{Egm>-r{jlwt)HN1WQZHO8%ksV8JtI+}Hjr(cJHgM@9O7jkkP{%=AYjq~ca@r>0MZ z{qt!aeV0OZQvRNgMp*$8^4)efhfeadNO=4iX*%TT>6xIYs;(~TzB~u0NT~;d19;jm zWd4C~;?L47$f?ZC%$+{^U|z;s(_Gv0=-zwKZfruZ3gPQdfl~|mL$SCqyZ&ndHL(=) z#H1{P^uK$^8eZ^Of)F1THrruU0*2u8=g&a;ckbLl`TRMG{}3nVr<$6}k&P=%f43^_ z?(6fUB@zY#L)Ta4Vq=-&^mTQghJ=Jny}qul&d9)!5(w_>FDFEn@a2mVZQ$VOXu!Z? zSAnB}fdSF5_`bR2Z%Rr^x_kGo(eKgF(9jcWXNmEaiQ=L}!Xa-HLB`O=fC+`iCqM9g z7D@0@*bW0pEA4F-Tl?IYAXPWryt0G1d8$PUN3&Rt!La`;?w-2vH+P#8(s2_qN5X2d zuMn=-%9GcmX>_%w9UXE1i&v1-&S>u~!vpMdVw1?mBZ_NjGtv@C@AbO_WMwWB&4ae5 z2o0>F_Ai5ib`u(m1)}p^WzwpW!?ym*KojckNvGvm24O{N(- zCB+Wot-K|FexVxQ_V>!Y&8||(;%82s0{vX#G}GU#AOTqHZ85!HA?-$FCQv=GIucdq ziDVUbb3({0E-v1HcruUEsGpqJJKw*IpcaA;+HXsD_iXRjm`rPO6&{t9>6&?u-e12p z(_gX5FUb=rW;Y}U+ZY%&(|+x+0y zuelNwMGPv*y%mj&UL+8Unc2GNyyj3am#btcG1R)*z|+81rj`C z(_emX+b*sZ#eV>Q*TQHQyZu*(B03O-2>X=4hkBW+TTU6mwMle)o3)jzDEgm?tB1^i z8m8pj7O4)uydm!1@y=q$ zjve4;4%T~Yp!UV=p~qquDTG55LIMM8KYe;Tck5qjO1qnASidyq?Y-42qWD!U84Pld3Cn#?4teMv(_M+JXb*&EVq?VFo_(XBwLnIVh@9->MRU{?w|YF zSBA!w8%klA!G9&Yo|U=jlJ)MkHb-<#$P)g>?hx_imkNjH#|3t7y@zMlW*a1u6*(e# zb>8LV9N|27&>Qy^QZ+k2&y8YlW@hHsuTOP#*He_KsHiG$3=ktIHpTvAgZq%k?BX0) zpj*u^+RmJOGs8A(9+Np z&en@bN2zjk=UVjuHS&>*d9D?LcrrJCEt&8QAP^0Tjit5u+05!%zX!WX5OcIdw<{C{ zIMb;|v9YI--q#*Ff`Thlsg5k!A-&=~#DMeprO$wf zBw3qDfPI^1;aL6yAdTI-ccTnL)qwmZE-ns#xyC_*BKjBy$KqVGLcozUqRElm*@qsX zx%nI4T_Kvo50aWD>Ux`dFK1H71jd ztvisY$YDOIEPo?Dv;R-Dz3_=edm?q72L@Z2v*pI$;6l$2C}a}=QMB(c`t0D*JmDl&(Ef2Js%x9uQvqzfi6xGe*5pabN&2%GfVlbn=P z>hio-jabK|R;ib}iN0+zU2acyeA2x7=TB?8*8aVF(bD>nW7f93yiD==rabcT(AN~? z)?Zdg2{K;1)fB*M7 zh}(-^D5lPy>fLJVQ!l*AkxwYlF#&&&ja7(V~U!WQ!H zJ2i4GR}m1y9z8-wEP`9(omCG75jH&CE+{A{;&L*;u0xvV`v<*d?Dv_|r|qvTqVL_^ z-Hl2xi@1F%4cTk&r_Lvyj8w>Y^-9!nO4Gm~v82TF+O_7D=@JR^Z*SJVc_9(PC$1$Z zZr!?-X!U0_uI<!{K8XBZz5|Uld3JW_eoD45U7oI!LEMXe} z>j-8Rvpxr!QQ=lPcq71y5zs+siCg^EHM$k7_@c1efu{m zC`70D=;##IE#piZ73zmJ=pF8B_*7qzcc1G#JVkY2HIr`*4qghvzrb^%pNyt_M_H zWjp@4_y2&C_BiKhUg26lhnB*c{l`+i0iNZVA9t6;i6yW=Vk_(HsA*26-0UbCp8A=K z=-QWmms(YpV6K{(o3m#LNmk}`cXNy2(fVYRT+E(9k__VkePX#D(WJCprV0S1^x{*S(b9gh_u zK7eMsGdTORPpaf)l{$ZXBySAEtisRHzX_%GUXK5gedmRi9`UYzJ7N_{Oq^SEQgd?l zT^#cj4Z4uX-ywRjRq(&?4nq!Vg$w1~WhWOCJI1y(3q|Y29Xei1WIl`zqekPKqL5rn zj9I*QD@ISeDEEUK>jo7fdpt`(I?&Aed1WYLqRGn1w!cYShvkr*+lp!L;~0@ILtU9M z`wJ>Qxw~j-b)fH_6Qg3&c2x$mYq;##QsZ{BqKS-KrPx>z(>JS1;$ zhNIDhh+Swmd_`V9NIk8-rY6sEI$kMd>tAdfG1yFXK8TG;N+gL8mL6^A0>{NeJq<8g z#o0M;t%PRh`3n~+;dason*fHw!otw9MbpvL^pyvF%}M?_LPEVq!Sx#p|G2e?HLDO) zstZjfmN{&iwJxou2z=VR!G1`r|H;b8$jHjF^YBdh*h_z8xoD>W^$>&Ted8oN zyDKV=2nneqD59Be+?DS@grRK>_lPhwFI(Wa6n$FE#Rq+Tmo#E8#!)YYw`da(g^Gb8@>(^ac2rRUu6(?g|07MFL=b(P-@|v$Kisxmq)3fZ06Iiw7QH?3 z4erIOl`rTrH{wBk@1HwFs+bw_`8=!4W|T`!I$%~J4lh8<2#tA!2pt_AtpcT#A2Uwn z%HUs*1y=l;n=7~ZgHV8Cb)#rFKuC9SaVr05OxD*RYqGa;`t8toGe7zM6Gn2Hnz0@* z{3a8@u1*(Jn90dUsmx>l!x51zjQT(OXwChi<(saeMBLU53|B3#r8OsiAeV;C!q7+S z+xsHL>7?8{e_3X`75m-ba*1W5j{q1elbnKXke{yGSVbtNcm-!M|TcJt9%60;(yubAf*Z1UF{&lyC{_eXUUu)hv0NjYm?tkb`dmr7En#L{8uw% z)mi=lGg^?H?`I5$wRM?kHzI7Lijg5%)wVqr$_F%46u-Z%e5^4kdQtRMYAUSnxdee? zoM{t@F7xRNQ5X8@)RRA2C&@@9`F$;$A1&JUuP)bAPYW;gKUgMcE7z=-82;NV-D{l4 zLN0eDn}vU#Ng`|Jux7d{75*P?He%a~{R7U#mxDAxpDyg0*WQ4Ted5e)G?h~H!IY95 zObDC*Htc$B-h|rXfCROR#FmY$PY5kOTQTK%SWAP3bapiEU;c{NW|BjC$eUBci>hK1 zasV;xo;QA}ugpBRVxZwD_>RiW#p*vvB}PTQC_eP|NSh{+7AJX1NLk%o6!mAtVC4Xf zChCoU8}nMFYgf^8vq^ESjkd#p2n#j!NBzu=yR~?%E#2=^B4JedG}JMzH5pwoW)K$% z2?=lC{_0s@%T?tf{TswuUsSYZ)jwWyAb@+(&!jKoV-E|UT%IbJ*7jVTr#f_ja$SkY z-!!zf<-UIX8I^l&?Qvn@8%av%rKO>5*>E9p=c>@C)duiF4gZT0pXq3lFESniWqay?gf?(Ni{(r$u1| z-Du`AK5xo!8ACoW?I2>pUmd+(r~41-zc`{ec0?-`f0UAPYkh5Xpeh8xk1XNgLrS#w z{&f!CkXo8c#!i+<+|~(tUx0-M0bf~BLA9fc1iHA95tDu!UEKqr=rFberA=dQ$6$**|lsnwQXp_H=@h>IARx82B@O_&oB=)yYBkiDu`&$ek?Wj zh)0v?0nm>cWw1Wc#7!Mwc^2}&yh25G;LJ;Rms__+!5A0{sNKBz17d;z0qu<_uUtIz zlmTnTa?Qs?+*`rQG%3$oS$Tiw6L(?*^M7wq1E~=S;o8=Zt8&Zs(XmQx(tGcxd@rsY z+ftu=Lq$b9&vtMiMB)OOp|NpWTN_dTK@6O;)S!Sq484pCV#7U645E%@V4583>UdWMgE zb#cp2HMn7B$lpH_$D~844b-BHQEf#ubaaUO zH8{7Do?gcVLDnGw=0ERsaTN}jB4EMKDlor-NksFHlb)f`BTb*&AKEHIsu1XXgD ztQ`!ONAI-Zg$oyCWIh26oIe;^Qc@BWR441e%gwzyQ^k7X#0iKS{izP|k?#$VMxWu& zV5E+KfPkC3J34v!WI~n<2L`^Q+)k2>1hH{c{)so`7t`OV$B?dx4aBjl}68KB2rb5p?1&JIk?Juj~s$D@||>X0n>`BizY z%@RI-{Mg&uOYm5(sjW2wT!JD&YkLS7rS~gm>FFdn(DgY$$t2+syO@=b0DWep>#IHMhFR^$jvYhYA9hs1V}9UmZmyN7DMF+mW7^ZFcU0&8BsrxN zxf@E2huG})&Q+bRI;q>EPfH+H7HCdF=n5XXJ_2Sc0_p*HpGp#6$=HTAE#(PkJ+RS0Vct3>?! zyFa1L1YCxs5n)c}y>$X4rt3Xx+zj;(R7>+Z9!rCW zrRYlA=5^jwm6ersa#|d!i#f$~#lxdGy=#%3Jwb6~Y|I5>P(*1aq@T33-E7%Lb&Ncb zW=wKxEH7`IPUm^=v6^2}B4M-ic;AD-3yDzTSl~ti0sbQ5NW>YA-`M{H)6{)jnF5nTu*A{s9c6rN~%?_X#Q zCKyIO{@dc~%d2R{a?zR*t7y}kyz@#B;_D1HE*ofW>D##3AGuM6!*hUD<82v%(gz`z zq$KmtBAh*70>! z4t&FsZGtGZC5l2+u^X9&jLI|{Sr%vu+eAwek862a3SyB2_e3~%KG|dlz1z6 ze*fOLC(Wwrd$&FDiY{qp5Yt%BPqEJ1lW zbal113WCIKGr#!|2Csjps9 zN`ml0p=Iyr*icJ+6u2!3NScg(NrEO*g)be7I}qe(fq;QyWhEe{JQ-a2;vS1$VB6~G z@USq-4`7NZWRsK7yk zGtAD-WzF^j6=m67NNm}Dd!q*cea7i$FPzh#Q2|XuUJa>lqKYZXMCKM|axSU;Ts49+ zI&mPryapC;=(r!DBtz6g_TLf=IS`u3P%si(H+Y%XACvcac~sl`@H3i-KYwu?I~MTZ z0oSo(cct!9_S@#+eV}GMFm{q+D{kBO$KYUHoLJ-)V&>>C9s^SlP@(VLm{GE}j6UH( zb9Db8bwOkB+dGT>O&dw_t|n{S{iqgq$(3K z0mQ?NjnF1m5gQ$+ogYaie2x)@;v|5~6@2{4tw`d|WL)J8=M23h_rf9V_qxtPOLw>U z!GrpIOnYeqlUBICFq}Jg4*iCzs-wcfZTI(}Gj|?rD;Ar7k|<+zc5#6~2i!V3DDqK! zo7fJ+X1u&^394IL{{;Q8ivD0Vs>Qy!H|L8xO3NoTk z9Ob&{^Q_IUUxT#*(XU^;@U?z{;09?mdl+bi(T}9V!rpPkp&TV8;d8Z{HCSQh(Ami% z&&bGN{iU~ksIIPFS(v_|to(rSXI;XfkFAp`_Fd^-`*#1~=NNdocrin(;NA1*&$D*&Rr23-Q9Fos$cyGtIQ`S+QHXF48&uD| zmBuU)G`z@ZpjqvvI!`^?c&SX%FSs%WK)ScHx;>1DXl-gb$Brx8)fdq}7E|O5&o6ih z8tjs0dJII9Uj%bNxg{lVF`j8(FX2gU}$e_e5#UKQ~q$&FaY9T zSicK&*2pogt`O}$3SeuljXg!|(p|oMIaMVs-*dfK`XE2WODJD>d3ACvyI}qxk^PBW z8;{02Il8^Hw9pX)+xv^PLI_)<{o(l2#Kbam;!py@kjP1;IKwyIS2DEbCj1O$_oB%} zAo>AuiD_K~>B%dRy^#SSaFM5|BktX~9j zXu&COMOoQEV3{yr(dhj9LS0|7w9ihn4c)`oM!tT<&S$6hM$-!vanXpzr7NXiC$4E} z$tO2ouEeKKxQP2nSIv}6ZTU248zyxk7#~?O#8-|Tg`*VN>d&%0am>5D=rIvt!JD;Y zKVZ8ZfHN^sii1W7dOjhcgWe!@u*Zj~F9R*MIbJ~}I>s6KXnNZmH@&Y-UMHj(0n+fk zy^|>gpzf z-_ajO`v7B27*GOs@YPdwa(XYvzS1Aa3;t1EODirqdbF>vZ)z%-QYp0sb;jrFYX87M zJIHZH&T|QGDct;Ca|(NG+4-IdVV;>;Ub7TQ4J`)R{rfxA9@J>J&J+*MI3eeelNvza zA{}}ilS}X(qCoN;|IahNDQ} z6n=J?59sXdL@M61U+95}1QZI0+UQu+MAf^@H+q-4KZp0LZ0Wp698djkutL@PN=AA* z`_%rinF>zDF2smChgUszgocDDC@Fn`oU>O|gGX`tJnPE^eUh)PO;yjviVk=3FW$W= zeCdu0@ABCqI`^mDf#O>dx@FPQt*orH8?J9@YXkEKNjDYUOU5_1n%R?-YK*dyuf&O> zWQKAa*$h%PL^Tw`#O94Ak1%9_M~_zZ^sv4vh@yLDTidht8}omX%9afL`qH`l5M+1# z-tbL?WO-%F(buBcHh<0EK3s!GyYQt-YLL|d0irEZH(j?pM@AK{v3bjuf*^E@x_%27 zUs1SnB^W|>VM|Rqg)i?cIw&Qn1Ad?fEbZQf7VE1PQy)owyP?mI9#QwJ!A-R=@P-kT z1DQ{#v<4#(EQ1(Ne)_R+a3gGS7AdAQ8vyU2Fie2lT}^nuloPA=P}RG!qMlmrYn&B=$qx3}jN7BammAZNmI zZc?1C(0z_&_k7-}GVO!ODv?;c|9+YVNL3-t&flX?dQxxhnuM>ONU)Sc^$;r9%-@TN&QsX_b*Pc%n@D=8BR_98@2R8ihKauHPXm+3P znQpryBLJ?NVao{hGmHYEjdz=QFC(K&XX4gE8H{vz^nLV!{Q{oD)*Wu=*Hu?T2T8VP zkIoz2O}=`S+^sf(M2o^CEOIPa!sRgbqM6G5e^Y}s)B0p?4uv3&Rw5P08lmDk8LfOyZIeY^<@f7FlFhX5g<||xT?Hdjv%g; zqKyAV)()b*F9#6`(8Fn#X#^Fr1oXAN8)0Jz=jY_Vi8WD}6Y1X+ zQ)eU)UC9l773LoFGetN#$55&e1#g149vxxX{c_<8>mR82A-#6W`P$Z&p`P<9>&Ex9 z7&3(to~~*J0w=~GqhDDmHV4p{-T&4ido$jP0@}nx&+t<5MAWz!(-s5<@To%O#jB zRTSx=kE=r4TK>aSO3Dj;r6a+_lBWGFd;*mLB)|_J@LTe8+%D9Io&2Cs{zCZ#0GTFebDdYfzR^?l<(N^hPFhB-6S1{#QR&x;S}&;78+uxZ!i zJKUu)CX6p|h9l04^72|?+u04!hlY@n*zHscL~krL^>|F(Z3l-V@oKVL$1p1Zbr};y z6&kA$9P&hJjBp?+*T;!%+gu84=eLKozR$Y4oId+NBGx;`wW-CmY03V^jkYIG7!wrz z^;8`k=0Q+25oBFP-(V!f((<;Qos`Q-y&twqAX>!2PJ9baPNvch8~=|MAelhu0Z`s; zS~yDJ2Cs!Gf;;pQ#!8eQvE7md%0lB>aHr2bJyqiyI}HsDbKbo}kW^iGPM=FTkL3^v z9uToi*zWzZ6BGJPh*7IBbJA1!k=y$yxNXRQ&ku%j2ny1a@#Uy?z+s@4{pU1Uzts zp@D(F73E0?x<3wpOwFJ%*5Ciusz*FelZA$cX5YT^+0YXbc^;^Rj;7-zbiO*mzDA+?1^?QQwZ z2cT-s5rb-jLXhG#a_I-tI~#Iklotq>|2a*e#30>;7vT*h{A!T|o+u*P(EW2tp1yKL zbOS`-MTK;$>xh9zFooFO{(*r2pP>Ap%vKkSk@S0vLfeft0)#0~9;lUgoUzF?QdDe& z2t(oRjh9D%a0qA}_gpl_pdv&s;03r<-{|6%l|@ehE81N15E{@6LN8^ZJ{wVW zW^L}hblC^LjpbUU#bTw+Yr|i`;Ozji1LHW)Ub%Cu2zyK$m;=awih$psvJjLH`*bw! zwLm2m5;ED#mx&6&AXhd-&Ea`%#9E9wL4b>>01Cw5wc!`(|8XG<`QcjO^V%Q_h^7I) zfH-n**7|zX=E1(Nt_jVf$j$_}UjaD#fXL@UMLf{awS$A^6LcMjMS!{wh*y(r^qbd~ z+<16P_6hg6NqxKgOICF5sdO1hZccw28w4?;~EA0O|XJT<{7Ai!VE zIaUOkAv9J1#5L*`$m+bSCSTKibsf!e;Vm~8kGnz;FuY%5ZdoW%EyH$gx1e*-cJ<`1|~L z5$0@J#BP(9@d*p(5~meo_Ro#g-KhF&<1SA>vK`=g*E9?&=7nM}g$7#9dx*_8lGZKn zuj1Rr5g{KwY#D04J9W#{ROZSR+MPZSPlJ~{;mr1sh~py2U?jbWXfU{&S?vHUSb;;uZkjf7ZbEZ?Cc$L4CkBP$X zC5hMC%NJi@{o={apZ81o z9@GvF{rGX|@FSE~QCwb@8_S1!AhdQ6?$H#o@gXi~YsX6;bep>njAOg2H>QmrC9JP5N1v;`KhIXFhmkz`o1nlJt zsS<ZmD4S5YZ4~GsO^p8xpK@q5OCoJrmnb~;s z3F9YEo*>Rcz1~y|9S=wa{q{oxDBsjXLCylQgL)Dcc0{F!zR;oX4Y8-L;fxk)YJGth zS=wg=_0XmTB5xsCfXd*%v&AH|(aj}GL;EvTJDZv^aUjmxH-Xd6a7$9uZckl_P#cy) z@^ax>$dMM;Q-e;QdbdC7IUQoaQfIfP+9^I;58Oi+EsRkVMd% z0U<240frqXzvqx8cx~TP4B;Qt@L+d}Z3e&$%q}eGO)N7DzF1oQl5ZdreDFqJS1@ zx6-P`@4oE(m0PkJgqBOV#)Sv;O%`%!-sKi?J;n(<5Et!5qHF#y-r`2yAchJ}bG|Q< z9{ihTVY}XxSM$#29==7#ugsa#p}pGQTtkH7+S7Yh%-I)I`h!o%6TF9b6&P*I^E z#l${FVxOf7Wtq0TLS2W03l4h2gW2VuWP7YG!{zHEKComXh7ntRrMgkCJ9Rhg|5<9M zWMWf(+QPHI4f`kcDkaXFLk)j5&u4?2a}o4!&;yf3^bulBBSh%_@&yNWG=S)lW6!(; zmHNx^dz8Nx7BJYg>{#3{a^> z-@d&!sG@kbOOG6A1oK1}FZw~@1?5=!cN|plQV0jZ$SKF5>TWT5dM`?RIa~w02N72u zB!Y|cH}aBj;6MjL7cuV6nP9WB)h%-8we5-2-bm8{&fEjunDzBbA1@lwf2nMmTl9IT z8JGGGO%#_-L%4Jpqu!vv5X-^%|2IyFN{C^jQ@Fm?v+g<^=Lp@-E7>_MD-_f?6DLC> zmxqn*ZgmqfC>$PLyA8@%=8J@|E54B9334+kpopWCVkQJRZmk%Q#nEZ0Mrkd zJ*k}N$ZZJCg+~**11VlE{7QD-^O899NHRC*Y^Xb>0($dYE%LT}!UwGk{F*3TAR*n} z>xOR!lEZqFUcH_8o|7sZ$tSgq9?x%`*Cr7-?YZ^`qyVr3C{SW1W|&3oin%X*VE8op z1-kS`odQ2Es;jC(aK-Q4STJ2IhSuC8?lT?14$zpQs~U-78f8pww@d902dBT$S0tEt zxCOCOoSBKJ7F_d*oA|_hpn_+;jo?Pgc0!x#{=VZ-Sc3^wzj{?q;6--!9L^ll%rcS( ze7<}+peEvO0~(@el%OT9{VK`0Ba>q1u3c4V(m>EfMP&ma&EM3npZUJ1Xcbf9u1L-} zb!c~l;S?9F&TiR$;1w6?{B=r63=_g%Q!_F!@e5A&AdmievKCAMCnpnmZPaW}ZFfl$ z8QK#kuBEo9sHph*`tslz)m zii9#n)OyTn7W5>V*qf_@(YT*&u@bHLKPz;BS02ONVH0!VxivSqs-a$)^L}PWI#wrE(UWM z3_1l+Z{(<_DRTHrUI)KWd0p+ncq%4Nr8#JP{rvXNadU8h^Epsypqb}WJqoYPPZ18w zF}&lUU-#ssQpy}Sa(ooT{u2zSwy~*Mz*Y6?$h{cDX*Yj|`ul2g9jRT%_*i}{2?BiJh_dDrMi4*z#XF`!+}SlppPm1q}VH;Ze!T@N}!_? ztaU94(IeCWiX4Yuy&V}#)umU#;4#{JJAFR(S%al8?`_6G0tD0-m{lqHGsr7F7=b28 zR=fG?pkyv%dydFF8 z64UOWKhcCncPXp$DyG_Twgi$WYRfP;V1oQezrpz7`+(7j7h8DA zUhiPzxnonPHzf~k-Y)-x!iP57ro32DP2KmJ#q*-M!*o&+SFT0dm?ho5q?X$S;aUlk zrt?k-1!*nKTA9}Ow>@*}P`!0r_`IUDqSPjXt($g4Qc_F)S{djtZnbBR3|;YFQ2Vn< zr`wUe=b`g(4DX4Chr`X7(7;(nIF{rO>-r2U)aQVan8MQKD_k0i`4(g1q4hx(Ef);k zxnP_K4{(F1-Ftrnccb*{S!MDW=Cs##%(ig+^VT6dw$lM4=a%Q%GNMyd4hxnwt`FArIpc!f4f%Sdpf0-*61j zPc#-7-8pH`_+F-!Jq7w6M=mIGbiUEsQv4?9GV#?)*RCB3m)T7!rLX_&nB6YCuyrJ) zIZpcEr#&)Y?kP>~^`GKe~ z49S$xK$4V|L_$d;nJSeA)c)L0)>>Ha@7?b{_CAi?KdnWcp69;r>$=YKJDt#s;KZyT z*OEgE+O}=`*lwhs!a!45ZKFOj^QCQ{z}nKk^3gQ|mB);EK3A^f+u%d@G24AcTvh52 zE1)lZu>Wv&z}!*t6lQve+)eKfs=SeK#~+PS*E6j|)#L&TrNG(gK?*^JFRbNeaGujI z1hBNQLd_j&tB|DR6>k2UvK#?Z@P!1wymcJY&@!w{!{B1hZiKj;O`ksLO0hlQFmr>3 zm$TVCE;#vYn=@raWzHH65@aSm#UM)YhClRTWMrFR{qLFT=VwrxQFNj=fmN(Lmr6TG zcLgWS-uNYLaiiuTN$e3$Ea2Mm{3iVUaM(UCFV67gqRnpj@`aNbbTkWn(C=&NhxZY^ z&7{1%Z=CR*_uN6Ao{$jYP#%-XWmC@UerJmUa9M+IL<;P@m#K|r?d?{#Z&BX=RvD+I zt!Wf7GUFMogkv(x3a^dLYW&{(%Ma%!!YE}gH`nIy4_`mfN*fBtFYB=_xGUk||R zz+6q60^=A8a@vucPM>~NRSy!22<{d}@N1x^moIn8-41m6;>8W%C;;B;*Mqd)2a2vb{0*Wx z2?+@(*=YMc!YVjy??an}&*UrPkI`4V@;>CIg2WnB$8>oKp=1WRS@+Z@0%wUV6EvrbZr$t~fP%uch zZ%;VLO^1@{;8L^|s2-5s>gjnHol1M~fb0)q00XFSrYa$-gTRV7xlJmRZJkCOyj4z4 zjw+yV+S=)IAsMG`h7d!C521-f$95e$s17AqQxEcIp(-`W=h|8V$3lnr#>8x*8e_{b zF)>-Vu;+xLNPJd&2HuikvciLl`@UUeLqxon@p{mJ0R>stXzx2tsOt+`v-qK|uSSq< zYpt}6Nvx7J3fR|66Y^7LTu&YnunR|hk+pW>g7O%6oM^p%6lztwp zLBsJjLA_bPJ__x23Og4>7-3#y8{V9?UOMiYkA1B3j&%*MM;J_o4ccdXKkNB(I~$uS zgyupXXL?#%mfaO&mz3QI8Pd}YJ}q)FFxwf^^PQNB+7dEQvHLW=OK5zz$2wq1^nS1i zs(dsWuh}VyJnB*+*K+iu@V53G3 zc;Mi{C63y>MBV*t%&gj4TDYM@Llxa`RX~Kjj9tGB1gkE`$n+vfJqd0JJVESK__NsV z3_h#@$p7~38|*31fm-x>%w9d zVnhV1Wa9wd1DP~gt*J4xS07h`nM(gWHe=zlI8tssgbW@qe z{6a!PP(qYAbkarZX_4Uit?7$fQ~8;w_yeg+IFk+ySu5`P>hPtOeI)Fd8Ku)p@-}M z`vss%`&s(d@`Hu?YXZk^I!|ue@(~&1YZsE1;_<|BOkKo-h6X1eefP1-GE(09v-cji zh!Qe1Ardq`>}#(g6}oMk*xA*g%Fo!Xl{yzF$ji&;>MqXYcatOwF}-{D)TvYZ=4#eG zA?0P^vFHI3qo3#Ga4P^j{L)JPJTlrhrAQ;Sg~24PvCpKe>{k#^^2S+_2gq<8tUhJ$ z1-&(vmfOPP*gui60wm|VR2kweqQcG0&uM!5fSWMf zw`|!`u;!+(@xqmCS%n0TjMF8&r6o(0Iz41t2O%ge&87|kO>#^%&`)XR`B2=@RuMIs zVjswvK6|O_kdz!0k2i0Q>+QSiwU@$D@q=#b*f}OnOoSg?mL72Hk%i^@Gzuq`28(-~ z*b$_y?8P=NTO_z9%Vi&s7A;9P(Z0oFe@W265 zg@6oP8_G@r8L2M3rrx*j#B=lK98Q-RCtd#P)diHb#L1=8SrNeAv<83m}-BkMRf8U6*-B`VxR zv?l}NHA7R3&Cc4)X(b^+ISivscrLCCq_eL+=jJYq6BdD!pw^KNzlJZc|)_u+duDCTdZFCOU2FG>i@RvEwE6%D8|jXP%f{zM&p{hd(kHGBCYX z)8Wlw1xs%dlEn;xA?Qsx%l+p3m$vJeWBqYLR14)trB%6lhKMyzVZ zuK0gcbB;0^{nk0u-1tpIm+S7W6%QUeW;iN_l%Ud*5~0yvyH-Xmuu)>LM8N*#vSQx1 zEPqccA+MS&8)-S^-&2>=?K7>?5G>RI$+Ht{b;}}6ls7s$@+no7l^>TmR!iz<37@A^ z>_Q@;wy#N`nna`3NY=0NT~Vz@;ll@fSgtZy-*8A5Non2P_V(IbD!qPzI&SfSZaT?g z?)t|K#nk^*ExI~S64foDUwh-m7qA<;%DA|#Zf-hxccuw{_vqZDqq{2WUBa4{JGJvo zxfC$cYGhuQCDMCm&1su_YlqB<0CTF@*^vUaWSd%SYIfaR!e`a)x07&chCet1tx{I2J7=1Ul1igNfq)5zL5OGyvz|NE+({$@UwHBpK zy?Weo&V3%?=2~rC>yFaW&ivG3r?POE6PsA^l3^oN{ofTAJK}rWdqBb5diR`htF}$! zn9pgkGt^LQx8ds#9~POKK70Cf!J0zo#uXuTf|Dr}4zboRus?na* zXL2LPPm0bXZz}2G)+b*EtBjRX$cWqeHAfbW+(qvpf-Sw~>-kVCz>?ODTyb{&(Cs7rOPv#zsW&=@}V1C~T=+vZqsi zmlPKtMa0!_KhHQ!3r)Z#M@P<8IwDSdFyD7IPREQ=URU+eaUFMH&mTj)el5&$=g*rb zH~`V)Mp%01UE+^>_O=<3)^_d2jRfVbqm81B zba2poiKBvzfL~cRL(R!MQu%69Q6-ywJi!qH%QRp>eM3Vb`#>)657PKBs<)lmQtnX7 z(d{pf`%4QzjU{o-w+jp0P9z%tp%FD%+If-g5;zZ(bL17AQ}w1mDg+thIg|rMvDz-=MtkKmKT|v%90t;pLzSYM0le<&%v) z#qyGT|?Yx357oV1V4B%ct^Qs?wm6cmH`B|9o3{$)>8_bm&|<{Z7|Jy89n4 z;e|hfNDVtmzY!EL0xg` zi-l0H8db}RzYLfq*?fhC3!PK!TwmY5(=QkP;GXSmYU8{=<)&dE=+I}v(coZhddQ9>xHbc6LKGYER6LoKRov2TKM2a_0DP zvC*i_hcncGJ0}1?ktKaSE?&Bn@7DC~_HEs-%ivF7y$~Gth_mQe^Sob937a}{nG3O= zq8_WCUn;1l#{-p!hRNSItpIait&&a^5kgVh>2^sW!B`Je41@~B#1NDJv9Y6v4z*)% z{$deuQcqtWjF1Iectf9RQAU^IGY=#~`z)LR#XJ-lX7yEecDhm@@@|Z#oTrpkRZ;oy z?%nX~M`;St9I?2_1EOdr-#pOZDsF*gAzQCrx+FXO>SU?)X>6_aF7YH+bru?NnNm3{ z^K3u;gv}^MA|!(rXfucAs2KG4`IXIAO zroFY{vR=PiOI0tHho3t2npz%yeChi2Rq$x=OJ(ohyWpsRK>$A&5jZ9jLS~LmH9qVv zBW#gvFMv;yD=A96`pl+t{=903U6-Ij=`to2jOxfT`=V55A(dGB>Bg3h6>;iQ!e`TJ zg`Ye*(Gz4#p*&WeWn=kOT&+Lfy#>la>~xu&xTG}e;X=1lGj=E5x^36Iu?RcB&Ux|v zYxEBG8N6{$tBSbasWZCqEt(zS>W$yO4Rw_CqWRJ?8L0BZ)v!DkFTZzj@@aQZYkP6Y zv?c6O|7<45*5;?ZdFuFn0Wyg@u3hJ7VB>L_(C3J`l%$Z3&P(-Jvfhh$)i=(!M5m>d zJusKtRyDn59AuS!WlhbM<}y3lai!&Y>`b#F=a!0o;Ow5WW%>zi!?a8Wm&&cZV6gOu z9ctU^cz?T~a$E6{o0c!%UAW*@ez{*SWv94cYx_=n^j=v8rn5g?oXK7$bc7M7%Uh?b zaB*x}iNv>-B!MlP$BC*(JM1s9*T}5c%f*Pl94D26tsC9C6J{wczJz+Z?W zV`{}m?R!2+?{st$NFqRvsiBd%+yKQH^ym}28c>i0=gg7|*1l26j?RqO zR~{Z2S%%K3u9nbYBHW(XVW+Hl_mrNFW&=&M(4v#Y`bq(@2vvWNZ&P|)xj~E)b_(!> z3FF4)j+xLy!o2`OD$cR&0NzX_R%;&To_P9>=$*y$=PzBk5*O8{)29bJrD^$O<;%y- zTrq7y#BZiY+vd^@BKqV+6g+!8(B2lSTtQ-C#EJvI8>W6nfdVoS#U)SNZx$`ojs@+TEIHMk?K{hNuYSq0zCoA3pf(*#j9Pj8<`R z8P_8QR@^+=y7j0SBD{Cbp;#>z!KiQ3s96) z+J52sCi%%!AEy7vLkI*u+3vT*suZ(R$Z@|;^?)X< zD&!o}f!G^2{A}*2wAgO>t)T|&QE112jZCi(;lZ)x3S*beqh-SR(^2Q^wjOI<-i+l~ zLI?9Y#4UI?*a8X{AR@}rC z86W+mM~0IE%+a{gm+q!3@smZ~jg<}Jpj%V7-o4|I69yW5X3$2bO&zdl4;VP`Zn|93 zM)^1k-w&#Yg!x!WDSIdc@EpswoOJbwDe)+{ka1Qa-jY>NcvD=g=bQPihI@^NN7gGj z!t95Rd`rLmgC093e!5T%lIK>J)Cb$^t|X0`E`NYq31<}t_nkkdtx=4BGfJV|`(wwG zN)N-GnpMaBPK|76Bq1q@Yqe70=E;+Hl9Ft=(03O0)SY_f$;)f&lF~=F0vsVoqX+{L z5A}sSw3#Y(;eurd;!#P7=Rw#km~#;~XsuKzh-(AIgcef^i)t#2pGMlw?$<^@Af*>Q4;l-`|F6p|0~jaBviWu53JY*X6_Bk-`^r1`Qom&lTs?qJxkt1iGQbI5Gm9bl~A{G@F+XCqSw4>s4%=G7OFEG0snLah% zLQ>4KbBo&jaOox;!^)hy6>L4pL$=hSq^f>xpR&^}g})NePBF^^nnOx0D*Pe~LOAHu zbqBsTyDPXYdDfI>Se}?Krtb*|DLcprS_D{}turiZVYSfzE_qvLpf9Mds3u0cjT@e%;K|%A?j&v&o zrHf5Wb~h=jsy4pJZ@kLt7CdWJ!;2Np&IgJ@esa)ETtQpJ@Suv9YDIjaoI+fK8l2lEaL=52%EZ2RJJQ-XiEi5Shyi76MDe zEdzGI{3lGPlwxen8^&-D<#A~B@86#;79^~>m#rM|h`%5bkmB-mWF#j&L^=rMnz)*5 z%B<1 z{--$c_lk;A+Zg-3n$675M`HwCGd*1M%E-aO>2WavaqM4=3tslUGK7+XmBO4ZiTQ(d z;p{xNa*%E59Y#ilhfj{2%c^8+EE<+IL<7kxSBmYyc-X{my`;5z?xWphFC_*EXm-|? zF(O>yKlb?6{?fwLTXiQb?H$_;3{0r;y%GmJjstmT0XCOV4($wmqC$T!{q=M#3ygLE zY8;UlJ_ocJlcg|ThtGb7`$t}Wik|iA2b3n!FGIl@p_3Hnnwqjjf8?mp(h5KgKvpkh zQKwECBSz@$2?Pj0pFpw##m7FIsL(B)z_@ z=6RnqNjxND=Je^ePX+&PJN1j8d;&*&AtolpZ0-NNQ}2=Iyl?K%dGqJXC6m>#9QDEV zC8-B+5}x)I3c{3t{PmAty!ZlD!A1M(A++$8@5M&*?eBt`|4hsg&p6*wx#d6I`>IcI zUzI!0ay_17*r~a~7CQK)nspZXZbt=w4b@XJ=fv{m%kjH%wS}?=M1RSWC0n-CV<#>J z#DQYMld>{fnHXQ&G&xQ(7C$8Uo0#DP)-43wt98C~?5XTh=Uc&Ygg1QrXq3J` zmL>~X4k!P$YwbwVcXR|+r44o3vZY|xSsR3lSV1O6X+8S^!f=>*?m=zg+qch=G9vA# zU&_wbciodzuvV+5`z`bcL;X@I3A?tPykLQRCo${f)HXi?5b3p#F8aQ8t_&;rRPRC< zF0Mr|cBorgu75#EJ!NIHGBe5a|AOJ2Z4Dt4KoAf9qeoP(E~i8NWd4CBJiWVup)awu zJ-6t_=g3pRnq37M0irR44TFPtEW*|=4E+5HoXiE*vr^}Crk5ldg@}N#)^!$qJ1e;s z8V%m9j}3KCrR?cc`Mcvfg>3z7%4Ef_?&4wrvke~o09r^jg{F!D(llS+dlyn`XHRbV z3p|unt2;X8;K75WxYX9xGOT7*-t`*JB@}tU@OM(|nxl=TduI-S0%^hGVB#r3wUJPi=lmTs@Qi;G$-zgxApdxY(?S|C3mukrh|A$GK{cE-kx zj+sTmFq$AF)s3J06CT>Uf!W~PNT|s+@7ZAxB&D)4qa-cY7?2u)Ypt z-l1DC-Z!Q7?c7g9c(s<4?D1`=U?)|v`GL8_E>c0hWZ`YvmG#=c#l+;Awq7nRVs*BnBTTnMUQ=;6xt8>$sNWVT4i z9a*B+Z$AwanH>xa%j=Q#>{&O4J;_Lso_KFyH%p~|J;%oBDr{I$r2o!Pi*rQY=6-A2 zKbtrwTZDCm;ybW~IyUYY=B)AHuyZw2^0jw=LKV6z7%BhIM}sOz7yLN@>BR9}nGaOZ z{xkOJJ=^ACWz!wCt5yBa%pD4GQB+uHklfb;FaVjaQOE?5qlo!!mPmQAsnV3feNR<7 zvDpT?Boks2@BEV|w2pGB3$^eY4ZhzWsO#X?&fHJn5u1{D`Qex~h*riOqcmcKWATiZ zYud4)CHM|2O1RHHjZTL*1?<{Mwe3v}9#>f%QOw2N7T-x@^3l(ICNpVN&Ctze{Qb`M z9Y={<0>TIY0x;z7R(|Cr>rZ72(J_7>A;mBKzDpYD8eA*)94i-6Ck%6->OvA5VJ0I? zwjo#8)yhh-@zU|*LWl-LTKmmr1AF`rK`>9FQ#JzTuMfA{|#{;^P5JvQ8)5BZL`~}?*pwhft z-8G>uizI>%r?&ff)0w?=vHprZPwqTQ;@3`3<3vFZLn4FjX%X<9o0QaYoQfX+%U?jJ zXZqtBfrb~e5pT8t{{RvjWCk&2>p{heo0fYhZYLI%I&=PJ01*a{&{u}Cv#uLtsMUOJ zS+9yoL-S|2%l-mkE*a=v?m3$4jR*vZg%Dodlg01{$cUuCZ`a`e={K}!^)8^-kdCecr%hSCi%m(k716&ii7 z<`u1%?YK9O^kTjaXhvQ9nVilH5I(|!1yofhN)ViP-m`?ByDmTf@#9v91J(iV{0od) zwTZ$LLucL6S#7Cvh+d+$>h2?Vsi4^8Yhlh;xJBlUZ7lVap8`4uO;iTj73k* zm)_T0`OUzL%l~x}N@#OFZnaa~kN+#9%PgcrTZA7ds#IR8v22_Ro-q1ZA-P`fY%}G{ z6A$D)RVhVbOW4BmtWy@dl*%9z>$}J?{su5DkCcaJ1wZQiE+TYS=2l+in9(LqFmC>I zrOu3PShR?#4P{iVOg8J>c}GfFaR5pLI{OMd3;-K~{zZFz1a)jeLKEc`F}H%pw0rlr zMMW(S2MFN*U%Nql-c3o-xwLIoE9TAMR1hiUCK?Jy*6|2)t|tGnJl93dz_QRoeBgJC z@cR-^j%-*jlDTp83nvuI;hsU8{50?<6hhc;cKfC`Pm(Y=s!ru9B-)T8#mqKowVP{c zB8iIJv|$4gr%ZTB`22h&d(SK9ZjwKsdY04cEa)k!9R$N0{23v#6gN2Gx9%j zWZ0qUYVhTx+VFmU=D#RfTE_eTaw}81RL1?dvv+w52%MOsQCi!x=JRJk$gdl!uB6mz z6t!$(Knn|f?yZ8z18JOz0({j#ln$ zW}j1IYut?LxBpi7BT1H6tJyo=Ur48?h(&Wk9eXYO+O;}HD>IrJ90dRPS&ybWIx16vEKCP!>LQ4)>yO%%#x=_VLf)Mc(r}x6UQH3lg-Qa_fqF* z+g;_8Pi4_$74~n-&=Xu-si{JO4_~`?Pn245bas#DLCiN=_$QaG9PBf~FCR_s@Ue z%*}9N3Uq>F*(2mf!gQ{)K^i(GWyG+|oXH~XBbhH9ziMYXFiJ=;?$m~AaP%ad9%5o= zsFV2dY{*Q$9gmo)X;5#WUuY@#;5V zvXOsI*Vg%Io7wS)$2#T{yw^t5+TDqX2{e;RuGJj(qMe{x`HPcwfJS41%3pN%{OG)H z!-nKfazIW?wGT$s?Ob-ms{aq$D`m0Q+4SIssJ%}fCJhWN_k3^JsjX+1e6OiW%=}`& z`BsdD*v1+9g<_2aiOu+A7${7WoPJb0ivj3`&X_PPuWcO0@%8gbH?S)*JRuQl#*E*% z#meK)d)Krbm|ZIv*Hxc>`ud1M9`g%!K&XjV!>PNR`4Ak7HFQP%gVSYx-qWl_^B6&= zT>cRD#A+L?oeA4%7%v|uzEEn#Us`}Sy??FCxNW8J@?pVp_Yah>OsQl|2q!m#XlqWoEQOK&S~zOV({eO~+MZ@odD?}!#++dfe1 zbmIDA4g*#=8Whs`r_Lw2tcuQO?bM_FzSl&}-|ptt?(jA>9XulL>NvvuoMgmYije_v%A ziZ0Am>W1{LB=nQ6v=?j9;B#(>ulu@t&mIC*nU#%SGve^7*7W`WG(_nU=OJ|eZAZlj zEBZvaXHQYpU6j(tZ6U5mVxGF?OAio`drE9KS65jz*pntIdJLpm?qZUaOKKj6V#0_dOMj7R+TTc z@Ai&Q_Sg0u7xmVdE524@x-{ZNZ=L--5=6Zzdhpce3y<^uFuzF+4W59@CLj zD4{@+8@u-9fYqvM^)yah$oQ)>o8j^MR3(CVP1yuMIYw%$Ms(o;6liGn6-HSRpE2b7 zqd>Ah2)CH8e2G&fLTwR4q@tb* zCQD(8hx}p>yRjWu_Y8pL_GoG&gIj*O+LowWavI?yLU)VM1tdI~xwLmj+)bqKE*D$SFKvRz&_Z{?q zp|WUmzAPtK*S?^t9@$ji#&$o;5wFP2YG~u{WiasFhY#}xcPUm3W}ID@XX|#V$5hwU zP_4+VezTmw;c>-Gs%>*IL4=jpvdgA@P9cU(={*wR5E~GEAo4F!$^Kx(f0}oWL zwH^DHD6o4B*Nt|>(SHVEANKYiL9YP5tgWpP^&Ofn@XL4(LjT-1oUQY{A8-gyeqdyw zbGJ5sANcOK30bqOzoxk&|JhH+d=s-R)m@9KsS5(PY*@a0>Zz-P&)pQao1^i3IVbBEb=*`vpH+_XU)E?|n}@bG6YPp+C|?TVTG>CBwhW4fK2Klb(j zg}4wN^Q&SVgrkH8YtEiuSjai?^3y5){%tioRxXf_)v;loBEX9b8aOhF5Cdpys*zIf1usE5kAQ`BP@D# z?|!>>UiWil3ssQ`Ezfy3Qm0?=X^kNPCE{Xs4R7YI9)5+4m7pz8zFuzUpEh#1!{c`~ zOCNDQjO_lP;_XGcm%tiK0s$JS$M;m-G|ykvSxju^{8pB--05c2WFY0WxQG^-lTu62 zwqsp|)mLZSfqMO{9^GD|Efvb%0USrbfH1>w(T(i?6JgGiYUjxOIc7_jo!{j&x@%(T zVQPMgL2I}g$_GLDhYm0ok^EXr7!W}MH94{komC@Td&uSFLWkarS)}JcG4Z9o-ZV@8 z3oRY`q4JwmM!@+PKyD``mC2W)n&WfcWZ%S%wU~xQPfriXJls~vKjc=fwB?pJf^K!r zebMYdA*+R5{LcC{0hdh{8c|$2I#v_cwR;D6%`RIDEJ0zu6RgXYkv1tzZOnMxqn!jt zN!YGoPy^^9hVn>@Je9=s=Th~oN;m6-Vtw>S%DjVrFLS((jDg5kw!b5Gish!Ig(^Zm)Cj6yH)cYO zf<=2xg?33BucC7qKJN%iJ!-2UHMX>t*m$80i}-kiz|R>A!pUtK)I*|jZmFO^_}_Nw zBi=e|bcc4RPASWGQ)@0F@ZJ1poydOrA<&dl=&6*HULE-&@`v^}J2y&4$Bmvg>gK2E zlO}C9JGT_>=FA5b!wmmsUYdy4)l>C%-n^LzDk1$=WW)^- zgu_29o!e_yLV}XePkIX0!@s==5)(QK3F>%bn{^9ZgfI#4ErXHyUdiW(MnRT=A91X@ zy5;4SBET-MJCz1r$$tA!6S86MF1$m#G3s_yJh$go#hK)GCsdX$fQdde6&31Ek|RYv z7Dhul@sJ}$7~F-_|CE$n!aFR@K?mS&_2!&8VgxIzra!NoZa>`3KQcK;Q$PHEZuGvi zWZ%1^+BWD^ZX0r8V~Rn8Ld~Y)7x&+ECWDDB0`CRQ3R|jFej0iu;s93-72G}VV-OTT zZn{j+88W0z{u-#nZy0{`CQmMqHhZI?f9b3kVT$a-uS-jXNtS~K;chPc?CsqS@Q>|C z5cdC%Y?-R#hQ|9-lxa9@R-Dnn&&pgf{WS{XD(7SMZAW%a@~rc2@~m;ezXQ$06iB=`_Gclk(G1%J9%wbAJsYT3sNg_ zax&GM9kq|!*ZrHPUWUu-9`t2lA=oCgQaHH2ZfU5GRW-AyA6pj%wd zSGc37xX(eyjxCx$KO4sm7VR=rtJDrN(6j??q8GS@AthT$U}}V3u}>b898tHE;yBCL z_yR8~5`tcmP;|r?w{xdNSnFdKZlIq;03)P~3KYnK|6U8~u<}1>LA?TZoxP>iOQH4r zC<`B*C@IA`Ay>IdU%hw)rCL=V200@42z>nRojV5)9ipCBo-iTU$NaZ}e&D6bkM{Lj+0OuG6WPdVB|_U4f$Q)XW6J%wVz~Z`AQgd zusrhwqL@{i2m+CIEh9Px?XpyxHXONIL{)%od7GZPr?J%ExM8j=w_dB~F{7vX`7@)+ z#vJ=dA`k!&l}Ch`RE27l-qUp*9;oo~hSv#Nb?u zzHx*98?U1BfFfeKcjnn?$fs0>3@NDGjOdQFkmO#CJQ_tY=Rx6@1H78xo&7X<2D1xs zaaRuLiMRw}?i&HPl^fLbpOzFA5gS%5%%tqR$0IJp2UL(PtTerws4md5)+AGnXb;3= zy%ismZ}zvN^ng~&h|Au^$$Q}08` z)`p|q99A>`q)~m8ev~Fu3Z5WKNePbjpJ-0u#6P^9k#1>>(K)8IPB(Hc5@JO8-M;M3fP&3c<5@=pCFgYW-(V#P2}xixU0|^#{P=Oqv4YyL^?J3$(^l#V3_db2 z@SfNg$Nlz9^XDQ+V=pT8%gZ~BiV1it-|Q}wC~zQgML(){v#F1>m09!%U?`%||Dk&j zT7yZ3lKSnhn2je7hlvch=#FN*Mq?uA0Zr~du8dR9?cSwXHAq%Q-MIIN_+2LCKh8dm z{ioPcHbUzr69%XUFRuzztLfuoZPK6GU=NPxTm1q_)wc{ej?G-B9ePJgdS*&`4QIj%d5zY8NdJ zz5L#!bjndf6Xk{^)xk-sJLDFO*|@1-&f`a2(%p6p%5HDz*yiQWvPG>3215|hiQsmW zP&|+M`~v$i(;zmvu*dqC>DkRkl5*$5u9`Kfl={(Rz}`aHBq1 zv(D8I7psb;(<(LEmsorI(>FPh*eUe=^ZA9&D@X;t5i4I6(wM4U+fPO+orvHM4>oOS zu@VlKY{tY6@OolDNN<`Od7+0-#F;5vmG1(ZwDJE1mfPZj*bn??K)ZPV%s}VpOP7Yb zZEd&^6%V?E`0?4pQ;^FkZIwFmuF)XlY%;NH6mBab1|MWBDBgE6ZNHX%pUq zYq-ct(NHcI1nQXQ*7aU0`~+=_m#MlD>-b_U4K6CUR|0?j>zW%C!or{JAR8IkXmmarbPeYz6=G9YmED~H&njrp?6-2;!VSA$*( z`F>RuZN`hr-TieImJ_yqdJO#wce=fo5Mn1XYFZ|b%(GiMLqwo7-8kE$_0>;x-^Na9 zw<>AcZPWCbrJl**|g>9$lEJQcF=%1 z6QvhQKWHh={)1bRY*hgwQBKLr8;?B_KM)N@SlwsGF?m9ARqpx>q%1+P$Lr6ut5Z@JNJ#2qH5HXNSUk`jKD2L{C*i}Uo367E;htAH*_8hNL z%A4Wycy%VoV~~s#VIsI#V(yXWj=oFAu|*^0v~}aBwgLxLPAA8;kN(8p6rZC zCXNMvKRhDb-N~jXf~^|r>YxR&0G!x=bEIH|@~lE}-(3F!_vT#NA#?lgA;jb+xjQ{h zc^;U&v*7w*4JpMdW^ushh@+WifhItRSkU(Y6zb=JjfRiaPtJ>wcd}!?g7Nbh6m4UQ z4qsO3yNHK4&n63)1B)=={2!WutLQnX&!_C`sd0T{!*u~5BWPPle!F!`aqQSH^iW(E zsZiRKz{LU_#tc4Psr+KJmh=LR+2(83X&pU#_AFj-l(zJNa7-spo1%!) zxKY0JUB8sR9%!Mt`skcsVu*cB&y8rwwiUdMniDYzX(%rJq6A6Xt)DYaHb1iMJo*jA znM?o8B1`R{Mx5d3++04cbo_8Ioaw3@G%PZyrfyxjc&r>FTXDP*a#AW3kr{RaBJ5>& zOvzzhyKWt3N~ljMMWn<4?-6nx+qW+eANWo9h#HGKYqW>VW}zSN8h&P|!0nNMlUMJ{eBfFU5W{N#)uz ztq0E^mC5}j7s=~|pHlSTkB4h&wrJ5}?bhn5s<5bI7ga$vqD@@hJX8#yjSZ1IWjLM6wOP++>xbJMzkAJp-??SBwI@Cl6&T1_}m1emwj$xz5(mv8oI=a+tRQt$*)!K zEI4*>_0+}wnaY|5*+MGW9xT%1HojNbl@zF9qwnDGNw(Ju{S;1$L_aV=0+{YCcqN{A zZ@aSrr_EVOk$g>*u<}z)uiWyfW(z;`YEC_isILgP|Kb6drd14!P%?oAf~XbxOE?)%??V`nE?6L?}`I{(beQPxxxOO0_!p zVk71%s!}wx)PsTf_awzQ%f*Te$O^Hv6w`_5xu6OuCqgYp~?eYfsD`U0A^Fw{7Q4)J^$mZ6lQf`Xf~Bbnnt$_irc zZBtr^`E?7JDLHVg0B65>qaOB(DU~L|HB}xpfjLXue1qV|%qLGgyDp%PVn^Y@lW^aD zbA;%^&h$oo^Zvb({zJ523@U*oJ2zi;a!6VU*=@3}W??=Q>|l}4o&}!0#-}lxIn&o7 zs=Ta>F$aU97Mz>!SN?h69dj}D!0oZ}mXF-@x7KivY z=~Ah43OI9lIY1aLfG(+G2~&EKeP}~5lMgCXTfl{ZxZR^K7H~9ilQ2aoyCsa*UnI=G l3SbeS+guAL>V0YwkIvn_P2TnRYyO4Uw8=(#=XEW2{4bag;G_Tm literal 0 HcmV?d00001 diff --git a/plugins/cpu/example-graphs/cpu_by_group_caddy-day.png b/plugins/cpu/example-graphs/cpu_by_group_caddy-day.png new file mode 100644 index 0000000000000000000000000000000000000000..ec38a1c05f21fa0038eedb02d89fee7c4d78a3bf GIT binary patch literal 16232 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