From f8453c7d76e1323d053e5d26f31f15ff48387d91 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Fri, 15 Aug 2025 17:59:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=87=E6=9C=9F=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../intelligent/shelves/HomeActivity.kt | 54 +++++++++++++++--- .../intelligent/shelves/ShelfActivity.kt | 41 +++++++++---- .../shelves/adapter/ShelfAdapter.kt | 36 +++++++++++- .../intelligent/shelves/model/GoodsModel.kt | 1 + .../intelligent/shelves/model/ShelfModel.kt | 5 +- .../intelligent/shelves/net/NetViewModel.kt | 34 +++++------ .../intelligent/shelves/net/UrlConfig.kt | 4 +- .../intelligent/shelves/task/SyncTask.kt | 4 ++ .../intelligent/shelves/utils/DateTimeUtil.kt | 15 +++++ .../main/res/drawable-xxxhdpi/ic_back_512.png | Bin 0 -> 16886 bytes .../drawable-xxxhdpi/ic_stale_food_512.png | Bin 0 -> 25978 bytes .../res/layout-sw360dp/activity_shelf.xml | 50 +++++++++------- .../res/layout-sw360dp/list_item_shelf.xml | 8 +++ .../res/layout-sw600dp/activity_shelf.xml | 12 +++- .../res/layout-sw600dp/list_item_shelf.xml | 8 +++ .../main/res/xml/network_security_config.xml | 1 + 16 files changed, 211 insertions(+), 62 deletions(-) create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_back_512.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_stale_food_512.png diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/HomeActivity.kt b/app/src/main/java/com/shuwei/intelligent/shelves/HomeActivity.kt index df653f0..02241a0 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/HomeActivity.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/HomeActivity.kt @@ -13,7 +13,6 @@ import androidx.activity.viewModels import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle -import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.GridLayoutManager import com.chad.library.adapter4.util.setOnDebouncedItemClick @@ -37,7 +36,6 @@ import com.shuwei.intelligent.shelves.utils.ext.visible import com.shuwei.intelligent.shelves.utils.f2C import com.shuwei.intelligent.shelves.utils.hexToBinary import com.shuwei.intelligent.shelves.utils.hexToDec -import kotlinx.coroutines.delay import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe @@ -74,6 +72,10 @@ class HomeActivity : BaseActivity() { val weightArray = SparseArray() var shelfIndex = 0 // public fun getRealWeight():Double = weightArray[shelfIndex]?:0.0 + // 温度 + var showTemperatureC = "" + // 湿度 + var showHumidity = "0" } private lateinit var binding: ActivityHomeBinding @@ -134,6 +136,9 @@ class HomeActivity : BaseActivity() { var androidId = Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID) // androidId = "d0e7a2d5f25c775c" Log.d(TAG, "onCreate: androidId=${androidId}") + if (androidId == "65e1012638f78260" || androidId == "40f89e91ee40611d") { + androidId = "d0e7a2d5f25c775c" + } App.getInstance().deviceId = androidId //"53babf69-0d2f-3875-a649-f2e12f80ad4c1" @@ -258,7 +263,10 @@ class HomeActivity : BaseActivity() { // Log.d(TAG, "receiveSerialPortData:心跳08: $data") // heartBeat(data) // } - + "0202" -> { + //开关锁反馈 + lockFeedback(data) + } "0302" -> { //获取设备状态 getDeviceInfo(data) @@ -268,6 +276,34 @@ class HomeActivity : BaseActivity() { } } + private var fixedDataBody = "" + + private fun lockFeedback(data: String) { + runCatching { + val fixedDataBodyEndIndex = data.length - FOOTER.length + val fixedDataBodyStartIndex = HEADER.length + "0202".length + 42 + fixedDataBody = data.substring(fixedDataBodyStartIndex, fixedDataBodyEndIndex) + + val lockNo = if (list[shelfIndex].deviceNo in 1..5) "01" else "02" + val lockOneState = data.substring(HEADER.length + 4, HEADER.length + 6) + if (lockOneState == "00") { + //锁1关 + lifecycleScope.launch { + SerialPortManager.send("${HEADER}0202${lockNo}${FOOTER}") + } + } + val lockTwoState = data.substring(HEADER.length + 6, HEADER.length + 8) + if (lockTwoState == "00") { + //锁2关 + lifecycleScope.launch { + SerialPortManager.send("${HEADER}0202${lockNo}${FOOTER}") + } + } + }.onFailure { + it.printStackTrace() + } + } + private fun heartBeat(data: String) { runCatching { if (data.length < 200) { @@ -285,11 +321,11 @@ class HomeActivity : BaseActivity() { val temperatureHex = data.substring(temperatureStartIndex, temperatureEndIndex) val temperature = hexToDec(temperatureHex) val tempC = f2C(temperature.toDouble()) - val showTemp = "%.1f".format(tempC) + showTemperatureC = "%.1f".format(tempC) val percent = 10 * list.count { it.goodsName.isNullOrBlank().not() } - updateLeftStatus("1-1冷藏柜 ${showTemp}°C / ${percent}%") + updateLeftStatus("1-1冷藏柜 ${showTemperatureC}°C / ${percent}%") }.onFailure { it.printStackTrace() } @@ -349,11 +385,11 @@ class HomeActivity : BaseActivity() { val temperatureHex = data.substring(temperatureStartIndex, temperatureEndIndex) val temperature = hexToDec(temperatureHex) val tempC = f2C(temperature.toDouble()) - val showTemp = "%.1f".format(tempC) + showTemperatureC = "%.1f".format(tempC) val percent = 10 * list.count { it.goodsName.isNullOrBlank().not() } - updateLeftStatus("1-1冷藏柜 ${showTemp}°C / ${percent}%") + updateLeftStatus("1-1冷藏柜 ${showTemperatureC}°C / ${percent}%") getWeightInfo( start = weightStartIndex, @@ -396,7 +432,9 @@ class HomeActivity : BaseActivity() { goodsId = model.goodsId goodsName = model.goodsName weight = model.weight - createTime = model.createTime + if (model.createTime.isNullOrBlank().not()) { + createTime = model.createTime + } } notifyItemChanged(position) } diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt b/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt index d24ea82..89c0be7 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt @@ -1,16 +1,12 @@ package com.shuwei.intelligent.shelves import android.annotation.SuppressLint -import android.content.BroadcastReceiver -import android.content.Context import android.content.Intent -import android.content.IntentFilter import android.os.Bundle import android.os.Handler import android.os.Looper import android.util.Log import android.widget.LinearLayout -import android.widget.TextView import androidx.activity.viewModels import androidx.core.view.updateLayoutParams import androidx.core.widget.addTextChangedListener @@ -109,7 +105,7 @@ class ShelfActivity : BaseActivity() { getGoodsList() KeyboardUtil.hideKeyboard(context, this) } - addTextChangedListener(afterTextChanged = {editable -> + addTextChangedListener(afterTextChanged = { editable -> if (editable.isNullOrBlank()) { pageNo = 1 getGoodsList() @@ -122,12 +118,14 @@ class ShelfActivity : BaseActivity() { toast("请选择食材") return@clickWithDebounce } + val currentGoodsId = list[clickIndex].goodsId ?: "" val data = ShelfModel( shelfName = shelfModel?.shelfName, - goodsId = list[clickIndex].goodsId ?: "", + goodsId = currentGoodsId, goodsName = list[clickIndex].goodsName, weight = realWeight / 1000.0, - createTime = DateTimeUtil.formatDateTime(dateTime = Date()) + overdueDay = list[clickIndex].overdueDay, + createTime = if (shelfModel?.goodsId == currentGoodsId) null else DateTimeUtil.formatDateTime(dateTime = Date()) ) val intent = Intent().apply { putExtra(SHELF_MODEL, data) @@ -152,7 +150,7 @@ class ShelfActivity : BaseActivity() { SerialPortManager.send(DEVICE_INFO_CMD) Loading.show(this@ShelfActivity) - v.postDelayed({Loading.dismiss()}, 5000) + v.postDelayed({ Loading.dismiss() }, 5000) } KeyboardUtil.hideKeyboard(v.context, v) } @@ -173,7 +171,7 @@ class ShelfActivity : BaseActivity() { } // registerReceiver(receiver, IntentFilter(RECEIVER_DEVICE_INFO + shelfModel?.deviceNo)) - + binding.ivBack?.setOnClickListener { finish() } binding.refreshLayout.let { it.setEnableRefresh(true) it.setEnableLoadMore(false) @@ -232,10 +230,31 @@ class ShelfActivity : BaseActivity() { } return } + var firstOne:GoodsModel?=null if (pageNo == 1) { + if (shelfModel?.goodsId.isNullOrBlank().not()) { + firstOne = list.firstOrNull { it.goodsId == shelfModel?.goodsId } + if (firstOne == null) { + firstOne = GoodsModel( + goodsId = shelfModel?.goodsId, + goodsName = shelfModel?.goodsName, + isClicked = true + ) + } + } list.clear() } val records = data.result.records + if (pageNo == 1) { + firstOne?.let { one -> + val filterResult = records.firstOrNull{one.goodsId == it.goodsId } + if (filterResult != null) { + records.remove(filterResult) + } + clickIndex = 0 + list.add(one) + } + } list.addAll(records) val enableLoadMore = records.size >= PAGE_SIZE binding.refreshLayout.setEnableLoadMore(enableLoadMore) @@ -334,7 +353,7 @@ class ShelfActivity : BaseActivity() { } it.ivEmptyIcon.setImageResource(R.drawable.ic_empty_gray) it.ivEmptyIcon.updateLayoutParams { - val swDpValue = resources?.configuration?.smallestScreenWidthDp?:0 + val swDpValue = resources?.configuration?.smallestScreenWidthDp ?: 0 width = if (swDpValue > 600) 200.dp else 120.dp } } @@ -346,7 +365,7 @@ class ShelfActivity : BaseActivity() { @Subscribe(threadMode = ThreadMode.MAIN) public fun receiveWeightEvent(event: SendWeightEvent) { - if (event.shelfNo == (shelfModel?.deviceNo?:0)) { + if (event.shelfNo == (shelfModel?.deviceNo ?: 0)) { binding.tvFoodWeight.text = "${event.weight}克" } } diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfAdapter.kt b/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfAdapter.kt index d530788..f47098f 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfAdapter.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfAdapter.kt @@ -10,6 +10,10 @@ import com.chad.library.adapter4.viewholder.QuickViewHolder import com.shuwei.intelligent.shelves.R import com.shuwei.intelligent.shelves.databinding.ListItemShelfBinding import com.shuwei.intelligent.shelves.model.ShelfModel +import com.shuwei.intelligent.shelves.utils.DateTimeUtil +import com.shuwei.intelligent.shelves.utils.ext.gone +import com.shuwei.intelligent.shelves.utils.ext.visible +import java.util.Date class ShelfAdapter(list: MutableList) : BaseQuickAdapter(list) { @@ -22,14 +26,42 @@ class ShelfAdapter(list: MutableList) : return VH(binding) } + private fun stringToDate(createTime: String?): Date? { + if (createTime.isNullOrBlank()) { + return null + } + return DateTimeUtil.stringToDate(createTime) + } + override fun onBindViewHolder(holder: VH, position: Int, item: ShelfModel?) { val shelfNo = item!!.deviceNo - item.shelfName = "货架-${if (shelfNo < 10) "0${shelfNo}" else "$shelfNo" }" + item.shelfName = "货架-${if (shelfNo < 10) "0${shelfNo}" else "$shelfNo"}" val weight = item.weight ?: 0.toDouble() val binding = holder.binding + if (item.overdueDay.isNullOrBlank()) { + binding.ivStaleFood.gone() + } else { + runCatching { + val shelfDate = stringToDate(item.createTime) + if (shelfDate == null) { + binding.ivStaleFood.gone() + } else { + val days = item.overdueDay!!.toInt() + val resultDate = DateTimeUtil.addDays(shelfDate, days) + if (resultDate.before(Date())) { + binding.ivStaleFood.visible() + } else { + binding.ivStaleFood.gone() + } + } + }.onFailure { + binding.ivStaleFood.gone() + } + } + //?.setImageResource() binding.tvFoodWeight.run { setTextColor(getColor(R.color.food_weight_orange)) - val showWeight = if(weight == 0.toDouble()) "0" else "%.3f".format(weight) + val showWeight = if (weight == 0.toDouble()) "0" else "%.3f".format(weight) text = "${showWeight}千克" } //val isBlankShelf = weight <= 0 diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/model/GoodsModel.kt b/app/src/main/java/com/shuwei/intelligent/shelves/model/GoodsModel.kt index 8f51f90..f6d9f3d 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/model/GoodsModel.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/model/GoodsModel.kt @@ -5,5 +5,6 @@ import java.io.Serializable data class GoodsModel( var goodsId: String? = null, var goodsName: String? = null, + var overdueDay: String? = null, var isClicked: Boolean = false ) : Serializable \ No newline at end of file diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModel.kt b/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModel.kt index cecdaf3..f70759c 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModel.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModel.kt @@ -10,5 +10,8 @@ data class ShelfModel( var goodsName: String? = null, var deviceId: String? = null, var weight: Double? = null, - var createTime: String? = null + var createTime: String? = null, + var overdueDay: String? = null, + var temperature: String? = null, + var humidity: String = "0", ) : Serializable \ No newline at end of file diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/net/NetViewModel.kt b/app/src/main/java/com/shuwei/intelligent/shelves/net/NetViewModel.kt index 505114a..ed75037 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/net/NetViewModel.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/net/NetViewModel.kt @@ -23,8 +23,8 @@ class NetViewModel : ViewModel() { private val _getShelfListUiState = MutableStateFlow(UiState.Initial) val getShelfListUiState: StateFlow = _getShelfListUiState - private val _saveShelfGoodsListUiState = MutableStateFlow(UiState.Initial) - val saveShelfGoodsListUiState: StateFlow = _saveShelfGoodsListUiState +// private val _saveShelfGoodsListUiState = MutableStateFlow(UiState.Initial) +// val saveShelfGoodsListUiState: StateFlow = _saveShelfGoodsListUiState private val _getGoodsListUiState = MutableStateFlow(UiState.Initial) val getGoodsListUiState: StateFlow = _getGoodsListUiState @@ -64,21 +64,21 @@ class NetViewModel : ViewModel() { } } - fun saveShelfGoodsList(body: ShelfBody) { - viewModelScope.launch { - _saveShelfGoodsListUiState.value = UiState.Loading - runCatching { - val response = apiService.saveShelfGoodsList(body) - if (response.success) { - _saveShelfGoodsListUiState.value = UiState.Success(response) - } else { - _saveShelfGoodsListUiState.value = UiState.Error(response.message ?: "请求失败") - } - }.onFailure { - _saveShelfGoodsListUiState.value = UiState.Error(it.message ?: "请求异常") - } - } - } +// fun saveShelfGoodsList(body: ShelfBody) { +// viewModelScope.launch { +// _saveShelfGoodsListUiState.value = UiState.Loading +// runCatching { +// val response = apiService.saveShelfGoodsList(body) +// if (response.success) { +// _saveShelfGoodsListUiState.value = UiState.Success(response) +// } else { +// _saveShelfGoodsListUiState.value = UiState.Error(response.message ?: "请求失败") +// } +// }.onFailure { +// _saveShelfGoodsListUiState.value = UiState.Error(it.message ?: "请求异常") +// } +// } +// } fun getGoodsList( canteenId: String = "", diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/net/UrlConfig.kt b/app/src/main/java/com/shuwei/intelligent/shelves/net/UrlConfig.kt index 0b3d373..be54a1a 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/net/UrlConfig.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/net/UrlConfig.kt @@ -2,8 +2,8 @@ package com.shuwei.intelligent.shelves.net object UrlConfig { - //const val BASE_URL = "http://192.168.1.7:9002" - const val BASE_URL = "https://yyjk.shuziweidao.com/gateway/" + const val BASE_URL = "http://192.168.1.3:9002" +// const val BASE_URL = "https://yyjk.shuziweidao.com/gateway/" const val GET_ACCESS_TOKEN = "restaurant/equipment/stEquipment/getEquipmentToken" const val GET_SHELF_LIST = "inventory/smartShelves/app/getShelvesListByDeviceId" const val GET_GOODS_LIST = "inventory/smartShelves/app/getGoodsPageList" diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/task/SyncTask.kt b/app/src/main/java/com/shuwei/intelligent/shelves/task/SyncTask.kt index c1390f7..89fae70 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/task/SyncTask.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/task/SyncTask.kt @@ -38,6 +38,10 @@ class SyncTask(appContext: Context, workerParams: WorkerParameters) : val list = HomeActivity.list Log.d(TAG, "performSync: list:${list.toJsonString()}") val submitList = list.sortedBy { it.deviceNo } + submitList.forEach { + it.temperature = HomeActivity.showTemperatureC + it.humidity = HomeActivity.showHumidity + } val body = ShelfBody().also { it.deviceId = App.getInstance().deviceId it.canteenId = App.getInstance().canteenId diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/utils/DateTimeUtil.kt b/app/src/main/java/com/shuwei/intelligent/shelves/utils/DateTimeUtil.kt index 20aa2e5..b20ca77 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/utils/DateTimeUtil.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/utils/DateTimeUtil.kt @@ -1,9 +1,11 @@ package com.shuwei.intelligent.shelves.utils +import androidx.annotation.NonNull import java.text.SimpleDateFormat import java.time.LocalDateTime import java.time.ZoneId import java.time.format.DateTimeFormatter +import java.util.Calendar import java.util.Date import java.util.Locale @@ -19,6 +21,19 @@ object DateTimeUtil { return sdf.format(dateTime) } + fun stringToDate(dateText: String, pattern: String = YYYY_MM_DD_HH_MM_SS): Date? { + val sdf = SimpleDateFormat(pattern, Locale.CHINA) + return sdf.parse(dateText) + } + + fun addDays(date: Date, days: Int): Date { + val calendar = Calendar.getInstance().apply { + time = date + add(Calendar.DAY_OF_MONTH, days) + } + return calendar.time + } + // fun convert(dateStr: String, pattern: String = YYYY_MM_DD_HH_MM_SS): Date { // val formatter = DateTimeFormatter.ofPattern(pattern) // val ldt = LocalDateTime.parse(dateStr, formatter) diff --git a/app/src/main/res/drawable-xxxhdpi/ic_back_512.png b/app/src/main/res/drawable-xxxhdpi/ic_back_512.png new file mode 100644 index 0000000000000000000000000000000000000000..ec64f7c8fe37b4891633c8b0383995e56701c1d9 GIT binary patch literal 16886 zcmYj(bwE_z^Y`w$;1c4}21rRLDJUqpNGXznbQ&Nn9TJPE2pC8=h*BaUjnpbCA|Mjd zr65Rm$Npx~=li~YiQIe6%$YOunY@H(X{a2cJVuE?AP!x=q<9s9K*5hF1cn^`S@G)J zLLjh+%Zl>4UdWk2ilmdb{D_Og9mV{VCqJiYFODSSPnlxJ>iP#+j6F*#?d_#iod%2098%Pu_|W52!};A8#FFz#hm z)zgWb39*9L@l#W;CpLG7T5SWY6Osif*f8vP1Pa4Gl8itSs<^W((O4V;iB`lQc21Fg zz~TrBNEALeOrvT4O@FGDDqh42V-M~A(*-p=Vx;$8hY)Om$Iqj5cIgqBEE|tWTjKHh zC^VuVCedpDU0>#&0Xd{aG1~m!(o3+k?Rv-Qe@l(Gc@g%dBN!4*1kwqOK@16;d%{WL zZbL||ZoG41|3rZ(DlCGsx}xOazPPIh zGaxFf@}Ecl3Y?N3hv1uOZ$I*nE!R~|MBJ6&iT&Ha@?|5CX=zkfjQ3AiOVvCGl5}KC zQToePIIwk5h+q9bw#|e#NB8UKA54A^6 z{C&zodRmK*diIa&JEW(sqeB1IGQratUxxpl7LuMukIMdAOL|)E74`Jr+6B_n@==X{ zYZ>8bl^erwl~0eU4?DImggq42D_gV#r5{MB6iB>UU|V>-%h?)BOEB>r?0T(ra@RYj3Y<^0%dm zY;Q+rACB9NO#fl66r10c(SFEMYx`xdFjZ5jzK~&&udwmMeP_D7;n8eI{n(E^4<3{%~*TPNw~pFpPy@E zacOC&XqVm1@lRXEMq_leISDd34oa7Ert8!8dbvkecO#BPIq%RODb+y{vhNLm>>e;+ z?(MQ!5495S>20ZYjBr?K+H?p{MX#J*rhoV>^DMHSQ{*KAX`#%d!HLJWqM{dnALO4j zvm0s+Fw>(M=cRU{4l;7}_3b@j*wQF1MD^HA3Tfe{po~KVqA1Yvv#D-5Zh1B~PQ}(W z*BVrBM9OQ)$xesFx5@#Q1=wjcVAw^%aNOCoDj_>n-dmPdtqx*x-W6vtwgruO2%a)C z_7D^W;xeBoISO-LSc_tc?R)x=%@r=5M@h%gKTZ-~Di|BRq`3kZ6(fMY#g51MqvW-S zg-m`v{*2Ai#aC^Aw-3h3IFDOjm@dGHCetG#oNqFqv3GRYF}B3ligk@&mrCu2S&vuU znQYHE{I*Co)Wry3X=O=U8ijexiG5hQ-14l?TWn{DS;FZW@tYiPu7=0!G&q) z%#`PT+0_q?2@3rY4^UH<7E~6w;*Q3@QaXAViFRSm*0l|sTiX)e`?T#`8NoY7qlSEd zWk)bvKWc+QqQ$8MdT(r+y~`?K;BFF6Z zw{Q6sJ0o8eve{NGF8Z-u>sh-kAO^0&s#6VM)rK;vY5PZ2Mtd~pyNGdV@y9g=s?~=q z>M!0jP&lSTi)h!nrH00SA>F>F;Hl-5x-WC_8qGH`=LO)dycYRb!QtLZ^U0<=GrSol zG5=&(xF)q|O_t(S2S1XXRbN>N5lD^B^p~ies@ou%l6M%2KB)C{S-M+S_Ug#jI|iUR z3%|4_QLggxU?-4(X1+S*8PWx5aAhC${h+8IT>?L(}>S>j*p^X$GO^*8Y zX@b$lVqKoysDUXO(ZKZBg?7O-?P`7vuB7(Ec>(dN0OK6DCjsi)1I|7*^oaK2TQ^|~ z19+oWjepbkL%rlV6B~u~L=8r@w_V_3-k2VvR6qnyf+fgY=3mX3oRF5Tb+|q_)h{#C z-yhRqpM(g{6uQBM$8o|d0i|^AmYhMA(vQ0MO@&hXX6e`wJ*6jfgAl00Sj@e?-#ty*>;IK_~Q0aG_MzTF4ViNt#^ z%5_(d)Hr8O_{wxo=L8s3m90{lZ?9L*3;6INZoX({f!DHdSY2Te;k|^!csR+T9YV3DYsF2K(xTX)DI*^gUW z$s+=fqCXU_d2?^w5|jQte=1`wKF)sNmoOsPnj44sqMG21#aSE=EHtUQSW<0~7?~o+ z_auis^qAa2();bTVid5=-6D-)FH~Zuw$%@dcv+q_f_o>kdOsvY`5+~_2=46P3)<|| zQ{4$c6A8%@!n#qt=QI&tz9qzC7feRt-il=V=_txIxju5}tJ{7y z$l5nM?o@uE@c>#B?D8hQnE_(G!u6rM^H_4Z+V|&KY(2_O1s-}f=)L_(Zo4-@PE%$~ z48>`942vl0v=Tx~Gk}Rp?fw=%d~SHNNk_&$pe$zo>96r$(fs<3akHpzT;XLPFbB)e zDuf$>>^($hqv`3WFa9UQ>^t7Q-N^7>Bu+bMEFl7)pnCl|5jUq>>@i+kBC@sihcl|o zne+BiCDdDo|Cr8JY{qR0k5Z!B;VNG_HB)1}cnjUC-%S|U%ou4G#d@~14lUf@{1#B& zn>v1Un5+nb%J9b5nXOoTyvHGhTBaCV zlt!{2b{|(v!=Wq<0`fOC)>S*&>s!8+Y2!?p+>hry}?qSyCHss$Inf`u2gXjedIr9uoWT2XkmllR8(}KFuX3=YjJt z0=_)O&q4;!um5NZTd2h@ps$I|leM)X;XW;92M7N7+6ioix}f>t;U=` zt#zu~oI}-g=Jw`fR9>gyxD-($OYHnh&hV#jk0dBe3nzsr$MROl9@sm6$&C8a|1#V8 zb9lLH;yP**pl+$y+6tXS2N05DG-i?&s!?e$>TE0JSS$D2=E#XaUGUjCg`#|@Pw>jr zn7~2YZM6YDKQBU0N7ZvYUe=~zH`NNEuMSAPb6EG z#S+6qu$ScVh;YU&BW}QJsh4jGkT06B55q>ATVhhEF3S7A z`wl8idm0#9&^$OL*cy^P&UitsB?@y=2!g1jC?xG2bC6IgEw__}RxwCZ< z1CJh$RpEvpQd}}aj;jzv14Xj^uSWR<-MaPL=;`Un1EUqI!<9_$$H2kDMn|H4V(%EH z(RB(lXzz$i^=`Fw_zZhgxi5E#v2cXn$L-w!37H=_jU!M7s%lkz+=<&h$shXm)gwpE z+1|+#$KqEkUvcc(;MvlXs2}1J0jalJ_skt!i?`ff3pr@LAG>+OLGq>8>v@zoBnpL= zjM>OQ7P1e8J{feI4J=m*9jDrR(oK2i?A_k*KfZ^(qyl@V~d=IE6wLMQ^He-&pqB8xW*n{i96C+%cGhSx%qKTqeq9^d+g)Kgw%dx z&S;MCBv641SClUjjv|+T4HNktTHP{7R;YG$%Ckr7fYP{^< zWGJqwdEM@lHjVzT7T_7&QS`NXgZ|-wsr+e8NR-2|C+pcQ5(yF92WMP}*9WoOxB6|H z-lhla9l#V}Ze z749bkN(dbIZsj{(b7t+GdBaTEk}um}T3H%0zr;|RR6PbrVzA}tYb|=z0ZO#|>iM>< zDWvfFsAyj6qtWsH-PCEf0Lc86qBQ4wFm zU8EEegYd|wy2b%sH^W5AFvNt@*Pix!y7}N!W42zGdk4_iI33uB_pm0XMJi}Fz3+bYoe1!)>iCt# zF|&4kOB0%N5s%#gzCcXLann zu3@}-6s3a_58y%cR7-Y_*8uAQ%{x6r!65~;16nmh9Q4VbS35MEA0bc*AoGW~Q6_W| z7NVVH#mR2#GqL=x*%7jZGL`R$^Q;wDMcsV_Ej*Xeh^p@3DQQMbP@huz7=vbiYNZ4B z4-&#OYq~H2Tc?4o>?7S=;YE;N`Sqzer}y@XQ}LB*GMv+Q^8ccbHo+FwD5LPR{EB{N z6uS4OGK|K!&Cbba7R#6#9aDP3*6eyzlM7Ekft;w&qb}%n0O~E~lI+orW5b`Et7_)F zvRs?)hn4CS&!g7X0fPdbWPd*p$e!(I7~-FDFpsA1m(1~ZTOpB=c3p>j4s>(i2_FFT z_iG1q%y7H{{^wkDY(0a>fT|4++j945BRThSveWCPga-gaLT~8KG3i0PGfc-F%vkpR zfkc^q+po7HYyHRTOg8cc0ud-GT6TnhVwfH6B`pYhBocnooFOUu6>IypwJUQKH-5}- z9qy&QqfdD9l>*`ThW;9p8tkV|>u2%4?^s4M+hf7KQ8T;l{GCz0pgY1S3^llbBLkuQ zw3ieK)f>ZBwwo2i(MimAG9X~!=T}O8fQ4{VN{wrKAJ!gv z3=Fig*cKOa;BgNjY^8o1|J6G1#^>g+fQIU?f~$rEol$RY{J zrRi5y$krgzV*Rkt;F-WobXGCGRBNA6XJNLJn!H1J3~CVsVLf^DFG=)6EGfQ;_ z2#w*TalR|>)Rr2S-ql9t@U%>t`A&`>3V$V6DNlm}{eJIRhfIiC+p{wO6I$teGNH!8 z;t-;+hZh5UPmoz`U8j8fOt@d+aye0I#`CmQu!37gXG6d9D5Jtaqafxy=ZIcB8d2UA zX3L5-kTe@~eRH;pSg=d{8t5W+stt_EgW=pzID{ZjRyqJUMt=PlCz_l-TX(AI9rvn& z>#7F{Qj9vQnmzZN#DFq`5utP(gUHW2vTDQ+$auI@rlyY}dmrsxd{`ug`XL%aAge%0 zJn|0yIDh(Yn6*{cKiozWA#5C$bWEw`Fpr!l7pKKb{M~c3hyi1<(`9ODCiybPAzPXI zp4fXazySh?#!?KA3L@|VD6i|%!by}XmG0NoiP$LLTXVTPK6*CpMG$h{H#hCbn@0&j zUGk3ekL+Gb2q0>;`28{%KN(!T-@bL(_irsIJ~Ts}EABvW7B&uYH#^=?z0|~6 zZ{gPUm9W0#E^f0mjgAzmie9+S7WbD^EM)i6_H5f+w4ZYKNR&q0c-h!BG0Xor6d+n0 z@_BpFBozyCaQl9dbS>Nc9S%`Ov`Q`fnW?{yAXCvMv(bo=sju3e<0#9@H4nk5`gl$I z#rsC8!7AFL$HK0>Itw_c1UN`Vokbfbw4XR}TdT`WY&&aCXEiJenlBFq?)fp_DGxy5 ztL#*M9|icHRY+esdQ^SlOu9x!B1;&Gb#H#KvLEsG$hJM>p%#*_# zCE977I@^iN#CdyP0xuf$suJ|7DOY7Shf??6)&teC(j1LnJtG-!+lxXPKMOvMR%>%FU_APJyxl0>h`FDEIULsfCh^j2?Rqt7`o7N1+I2DO;KjB zY24b@sA=~2yD*x#B>Ok1lQ!Qt@c3=uYrQ+1MwtQdR6Tw5Jr|A6tA6A4p@3nX?!2l^ zeI?saGq^ruxW2Lz(o1T959Ml22ji0Sgww|QrS`6^k5tXQno@w>@dB@ssEJYyM29WGC=DI(5^QFeSZDGt$c2yPU z4OYw!&T588NU5Q~SY}yTTC(00m?JrDj2GZ>g zc?@_ZPEeOX%`y=HB9VRLDodb<$%(ah$LCIKs8G12|7L{*D<7?V9fOu;;?tW(@f8(iBQ7lOe-NoF=n)J!J(l~1`>-`-;fyS9R->7N^{d?O;ESyO{R61L?~a|d)! zm)5&o&U4#O88~@AIZs!QDc?Ma_GRWXgIfHryc~Vj2Y;ie_1BZ$3Fn0Ogu_P1m6lCD zcfdZCu+Op_La3Y#{bN*dI@ffLW3n$ghB=OzsL3lMG|Dkjg`kkvhVU!o1?v8gK^PHtoOYrbl7Rc5Zlb zNw~+sw8h-*ZjFLuvhguvO=nWWM8E_#yCXLD#|%$b{Q2AXmXE-tI< zCVVl+X!-8pp5KMKqPIKioFMfyb6A89iz7!{dy6r<-IW_tg{6^sQgp0w@1bZ5mW(gI z;^Z_6u&3F!g}%$*Tp=oG_e$4i?W5w$$i-&0VEhE?lVd7EYi89wUurpp$lT&tMf_v( zGl%hwQ$+i&N?CvTKy)7iH8k1Gz(H4=ct|DE1Z|a$%Mf4Ayb+3h?fAXjm{w_c+fb-j z>=Y`6ilN32g=^FAdA|1{ZB3ANS3u>fdYzhJ_h8+NySgj|o9bJUXAVG@jSq4d=O2R8 z7pUzd5+fj}fjD1|Z1ZdC+)-oaiDWx}rxRdWI3d)h)F_13&bhL83cy}o`mKQ6u;#+^ zf>UA6)lH$R)B1yvKTFgeAW$cOJ!um+VS?WXBLCClt<06_iJpSZ z&!A~23z_7CWwhW-8$>@gUyZJliaxDnqf7zYmS69+g8BqP=y2d>W{)1=-#RgOZLmyc zdi5po(Xa6<)l6yL=r?o=FOQ(`Y}5AYvEXSuGvgW(ND%pZm=qSTlE4uWC;;kZXnR*y z-ynat5i9*+#@-K^A$!6-p{tK|;+--iCB#1;NWIRwkCWo(WzEbb^-d2a%n3L?$yZ`yYk1Q7 z?%KH@oRFsnK%Ty1y!=seXycb$rg6w21AL&5k(}I9<5S8M%l2)17{O6iy^sqG192It{Ov0)&HBs5&pOq)29G5iXWX^U)5YG==!EE*@z z1oKlD#a5sk><=lj>?is&&^o|dQ>Eal zG&L=#J%hDe?rO&BeS{kJoVfgNsJDK5_I&8STEI2JFc%76XID4!EeLu9m6K;?VL5&XTiF!K61PbZ4s;pD0mP-JPjYiOYL>*xzKjZ z=|*k4?lOPvSDAmH^Rk8Vp9e+i4tOyr=l??Dy#H>ulAsx>05k2yw%<0DhKj`kJDo=J zNfBAI_32OMxx(&urScx7C(flb2DyR|Yw`1}ScET;Uc`bJrntR48o;fuocuYov9VxK ziv4gb2i({-spQ1KKZv?N~|MEQno>W zA~tkH3h_*vlLThwv5Qbvgz93#y%L4v;Hya`S^^U#%{aZ5YUxB(=A+ic5m!fO8|FN! zX`@H^Q+{_h$0NS$Td?Vl!36p<_}qdHp z*vRiswQ5a`mIm`g-B&$+?W_y3tZzI zDMr+2LXljpd&J8k@VsNPwNULB64D9^L+Z`H6+8oS#Z!TbG3zz9AA4Eh9dWy+y?v=j z_)24&Wu?FR8od}7q{N(rbN%2w%2r3(P-N*E(^%Ig;(pY-@*H~Defd=yT0BtRV z_Ls%tuZpV)o0kcr>UlDxfLGeJDtKqJ&(zazX;_WaGQf-p9O z9Cspndo$5Ay>lF4bwzGAt7mi$Z;}RAdZ0H_XeX1D|M@Q#SG7>>2#4$n||}!^SdS%PF0Di=s2uae?Z{6^953CjF2Y= z?^${Lw7-bb?vy4_uL|zV#B6Z{jkT28R9G8B-Opo%dzI``wvI4?5z^z#CrA1ebb zd&xpMcBe;It(*OhwsPVLe^8G_5<$PjkACAl{rzd8%A**5de+X__b2kNY)z?Fdfe}K z(2_x6DxmCh$Ne|U8>y+Y&(7Qm=$f(DK^^Y+TFt7JFY7eLkxGkWw?TeRG=&7R>QL(| zc8ehzuMj3bOG4{c-v6rz6m7!Vz6TR^w|wd!xvHRV9pAkWAb)blssO`#l57x>_M2Ue?~~&-)I@&YMlPprW*QJ z#U_RJ)JHWQ*PC?QQwN~gnZ@<{Dhw-~=Yfsv--ntwGMp3AGcwZ}JHgzSNVl6J@+P_T z`*y_%N6YOc4` zi0!oqYoGQx3kO^8D@VFE2PuMVoTJxK2x?9!E5Rg>DD&;|#9=<0mby3zQ?u#r2fzF3 z)a5>%A%Wx@xLbn@b5~3)(mS@EGMQfSqU=T0m3*ZhiOn-SXcGr>LtTisg}_Uj7;xJT z@D;9oJ12M4_!V2#A~IE+N?HOMjE?>UeMoK6i0>hk3o>@jAVZP-(%ajMJsM0=*R?6O z3;`T6mB_RyNz)A=Y>Vf7&c=aKa|WwY+F``Lq#7vJ>!5-YunVTHUx=B9P>BVol^QH^ zuk|{Ik%`?C9K)cSXL-4f9C~LcA$>`B?3AUJd8z%xt^NsfN=87g{~B6WjB!ajeKpzx zkhi`U-nZ87y^7Hu^}BPG0mHXOkIHh4gdzNdU_P!;L^!`pGtK%UjwnaH^V~1vw_aOh z)w*ZharCyFP&sAX5hVHzK&C;RBE$JdcnV|{|MSuylj-_%MmKFPzvFLch@JhZP`C03 zk0GZ55en!&p3Y;u-OwVV)O5^_s<}dh9`zZ9TqFcwq^ICRLK@lvD zoSSpLNZ2`P@qljET!SG|{khaiRBhSS99iDP$v6lh>>*(!6{W?Ca8i!DFZot;o*z8@ z4H4$1>351cw}B~(TXNA9zZXmo3N!K9l!ii4d-ONwl=ROVxp=);GWp$4#+r9PU24JR ze2twox1ap_oLidxY(G^_ELV}Ge^^RyP0E$ebKzdpgCil$Xib1+E?R-n8h&F;v3hSL zM0sy2w>|0JTfhnpz>4JQi`Pz3#FZcTrp4)`Y2(Ekd@Wt}=)+Zs^M=w&cZCsz1*q!$ zoUQ244)hrCtz)|Iqiw0go}dDMzrD2RwbX3pJ+ed=thKBq9fY#HTkcPoSZ)XM!LfR--w-?a5(YRTzD zoDTXLMaep*h51!pn)D5Pd2>g71?=_nd%pz*>#`u2E$eMr-{S!lkM#n#U*a)@G!6fGX*r> zQstnFN}!8jOhH#?=>NDm#`k<@SMw7XV+Bs>|K)$yR3$2 zHn!Qb^S-)hj9g zo_pGkwWwK-}nn$TBF=SK&Gq+5OJ z+&xfSyh>IQRdsx>($Cj-SY;Jb+3;!v7Y_^xUb-6j)|dW|lCvw@@}N_F`Dg2S{drM6 zqn#j`wQO0-H9IeIFhyvC_7qZfj+B5Y&hZ)*xV;Ox85Yo-e#YH6<0@4IYfKvnac_c- zH2R1pWC5PIKYFx9>VJ+nxodXaxAdF;TX^vRZJRMV{My-oJ@k06o%T-tPM%%G%gx41 zxh6vewW|y&7;1ik-(_&P5lpwF3rG&vw{6M0fVRwGkAoZLr=Z|gbJa>K3b2{zr(kfh9 zkIzFch^(M*7oH{S%4`J6R3HYnl>J>@sPF=}%a4dO{~eUmsLMPV;u6$-!ylf$!C82j z0N$1qM^=$$S7`r))SiW*1(E&k1xzEdtN3QFDFCjG$fS>*m3zlpcqK!Krhe+w0kf7{ zDOBJ6B>^AYOpY=JI)F`Xa%B8=?@wCU4b+<;lb_WcKKh3(uo{%eyHTvb6E&-`Y?AS# zap;_^O1bQ|v8;A5I<_?dxzA0+vmB;u(;%^e7<-xjk9Rusqb~(Q`0Q`V(dbHU)9(HUOXP zoww}K;{g5RKV$?|nqA}dHSOAX!H}|QY!j?#zsQ3K4@l~8ikPN#*!Y*e`XQE?y1d&1 zqT-HD^U0Z~sa@A3PLeiSz2$}`r;Gb@HeVlFkOxd>8kLMX7h!tx9`9^B4=Nt6RFv2H zBHD`Swr0Lrj_MX6K6Q2Z4c%@vbohE(=ltdq_Bz0Qyb^5QzzE>d1|0|OhYl17j>LR0 zf35fwhC19II7N}ueu2Co{LJ|d4v|z+*kUx+_@RLb$vrh`X<%FlMac)uY42A+%O;PD z9Y9er!O7OEWJ9{4c(P* zx*XYVP);01@0^dMFpX1eG_%wSGvSLq#wJ=;~qP``}3Tc^u91e zhJ=?7usc(r#3=^cyT8^cF47;qnqF(8V|t;xsN0dM!5Nh#Fd+G;W2g;nHFX_&H6)Ly=%GydDkI+3nN zW8KG-{C&~aP6gR2Zd|D$D9!$?*HtW(`<#u&I!;l~PKB#B_I%vfSn_*t7}`=Wuq48N zNRxf!DULU8m7Fr^^-<-$~&YawG_tK?Q*=q2nU$tRwn?eony9E~SB zRsA?%n7gD@c6d6SI0M?(n+Vx%Je+@8P20tXC$dsBL@$-9zAq#{>Pj-^6$!+3V&Bq! zfmxFTwoXo`ua(qQncXhhFwJm7U%OUcf#?ldvZQ6Lffi)|9af3{Vkef=zLoR1p%Nyt zTe_H412M0luzQI%_62RBQW~p-+>4Ux_81@gYz6*ZVNzIfsC2{Z!0rSWOawM08`6F; zNgK2=V>haiUJh|c(aIHT=||2NS1Q^nunU58jEWwI;U9n(SUjb@^@%Aa#`yC1EIuF~ z1|Y}u@ayyk!ec=`!rtRb?7Sq{`3A59`NCJ5(l0rdl^!Y4pR^fJr{LY(>$(_W`)w>RH0?*E2McD=K{%kBQF;vQGpEh)vM6zXM&Wfl^(02?9?9 zC3Q;%9B&0~GL$A#Ag7n(6AWoD=>asn;eE-W#TOV7k{DoO)am!o=JhR7p}he{Gjnqk zWDoNaOvOQ&>6{4&nrpScGX>jB|Aa7Sd81*TSZL|Ewt2#*9K5SVgQON2s*8#QH49mHKR*?H zVCF!g9Xwa)xBg7ir(Ng7nbq)COa&<6{_uL>09jXoxqIu-qL51B#e5N|{wUmJ?cMop z(<5_L%K#0nf`sBS61Sv5F9K~K|5&IagT%9Q;Nyp$M--pZ5#CFM4;Ai;N1mZVy#ygC zOWZ_5#qE(~3$u-OtXJ=jfO>3{k%TM^7{p{<5aeX<0osMug4t*!DNk^|$K?0I^+A@w zg2ClMvz*S@jPqm)T;Y%4R%n&UR9NM+bpt+L9VbwO{*1OWV(X}v>Xg+aceZ@W%nAxA+qU6Fh zv^+a4SUsX{t_}T@ho$8jq-w(dfJmC|wr9cwBnGO_j8f{Z39?b&>#G{CE9BGv9{dDi z*yH*S60m%6kmxc$y2=Yl!t*|D&iQ=w>fy&{F%n!N_aHq&OFP2Q`+KtVZ0ENW$eq}Q zjxQyDI_h0kZ**udE`?{#Kq;@MQb_j!j)P1MvytT8CRH2Wa;QJ*YQf?9zRmifZ+;ML zg5%bEx()qvKDaH@Or;cw&K9Mb%T0|CZB1S;Q_(L2O|~~ZI(0FP0Ozh&wei*nG&Z?o z$HP!_5-Jyh8_JG2i%XE!gx?u}(X^KoB~mQ~*#I+-+r>a732$LkA|t2%x^E`cUAWP; z{6oYVYKQCt#9>R0H8}@PqK|5hOv5*lSb7lOqx# z)CPF@sO+p@`B|~K@{0$>L1XRBSZx&u^nrZue)9;{ScgTVdbKaHJJg;B7jkUuV!ph^ z5#UV3b^vDPL#RG3PFWRXrP`4{-5`=S2;#r5TIwNbIjPS!h-rQ>4t9xu323F zHO_Wra_^;5W4TW9m*?*rV1Sh?!%-koa}5qUW6pJ2kzgFiw>8vSGIt_R(XYe!zWNip zHchH~eRBKJ{{PeS@Jt-EEL;4Ji?cY4S9HyoIjP#I`1=)gH;t*mbeeTc=tbHE{gH1{ z-8*}l0Vk$|@pe1cM3VX4zie!5c#J@cTZF;ukB**C^0P? zN;a5Bt4guj+Bg`0{Y5wgN$>G##c24z1+ABFQppjT*bo{)JbSoiKsB8LVV3W^qz>Qq zkTMYLC6bF4?o1cD?0t+sxLb9tyr@u6$$12leL{3}I(!1wqs;#FI4@Y}JY)qw17mnM zzVpar3WIMRjysCQv2!EoQD!d`14J`^IpYM-Cu_!wX7F$?wtM_H=)>bw|Aj1Cs`bVaGn{QPwTCQN8Od7y8zI6GSV;kkdX!{S za%gaYTTu4!;Q$FwP7$bg$GMC^ksJom0Yh$U&!5KeFP9ej*HSHcrCb;U|5#CKrVC#= zE@M7AkJcEi^p96I|IQ+cTLEVkP$6q}`p5|N;X)|+rUEq=!G;9FN;uAX2F$OgN?aF=nSv6|Qf#!cNI?_7sbw_Q zAFuiK{sVZ<;9+A!jYOZ|!#3nKK|^vlsjhYAslz+JVZU|1fzRnVjp}eIiPOqI;8I@U zvO2cX+uIK#Jr7?{6e>TJC+pE|TE1&86e(uI0f%~EqL%>XREh3O9@p2s{Paxs&bJvM zdx^LN;lg6A*DesdlE$tiAkjGa-BF^BLzUHmeDgu??2zvK4G-o^?m~c3CMM@>l@Wo8 zkXAYeG5sK3#@E!DYUUQF-(HQSvpN4j{z$ti@I)HB0${;I6ztg9K21DnVT!8fmb_25 zY1?U&^!!g6^+N&=UTy&Zk`5rbuyeojEVdtYg_S&K5u1e{7mwNEEB zS3@Y=B=h<|`?!?ccBpsi+xBOW@YHy7f&8KcIqXBtmjoYz%8_+xl+A5)$b`{I44U6u zGZ7bbc@6V$E<%yQcdiO~{_TKhLzm#Bz`ngTQ!QLhA1k>ZoZ?imn%)_D-Z4dN_<{5@ z933R1CmD`HTZfVt3o~~)DY92fe7RP~OHAIV-he^0`WFF{!tRVbmkc4E5f!P2u6-41 zwy`VrrN(l+Y7>>>iux%x7w^l{LCq|@W&OGSaUV9QLkMqRUqc%&QgbtoXPruN zmupqcu*_>BDqm67c8Js9)>`Uq!NG&EFXqq5T`;h|Sg%@~`ohNrt|0aHTI?t1(Y}M` ztw+&CQ0%#B-J*tJ*TM!iHa6bf79N4w=u9w3!c5i2$w1n8MiXbJPpe|iNi|H z(=V*po=N5@H2dq_EvkHd1ns5`-{s+G^`4)AiX3HNe?aHP?~h}G!BUOl9W@to^hNqbSe&I?EZkZbM z>DGT+3&7TIyCNO`ZhZvW!Xj9DW)5iX)>3^BAXPAxjJ3C5^aqw(Ab@SeB@-Cy{7V=l z#^9tr`S*kHKyM(tOy`XJk1&KRS|6`v@ctz{4qP@L_y{vif6t@_gwJ$G=l>=AzxnNd zgh>TYB~!yKP+k&Y8X(MaUK$2g{t_l(fTzPGU;r!+G=!In+ZRY*8t7L!V+*P#A_pk5 zNdJSzPu&Kn>92w_tem8!>F)*j8r<@M$qyhr zf`o+!@e44C1$_FHTLwZ)V z=JxkH?6>f2^i!7mzjc6p8`WDYf1l;Sv;K@M=YQ*%Hi!rWf=FDASn+`$$Vu050Ks%l WIx}xg$_;*lxU8h1n19jY-v0qGKv(Gi literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stale_food_512.png b/app/src/main/res/drawable-xxxhdpi/ic_stale_food_512.png new file mode 100644 index 0000000000000000000000000000000000000000..8f398302045b65f1e9dde8b6227b65126bef6cbe GIT binary patch literal 25978 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 ac^p{f^|&W(MH`!-1>0p{rk|#3cj + + @@ -143,24 +153,24 @@ android:layout_height="36dp" android:layout_marginEnd="12dp" android:background="@null" + android:fontFamily="sans-serif-medium" android:hint="输入食材名称" - android:maxLines="1" - android:inputType="text" - android:text="" android:imeOptions="actionSearch" - android:textColor="@color/food_name_black" + android:inputType="text" + android:maxLines="1" android:paddingStart="1dp" android:paddingEnd="1dp" + android:text="" + android:textColor="@color/food_name_black" android:textColorHint="#B4BEC8" - android:fontFamily="sans-serif-medium" android:textSize="15sp" tools:ignore="Autofill,HardcodedText,TextFields" /> + tools:itemCount="10" + tools:listitem="@layout/list_item_search" /> + android:visibility="gone" /> - + diff --git a/app/src/main/res/layout-sw360dp/list_item_shelf.xml b/app/src/main/res/layout-sw360dp/list_item_shelf.xml index ff79b9a..a4434c7 100644 --- a/app/src/main/res/layout-sw360dp/list_item_shelf.xml +++ b/app/src/main/res/layout-sw360dp/list_item_shelf.xml @@ -75,5 +75,13 @@ tools:text="-" /> + \ No newline at end of file diff --git a/app/src/main/res/layout-sw600dp/activity_shelf.xml b/app/src/main/res/layout-sw600dp/activity_shelf.xml index 1cab528..2884982 100644 --- a/app/src/main/res/layout-sw600dp/activity_shelf.xml +++ b/app/src/main/res/layout-sw600dp/activity_shelf.xml @@ -100,6 +100,16 @@ app:elevation="0dp" tools:ignore="HardcodedText" /> + + @@ -210,7 +220,7 @@ android:layout_marginTop="24dp" android:layout_marginEnd="48dp" android:layout_marginStart="48dp" - android:layout_marginBottom="48dp" + android:layout_marginBottom="24dp" android:backgroundTint="@color/bg_page" android:ellipsize="end" android:insetTop="0dp" diff --git a/app/src/main/res/layout-sw600dp/list_item_shelf.xml b/app/src/main/res/layout-sw600dp/list_item_shelf.xml index 3945ebb..63b1f7f 100644 --- a/app/src/main/res/layout-sw600dp/list_item_shelf.xml +++ b/app/src/main/res/layout-sw600dp/list_item_shelf.xml @@ -75,5 +75,13 @@ tools:text="-" /> + \ No newline at end of file diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml index cb88015..1564dab 100644 --- a/app/src/main/res/xml/network_security_config.xml +++ b/app/src/main/res/xml/network_security_config.xml @@ -1,6 +1,7 @@ + 192.168.1.3 192.168.1.7