From 0926a8b399e28b6a14053a43f111a076d86f3dbe Mon Sep 17 00:00:00 2001 From: zhongchao Date: Tue, 11 Jan 2022 19:41:59 +0800 Subject: [PATCH] add system operation view --- .../autopilot/MoGoAutopilotProvider.kt | 14 +- .../hmi/ui/tools/AutoPilotAndCheckView.kt | 26 +- .../hmi/ui/widget/AutoPilotStatusView.kt | 23 +- .../function/hmi/ui/widget/CheckSystemView.kt | 77 +++++ .../main/res/drawable-xxhdpi/check_reboot.png | Bin 0 -> 23460 bytes .../res/drawable-xxhdpi/check_shut_down.png | Bin 0 -> 23185 bytes .../main/res/layout/view_auto_pilot_check.xml | 273 ++++++++++-------- .../src/main/res/layout/view_check_system.xml | 55 ++++ .../src/main/res/values/color.xml | 4 + .../src/main/res/values/strings.xml | 6 + .../api/autopilot/IMoGoAutopilotProvider.java | 10 + .../autopilot/IMoGoAutopilotStatusListener.kt | 8 +- .../call/autopilot/CallerAutoPilotManager.kt | 12 +- 13 files changed, 353 insertions(+), 155 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/check_reboot.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/check_shut_down.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_check_system.xml diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index 0a59085289..0b9dccb483 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -13,6 +13,7 @@ import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.LogUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.zhidao.support.adas.high.AdasManager +import com.zhidao.support.adas.high.bean.IPCPowerInfo import com.zhidao.support.adas.high.common.CupidLogUtils import java.util.concurrent.TimeUnit @@ -23,7 +24,7 @@ import java.util.concurrent.TimeUnit */ @Route(path = MogoServicePaths.PATH_AUTO_PILOT) class MoGoAutopilotProvider : - IMoGoAutopilotProvider { + IMoGoAutopilotProvider { private val TAG = "MoGoAutoPilotProvider" override val functionName: String @@ -82,7 +83,8 @@ class MoGoAutopilotProvider : } override fun recordPackage(): Boolean { - return AdasManager.getInstance().recordPackage(1, (System.currentTimeMillis() / 1000).toInt()) + return AdasManager.getInstance() + .recordPackage(1, (System.currentTimeMillis() / 1000).toInt()) } override fun setEnableLog(isEnableLog: Boolean) { @@ -100,4 +102,12 @@ class MoGoAutopilotProvider : override fun setAutoPilotSpeed(speed: Int): Boolean { return AdasManager.getInstance().setSpeed(speed) } + + override fun setIPCShutDown() { + AdasManager.getInstance().sendBaseInfo(IPCPowerInfo.shutdown()) + } + + override fun setIPCReboot() { + AdasManager.getInstance().sendBaseInfo(IPCPowerInfo.reboot()) + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt index 5ed91e256f..0ae3ac68c7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt @@ -7,22 +7,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.FrameLayout import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo -import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.function.call.check.CallerCheckManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.utils.KeyBoardUtil import com.mogo.eagle.core.utilcode.util.ToastUtils import kotlinx.android.synthetic.main.view_auto_pilot_check.view.* +import kotlinx.android.synthetic.main.view_check_system.view.* /** * @author ChenFufeng * 设置自动驾驶速度和检测页入口 */ -class AutoPilotAndCheckView : FrameLayout, IMoGoAutopilotStatusListener { +class AutoPilotAndCheckView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : FrameLayout( + context, + attrs, + defStyleAttr +), IMoGoAutopilotStatusListener { private val TAG = "AutoPilotAndCheckView" @@ -30,13 +37,6 @@ class AutoPilotAndCheckView : FrameLayout, IMoGoAutopilotStatusListener { private var keyBoardUtil: KeyBoardUtil? = null private var connectStatus = false - @JvmOverloads - constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : super( - context, - attrs, - defStyleAttr - ) - init { LayoutInflater.from(context).inflate(R.layout.view_auto_pilot_check, this, true) initView() @@ -61,7 +61,7 @@ class AutoPilotAndCheckView : FrameLayout, IMoGoAutopilotStatusListener { else -> { keyBoardUtil?.hideKeyboard() // 设置自动驾驶速度 - var isSuccess = CallerAutoPilotManager.setAutoPilotSpeed(speed) + val isSuccess = CallerAutoPilotManager.setAutoPilotSpeed(speed) when { isSuccess -> { ToastUtils.showShort("车速设置成功,立即生效") @@ -117,10 +117,6 @@ class AutoPilotAndCheckView : FrameLayout, IMoGoAutopilotStatusListener { connectStatus = autoPilotStatusInfo.connectStatus } - override fun onAutopilotArriveAtStation(autopilotWayArrive: AutopilotStationInfo?) { - - } - override fun onAutopilotGuardian(guardianInfo: AutopilotGuardianStatusInfo?) { } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt index 8172c25a74..f7605c169a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt @@ -7,7 +7,6 @@ import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo -import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager @@ -26,11 +25,11 @@ import kotlinx.android.synthetic.main.view_autopilot_status.view.* * 自动驾驶状态按钮 */ class AutoPilotStatusView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet + context: Context, + attrs: AttributeSet ) : ConstraintLayout(context, attrs), - View.OnClickListener, - IMoGoAutopilotStatusListener { + View.OnClickListener, + IMoGoAutopilotStatusListener { private val TAG = "AutopilotStatusView" @@ -80,14 +79,17 @@ class AutoPilotStatusView @JvmOverloads constructor( private fun startAutoPilot() { // TODO 测试数据,真实情况需要业务自己传入控制数据 val currentAutopilot = - AutopilotControlParameters() + AutopilotControlParameters() currentAutopilot.startName = "HYKXC" currentAutopilot.endName = "HYJC" currentAutopilot.isSpeakVoice = false currentAutopilot.startLatLon = - AutopilotControlParameters.AutoPilotLonLat(MogoApisHandler.getInstance().apis.adasControllerApi.lastLat, MogoApisHandler.getInstance().apis.adasControllerApi.lastLon) + AutopilotControlParameters.AutoPilotLonLat( + MogoApisHandler.getInstance().apis.adasControllerApi.lastLat, + MogoApisHandler.getInstance().apis.adasControllerApi.lastLon + ) currentAutopilot.endLatLon = - AutopilotControlParameters.AutoPilotLonLat(26.819716071924688, 112.57715442110867) + AutopilotControlParameters.AutoPilotLonLat(26.819716071924688, 112.57715442110867) currentAutopilot.vehicleType = 10 CallerAutoPilotManager.startAutoPilot(currentAutopilot) @@ -126,11 +128,6 @@ class AutoPilotStatusView @JvmOverloads constructor( setAutoPilotStatus(autoPilotStatusInfo.state) } - override fun onAutopilotArriveAtStation(autopilotWayArrive: AutopilotStationInfo?) { - - } - - override fun onAutopilotGuardian(guardianInfo: AutopilotGuardianStatusInfo?) { } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt new file mode 100644 index 0000000000..e4d2d67e0a --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt @@ -0,0 +1,77 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.notification.WarningFloat +import kotlinx.android.synthetic.main.view_check_system.view.* + +class CheckSystemView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoAutopilotStatusListener { + + companion object { + const val TAG = "CheckSystemView" + } + + private var connectStatus = false + + init { + LayoutInflater.from(context).inflate(R.layout.view_check_system, this, true) + initView() + } + + private fun initView() { + //todo view状态注意消息回执 + viewCheckShutDown.setOnClickListener { + //dialog +// showSystemOperationWindow() + } + viewCheckReboot.setOnClickListener { + //dialog +// showSystemOperationWindow() + } + } + + private fun showSystemOperationWindow(view: View) { + WarningFloat.with(context).setGravity(Gravity.CENTER).setLayout(view) + .setImmersionStatusBar(true).show() + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerAutoPilotStatusListenerManager.removeListener(TAG) + } + + override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { + connectStatus = autoPilotStatusInfo.connectStatus + setViewStatus() + } + + private fun setViewStatus() { + if (connectStatus) { + viewCheckShutDown.requestFocus() + viewCheckShutDown.isClickable = true + viewCheckReboot.requestFocus() + viewCheckReboot.isClickable = true + } else { + viewCheckShutDown.isClickable = false + viewCheckReboot.isClickable = false + } + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/check_reboot.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/check_reboot.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc23567a1fa943f4443ba58cd1b556160a2edef GIT binary patch literal 23460 zcmV)pK%2jbP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91mY@Rw1ONa40RR91mH+?%02fP0AOHYB07*naRCod9y$iT?XI0-j=i1*b zH^MEEgb)ZCg93`6wa2zt@Ir{kR;ehLqDSp%wL)ve%kfsUDzz#_MQsoD>2nGOPsPjW z<2fiAg9`eH%0;6{K#1ItBm{E#?t9Ji|NX}p?|j$VYwvtXK61f#?=|Q9jxqk@_Kx|^ zx#qf!!{6aHO;?^V+`M(^aB_Lsu-v|E7{*J6ad?1Ia?UVK=V+{l_Vg#w+@@Q#(?k1d zaqBQHZylDS`pa8}adExq*A3Iwb;CuAcaGyrj|ArL-gf-E67uxX@49$co_Ol8oIXb} zKSqUe*)UEQPm@YX8(Jk}VhjmF;~@qSfcgk9bc>GhCL;rPe6K(%wBhZ;*6@~LvHzO! z!k>C?p+1@SmCH}M7^mC5<6*<`GD
b^gL#ia>FcLeN|c2G>Q-@4 zE$UNP4Nv))P6}OBZHyGH;bZhJAzmk;YvkMO#!G(g!zO={Z7TLpim;}ezvBtR$?fMU zn9DVppScoL7Kdrnk0K}de$uN?eYi-Fppd+aqRE;h;DV}zK8!v&f(eRy2@j_2x44(VqU8~V6hkXaG8ZZ8t4;K6WxF^p0U7MyK zICHq^wrA*q`+2IMFIE7HDxxZ=Hj#aSMa{Sn`U$R;h016+DUCv0y`F0PRKQBq@WS-` zX~}B0dx4X9+vsG#t1b1oTH0PY9GZT0yzu3RO}!s&GLHL)$J0$e@PJ{u?ORk(SE@$N z!|R&3+V6;@RxmNvCy|xLMbTEGeifUGglcI8qh1xUGzQ*!Lce{&mL7#^G~~J>D*GY5 zhL?hvoaqLEUOGJR(9ez!dD$)Kx<9n={XXvLbjx=?WH^5OTlJLw`I?&t;_k`>t@+DgWC29RzAv?i;y&cjbkhr;HY}Gf({X&MC!m%E`PdiLN?*LJo9bmT_orN1>T&fs4`=!sywW)DC6}PI0qC*b-_TSGU%U)>MgfCt2 zXvPnVUmms=SB{td{QHA??{3Std(De!`lYSm#y`4J*?E!X>Fg?y+LvRDX{~tFchZB% z*3C2~N`GD(m`Jq>G$tX6Fp37QWJ0VJ5_lO)9Z_JGEZywWfgL`Xmw5GQJM2qyPqUCj zLnoL}Ub=f($JX0V|3$w|z#kkQ^YoXF<5zE6=e@KkfA1CZadY$JtCYMi#DVoD6A#+knwhGKTbCL|CUwCZsNa0>K`dJFSPuXw&YrIKz2QAFX zaur{##*F)e0-wUAbk*_8-tXxJ@#l<>`EU2yP1c1ocQ0&wEj68ZD@8@(X`blLmre9W z>*WGGHMzRt9Icq}K*F;BilawnHss z56vt1v{$k@^sZ>EyT+%FAv3*x*f&0VyzCVp=rNzjeunyqG?Ag*@WLl4ORrJj=kI21 z*FqB@CO4~~6s#m~E|i#LWQEF^X?T&dZpBZ1xvOOCz?XgG!531xTR&yAbCK9?$8Gjg zE?iH1*-vF<->YE87(TDrcM-J^G3{nNz6lh%?DI$TtnrHRGyeOVO70W6zeldIrW?Qg zi*@SzUFF$DM(@&78=_B9vHOka06!3v{6BG)Gp!NL~xyn3yMDe&Vb2rEq=!ohf+aLLm zLeZ?Ml2E>wFIzSxojpFxr_ZUW$M4{meSAZw1p3J*lpXjTvR$6AiOvM|_{vMgQNFa? zVrwxR*ITN;c6|IR{s)=(M72-oiZ$K%!WSrO+)g;qR-4L*BB}%sockTGlI_4fIqHen z=%SHSApvWfM|u!L&U_^1iJ0+*8INrq=7HD03!te_9^-0Z*0Md`aYzPT=?cBh?@$mJ z^ z0DSsW_HD#+GcMo)po^&n>lXgw*ADyA3(h{LeIVF_W*ykqU*TsR*ogb6n`pg1@M$q|!V6dvUcQ;%`P6K5 zMvRwWkY@iG)2vg2(pffwoAxy@UP7@Ce`H$!L8DLecrpIS`1q^7FDR#PTRxvQjXwS9 z?Fp466z?dSU1*W9I+81TC8IA!vI<^*B*qw1v@vfDFPS*%XMJS6(NbTiKxPfk1f~6& zFl39it9^WHdZEF^AWkNi9&#XZ-B4jV;(FN zdS^c4YW+k(>&M~BPWwCX>DwlJoR}g^`{BY#>z)6lbH%>IjL#5_cVQ%6yIvkDk0^Z!;^=|pv5bh zLA0Rhm9Pq^#~YIcmk0Wqu366xyjZi%zTd5EA<%TvsR<>lnm}A=eQ7Pd-go}(z^6Xw zAshQuxhNR;tMuMx;_+imPS+a8hvnkS#wWf?@3p`C?X+CHPu%=mZvUE+d4PmEsbr8= zdw1iM5abGN4iY-)@nmG^hDXjsspCB{RgAMLV;epbXgGb(YFGh+pR^7h_MxTUma`Oc zv!qq6;X~)_KiWes6wLO+X4y~m)^3&fs=tV%xadmzX}8D2Df=#9@X$;Q9kc%tcf*Iw zfnl-ywdv2F^Q770UGJgtZnf#g?|t~NJo0A6aei~O(?~Kl(Mu$fQKuI&DoQ5K3Gy%! z;Y`IQ;E1b-{(zxp)n4(-UYo5{S^TzN^S9BlgOc)1U3fIxZ~M*m=ddc)HN2FCo?YdT02%R+EB*9&(BhpAVIK`N zZ%Y7~d=ws;VtZc(b6-QtNnqW6!-qKytCRL?n0EHEkFFMQXTSHa`n~@x0K;X_LNyOH z)JtyL$Mt%y-Y0iA+TALw;f6o@A;skvl<|SWsX%Jq(;H2oCR_1=*B?h0NekJ?whIUv zJT-W2Wpdx-nMS!a9g#2!uyu{RB!zZ@n;g`PZm;amaCClCgCJ=HSr>=GT=$&cy zw#mao!3sWeUG^;_4diIWK6+t-XXSEtHGYvY2Qh!su>42ETYmM2px@ON{@ew0zBm0h zrG$*e+Br!it~K-4?T0)vA==@gxv-K4zVpBQ>l4!^ zRM>TX@Minwr+)0KyJC+?E`2j^6>m^ty>pB~wOZJBbR%|3*racWkFa2RR+cU8nZ@`N?7k=YY9n#<};TuB(Rg zm@poFb5KbuUQ2XKAfF(Q2`A}pBqJxKG!~D5D|&d-lz68MAD|%<`*pmSaLl(XMXpx< zhfer0DUAJSu?4>9JM2py`}ph0kzmNOHIq&1M0VNuV30Ci_Cn8W-x|t)xe>C7w|^ZT zuKifUujCIKvwcefvwt%lw{>spykUE(>#b+r>FcdKU08hZLBT)Sb`=DPs8$n2aK(3@ zgg6Pvi$g!L1XS{(wj@WW$par8i_ZP9Up_#$>eLx@TL`>urY~u~{J`JdK3L;B44O0y zUG%YI8vAJIXju5*MZ>qCXTNaftLOk)uEX1Q+LVATN*THAZO~7+b(mMS#iQHjtnb^u z9xp{<2OPcSlZQ8rS6cC%*!2F~AuKc7zLjzUr7?CAJo_Z9=#exM zKv$tnzO4^{{SN)c$L6--z=6*gKl`dv{%F~q zTe0GEe`h<1<$!&Wvjn@=@Ow^p_48;GuP}Y!WIyyfM)$2*%1Re|k{U-IM(4!UIKx@^>ltWA9x+6j8QXd2qzka!6UJF%HwbwOrznNnH*w z03m2zpo|9`3XCZiJf)(yq?CP$hZSk=X!cX!GFA3bZk@=cEo8v5+Jx=!2XyeTp`P^z zo;cjJvy8^pkve<(keYqzD0{Y2c-N(g zip(FjUpBq-1qX|~*Z!0WYq;_H?~*H*qNtJ(hGI;ggb;bry~lB)Q!Bpr7LCXm&-e(S zr!{;5QI>WJ7m0!aE0fzNN%B2B1k+X+%L$!*S=ZCeo#D1raW|WVpI46Zaie`{GQIg) z_}q)Rf{#>YEa^Yq?7$nCF$DEedeW@c1n0hW!=r)s z4n5teHdt)+sNDwpo&T&7Ez#x5ntgn=I;ooN;s$@8Vc!{#9zXXN_WTN^ePH))$6iQL^^=0UldwKf zsVIW=3BrCcT@5d99g~Alq7&mFtTz&bl;x7PJ}J#Ux>E-o5?VaS9*f@Wr@UnZux|*a zF~)({akTGTeeOVCBB=d19?uw5|T~uw+kk_N#DW5>ZRThw{IC?R_j- zx?n&=57;W~KZ@qUoo&o`^&}GoR@Bg8ec(e~-f(SJOeIIg+fGPUeu^i-L&M3VFVz0q zQ`N>@+1beSH|ZTc_8vKURtfYIWSX4lXQdB(H$F+FVLbW~P|?_zjCyTSieJ2j&x90z z1)oVWMrK2F&Hmy{rR&p&;f%-V>!uzv4ErCdcj}+QrG#`($3HlXhu<+whp!ukBkxe* z-HdtrU;gzuYcxxh90e|)(!U*eWuWI13wma`D(J}ROh@JB{H@@Xls=~`_zn3JUq{v1 zj~qY$6}x`3;NB~izMfIvM0^$j(>5h2=p+b%NR(;XK=YA`0{Z5|wdhJPz-dmP_9bh) zl?TQ`@R9B4;5X9xq*(x65-S?H-&D^HV;0081xt)^c2&l z<9Ze3wrhv+<9{$rN8ja~MRLNw23Dv1$MNU=+=O|9u$XZnj|mmhzROg^v=U`5V>D-`y& zZ>we8qEQ&Ugpyt%l3fJdwH}QKz{zY8q%sGLGOWLQ&W3myX~`E4K*{I`auGsPPOxxix-8 zwg#tZZ~qSJE9fu$-}I{LR}8}qzdnpNUmbQG8h%Aon6x|{wTczLE3Y$0IR8ifN9@F^1VS3oV8OHO!PS5Vnu#ZvX?%vCrh5Y)b z!*uD3hvgZM_5o0@A(mqiM#SI8OKu&v1lbplm?Qqs(6Z9W80YjPx8q5h7lGj9v?L!M zt=aXZg$Z~w=+e=(Vxev`7he+nCcbg|efoI(0%jS*d75cm-$b!&gn{~jBUl`=M07;h z72gDV{LWL{u6Vu2%E2GFXc#ZNQqTHy|4BOUiGsSzc9tiG={-L+jJLeS`KuKsGM0&} zonuLkCU@m*E*blfsh;u5R_3+m_x*zGpc&_EO9%fkpUAJs@|nctp+}7WaP`fA8!q0L z&!woWAhfW}VhN=tXp=tEGYL0nE;2h4Bet<>1uu%DPyp8Ol??Q%54Yhp&TtL$QLIE0 z?BdX)hv|ZUt2aIBzLYWLk%y6@Yz-u^qAxmUnnKT6lMGEu6-YzGytwrsQD~oC8fd zI=P18X*hIWq#x36TVALyw>gy?n?MAt)ogj|dxqoh{98;U|(j7>8y^6#-Wr3aAl!pUE1 zW~HzSkLrQn`H-b zEd)$NagAr_R>B4UN&#vGIK@U$Zhzo)!?Ab%%CP;nf1>KqiY|Q%`N$sKQT(B>;#3*v z8ZM$|(p1{2Em3iHq5atp9}ZmhoMHc?|A|h=XE^zDA#QfAihTOeuMES7UoG1hh{DH} z$OAs9uYu)Fl|BTjW#1J0Z%E*iXI2E*#9M5~CJZW~Uj{q;V(~fSKlp#%TAbAt ziyx6J2c)4U(*em$GX@$%rNx}`6DmbFg%uEH9*JpgUkBdsa)1n`7nIe6z% zI2^n7{~QiJ?q3Z1KmA#f2z}_>)GD^|f`6vZ{=QeI#Wz}?=OXRYVJzd;7R43XcJ#sU zP@c-Ni@WAlFwX@kq~FO!Kjsf9<1NRWBmi{!(eO*3=~`j=TFTmEbGaP|>2NGHV-RiZ z9GvJ8GsZOtcJ@=KIR=iq@6coC*xeUC6q(x+koGW-ZLd;(dX6qWnIxRPByhaoU!U?y zHJvy-9DVbD8g6~fbF@nRnXa8q=$ipfs50am#kC!FC^W_d8>if`sckr~9k&X2_>^fJ zcoo>mllp-TU6kK`lZyApha*@2%VBxj2Z+>uyR%_aIT#=L&BLS{t8tnS`}pA;Wd1bF z+=ouEnOWy@o~xvS&+Ab8p^c~21KH3YI%%PcLD)30`Uvr_M^2gL()Y_lHny{V{f6>% z`-%Cj5a@P`PED|#uy&X@Wm~aN!x*)3cy!c4u7XJA;_WV*n8FL9Clz6g--)CcF8JnQ ze8A^f{~c|Xx4nP3?V9InMfn@~B&=282Z}qi9Ku&N5o`DXiNbOm_9<3m%W9mO5c4YL zNI7hEdR!bhdpPuY-##4pv}ZUURYVrvu$hji5dZ3Xm&TU%ycdwx!qHPU>;)7rCf*;F^Ncts2xR@7CAo zEPwO6wL)!sl@V8x_>KXU5Esl_Dgv&P_HF5zrLGdT^r@$Px{;{|`^CQf`srrq^tXnE z_!BriC>H*>MsveoR=8K=NT~{Q5I_R>b!=XK(j?(hxa(~*{7%@mXIBe9eqmS=faw%r<#cV zbP~fTXH3#UUnDSS@R14{hG;8zVfph>iv5(G@k#N-zz=+A^+5Xc3=O~d!#7=5jpu)j zW%oMz;qgrG*4KWc-qv!H7CHGLyh=xUWS1AADJB)jsG`}@W7r>sv^b#RIk10NXguuK zUVZjk(CBBu!KdIB6yBD+)?;!kM1a#27>|>~(YO5P;pm_KMC8KWZ{9dJ5B_`|JX(!8 zMXSJ^TB*rQujJTsvmt+IcfJ&?Wi+n6>1`a@mWpth@cY(d?uH^03Ea+8FdFugu!-vXp!Y#Wj_IQZEyA-Q$-* zbdftQX4jjpwa&>K{!FJoy(ew^cqT^z=+?ul46BnLjMW$2E0+4cXQh>hEG)nX%Blf0 zRu7yK*VkjQAD3bxLow*S;h?b(3SnK;(t7mI|1Yg#$A>fi{`WX1n+}YkjTim%VR_RZ zlX0oSqxi!oS#l$<^zly$9fNb6zFNpEM_>&r_|heI(9=fhwPG89i!EYG`(Uac_McMr zbjXVN(eJug0*`jza2$-0cXUgs_B1D0O5OK1HW+HgFe(KhM!yXr8EbfKH9P~7Bbj*m zA4ly{Z+jWfd4lCSvpc%W!+)!y`qp90qQan8C{9~ip|)6=c(4K;)K^0tJgA$W2ld{p zcrYUpJJWA)nNRO#tpt9)toI`)@W z4aeW{tC5c#p3j8wj0=bHQ@+%B(66bBp-1Knsg`H;!-|QP@%%{^It|-Vu;esoJw9Z# zMSsJAfd&^{F({o4Uxab^)aeahelgN6tl{Lbr<#`rQ4FZH>{GEeEQa|4MXg{IVg$H? zM@`{7y`>*qIf!WJDf_wis-SBXJ>weB|0+pg*OKn9Z>H^I!)?FwZ}rUV2HQsOf(h1X z&!;>U69u)ULfA)f9Ed`pxV8>Op-^C32M=kiLX(_}j=f}&gJ!G?Pen(eiMFL8L-&xU zM^2fO3e2mB93h9Sc!&SshllNtzGL0>9pmw$uhBZEw?%VG6^<3sg`r$l1}c}tN%J^! z-p0`hUiNq3a{}-YPraj8y1MxjvDwG3R4E?^pAMt2mctW6Sx&5^){QbQn)lMhezqCP zF#v;k4}Q=|24mX#9$IsrftuxoiG)T{hchl47Uw*6hio9`?a?>=^su}^_ozhTw6~z3 zwzR6$3dJg=BB<4gm5HKo0cr2mX@3-pudi5bZLXHViw8b(L)4k4_=u`SA{oy;iGjz3KI+PBnI4hM7=5t5Z?c#kW2#?joR| zTre8DAhK{+ap1WqxM1hvoucFdol_k}!(OXWtbFJ}M_k~KDm)h|#c4c+#i@~Jk~%5L zFA~4~v3Cte|Lngy_PsXa!@gAcP;F_o;#p^1w=q98C*+RCSpVuoAG%LrIW8IIq{l;d z+klUWk$78~FhHB_#~9L59~!8O_eq6?!p5~L8gXV0N9~6xsMBK>ZUjiZ9MxBW7F{Bn zTiUmrmMiwGT1#bg$+N13j@+~KdZ6Ss6;{!?DXFVt$*@ZC&@BNM1cjxE)kM2sMB~Ce zCR?{#$+R$>F-^w|@Vu35q3FLG!!< z$%c4aS-f1h`<6wnaHEQuRf~&yuX@68pNv9QWW$121K#>_LfEs74}G#0107__1^MF% z4O2jWo}*9^a}{%7A&X!w^6w6_wi_PLtRKu84iF7~^xU@}jK}HX=?|ZI#$x!$)}@kQ zX|Whil@Rko>r{vrs}OY9^=S4`mN@TFTTJ9hXpWJa@eX>*F5 zchkvgxE(4>h!n5pKlm|4Mj0Q}&_aK%2{g3%E3gF90u?{%$>610r%zlK^DL7RK$*wd z#3Wm97E92|AO+{Y)CxTu4<+zuY>i2s(Z`NB&@2T~awdtE1;x|zX*^4}7(O%PExU8G zJbJTkhQ2|?AT6473WjSTCV9TW8LNp`5b-GnpZ01sVh@%Zr&42&=qEo`OBJ5RB*f{K z+~h*bQ?Clg&py#@8(fQpAFNocX1bzO#nmL7%IGOsjY1 zO`XV}b}lN*PW%Qaycsp5H#QiS>}&XsPvJi^GPl*RLdJNBG`z(t_BH&hD)dXC@zbQj8mCL_Toa1qgf9q^E}5}i zt{Tyi^v+99fOyEdC_*ss$qZc`9vPZ+hszkD;AIC>y2zdMQpkAbr&(;T&53vYzh0>* zELI|3&-3*TMa1cc)1FRUOt`B>zWau07HkzRD@gNS&VX1i;43fIfmiaLRZE0e z0mYCW>sR6Ur6PQyxbcHR)7UE)bm6xD_ANRcegtK^x3eB)+rIY9XNdO9(-Il<*7Jj! z*?$74qEW{@``@e)nIl0EsP_@8c-9&7AAIVfZ;40gG+n}>dTxMFs%E2(wV~vmlbB|c z9!?7&2#>&rBiSzvVy4-mq@xj_@migH8dODLPs^u@Na9 zaf?7Jg;pv0zD3~TidD*|HJ$GKEKoY}%UWI#y?J% z6c^WFE-tNL6nn0gJ|(KC;7h>yJ@KB`8Nb_RJo^%_Sib!t+Z0Ok!@k%X!|jUP3y-1` zr5D=4dD6=N!skALnFqG#)Qn>oy|Pn|Hv2jXncvaR1i8(i>j^#lYCmc>H1urW{0{2HljKuRUr?Ni zG@+bwC?@227G9I@H*2D|{K~FL;okhL6<+40$b@rWzH ziOI2b5v(2+zk#8}ba2E*Y%MACh(^{nr3r-L!Lj#uqK(wk`D6{L{BC$rT~J_=PIxa~B|66GWN#=`pb0my5c?)0DzR$pKhwLVohK4nu*QQA zvyQzsOTE>YBcF+)fVgcyzfMCeXGG>}p6D=W{zPmMFuo#;Sl^Iw9QGGZhc^I3PDa;@ zBGaVn#-{D-wCClOLYI&3Q|uydpF&}cXFftjrQFCIt2;MnoBzGn;f{UA+mO-TXC5fC z|5oO>0IjtmVNh+hb?oDr4@adcYv10h72=aVqQz=Z1r?_kRwxzM$n});vs$U)BeAv% zS!m`2uZp~AF;^6Ygffok#)T|>%WBi-FKFIcd!2e&#eCl@_x9Tdfr{+d&3f(daC)E3>!B^rL)m5hTvtDf5IVdBwkkl7hNO4LMe@+s5CV#lgxgI=-Z zDVR`*U?q_x)1cXyh8!ic;o!4f!FOX+G<>g1eS!2~pGTgKK8{8QO;Hhi27vgkO)ufZ zk&-_>wWEI1@6;SV|@>n!{h1Kl4yBdGQi*wN;zPWF_9JhP8td21fiNXcTgXzxG zByg>s2>4zYK2rSn3rPQyKE%3Lo3;-52@Sd7iOrIH(b~!ts$%Yv2jBkD3172k50g0i zA40~2oVMU=;Gl!nh|r3zFNor*@tjCfpn^|j6QyI-E>uFQR>@*qWcCf8RI5pYB^MZy zovu=?YND71-Pa6U#PeZ?J8Y7npg84mdU0PXmG*HIp*#L&RWaE$#<%jHASyn`T>e{N zMwI(dcHk?2W>84d$jd=~1}Gv0riTv#t*ZDQA0rceuQuw|35NOCUJ*vpwF_Sb79IbQ z(H27V88lkNAAAd?Y|2|%;)S90vW)xq8M`6ti+A>R1TqeJXBu6%RE(l3hT7ZL#9L2V zcQGcef?2`amc!S&UPn21%zfeRl}g&=hbIxuN|NVU zw2Bq~pqY+iYK@n1Iu!Tk1ec72ohxLZ8Sj`F&$OZw8cr=ah~y)yD23#UD{4tJzkeRu zUQO>cb6%9E`L+WGq}1o?Wp~miRJCsJmxzw96KHYRS2oc+mvno4=FdvfK;e<&S>dh5 zH0z-ZqkYn94A%~oV;hu~Oph;G+k*>5b~tClq>)n~#ir!><5__AXyc&=c~bmlK3`XH z^vC3(Fv>T!O-;qy`EPe5Pz8rAjLrGIxlVKrb75*6@mN!4b{11Gcq(as9w8hdXMEvoF$$6%$72tWbXY zISJR;^QC^+4PQ7#_C8e%MH92hZ^UC~El2p-Xg%Hm;EUpMGUXMgX;xRSR@%|m0W$87 z@0~DY)8@FoL&B>SOyx>_hgq`DUD(2xiVGpewAhQ&WD9I&@ZqJrx&0VAf%LRe0dF}_ zSff`goU=Rv!hqAi+p2?&n4Nit+c61&wGQj;11x#b0A#}kN1-2d0{87h}UEeRx z)(1S9Azi01SzfK=y;p#Ue+A;Wuu;^ET_n?rUa?ey8{N1LuQAw$M^KNFHv^L6g^_Vu z4~5UcpnGi(y3~}tHq-4NmR=N5RI;g_AL_fKUD+-Fn|<+UrsFLA*p*1oyq)zFv-Fx> zcm~ah0#G6H*rhO=g;c|=>3z~uIu(yn8^^7W{Eo5Ff2|xa3T;b6HuWuY_ zP#QkbMXTf(YoDVymLGptuVzPo>w$VpjjpYnWO3~mzS+MNzu>w0j>0d~YjwOd8h(U- zu`Qas^CZ~^{KJpRU-C*e@`Gf?AAz)}SL}z7b+goP+HV){VQkns_l^r|y5)NL&r(GU zVH+oX08j+|{1sp1SeYV_xCfT=OVZQ-?0Dx*^600O$#oB~@&~czR6QLntXRX~6$>O_ z9u|^={XUWyJok%FNCf0IPf~;`ddk5;3fYtjoQ^jBT2sQUjtvPEZ~J3^-PoHtC)h*}D`@7WjD5x>@uHtHDI3T& zeCYwxOZ+)M>SN;|`5&pAM5eI(8K^68H<0m}+7)N5v3157uqHC7(vA2IPLOX^yJA26nZ{dG=;QS;n<9ZM>ka+n zSx5At;btXNQk(HBm|0f@)VrT}CWJhoJR6plH(gu9UH6Og{+IM2o&hJBBCS^)Og zo_zoB2N%E8v%PSjpexvk&XH!H{Vtq$$z@FSJ2^ffR!q&>)P?yl!{!*v*} z1f&`lO>+c;r334<#6-8lr-C?AbD-T$c#mNsYSOTkg$7)}rBw$R7Z$4~k4NNn%?ew_+gsdRKwU?hmXPb<<+j`1~01_#s{Er#%&8-!Q-xjKpF zc*XY~A$6+Ho_O`F#rC)a-@53FklNThKe~Ul{l4F`4#M$#VO|gO=`f6)`wYq^gucJ4 z|An`34c5RK+W%%#a%C9EI9;c^a>I4C^1usyDVUDg@d64L4$ntx;bFxbf=@Xq#EA$5 zTG541o;8`yvm|6Ch9i3DX{#Z}uYZjQd$+AeKi8+z@ewMj3;wBX_P!at{~?-By~j&7 z_}IGNdLm;EPqgw0S$xI~N1#3~vN1gZ)lf3(2QTC+R_in-;xByM+!O=l654wBm*`y_ z4?=QdL;uP5X|+13AB7?xQWWo$KwR0=hb(LhI;1pgdpWjG^woO*k)3ly-vSb9YTWT% z{aGPat;=}&@a&lOi!Bw_a7Y(0ljjkJjUuCm6P8Yf!y>j;vM8Ms+VG~4gy7{oH1upM z3JgAzggM=gQUj+Oo$7J#@Z{h8hOy||)SxfU{fuGjvEQ$we~<5>(z_+%wKf%%Rt$dt zR95^&uC^ckMoi&9_K2Sc&3oC4*fdffntjW@{WmN8h3_vkVULU+yytAvuZrz^%)bzI z?{@O~*LpsjM{R6R5Nl_JrxQ-JJwtq>x$j=~q4RL!L&oEjFaI096r`vvTh>NPsVsdjCZERP*CZOMvG+QSL^L6YjQ;)T=?L*xw3r0sW=o~lcxi7J-L@pI zD#}Nbf?wYL0ex5fpT)R*?DlokZ9P<9|09Jp?nI({KtImJg!p1ZvNgiv!wVz*Lmu}X%#U;mzA zj^j^y(joHb#@>S>)HwVPq1f6lx)SZA1K$+F4{pR2SZ|@jVi)`Oj$iQVBlb;BUYEY6 zEJ4Q~(g3`AftFw;6b!Af4%h}dyfDT~3a3i81(bMJB`+W9l)Yw5im`wEum30Jc5Udi z4Lh=n*a1B&^&UVPT~>4t6mat1Q%%{ui#kz@M8HlL~$8@iWWjLsPw`w|+E zku&iqrJaA~nVvEwtD#%rrPOgkEEx-wAp3lnui;{RJ0e+FTW@CIgrox~Brq3=y$-(h zAe(&c)WW=J65!9iv4@9IONB)AL%$iu=WBZsWodVE^wLKZ8DMGBTWF5{$x98XNeuj* z+~((X!5P2Ih} zIR|~m^xX~<9}DxlAL0OGb%#eXlc`ovY-Al4FBjwn{#Mn5$(5?dEVe<%;=(3 z3e1Pl;g{QQff9vv@Z>dycL|w|N=wqAnQl@fFL3c%A3U2VIV{Kv7h3g%HAYk?LxaKz zru->knq@zmP~UGckzl+fMyG}M{`PS4!*7ZtS^r(w_>(U2%#hO|1!h0-AAj;syGFMa z$2F(Xu_ED%w1~q90^t#ZSgAPeYNhgf)b(X*i%0yg5qC{iNUv=9boa48`*~MS`=pPP zmIdZq*$7VC>oB=yzxSo}=Qzq&;&$u(7r}ELidXs}Y=P*4+qbxefeUNA@a69nyn8{8 zBQTD_rc}a}$l9AyzLZmz+Z&JJ5ce#4=#7%*KVJ9KJ3%QX3amc%?jueThu`>P7VmwV zmE3V}Jn&FWw$i9XuzL8G27LlkJhS&*QrFam?Z|{-;8O;CWed4Tk+$eQ|0%=bF)y%W z#IvTj8yld&^xgm1I|p{ek(XxKn! zV|D%lFLm!4zvODwlIp7f5`3LheQHgX{jkH4Ca1^7S%PB{LKcUFv@AP}l-A^F*vqcq zt&1Q8(k`w-N(C#GJ{Gm5PeXIvrE4wT%Dev&Pc8#@X+P;ysLJw6!n+Kx;i77OMry-P z3D~_XLFGU_PJ;Ab3Gy2YHEc1U-!cewbdUN?aw!g$Fy z4vSCy#vZh5e|hv{!{Oh0foeymXcd*;1)&4VZ?SPMqLiHzS*$s-uhP2WKaLPXNB1B% zA)7KK*Mguk<9nR*CPKrTF!?ly+`M89Td(s~EL0f?SLh2YbRCH3Z*fx8u-&bc+JX2{%N(3QId!;d3KV6!D=(m#3wI6-p0nl zi7#d)$a?_~9eQ0MNUPg;$tzP%4$1V3O42!93N6o`>6WJ0#s zMI&uapmvo|CsRiDfBM&+mZGv7`e`^nGjr)UE57EkKaSJA7H|2^9!|v?Qo*fa^fOG$ z=yQ#aeBLlT@g*)Qr1m-(>R>tgCodaLzW)zgDDi|vQ>22bCog=`$4_jO6R%)4FB*xj z#-vn(?3j`uR>`i2#l%@QqLh56#^^GEEd5pf+s3E7#=lB|Y`0<|IQ^!M)X(f!BQ#it z9Ri}F$i9;)?UiV_*lLbLkQ3ztd&ZWbkFLVcM9YUw5lP@B&l>h$`VC>H&xUo}`Hk;% zYc=7z$2szmuaAwTqrLwX8}7l6nA0X;{MR2V9LgrWk#Nv=h7J#Vy1t)FAM&tF%I~tX z4aIfh`m2XyZ~ED|9^fL1m5No0Yb-w0%2@VXP^1QZITh0ime7!(ZX1~=9Z+j!Wv#FMc)<N39c%2QO3zBnD~HsT|`YS_Bu>jJ-$J(KRz#y>xIKtJ!hyiN9ay-*fqm_PQtnev%E zLA!v`s?&n};()%&^3#XupSPiI3zQ^)+!@59zItL4x$gF?;Dq(&SfY$0impTIe&&#-+ox>wd0rmcKb;= zWL63*L9di@-6+bU38F@G5kLyvQD81E(d?!eo`_~NJoAy84rMrKX&5KUdN~e7*M-D% z_&vkPzj%?pr1OM+wdALADZWWWmz(DQ6>TUC1>P3 zpy$9+U~T?vw~I6Ml(ZC;MNk^V-RD@M zBRG~-;ms33lNV^oh8B-QHt}L`{lH6j81ZXr>icy>US~Ubo8IMc^RRtPAKK)%22Y&y zuT}6JTK=Q~KpVg04~3xjzmMl!IP80XelFzPhim`vVN3mmXbTnI;;e`H^|`o;EW7{! z8v;p0K~(XK^M~PPS&@&LvUrB2*YCoz;^P|Zk>4UXs1o!|IcIrXJD9L|M^T#Zn$CsHJdPV((Q z@-pBRy!aJQ!w1yPQyg9;lqCIxu-~t=Jf@Y3BGQT#5A~t3ik&>+AD;A=W2m@nK5eK% z6}znH=;!Mh`PxYT+zCHva+ZE5oS!Hej^y`}!qYJ(@pvjPr}SmI<70m~W5nCj*G|0e z4a4Ez{k~zk^#h?)ezGc2Q2qu&`AR|g+X?+`g!0c9?~>Ch7JkYn^4`0a`M1)X6DI{3 zj}uUG>>Cf60$D?BdYa|2+sQ4)-x{BO&5rj~?_9C0Zq(8?>8Z`Epo)lnG|CPeInEt4 zH;+p;)!T)%ag`FxiP;O-RXl z&uXPf=JLU(K$Pi0V!aq^&$R{x<1dH}bM}!7Ti-$u!cWO_!jSiUAQ^}iDT+~IZs8lJ zMA7vIKrAkFtKhUXeQC+@zy9^%=pX;&uzj08$&3M7#^S=EptL#>6W^E<-|Ecjq&V%j zH-I!&KPF?&bEpeCy0bAK#OEfvLTBHDWW+8wqL+V=u|q4H?rQ^mG2Sqocjm7`T5o}Y6h+0?i0{*B&=>9U+1FH(qk)T}qLT#e+?*>* zXecI0)_*HvST&(J4<15q4?4oyoB@DhT$mNR(@V$C{q@5kw7T8AVj;6Q>u2=3!gnb5 zy5SR`cBF{F^!G`$FA{@BAKB^$I%p2q3U|SC;i-S?mm;6;IMFG|e)_FfjTcK5l%CL1 z7hAg0_xE6d)5Aw7NpR6f3zNbGaSfv)ltNEd_@|-0#Y6cmnBKP>aeeT&hv^ae!Oa7@ z;kie1jJB0RT5(V6m&Z=%_Xv+)_iK8yzP@(IG3Cl3cd+eTW1~ zUI&JobkH1YbUkvn3cztWkFr8YT|(MPECK$ zJa*3gtYP10f3I$9=oZH=jo6m@*5>UGy>U44fj=5fe&|pA)sFiz-(l zpUUwgeT%Q^j+HA;k8uzP6*%F;$2Dglk~!@ox6X7V91Qt|A#xOBDk?Rl)Yr6YyqfHi zZTsgSlPX^!{&o$Z+fJ?~y-em7twZ+dZw6nC3u(f;_F4rC+f)SO$4i zD+^}&OY-$Y-P7`<3yj}X=7+l}tc4!idf&RvU4FQ@q$8dHkiATw3}M}Oty!^DR9qBO zVD)|LoND6q2oBGrQ~H(P(?YLq6YwP^+qZsDr_1;2GmqD+kUk!~ zR^Sv<94uj9YRQ0BORfX`^_B9)FEY2n%2Oe9p7|k*zeJ$P^$O=KqA|$x5Z{9w+fK#_ z7S&0I+w(%&laXETn2+^>0*?}Si}Chh|M`4coc9r-#(6HD>b@9Hqwd@0*f1x5kZYUR~I zs@QYE4==pJUwOd9sDSE}7^g)}rQ-37i&af99xiCvWwl)Db_S~>c3B}QYJWvI2SFAQ z_Bb)yBnmXf1xJr*{up3HKKOL5;%+b1sIcmpU|m=7Ofi0*4%fj;fuBK1F^!!Kq%HT& z3HuVjZgZqC&9PoKR3#-aZIB(?Puq~j@g?IG*L?fBSU=wV8mpuZ?tjT}^!T^P%|o4P zb64XDF0{y`_6hLO>r5CHJ@Fb|9pCjAsb~N=2dNiWM@kQf;{iqo9C?AryBF<7zhLo&z_5R}S0? zyHUX`67W5klWPJCc8+l-8AkPMk35aBA0B9f zbBSBocQhMAG&`_L7Fvpm_TusK*QzG=Zg;$5f!{jo$HwKY&y)5`Int{j$_ZRCt>=NW zL-r5}{Zl?`c#&s(iE%9gf|HC^5aoV3X`_`#)1kS|H@G=iCYTQIQcyT?PSV~?l-K}= z1Mc`<7bF?*JuOU12AKU2piZfFpRpdL4kaJ=1~BSV z^9S`h@*TI-e8+;*Uw!@4bkzE{&+JDUi+=bP4%Q?@@Z}Re;vnPJ7ik6W_*o^0Gj5W$ zpnTecA%vAiL6LC2&WDf6(|m)JzLdbDYkRVUEx*S-FRDzD0M|)Aooa>Rx+<=(^vqM& zS10w-5vRg9CF)tJ{Af=Sq%V|bA;^HQKE_tiY zl&Al6B<8psQ1+qIptYuf$3b+yi|4$x!5U8VNL1Jj4?5a16 zava^JxAY~s!P6h>7{_1M1^Y8gkj@NiS$t*>58c;v|w zDWS+sPGZWJ-$dK+BF4lq-O)&X(3r34i|=Yv(zw*oWYq;@ysQ&=ioq}E*a!7>UZn)F z?bD4`HtQCF(JT_gvfQW~@EblLmjY3k60i9idDGqQYr?3Wg^K6ccpmle}N5 z!Efk_1#@;rJ)nBl!Uk$ICr%9Sp;te;Av()jVll+` zf&)(*$M4W;^%F5TwQY;x)Wos%OIyQV{QB=G`Y((CWmn)<5Un38%j{n`Im^0d-$Q0j zROp)VBnKL;;ZrfxMzcivB7Q4A@R{KzTaM)wdD{6j%M`QdTU zY6_e?EM|}%1I)I9FBwH%cqakb#+!2q&lB!MbuyA|__WjTsvYOgtDn#m5qeZmsxI|| zX1jT9<>C?noncA=p~U~uk838#8mm!U+^4J4B*4g9;L5G?E5>M7bFApWG40$f9s*sn zY>r#Mff6qTjVIYuZHJ0pw8e0P-puv{z3upeot0DSqT(*K=`Wu5G&%SiO1^d27daLR z^JtUiIJzU2lEGjk7J4M9crh0p9-Sg0*JL`6iw!#U80psD-5H-!k_l9gk9=mrH{pTEZmcdI$V=(w zLR?P>c+r}^Z)|cQpEowQOyf@ae2>aMB+hwHYFM?n%@A+b3H|uTAOB8Fbu$3-%!(p* z*ZI>XF{H@-2rQAYtNiUKB4iCradhmUb;&g+>6jusv? zuP_kXqxfc9j@aOP66y7LWzM=%pC#ebQG;iEhcP}SY#%I-q=kONXFS#|6LgEZ$W%Z~ z1U14lH!jA>l!~a`hvF_iMU;F`sxWoeJ!T)6@aV!FoaRwB?IYu)6&?8?k_q)0q9D2r zpE5JQ1WG=~z0Fb`pj24$+QVNgUOznjq5p1X-uWKsy31`Gzj}K(xbEszbkma=dwZO6$g}ALWxP3_9UUQSlj8YXv4k<9GJMrZ|O1$UdQA)xIfm(0bT# zA+C{1C08GcO6k&RjY5fMdE&b0l5R|(Tuf*)EsUbEZ&B1vMvxIm|4qm|*=hRbho}e0 z?r5Sxce2IoG0+OK-fw!wj|>N`dY)a1nkp&rSw-x8RjgB(Z66x_A zWUNex#A<|GVc3`C3SI_w(uK=J7mpl;U|+~M(BVCM(9$mUQ$fQ^F@G*3R-Rm~auQZn zBkL(VYTe{miwnYRANgpxUy(}|GAr~nVD^k#(NoY0MtC=%MJqLoldb)6Ex%tmKJ9hP z<=t+lrLgcq#dWo=RKHf9a@R)`CY4miBgQd_QA8Z!$V6lnD?`)F>+qdy;W1#@0%NuA zq<8qf$RuKnr?~JCs}-%s!z;SG1jeMy{ujK_5^p;GY3v6C`Z%=_&+7v4kw>^1<0SO> z5`tBBfRrr#DxjiSHtfR|U(c4tuN^PH`f86)!{)RVmi>FeRsTbW@wXD6$Jtpg9+MSh z$swC5Gp*>guO!tt_Js(rb0!i6)8wj?39Vs|FIwSyzl*og{+dpE!$zROd4YhIvgn?h z5lz+!FlqL`$!@}z{ZJF4eIF<6fcD6)IF+~vX!oscb30LuX@gE@; zuU+cI!A;cj3d2zuD-Yy(B|}H$2YwZ$_uUwwhSwkt%0NoYN&;K7*kj90yV4DfywBql zK{n-^u08NJ3KSE5R0lQL@9?ucJX-DxhAfY8E=6)|aRk*$hJGuiq!%qkL$<2S@;@?O zakb{`^tR5z=~Xd-GA2UOHn~933ZH!A-FL>_n`tFf`^3vg z1sk$$G~1umC0M((-}WYzt{Jea{Z=gD2a0Fe#KWrMn8grXwO{5e%b=P-J+9>9h%TYn z7mv}_){p4)_kF7Zr)SiAcX~8-TBbKY`vrP4(@({m%9IkqU%S4Mtm72DcZ9^#R(T%f zq(pyCW}j67u_IFCwR8&uy|Zs4Y|>sBOuTk0_G^-6#UP^0YUZl*iP}$Zde+zIHIi2-QF?!{8VSiD z`vMA9WHZxa@uD}H6UvC<>EzX=XlRzD8)7jz=CGL=#%t(_GZdZuI6-O0qY}{Glb#~Q zEA5R8!I-32S97e1h3j|1J^*ynQe6zXaRt`oB*?SBeY#M8+UdQfYPPe3OP}yIz4@!Z zSjqi0Jz?|vxQMeEcB0dTt{;=eJ*8Z6#48+P4R7ii-iZup>p>ViIQLVY9mLkuuVD(e z;sGzY*=~Y*eD$p(rL9M@#RFD0tU`k}&W?9%WUb*ePPSoe@&NU??>B+$RLtC`;+Dc` zeD=3)s>VC=RE*QTpWgJGC+P!uuTgUJ{XyibPEi~Bo_!0gx=~4Xj`zT~>0g@+@R{U| z_C1g2&9s!g@}kD4V&8Vw>{n$#maeoypk)Du`g_$QBy4+&%5q*UGiqmzUYIb;Y z@3cQF+-yd1K1nxG_YF@}&R*}Nw%jSfNhMB(9gA$EC+ALS#*+GvDl4zO%oAFF(?^&?)>5`MvFzuMOV{2TJo@JEOhH9&w-(|>ogf?8tiHl!M^3V;dird=R&vPWndj&%+Abe%wiO8y_mpm zqFHD1hUo^qE#rB2=dCZL?yl@B4R-~5w=vV3pLOAI^29GHfls!wmi+ltHz(UO*^*63 z*!fC+C@|lcjBEv;`g>a|LF{FJeIiTO2K&uPDG&S2nb{op45<;D&g3CbwBCN^L>%ggCEJK#^bi@fssJ<%sSJ zEczKzPDm@VCY$(-dM-TlF`=vYHnC>Qem|M$sEPN4vRT99B(3Kc#&j_7-6*e}&YeO2>dWde$-iC~iC`D#%l zzsIah>Kb0d6?|j60%BxcIjd>Yg|wIbvWbTBrBi9=Yh3)ka2m}4t`$|%(A^h!91Op# zPbptHUhy06hkb81Lb^}2>5c#FY5H``%QPvMmSa%>k^R2E&Nt7w?@p79`LIMzMAb)| zbd)fe;#Z;7eqBFBvB`eu>Q~aLoY2rPRWv52jCXA8_-Y{`*B6j+YnxFYdmk4sxVNsQ z*1T!Md+c^Yvv>!c@$-M>wZlU%dc0o9dXchvbe`mx2+E7r=164IM2LNkW7LX;qM&K| zz2C7Zyk*domKweAYsga9vLQTRq=?fOls%t108=h-2m=DiE%?q>)tjQ6kWn<-XPs;IWnJVn&cd3^g9YH>Bcm@ z%~+wD{n;n<7MQ&TZM+-4^QoYonT|dV`p(bsXNH60Pww?idIi6?_jdo@cH&g+>jM7) z!^zv8uSulH&dX^MJbJA-vY2MRBt%;YR^!IEJX|R3Y9GT`@a9u(tyU$TQh~FYHGHqL zgv&;a%Y45&!5j6V(Z%8?hvk8v(S^Cbp#J{RR&ss+a9Q*Br~mTI;qZr_q2BX!9^?h? z#auX9F6$H5jc3`6SP;`{a!p<<4)DouvXwAIJN-f4fN%22tLrE#G)WeTx3yfY*j~x^ zsPFcb*QM^hxW8W(R-ee}4gcgqJ&Syy{mj?!6wUNgwF*2{tJx(I^Hs1JdeFpX#$zQ{7DEB{iTiQPv_MfzcwLUr18@~MF;l%b+ zRVYss?=scKWvZZywfCn7D-rW5CW?!ptDM&DZz)JyE1K-1j2mXl;l1izr~Y-?zj@fV zxMuv4tD$|;x60=yeW05Hoc{2cXAFmL)z71<$d-DH(u$HeAC@}Ra_s}b>8(7P!TP!8_s?3JI610^$}zK4sQN` XePx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91mY@Rw1ONa40RR91mH+?%02fP0AOHYB07*naRCod9y$QH|Sy|q>&%OVt zpbAI`L{L#cf}$jdCNYBuB@xu*v0DL=vWmxYXr4!C3lS7GU`NmdMO4tx$YYu+K?NJ9 zKtWVMv9;SYN;?n_w2RSH@x4lzO(i| z^J@BA+}2Nj`UTVO?t_$q2T!}YP3!w>e79-6zGzxa7ftKBtu&uB7Ev-ctasNptX8WV zBzMC^FWT;U`ta6jde5}GdgnB4zjHda^{&;6UUZ8T{#G_J^|zv}zvbKSH?2-wJngJM zcUrAKQ$_P&6~_J6D^<%nDd=RZ*F`Y7$Kr0#VHR&80%@(kl@2PtYt+3{gFoJyrr(Euf?xVEU4`jokHah4oAm*-(E}TKA zv}`ENsT%qvPeJj&(%dRby40A8|L)b+>do5O-ZX7bZ(jZQkAGlB{KOeK)=!jh)>mBd zFcs3JTD`|=ksspCNGse6&8jwyRrb2OqIyhKc=79?Nf(uCCi;U$;!2-kPf%IfTH0S2 zuqn;oAz$CHwY`0nitO!Zej+r|_;KCV&wAEM9c#Nt3Z%zyG#PSe>BArX%4v5^F+ExVY*8#7jK|t0n&xF=@zr|wK(^_+7P71bIJi(s zzXTf#BgHlV#nZc>?VG=#m3&!?2^nrbLT}KpHQUwbS9e#dtG3tc*REdnvYW&C_&F+u zkDsQ3y4!T!hrfAR?>=2#-zx>AQEFxsM=u(|dDrmLYfSOg8airM$gDqrU>0Tum8L!N zjb|)W;H%m0C?06p!%~FESxkp92w`Tl0Ky;KTCH9*9Xs}8s~5lc!!zT~J*te|xt&}; z``P!Ljvv25Nq(vx>fggoSB3P_WHD>k(qycW1{*sP4DoxH*@(P&rZun^f4TdGF-m2~ zNo!y)>`Q;xij#&n4eW(}7v9o-?});_ZrWPCWb4S0A71^~k6mk-JMn=~@3d`w#dqFk zTHo>vt;|!D*t;$r^=`2wc&ugcLS-=_ZR{dT`7WZx!g`fUKl@Jfog^2<4A8q(!-O;2 zAG_3n#b(E1Vy}I(%759^9m%^a_(17ti<|Tm$xFAkwqB@H6L6{-UTLlxXrIV0Ma?&A{|~<&Qc(ZwlVBoFuT&e#U2Gx zKD8}73L^BH)UbUXbc?l7`KmuOP|Y~{b1KY#*Vc6CsjHuS*?&Rw&eH7noxvGBZSX16 z$x|H{TVE3#R9x~k;*Kt5JZ_Fw_og!D$&#kt$p1ykd%m2J}@5mkx z@6fh>^{cn1-} z)fdk+#6o9*XkhF!`N_?br(PxNUzB@d{K(=t-%fMqdMu_^Ecax|dpw^u zyqFwn%|Kkrj!Ca+>BpMk0F62@l_BHyVp?Y@yT^W3I*^@V*9Qm5mOf&AM~U!^iQnBu zD0U*V4cZ7$8Zq(f+pE=+RzLZZci5AxdXRC)wDmJ|Ep_tL+m+=n!UOWr&5NnS=At&Y zdMWgpnWA|XUo$ff&|fN)!6sR^FheW-!fmf+!@eDm#t2|YdC=q~6<>U#B#Y3=97%(_o~zx~_)PS2V@TShnRZ|q27a&M-Q zFZ|2SR5XcL zU(=R$Fa181+ji+wY%LGHWi7KjbU^k)3>jUmw!VMs%O3ljkM*e$A3tVI?|=Ga8T)A! z)fd{RGZgbKoW*>0D%o|;is&RumLl-#vBoWcc#+f9>Qo2Bu+@U->u=y$C^(iC$M}#0 zI>x1MXfI|NM!#FpXPaf;eB@~qc@?nzfYJqI0n7AA!Zn=rLp#X6L|3b~ZXY}PHLI7t z^nC;4qdaKOKFVg4sAoLm^Yo^=*Q==R-Rn7wk|=wkgT}p3S;R<c&vnl;%sQPS#*prbn8KR=_!ZB^%Qa<4f~8V??OfMK>KCH$P3(s zaSdZD?psKt%|ey_U+KE%%T}*=#oKJ^qkQ<7Tw`gcdi1oj`xfQs-iaq^BzSJgF8RqE zE(s^mkz8sm>C&wPl7C}?H=48?pvZayUYh7EGJh_}(g&ke=;MdYY|sM&7`M_W|HI31 z6y!o|=6Af@A>zO77o6=QEGGOmQ*0D+vy&M+2Q4Z=WYN{_-g;&GEvGKOoEPms>TUS= z(XzDumT&!Py$*4ucB>-?+Sn+BNGy{xFFfhlY)M+^9=Awi4q{1)-wO>Tt(9txM8qcl zk)7}P(8fwJ6iEAOtN}F!Ui+n7y9ABqLdwwaMJx&ey0ubMo5s9jZC=q@1oqOtc9N6p z?d{7B{ipx*vrCoRd;C$|vGm5fr|CVquhI)%M;zV4doM^O#S2-yPPCJ;kmsV7R_oz} z217*QjQl#2B}jHhn|Hsg6ILStPOBMHI=P6Bau!Ki!#H$w$^hLM)&OA*y%)JZz<%k| zwfzocmJW8uk7Yx*66`kVaV8u3s8s&MJ)%4Lt9CBC>}eu@)Y?a_u+~?6>+_V@AC>1@ zBzP=>2#gnjDo?o<5hn{uxa0@9;`(0V&gc%!*N!$oMi7W>?c$^}! zT~x3SqLtd*6>bQz=ey&5)ex3>OPU8wJJO|>4USl>HsMTcb(XzXp9e&K=dwUz6>cf(%p zUJ}E%kHocu#8;s0_|BS@rHe=pp}JN=*M`)Vu_}dTSk~&!WnyC*q#Nq z<418ISsqHY(l2M4YQKC6-y^>)G=x1rs92@f_SNrd@}xsoUU|D+(09g$!?$(drxe!H z>!hDYe-*G7R#rNGC(uE~67(e1tLk9kbb_oHfhhRMVpSW%E+~X+;pn@7%7M*do&7?R zmi;37CYUbF%>csE(f*sgU%zenP63Yon-+k=#pT8?4^j|Kx4?!iD0rLrP%rx!Q0qBL zT|m%dsvLIxo`t&&iWqm0l|6!C6@do z0iMXkPFk}Im*mX>lwx%;$OMTlx&WN5*xG*7X8m?0{LqJen~34oz<&5yeCD$lev965 ziP2-^Ml(PD51IzXRROgQ675&KXj=#6*#H~GhB{3+H*RllKl1i?64gEh_O>1UGR=DW zT}5_pueV?vc*Ds;-d>BTT40Y7JYvg4S*j8aZ@z~|KM900w|)90ga%gDYwh&((0k=; z1h%=xp|_Zx7_rX4@D4M*ig2;{9Ms z#-=he+l~Kv+s$8XZ*4t%b>)>G(aS&MT4=wub5s0+GOzuu^)ik8?SRRF6KS6pj3EJb z2biAZj3#|wKOnUr&lZrJ8MZ6IVP9Mp)KUw8rWGe^Z7J*oFFcMJ;XsW{b8H&5e8=s@ zEiCNhZm&fgMuQ)gpVaSG?&r+0UMy4H3> z(&pktVqCG!5jeS z^H=(@gJgEAUz2l}h{KFr{D}TuS>u-Mu+d%!n?LB7 zZ`{mNc|3fIu-Q6!d{foc&y-m9k`T#^7g?y`z;T8(8}u<4$?pWknW5;WFtps<7zR zdgQor-oy@fd}a@rQmv&|uufx#uEzOA-I@|SBZXe)hK_Rs|vJnXi-6ZKY~ z3VrT9dGe=aH$`O+?5C5FX-a?uj7Ag+WtkMDB0->$OfE{V^()blSOmVX*!MW+t#F6^ z!baak5hGr`n81D+8M3o?vD?;T9}lgo!4lIj?SA<;APrHr7?&J_EVBiI3tI+;NLYLF z7l>s}m$pXy=#H3|`72PfxpPF0-s9EkUZ;;AzfIR$x4N+EgAb2zCE%=XP9{!OW09fx zz_<#E;(^!Aav_>Dl88*{qnnAiVCmL!%^Nf^;6XP8hs;DT4zvLfJPS9?o)q0UlE9?eaFN#|>PMXZg89}b0aCjHJ&+fh<(JhZ+2S*usR^1MGu6I$pR+ zaN8eBF%=iezGXzGH)&&x0(5c8FuB-h$V2EwU5=p{ccD~JP>gP6#9}A3_Juou#$^=V z0triV!&b{Nrn!%P>(P5XHE6MjTK_^l1;N^%cWc~pD&!N&r{CZZWSPId0`MXT0kDJU zfQMK8(sP(ScTh7fX#Bf1fF~q&L1rSpMa&o{zUU8LbT)8BiqGNoLKc|KgX>l{ksp37 z7_l$HuvZGv9=_nbT`u6*jL?#9xxkqTT5Rma-7^oA?46n3Scs1G6L_oG&LU3N=4$J) zhhO!o^LmtcUOSe*OJO?wVkc9U<5aTZq|`kECt1>VG;@ySymj{kOC+t&kknOl?qbHz z9tU?`ln&naT|v^7KXaMceg$)xDEx`5;dyF zMKDgu89O@%TpIeFKWH6|X~vD@?0)pE+y@(vKQl>sP7%jY=Zik z)|fCy@Fj_uZCN8WZLN|54{Z0=0d3L5wk?xppF0+K%Q&(J&icT|ejd>|JP~Jmu@7F_ zY`;gX-!_>yE&c3&$3Jud1zU!Zb)zpDJ+htu)<rzv_m=nV9kyk0*;4!Ecwx}emL1jR)-`j?~f zG)~!dJMKBzBnlErL$GO~goSa#yP0vtc}Q>T?~>(Bk%X?mXCeSK2J6;VT4(AYt?`Qas^MVCxQ@f|(p zj)xb`D^JYhPw|?LjXljeqPIM3+s9Uc58NfKaU_Ip@>l){!1K}<``GDIr=B5|Z)>%K z`m>%2{Y`q)>M1DNpiq14K_)gFew=ag77msYAW<8AaB&@8lhFsy^k`&W0^v0~a;7m< z0+PHrL52VyJ8G6CQH)IsZ?>=Zz-n=)Fa1&%)vy;8A6K99Dbw^-UnQ(vu04D!cpPv% zVh#;3+Ah}0{E#zW($MjL$QOcj8?SqKJ*KZQ7?vLnwV6fy){Q>YwrBh1B_|BsBGj{| ztS`Ilo;^9JKWkx4H~Z@u$2aNqJp!QFdB)7rYKcmqsnvJFTULpP=6pn7VUD%2ouNL@ z3{{C++9$b5s$_whRm#t{nPkH52(+B~0E>zQzjU#>`j`JQT#OyiR{!*$ssdGjvV*A% zn6%-ThXcYgf6(Hm8BF79`JX$7$>XqBKXwLtV-VTdKE5sWofiAKlyL-!B?(?&DkkT_ z`MvAulP9lOF!v45SXlld*=hY$G@R(_I~gtjd1w19LzPiV8X#W$ z*x}v^t(Dblf++l@Y)hDifQ@xWQA!`%`d7=*Bj_2}e#b(;9OGLTRQm}ZU(=~?EbtAW!;)|DMVvKn zJLO5d(*j`6c4L5J@P?h57k!X-cb~exJ73)hLB`Z6ultAI(+WS zPZ0DDfY?@X=|x*F7=5>;|4keH!m+(_!_Nhl^;*X!B-MQNtwZ1AC2rH)mwfZ>xfm@o z291yL1z-8P$LXCNZ#?#E&*8wr(r$H^X}xm=MlnPz#L;v2&_WEP1tU|^B>(`*{G(9! z5YwPQiwHf~{-ei$@7&||)ANWjH_4!h6JPWl=3jHB#U zoDK_1*IZ-g5)C_js!rbK9m27e37$r3H$B1{7R`o&O?*&oPknYJ%@=X^ zP6c&t(KjssajFWSZ5bEZj%wtazUeNr{yaLcu%-`v=qrVIuVp;=ot9C@1I-jWQX=j| zZKd+Pr$c@r4j#8zhHW|moAjbBbUj?y&qDTcihGcKk=qvfege==$YcHK5ntqd&mm$9O=#5B+OYtWKjE`W3z zBfX=#*U9UyQ?2Z82N%|QeJO^0TU0sf&>C11BhF5iW9_8*n=+Oa0B$u__an7Zffn_7 zcNz9^V1eziohtjnwuQp6o@v2t9DG36?}2yO%~{^SH0D{3gC>^=O=#@ACmgbvVgblf6#bB0_FGD1CL-=Mk6qeW7Za zq8>d1^V2Iu8JJkXnbLwy3qlLqzn&BXv|il0U;8xJr!N~y}^S5a}{ z&%C`D_S?2_%&SEr{?0-2)~BNV2GQ&0#TAluF`|~3>NG17)TNGviiVGF*dJ2R&`{rs z-AB4rHuJaIdi45i1 zPRXsNmZQfH-K<~peN`8h0KxZjG4 zcjS38we)v2=UY&WuY>z?p~p-6=-Em2_MQ0Ya z=YJ~HLU8H?TQ_|!4|UJEW&;*T2Awy0+wY(e>SkvFXq{s0(T7T`ftd5x@!K9z59m$% z#xH0aD__v}+=|f&Wif`Q|8`$S9=d+~;~zHQG}wHyW_Q;Y?Fe*y5ytV{D>Bz{_89ja zB)ne8_RmQbeK?Genv-12B)lZR6@8yQ6GxU}v!=FbgTyOe{>8tTR-g5dX}ZVVr|Ft& zrs+4{I<4OSe)D484#Wotssx`7C6OZ0b5eaBG87ITV7qs$K&43aW&WVK(RVyvr2F1? z+Ir+8r|Hu^ZCYJ--L(G0Kb+RT@f(&ESo&Ik&L0cX&yN|S>hUeOb`Sk3T13X!f~Mfe(2oz&*I(0HXQgM$x1RD871d`&OvlxO_0!K<#PyX| zO?tn+2(Y5hPDN4aR~;rlp7T~Cu8S(CgaLHM0fi-4b|N*k{j+KJpZ{}xM~}Wv?B<)TYyHY!W1--vn=b!tTXfr?_$rs87^ml&rFnqE zMzR<~7Zh17{gv|1pV!t{QBQPp{%s$9)s7^1aoTOG2mFSz67vuY(43ax($u$;#8EVN<}Q;0Ki;){wXJKwrO8AlwT^!q6b(K>$k*j?*wH(Ou-^*T>%-k;%Z z=^Yf?-}?XT@<@tXC&cPDC$FFE~t%0rX*^* z`}On?oen>#g+^gb$MwV9WvPL!*^=g!acE_z7b>#tX>#3o$l^#l3RJ0^9xl4Ge#|cB zcrUHk3ztIRf_qnBTTl64rqySBh8Zl#vN2z2F}J?tU+K9f?^80B1O|^PB2jIR@%dF& z>r+r&RM-xEfhqp>V;^fj4)PCqcGvB1*6)0xPl0l)mi!eivba3_G8TOpq>F?yOe$>6%Tv*fY#SxFA@UuQ`Ku`qVns&SlK-A5< z4knPB1v3{H<1~2fs0q+K;E3aqgJc~~!!xdi{Y3Y4s2Pp)n0}hQmtNG{$Ga zWP`uhWhx_a%;Wa;3{Zm{l=$B}3`JpF@_-$BH12=@p|^L?x?BJFA5W{tKi>YK)CJym zN^rOhOn^j~^WCvTPBZ_PmURmN&CETT$1}Dq$rij?zp@otDHe`SpQ@p>xvPExJtF^Uw*+&G;EoR5;EvHS#r~CV_5mRU31-`&_Z{KJ8xMjQ zv@WjgulR~-{m_SccjZ#kI5=7@Ss$5^05W2hjPua6p#(t_se$J~tCVc5rt`RgXSwKO zHTr=|@}TLqyMC0|ZZ53#w|vX}M1KHAk!VG$x)MsdI|<_$V5rdON70C3C|MnqKKMu@ zFA3vBFH{}vVFM!&B>2YHHH|6ickl6crtPo49F~*e!C4OLKmOyyMnTzrIe^X47%%68 zabANi0(=BVzd6E-wJzx0cf8}A7!(D!!#XAI-d*oXA(y&=8%)C{2j%ymJ3-6!!yMd- zr-m&*FhzhiZve6-0$OKYKVXB~c#?jguCwkZj_>%~b1z;lv>{Qlo*Zq*7(oX~eFK`N z*)RrgBDJ0dd)6r)$>O_p&t&OXxMw=HmVMf*3BGo#*wcdyJ(Y0c1uvM^ zC(iv#yWnj<;t|vOAN&JnxYvg~w0HDN`}mlg&iPx)o6kYbdJV)JU#n&94qCsKP%m+- zw;K93yV8dNy0G+kq*a_Cge4eb?PSm61ZG)k<4I&lSuZl}>?~WxQ9_^IxE8+-A! zY*7$uyUO07OYamH-^EF0H0HhSj-zz(OitD8Ji0yp z`*lL+Wk$jeUg}}D+>sx*{Ll*x-1#}kO2>7WrzfN@gz`JNB`;9305d|zY@LlTl1~;2 z8S8^vW9J#nqJgcU+vYBYkZy%D3q@AB{Y*x^W9eDM*-4DhQnMPAg_#a_zUO3SSL`rz zoN0YH-5Mj_HI*4Mk;}afj7a;!xBXKwZ0X6w)xGXDD<3d&!lZxV|9Hi8>Md_^QTZ({ zRaop){3QW%kT55t5td61k{q%5VJ`(veO$Yj3hoz50XOG*KA(mA(sV#kn=mmnk->3-t8YgFA zNmK$bkJ;og=`pXWp{jdKuh-YmS<%wVW zwdt0t^fNx3j`W_XT~2!}FiB*m(j!27(DoZq#P+30XYCR0RVYE@QoOc@E$xoHmmWXl z&&@ya6Vpk(jMI0Xv*925%CEF8GT`{m0IrQdgi|?PEaaU3tQS(IRo^k%{iVL}phXt& z#%`LCG@(~hpR^5%?3h|6AviwOLUtT@xKTUTjsM}_PiwCG&eHIA>wyoPRuBCg>2ccD zi`?$_D7F3W#UAT7;>4ZB`Vl8L$zq2AJ#$)Cmr>^_)DbI!CER-IS9+rKL0h`G)M*ff zMH9IFqc6}H$-;mYQ+2ekY={w_=>88sV5NmDLmK0{jXS(}wrW-Gm6}md>e;QfzVHj9 zdyeDHuXx3@bKQre%f)lsEdTe|$6k{Ri%kMJk7g-iST^QG^MW<6aq&m7?ELj#PdC5v zmCZe{@8a0L_=~Nhsxr3yb;U}p?T;W5rx=Mt<~G((a(Hat?5YKv1J=Q@x36F$>;%^SVYd9xW0`^PtH(&XRY4<}PI;$CSx~eCCVADFFQf^ed=dxD(R$@xrgrlC*w~Gq0eAtqG zdix{4{H(m>ZsCdBb6jfy?dR=uhoi9ASm@)wkBIE?Uvz?!6mD%a^oQRmH1mN{i+oM6 zvPa*l9Qb#SYzkPkyDPfgi%2x&=)?5PPGW$WFMczMoanKI(=CKUP$`Ds>1g?2h6vAM zW~K7Wr1f1$rSEGiU2IcYTZ{Ku8TWw0$^Yv&r`2g)S5Z*>QCwAETG{wF7B>;};se)y z9RPhWX&DUqNQp+z^KG^%d**14FDZBm%^psx6DOw=zx~^2p0#cJg?6s7K-0l?V$1of zy!uWaw*7!N=U*mDF2<67Xtcz?TtE4~M;|=PnYCO$jYGSLyYxk!h}3N{aT+0d8?=Uv zbFj1JjRQeQ^Datz0}VknQrN9TkuK_NtM$212g6Sl=$^T{{{yDg1$t)W9PPxL-=f8n zHSJIlb}RdJ%8+z7Ti=6;{+k>ah(9F^0P!N(O+w4TYlBJbJS}WVpDNqZ^4uWA8Iv4LOknEia z^c?h#3$cy?tUk@Tps-1?%O@9h7kCvu1$N>$e=|?wHpm(5ZtD)#mk9GaA21jP$f=v> zj1pPt zxV22InA8SaKNTMR(z30fiXsK>k-Rn5_a$FX=renK>Df8j$>00EX?^^bES`#q9m_kF ziiiSZQMa^++(;BQ37XUQun!HVc~bQ}+G-(}%K+3laW9)rd+by$Bo({tukb?!)`hqJ z@b%NFKllUtveeu=_SYw|TXB75JM&s$AJ;e5hB>j~kj7n7$n0d%Lz$r+;!tz|)X?Xz#||_zxcLj)5bRd| zfCG9OZ=FYB?Y#TlStu2ietWMLl3s5GuIQb7k40C%;vQ_@;<3{v`dUu`?EcN)*u#Sk z#KQxH@l*jAy3yDzLBk9Qalx6Eozka3{8Mqs;oK14mqU0IS%91}2Sus6*qw;)kxyS=U(8T7@;=W9^WHtSE&z zX*^3cc#;-F=#OR(ieCB{Mj}>PC(bmodkJ~Lu#Z?d>nAz??%$2*S&lo`{HgrSF5pw3 z7LC(kPCx7rbxIV5uYbVDE6H_paS(&r$=~?(ChzMhmQ%m;|12Z-xbs7_z|7ZK8e^Yp zDvGIl?_Q$G@6&(!-hFoV68LH*cB)=T8<9}*>y(+~T+6=K&*3;y#hciWZ{1-7B5aFf z;&s-XLiQa5runGXpaG-;NwVlhYIX+!~`Q_6szx0dKnvZ4CbWL?aJK1%5+s^vh zzp=cMs79fdzGk7BVLKGucvR}UGpE2Rvhs0#^G&62=FWNWovj~oc;#|RY_&yb8|&A6 z_lXz3GhM771Sf*D%yN+CHq)WCT&47eL)unvP1SK$4>!4RSK^#D?O41l<41>kJ~GwzHhL}kT7|D{`2=w#Ab#_&xD0%;#!)%7r@{4|M7E=xgGmjLAFpZOA_1 z8O?sh0nb9WlI7v|O3mvREI8o_nY=lc>cNMG|9YngveBPzP&AWwtdaqxngoN2?ipK& zL`HJVLyI94&!#_s`_USjP&J(Xy>oL#PeE- zAbl0qYIQ>@5fM`Bt{i3@2R3?y2q@|D7>7J}pE0V&Zl2X*Bf$o{_0TdjxZJySkM!pN znVwf+-Bsaa;bh7?7ElyU?-lrs4aZZl_0HvmVu4X2AdOs9>?RZ_J$$a;EEhh0)2yPN z*c@Ns8);z+In%%>9I&_e@WeUV`UdR-QdVurh7Yy#;zPw|f7%C;F;+f0?wUI9jM0-! zqM)xo$C0?QUf}`fa4M$e0bo<#sj zMG^TH!Bb{_ZboBl@CV(miGBFPv2~W?A$>(QA71q-kevZpuVPuLar+OCg>^4GmX!*p zC3clu6J^))E~A~SA6ZgpgD-jSK6W>YWYZkfoIUJRv_91`$4B4fhgM?yKKs6A%KFO# zg~d|~9@I6>J zcmbu*fB_N};RZFLQOj(`I$ExM$h?fBYlwEb=yn@cSuUqS5fXY%p3zX6cK`g(nVhw4 zf9m~o%A=szb7Zp?4LEifH*EE|&@7Ft7hBrg-PEFAi{C{hIf{!XSzQ>Gle~2M$xiDM z26)b)dZ#Nl69%a@>Bv1E8F>?Y{4QdRq!9^1*jHZ0Kssdd4DPXw@Ta2WlRB zo*-zs(17614NZJR;OnpXrrY1pIr8r)93zsux_FPn_Jh2d>2>S^oD~7T>HfZZt zB+>#eZRA$d9%J8p+e0pt1S3?Y+!{r4JAeA85YF1R`H-jnTp$3*pkbtiJyK5(t?fIB zqBsLyeT^wjUH9;1Je(f&I8zI#2L_@*{v7Cu$uG_FUk&%AP3zJ%*ZB-UeQ-l?2c3<%)ff) z$ghM%WCs_I&}3OFUGJ}*72pCH&0UWBt3qTkmAwj<|Q%}eROc7#~u|< z3Lrd=ZuXihA}L9Z%Lqt2=kes>w%)S5{lL$VW)&9~{ls8Qk8GmjD8~{*oXoDHF@?iL zI?vj#{PGYlVsk3gTt%00of;`F-QqtxpIwh_=Ml~r6qAC5CL5Ap-T%|4?N8RPU7Vxs zy!XA<-}Svu!YsV5Ao~er@L~&W-N?0F%UXz-^;2)V5Y$*n&+YrHJJyf2sCDZec{jvk z#29ktJ=_7`=>;@Xvr@KP)6gr!8R7D#A*@9TCi+|hAauA=_v5i zfAmKVZ0MM`|FEsE1R^>Yts^hHBMYU2!@9x64(!(Pqe5N=qL5Tn+Zu1{d*8PY9iFz- zcX8#}bDa{sV`bNBuZ@)e%3%DcNzx2SH^h#7;Uk)L)}B1L$#-A8GjS+7*hCv$*fXhD zAY$aPbGdg6B+`vUs^(1quG&IB!9?1aTkChau%ZOR2#M4)XgF9-lnBLxVRNh!84Q?; z99Yb~ptHVN@T?uN0Of*|dtS@fN%Te7z3%#n*8=wih^a+8OkvT;hW*L7lQ?*bLIcwm z)ZV3XA>P+lE+RdLmYpm87H`2(kx^LL*|JMn#~Hxq*tb0eFziDXk&L-%f-8sh;nZ`r zo%j9u_#}1fgWEYy;;;=;*|cEBxKy0-QgN4kD={9PX=3cs;EC#PL#e!=gNDBIx~;-G zcI;jF;84*;fCi}kIw4ty@B)XkNlLU+;R!S_Oa1n@T)}|hFIN=vHd~_o;wOOJFXL4v6QxTrfN->x*@r`Y0|J6g!!G72Que zs5b`JWx@otZJS{2RdFyg!j-3mxKSRXlh^j%x47rjWIKU!Y{I)9su;z~=< zDYTA14zxScZH855JYy7ZBY9$Ej$O$w^mE-H`eH>+y!EZ+&B0ynExPwV=}Ga0d)XX- zX-gZRF!%FUOeBl=c!HE-(djU|m7Zj!xVXO3#rrnbU0lS=KR+6@A^nqwiZYRq-B zeaKu4)9X6$@DsnrLhXNP?CVYvzj0;5rm)mD$hR$*p1}vDBFfxZGYC{=86x&+B z34W%E{ zPHf40>_tL{M_zhc$=mfRQZOw=$IcK?xytV&0K``u(TF^)*b^JHvsu z=bZSze_O>Y97A<3tH*ZRtk@9D!fRw^;zz942y@JRGh^mC8nEoBl@L!`=FgP2zj7_P zu=LQ<7x0aM6V_|ranJ?Rn9Yb$W;n_XXW~%MqG5rVP)=c_hdm%Rim2)7_0U{K@ax1I z^?T=MX+eQGM?BIk*tn08AedIR zX6F-F>*I_avKqprk3jq_(F9*HnAVaG5QhG}$cz5?Fa6T|RYZlfw?qHX!#{7@`kc=( z%kL4_$ib?|4oBp=5s!BR(d@PCvwNk;BIVZz(G)Ll=F`MGRKL5%-~Jnur{B%V}yFvTA1Irv{AEz>0sK zgV{hOF*+$B+q(2*L0`M_d&nf$ySs0K?0l5MGU<%LcaQ?30Saoxg&%$T)6H*xJ=t@Bck<0| zns(mvUfXDc{WKQ7-~;~jYo3nNzCewA%V;`cMT1bxuL3Fm$&GKw^w2=Fe&;Xv!J;OP zP1~xaDy-GZUUrQPyc;7l`nbCUnrW7kar)uQ!qG+mYX~r|B!nzyJcu+-i5=T@I^wjm zR_WUp(Kt#h_wLm%|ME46WXIA#^f$vn03{5SupH(d zI?qjqX2IEU08NuD2nNCvA~J4dTi-Ox#$iOGiM5Q)(KU|mp}+`h=g+R0j{ov6+b@Zo zwQcE}ln?2<-?`q(H4bs;8b@0AVP6WNY4$5gFb6u`BsPW>N7Eu;saY5KS_sS6ZYA4? zzWJ%sw!R_xT#dXR|CL{vPQO#v!y1!DPS<|Pi94C17(OwRfMdch`(`!knJzyPW9ZRM zEbYsn;d8S}DZGS_FC$ia;=`L8XD+O1_f04w?*QC0LqBv+>VVyDma-!YB20iFm2l8R zhPOu)8^ezDoHq4bG}D|+J-lbv;IwqpOI|$fp2s^Lz}(hvJ8wPliMhD7FZi`5rm`RB z;$!;@#%Lxsr(zM4h3ueOWR?;S4BfUbxx|lJH!uhI=74Viyx|94;4~@`&H)yKPhT-8 zC$=tpsPKK`V6%H-g^WTqZqc zI}rx3MLZ6CcnfRLhocc%>XRuJ0ui(ZrszJ!h|Zo8P3nlGO3*jP;^{r-H~rX4>_B6C zvggqEV!mUF?@-^>?uTJ^uf}JD94*I$X587yATy_-KLbclK6ze#YYcAQ;-Yx;GzHgu zhaUHM$<6ixwt4J$ZhGlUr?uX(>PvNYD&3rjy0cMi%=vj1Wo3ZiM{anKVvBFkv5lx5 zv`%=lKCIjdXv7wMYfA|+wA>5y$fUDgwNY5BAOG3R6M&z;tH;}dUkMmPI`Pvw7gMj5yjZlGsbbh~-Mm=vbz=mDq;^&@&~ zv%gamJ~5r8!9V%7w@o+y)K5uDOXSlZIZ^z|1I?$zMX_;50ksRK-sE6?4~ zBs6zSWA*yik8kcBg=O9}y@8l;c7Xwsm70;9Q z!8|lA5P8WZnW4u9>KJKRJjfP`CN`WT6GkO9810wo;e``_En|)FhM&bCBJWh{w;ukv)8YT{f@w=H zHO0oPZNdQuo(#SIJM^G~Ye5&4%0UI?_jgI2HyF~AKlS>CxEX@A;nT(6>Evnt0bH z8LA}O|8~f|4$h#X2zc?MHZQ9EFRaz4fBJOjInSLAf7f^Gqbm12w^Jp-_kdmZ?C+R% z|4JX)APA!KHED}I7&$<**F*_Tas``+hSKgsm)j0gLGFFaa& z)0?JUeU;F3?O#`X3pISHm?`_DJbv2q@;Mr!>+R87U-3UpTRQEISkXU6Yk#hP&cB_G z|KcyIpj1qLos#!_=`A})=66=`cAk7FL#IVSV`tcs9ec;Yi64VG*~4cG%$^OpM5UIn z6SME~duZU}w>(i~0Wr}%m5(=d(!g6Q!8~n1(n+?T?9@G%?|C@>y4UG>p?ggi@ua9g&^ucje93J; z`q9(Y7k}}z*4uJ+f9H3m^?%j72=x1gBiM3^cT;u?siNSUjlbXvrfuE&J0|dfHte+G z0e$;>!;5}sy5$#sK|0xu9J^y>PMo^=&&Xa1C^TbeY`Y>6e)~WiNG;sA4s=>{8P%P> z^v7D4ewjj06zNv@>QpnE4SO4H{nV%4S6{UMXHw$*@Z}&Ph0?>;bcV~JLW-lJ>CXXK zC;B~~)v-|tk(~L$v@|;vV|EpGCf%mfr?gvXtk2->YP_p4U$gD6JCf{Ozu_CF3;6{t zjn8LM%jJFYYrWXL%a3UC{SDV%s}HAMt2c4$10BbX>AO@eocO3aU(m67-~-S3)!=R8 zZ2b-Tt-_mL{<0Jhr+wXV{4Q0$qe5do$7q^%E{aVzlGVjWytK|A1(^J&SAb>S5;ax_ zz48x-*12gtz%Y2)1ijWwhgoc{W+f1`lD#6&yPV&z=>=;fas zjUyXS!%3*kpVcY6PC)q97Nj4!$hLPS^?f>YuTvpK#_5n#odRJsQI0)Ae-0 z6P`F-^c~-Es|st=>yO=x_&)sn=S{b~`qf_G?8Z99ak}$cq7S?G8w*u%ehVK|-jx6V z8ShC%K~#?l0Xd~kF|w1zUoX|3H5pSx##;6|(l6JK*#WeHzqtv3r^5a($6kN+W8%Sl zlz01^-spCf@ka$9lL^J)@xs`C*_NKMM^T}VL&d7Ssn7?}{ITPZNV4Z-s^{%2b^YN4 zi=NX2;pl0IpZ%HX`e!}UKQS_UaOWHC>Z4rOJ^hNgsQPrLc>2LfU%WdZirM`rs${WJ zssOV_o!dklT8fI)>)N$Q@H_t-vZja9$FY98BhcE0E<^U62H_uASc>YkTE`FeJz;nv zhuC2Z>jEnSMQUU11O{k5cRW=jO^d_=Cki6uzC-VZUMF0q2a3$kb1B(AWw_8Nu*jd# zOCf*rHBX#Q|BwG+b?n_4TKjS8zrAC+_NyO1ozMdZ+WfqfmPE1nO@!XDh>y8$`s3-A zj&a1JkP~)dZyS|47GM@d5XN%-ikr2a*DGX|o@A{8fpt(9+UkQxwhq5Ga+}8k3rjCb z^9>k3YzNyXJCez=$~_hj*%l@6=!Vjch&Y_W4RgUQ{RMz&yuS!6^!+Iq4RQ()tqQ7l zE*4|sCLKO9cCCIP>?WRQtb3aM!uZFy4ZAvp-}v&MuwOfW_P%&Q(Xin3j*B~u#-_v5 zPDOmgkDL_xfDZ2S;RYU#bAbzA@+<^R-xzb_5B|XPH&6PS>D2H4zI}k4g<$m2ZEc4bPwM-$ zu6^8BO*j6?kLb&{^gtv*$<@R(?ktMS*HY^FE(+r3FBj~U8??!j8hIa0q>!P8-#q78 z%$6VPCjvBUprV`CN(0jXXj<9SYqr-NS+9Q#)J@uP3f2tJRb?DUMZ#WCHD%p!vp7T%Tk9Xp6;->|4+{Jl2rPp^F%HF<4xnkscU#JmsFsDl3^3I*(_&9T(&1q_H?Z=K z0iN5+Qw%O57ngP|7Z=agXV>BfkyiSi_&gfIyYj~OdYyvwg7mR3d5jC}uzpx`i*L-k zjcxb3>!wqBa`l9M)$91L{)&DS;AZc#hU?X%P`LT@r_-EHbz56`&Z>*cFWqpe=d`Yi zb$?F;*(P`LpN@r2Q5D_zSRz*Lh~cBrF?X()eAXhHLB!xevk`j8GPtB`_QGRVzwz75 zJi{S&&%lJd{-$rb&+f^SeX; ziNNUe#_7;Ik_w1kg~cwGmw0$0HDjMT`4EC+bg&)#7)`dFI0!lo9saC`Oou=FA=9Bx z`}ApB&!}(R=RRC-<|l&nM=n@DVD;KJ^3uc^TkD@u0LIScm;YNW+P_;G-7qK_^W^xb?!Ac11jE}q zH)+;yTZj&9>8L#XhQ0odQgA39pBlNY;xwsitehg*wNy-|Ym7}5q*2@l8yhSROQ7ZT zOCP=$7d;CUnc;Vwava8$a_#~QJV86n1*HO3uS0eqb}W4rUq8d{-Ac6nXcr z^DdRc4~heEvRpJk3T@tb<`^}?+hr>!2VHaYojCUrMs2CXSUCLRfs0FH7Q;J{SkUvf zlGD=Dsl~cN*izA{<8?BhLZvNHEtn1rxT&!V3Q^qjD1?I_%Q3Rz;GBAQNE!!2#e;#5 z{1HC|#V$p0Q9!zW@{YugMUjc_N4mtQq9PXWY(N_WFVi~LaROT94{zEJYne5RX^LCU zH6#3@NhdMY`iUMHkmn}yyN*m-FPJH39u@ML1)8(|y03f8&hG9T+9|nWRy)e13&R{I zSX>9%DC!TQn`Q(Aq9Pi24p>xjU?}K@NiyK)r5q7!=kgBav5Lr#5VLEstL0H8#U(E} zJ$mP=^u<8z2yWSi{UvdX(Z{Q55>7$kw@O?^lijMH?4*~xiz=tVJlU%Plf2Q;;Sbot zbI$FfGtkyZS=t~cH=RGo_}BVP54G|tp~x{8V25OTs1w8V*kiAI!yC~%S8J?u$(eup z$xnWbj6QA@P#Il1>Qx~d;%(5|0y@P{piCp5{P_MU=@HpjXq+Wz%X3}DpXNYPBp!3o z&h?jyXeC-M;^{d}>S+mR$g1#sZKg3T*I-!HjwQUd&dB(ZvHeAl9?fymBZ0D3z(wJL zO0lpju~T_>QbBn)>Ya+yUdw_bJ`Uuok?PKcaazSstag$^<*(SDnpX~!r&+!7C;h~g zx$$h^fJ1El+_9_Q@c09`2a?X~RM?u^hYvqp7xItQ+hG0BsS5|EDuz8lD(G&BBC{HM zA;@?@6?P>;a^@?UmUqUa$PS>oVHZ$E>5Iu!Ls~5T>#fWx9<3{L3TumE z+TmA=)vvielmFta>B|~E`Af%y!yeLaIf;*UR|kws4qrS}FC5RoqrkYis5sSCVTqP8 zzUI_tM+Z(YosPP4KbXw&@ zkPG_RhSPD13C;$<%8(oMf;tqJH>*lht@17*6Z=h=#{8=2xr!@4aIa|EBbQ% zbmw^Hv8%8C!2{*bKvcxHu5Eq!m%m6FzmDN<9^nuRQ1o6H%ZToIDL5&}>AwSSz5_z8 z@jRUMAusI!qBSxW3*rlS?-C+%4Z~@Nox(Sb^^^iPzC=wsu*Uf^H9zEsCt819Q9oIk z?{pWIo)+*Iu~om?Miz`<@^nS(n#KjXonzQ6oyEWP;Oozc8V-o%)l}!IW||$!g6vlOiAS+)BV)PjROohLu$gf>;(E%Tv;mhk zY%!>|ht|`*`zF4@Kg*zPo<-zf*80**AEQf} ztF@Rj29AxyY&!2n7jIc8Aoo00k}4-=5v1pxmQJ3C9xmjpt+_3aCqr$;r#sGEzKEBM z_XHK%TGv=U{h`NckitXGy^$;%&@x*4yh9g>BH_=cM4a`hk6OwpuyZn=L9fCa1&cm; z!yNjwMOFD!vt1ms@M}g6rkLAWpxHY3w zmtOjPis0EBI(rgAfW5sgla-{V(CmbxCmLm-l3b&PV>UHoXN7pFA4`)?K?WyQy15WTLs33<CnW1-`c1@4MjYtG{a@d8>wX z-@8>hL-^3Y`8T|}{Z0ZNMvd$k+VC`!g zwAEXWU3lSh_Q~7|g6-T2`F*16%P#xmo%Q;6^~|+?NN+D2f=p~Uog|RZWw0Y{g@I$C z&HAo4^Mi~2W&om>KAxb@{=g_dXrvLRKht%(^QjL7QCd$sR5aBw#wZkI1Jxwch{M-e z=o1sz(DVn%I~4$GeD6fBl;2)-Oyziv@QAbh^ z<3GjX&(_}?n)$U|U(arQBa&|-8QD2{B<z}rlehY0x7sv7%^5-vmAsD z(AI|oWgoyni@*2@4WFvMgaU20<;B%?n)}wb^*x8;?Tf2*4qD`8o+Q@=Y5NrqYRMTu ziE)Mu&5Sziv%h4bzgp>a`qh(;UVZh??qS{LXViqHjF|3i>f>~9Qv$b#~IFq7EjE)oJG~j7{2h2>zqPLvs(oLRcYLE8P2hJF* zuDCsm3fSAVumIeCL#*~3> z=*QpKM=kT>#ai^L3Kw2jRtGsLD*ZuiH9cQ1*Sz>3)<;5H`tgzA?9)AU$tBNIFyA#2 zk?gq;pwZg6XJ-n0(2X4i2({u5R417D=Ko=99y`OJE_qN;(7^sYM1eMm-2i#6d@)CfGxu zo8~5oHVUe+W;(+04L@iNv9ZV~h_g{-me!$o@uP{c$t))EEg5KB(-8=C;gr1T@rU6- zjcY1NU-8k{soGxWqUX1JfBKS3xS+pMkLHggQ3oVok*Qv|IcZ6>D--WVGDC+n3KFLN zdu|<*P%66%zJ*~e?bj6fZYi$Jmi{dZ$~9u=kPF}p8~aUP;tby8(|+3kHzwP8dPBKWAcQ%`!*qxEFt&nqc-x=e2LJBVKBhDl(6l}$5{ZUaq^$XFP$OH2J?R}wL<^y0=B>=<Jy(icrje}gL;`@QodM%%Y`(;I1NAAvnh)^5}r)&A$(>nVjj@EcPi` zr`PM(D?xgOzEfAGnU^Pvp_rn#=*Ajoxtnf?Oe|9L<0lj1SZOfLoC7}Bhx zNiXsSBO>uvGEv`fvLy_(iMv^-v%Tn#xeyM-?PMhA+0N$Zuk^c%Uv_&u`MC*u@a%Sf zRCur%CFE7FdfTDHda0maTO5K)o)aPhLw8B2^Ho`8G5JHN7dWi!D6rrH zE1~Eju*{nmD6%Z03xx$`@g(b|Ma6Sl=P)4^{{W1(~*cUB+LZ??{KcWK+Pzr!tY<3IH#&*RsPCa(@i~>rV=YD{ zwQ1m5x9BMf3S`y?uJ?ytEbG}$^r5q$DcI6i2d!;++&Ts@a0zHkYlWIZLci^{9q3_% z*Yv2%+ogWXE_=p{CcPW|!G{a)cJUoqRJcS8cZ#;YU5H0*_LTy%Od%ThE-e|btWzl9su036gJkTFMO<8+&! z?Tg+;Wm7}FXXv;3f(C9i`Sx>sL~C{R)qmc!JF+MIJ5@XNgeN>kZyV;dEB};(*P>5n z&MAjIZhO&0_Ckv{7CfT8XquU|M>~sZwG?mfY{(~FY>$eYWUOcsB5YAV{dMKN<1Ru;IMIMGX`NpoRmDcAlFxnV^5 z7CcY;ZLajCdR!mYc<#|@>!EkHqQb>x4o1j#mcjaKzxF<-P9A@TK9T$s?PB`!H?k|2 zS!_IavWvFhWe3pdMSlq}!o710zKcdOW0%P(Y1oMYVFWA1+lCjI-c34dLU)m!!T!<~ z_{f^3kOb*MbbOu|wEbfu>P>h_G31 zioYzJq1S_oOJ=Xr$IV`H?1Bq^_-x;#*J^ik->JN#{WvfCy1>8N=@TcOs-?O@?_J;g zuq+6*$nI+jxpx9D=0$H7VhhuYN69P`=;D$w?>Y^v#z!LXKR>`aAhTaw+FFYXljxSAdu zuYXnVoxkeH;lr;z(^p;(NAHA#j_pq9+WEQUCs|LOxI`c1xl~K9UoBJ9BBhY(+DN1< zu9+IobSPa6)CHA*ZqrP#P#q2^K-UE9J^IU2+^{L(C4C942P=Od?o~$*9eU**{XEpt zuiG;IxG$__&?g`N_=oAcxhb&6sy6a{+Y;~&Q<09{hVqdhg|o5Ht`Z5ut3uf*uEF2b z2dv=gbSCxEFHYbjx3njbcZl%@y_5c`Bd>q`+wtfVp%MBgWLrP}@t<_^)Tu}5W9=7f zf4W%LWDg)vuXPno#x4iZ7rPk6)2(E?aP}q4vQ3SiPjzjp`@&RF{fP?oP5LOtoAf!k zH!pwgwoQH_^qrAUgjmiRg9`0_r%s)^Sd02_y)XB{`V{Dcbq#Yrl>!x&iUVO3mCG)h zRcC4N5Yx_67E?}Lw4tkj_?YcA`rP3=CHT&*_3C#IZ*RXz*Gt!w+9!0^x%q?+@=U?0 z*e*D^d*VUUDHYnZtJ~K7^=Z?)t0FE^VlL7L^Yz1oTNkM~G&T*W8?^h~ppS^%pn|+n zr@0#>tMU4Jo#Wo4PgK8C-^=yRBS(+EYxSDf+;S${pXl`eAEAa3N + android:layout_height="match_parent" + android:background="@color/notice_check_dialog_bg_color"> - - - - - - - - - - - - - - - - - - - - - + android:layout_height="match_parent" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_check_system.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_check_system.xml new file mode 100644 index 0000000000..eaf152bbf6 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_check_system.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml index bdcbb6aca3..89090b898b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml @@ -30,4 +30,8 @@ #FF333333 #FF333333 #FFCCCCCC + + #FF2966EC + #FFA7B6F0 + #B3FFFFFF \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index 6cf7c2999a..7b65371b3c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -18,4 +18,10 @@ 回到顶部 滚至底部 日志加载中... + + 车辆检测 + 车速设置 + 系统运行 + 关机 + 重启 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.java b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.java index fd06f73831..d0e3859817 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.java +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.java @@ -59,4 +59,14 @@ public interface IMoGoAutopilotProvider extends IMoGoFunctionServerProvider { void setIsWriteLog(boolean isWriteLog); Boolean setAutoPilotSpeed(int speed); + + /** + * 关机 + */ + void setIPCShutDown(); + + /** + * 重启 + */ + void setIPCReboot(); } diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt index aa2be2e665..8b09cbb008 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt @@ -23,7 +23,9 @@ interface IMoGoAutopilotStatusListener { * * @param autopilotWayArrive 所到车站的简单信息 */ - fun onAutopilotArriveAtStation(autopilotWayArrive: AutopilotStationInfo?) + fun onAutopilotArriveAtStation(autopilotWayArrive: AutopilotStationInfo?){ + + } /** * 工控机获取SN @@ -33,7 +35,9 @@ interface IMoGoAutopilotStatusListener { /** * 工控机监控节点 */ - fun onAutopilotGuardian(guardianInfo: AutopilotGuardianStatusInfo?) + fun onAutopilotGuardian(guardianInfo: AutopilotGuardianStatusInfo?){ + + } companion object { diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt index 312a36957d..6be446c1e9 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt @@ -15,8 +15,8 @@ object CallerAutoPilotManager { private val providerApi: IMoGoAutopilotProvider get() = CallerBase.getApiInstance( - IMoGoAutopilotProvider::class.java, - MogoServicePaths.PATH_AUTO_PILOT + IMoGoAutopilotProvider::class.java, + MogoServicePaths.PATH_AUTO_PILOT ) /** @@ -74,4 +74,12 @@ object CallerAutoPilotManager { fun setAutoPilotSpeed(speed: Int): Boolean { return providerApi.setAutoPilotSpeed(speed) } + + fun setIPCShutDown() { + providerApi.setIPCShutDown() + } + + fun setIPCReboot() { + providerApi.setIPCReboot() + } } \ No newline at end of file