From 87612e006b1889205d532ee351249d32897dd4cc Mon Sep 17 00:00:00 2001 From: DrKLO Date: Wed, 6 Aug 2014 03:17:40 +0400 Subject: [PATCH] Bug fixes --- TMessagesProj/build.gradle | 2 +- .../telegram/android/MessagesController.java | 91 ++++++++++------ .../messenger/ConnectionsManager.java | 1 + .../telegram/messenger/FileLoadOperation.java | 7 +- .../org/telegram/objects/MessageObject.java | 98 +++++++++++++----- .../org/telegram/ui/ApplicationLoader.java | 29 ------ .../org/telegram/ui/Cells/ChatBaseCell.java | 59 +++++++---- .../java/org/telegram/ui/ChatActivity.java | 1 + .../org/telegram/ui/ChatProfileActivity.java | 3 +- .../org/telegram/ui/GroupCreateActivity.java | 10 +- .../src/main/res/drawable-hdpi/broadcast3.png | Bin 0 -> 1187 bytes .../src/main/res/drawable-hdpi/broadcast4.png | Bin 0 -> 1175 bytes .../src/main/res/drawable-ldpi/broadcast3.png | Bin 0 -> 1098 bytes .../src/main/res/drawable-ldpi/broadcast4.png | Bin 0 -> 1084 bytes .../src/main/res/drawable-mdpi/broadcast3.png | Bin 0 -> 1125 bytes .../src/main/res/drawable-mdpi/broadcast4.png | Bin 0 -> 1100 bytes .../main/res/drawable-xhdpi/broadcast3.png | Bin 0 -> 1254 bytes .../main/res/drawable-xhdpi/broadcast4.png | Bin 0 -> 1225 bytes .../main/res/drawable-xxhdpi/broadcast3.png | Bin 0 -> 1385 bytes .../main/res/drawable-xxhdpi/broadcast4.png | Bin 0 -> 1344 bytes 20 files changed, 185 insertions(+), 116 deletions(-) create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/broadcast3.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/broadcast4.png create mode 100644 TMessagesProj/src/main/res/drawable-ldpi/broadcast3.png create mode 100644 TMessagesProj/src/main/res/drawable-ldpi/broadcast4.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/broadcast3.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/broadcast4.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/broadcast3.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/broadcast4.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/broadcast3.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/broadcast4.png diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 603c8aa9e..e01ec1f62 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 299 + versionCode 302 versionName "1.7.0" } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index 8bee85a29..60857b092 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -92,6 +92,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter public boolean enableJoined = true; public int fontSize = AndroidUtilities.dp(16); + public int maxGroupCount = 200; + public int maxBroadcastCount = 100; private TLRPC.ChatParticipants currentChatInfo = null; private int chatParticipantsId = 0; @@ -191,9 +193,26 @@ public class MessagesController implements NotificationCenter.NotificationCenter SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); enableJoined = preferences.getBoolean("EnableContactJoined", true); preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); + maxGroupCount = preferences.getInt("maxGroupCount", 200); + maxBroadcastCount = preferences.getInt("maxBroadcastCount", 100); fontSize = preferences.getInt("fons_size", 16); } + public void updateConfig(final TLRPC.TL_config config) { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + maxBroadcastCount = config.broadcast_size_max; + maxGroupCount = config.chat_size_max; + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); + SharedPreferences.Editor editor = preferences.edit(); + editor.putInt("maxGroupCount", maxGroupCount); + editor.putInt("maxBroadcastCount", maxBroadcastCount); + editor.commit(); + } + }); + } + public void addSupportUser() { TLRPC.TL_userForeign user = new TLRPC.TL_userForeign(); user.phone = "333"; @@ -4485,38 +4504,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter } NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); } - if (!markAsReadMessages.isEmpty()) { - for (Integer id : markAsReadMessages) { - MessageObject obj = dialogMessage.get(id); - if (obj != null) { - obj.messageOwner.unread = false; - updateMask |= UPDATE_MASK_READ_DIALOG_MESSAGE; - } - } - } - if (!markAsReadEncrypted.isEmpty()) { - for (HashMap.Entry entry : markAsReadEncrypted.entrySet()) { - NotificationCenter.getInstance().postNotificationName(messagesReadedEncrypted, entry.getKey(), entry.getValue()); - long dialog_id = (long)(entry.getKey()) << 32; - TLRPC.TL_dialog dialog = dialogs_dict.get(dialog_id); - if (dialog != null) { - MessageObject message = dialogMessage.get(dialog.top_message); - if (message != null && message.messageOwner.date <= entry.getValue()) { - message.messageOwner.unread = false; - updateMask |= UPDATE_MASK_READ_DIALOG_MESSAGE; - } - } - } - } - if (!deletedMessages.isEmpty()) { - NotificationCenter.getInstance().postNotificationName(messagesDeleted, deletedMessages); - for (Integer id : deletedMessages) { - MessageObject obj = dialogMessage.get(id); - if (obj != null) { - obj.deleted = true; - } - } - } if (printChangedArg) { updateMask |= UPDATE_MASK_USER_PRINT; } @@ -4542,9 +4529,44 @@ public class MessagesController implements NotificationCenter.NotificationCenter Utilities.RunOnUIThread(new Runnable() { @Override public void run() { + int updateMask = 0; if (!markAsReadMessages.isEmpty()) { NotificationCenter.getInstance().postNotificationName(messagesReaded, markAsReadMessages); NotificationsController.getInstance().processReadMessages(markAsReadMessages, 0, 0, 0); + + for (Integer id : markAsReadMessages) { + MessageObject obj = dialogMessage.get(id); + if (obj != null) { + obj.messageOwner.unread = false; + updateMask |= UPDATE_MASK_READ_DIALOG_MESSAGE; + } + } + } + if (!markAsReadEncrypted.isEmpty()) { + for (HashMap.Entry entry : markAsReadEncrypted.entrySet()) { + NotificationCenter.getInstance().postNotificationName(messagesReadedEncrypted, entry.getKey(), entry.getValue()); + long dialog_id = (long)(entry.getKey()) << 32; + TLRPC.TL_dialog dialog = dialogs_dict.get(dialog_id); + if (dialog != null) { + MessageObject message = dialogMessage.get(dialog.top_message); + if (message != null && message.messageOwner.date <= entry.getValue()) { + message.messageOwner.unread = false; + updateMask |= UPDATE_MASK_READ_DIALOG_MESSAGE; + } + } + } + } + if (!deletedMessages.isEmpty()) { + NotificationCenter.getInstance().postNotificationName(messagesDeleted, deletedMessages); + for (Integer id : deletedMessages) { + MessageObject obj = dialogMessage.get(id); + if (obj != null) { + obj.deleted = true; + } + } + } + if (updateMask != 0) { + NotificationCenter.getInstance().postNotificationName(updateInterfaces, updateMask); } } }); @@ -4734,7 +4756,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter TLObject object = TLClassStore.Instance().TLdeserialize(is, is.readInt32()); BuffersStorage.getInstance().reuseFreeBuffer(is); if (object != null) { - int from_id = chat.admin_id; if (from_id == UserConfig.getClientUserId()) { from_id = chat.participant_id; @@ -4943,6 +4964,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter pendingEncMessagesToDelete.addAll(serviceMessage.action.random_ids); } return null; + } else { + return null; } } else { FileLog.e("tmessages", "unkown message " + object); @@ -4951,9 +4974,9 @@ public class MessagesController implements NotificationCenter.NotificationCenter FileLog.e("tmessages", "unkown TLObject"); } } else { + BuffersStorage.getInstance().reuseFreeBuffer(is); FileLog.e("tmessages", "fingerprint mismatch"); } - BuffersStorage.getInstance().reuseFreeBuffer(is); return null; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java index 706fb5e3d..f3b44c331 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java @@ -781,6 +781,7 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection. processRequestQueue(RPCRequest.RPCRequestClassTransportMask, 0); } + MessagesController.getInstance().updateConfig(config); } updatingDcSettings = false; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java index 4991bd324..11cbb918a 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java @@ -509,7 +509,6 @@ public class FileLoadOperation { } } }); - } } } @@ -675,7 +674,11 @@ public class FileLoadOperation { return; } httpTask = new DownloadImageTask(); - httpTask.doInBackground(httpUrl); + if (android.os.Build.VERSION.SDK_INT >= 11) { + httpTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null, null, null); + } else { + httpTask.execute(null, null, null); + } } private void processRequestResult(RequestInfo requestInfo, TLRPC.TL_error error) { diff --git a/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java b/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java index 666b6556d..21a109395 100644 --- a/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java +++ b/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java @@ -39,7 +39,6 @@ public class MessageObject { public int contentType; public ArrayList photoThumbs; public Bitmap imagePreview; - public PhotoObject previewPhoto; public String dateKey; public boolean deleted = false; public float audioProgress; @@ -138,10 +137,6 @@ public class MessageObject { messageText = LocaleController.getString("ActionAddUser", R.string.ActionAddUser).replace("un2", "").replace("un1", ""); } } else if (message.action instanceof TLRPC.TL_messageActionChatEditPhoto) { - photoThumbs = new ArrayList(); - for (TLRPC.PhotoSize size : message.action.photo.sizes) { - photoThumbs.add(new PhotoObject(size, preview)); - } if (isFromMe()) { messageText = LocaleController.getString("ActionYouChangedPhoto", R.string.ActionYouChangedPhoto); } else { @@ -242,22 +237,8 @@ public class MessageObject { } } else if (message.media != null && !(message.media instanceof TLRPC.TL_messageMediaEmpty)) { if (message.media instanceof TLRPC.TL_messageMediaPhoto) { - photoThumbs = new ArrayList(); - for (TLRPC.PhotoSize size : message.media.photo.sizes) { - PhotoObject obj = new PhotoObject(size, preview); - photoThumbs.add(obj); - if (imagePreview == null && obj.image != null) { - imagePreview = obj.image; - } - } messageText = LocaleController.getString("AttachPhoto", R.string.AttachPhoto); } else if (message.media instanceof TLRPC.TL_messageMediaVideo) { - photoThumbs = new ArrayList(); - PhotoObject obj = new PhotoObject(message.media.video.thumb, preview); - photoThumbs.add(obj); - if (imagePreview == null && obj.image != null) { - imagePreview = obj.image; - } messageText = LocaleController.getString("AttachVideo", R.string.AttachVideo); } else if (message.media instanceof TLRPC.TL_messageMediaGeo) { messageText = LocaleController.getString("AttachLocation", R.string.AttachLocation); @@ -266,11 +247,6 @@ public class MessageObject { } else if (message.media instanceof TLRPC.TL_messageMediaUnsupported) { messageText = LocaleController.getString("UnsuppotedMedia", R.string.UnsuppotedMedia); } else if (message.media instanceof TLRPC.TL_messageMediaDocument) { - if (!(message.media.document.thumb instanceof TLRPC.TL_photoSizeEmpty)) { - photoThumbs = new ArrayList(); - PhotoObject obj = new PhotoObject(message.media.document.thumb, preview); - photoThumbs.add(obj); - } messageText = LocaleController.getString("AttachDocument", R.string.AttachDocument); } else if (message.media instanceof TLRPC.TL_messageMediaAudio) { messageText = LocaleController.getString("AttachAudio", R.string.AttachAudio); @@ -335,6 +311,80 @@ public class MessageObject { dateKey = String.format("%d_%02d_%02d", dateYear, dateMonth, dateDay); generateLayout(); + generateThumbs(false, preview); + } + + public void generateThumbs(boolean update, int preview) { + if (messageOwner instanceof TLRPC.TL_messageService) { + if (messageOwner.action instanceof TLRPC.TL_messageActionChatEditPhoto) { + if (!update) { + photoThumbs = new ArrayList(); + for (TLRPC.PhotoSize size : messageOwner.action.photo.sizes) { + photoThumbs.add(new PhotoObject(size, preview)); + } + } else if (photoThumbs != null && !photoThumbs.isEmpty()) { + for (PhotoObject photoObject : photoThumbs) { + for (TLRPC.PhotoSize size : messageOwner.action.photo.sizes) { + if (size instanceof TLRPC.TL_photoSizeEmpty) { + continue; + } + if (size.type.equals(photoObject.photoOwner.type)) { + photoObject.photoOwner.location = size.location; + break; + } + } + } + } + } + } else if (messageOwner.media != null && !(messageOwner.media instanceof TLRPC.TL_messageMediaEmpty)) { + if (messageOwner.media instanceof TLRPC.TL_messageMediaPhoto) { + if (!update) { + photoThumbs = new ArrayList(); + for (TLRPC.PhotoSize size : messageOwner.media.photo.sizes) { + PhotoObject obj = new PhotoObject(size, preview); + photoThumbs.add(obj); + if (imagePreview == null && obj.image != null) { + imagePreview = obj.image; + } + } + } else if (photoThumbs != null && !photoThumbs.isEmpty()) { + for (PhotoObject photoObject : photoThumbs) { + for (TLRPC.PhotoSize size : messageOwner.media.photo.sizes) { + if (size instanceof TLRPC.TL_photoSizeEmpty) { + continue; + } + if (size.type.equals(photoObject.photoOwner.type)) { + photoObject.photoOwner.location = size.location; + break; + } + } + } + } + } else if (messageOwner.media instanceof TLRPC.TL_messageMediaVideo) { + if (!update) { + photoThumbs = new ArrayList(); + PhotoObject obj = new PhotoObject(messageOwner.media.video.thumb, preview); + photoThumbs.add(obj); + if (imagePreview == null && obj.image != null) { + imagePreview = obj.image; + } + } else if (photoThumbs != null && !photoThumbs.isEmpty() && messageOwner.media.video.thumb != null) { + PhotoObject photoObject = photoThumbs.get(0); + photoObject.photoOwner.location = messageOwner.media.video.thumb.location; + } + } if (messageOwner.media instanceof TLRPC.TL_messageMediaDocument) { + if (!(messageOwner.media.document.thumb instanceof TLRPC.TL_photoSizeEmpty)) { + if (!update) { + photoThumbs = new ArrayList(); + PhotoObject obj = new PhotoObject(messageOwner.media.document.thumb, preview); + photoThumbs.add(obj); + } else if (photoThumbs != null && !photoThumbs.isEmpty() && messageOwner.media.document.thumb != null) { + PhotoObject photoObject = photoThumbs.get(0); + photoObject.photoOwner.location = messageOwner.media.video.thumb.location; + } + } + } + } } public String getFileName() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ApplicationLoader.java b/TMessagesProj/src/main/java/org/telegram/ui/ApplicationLoader.java index 949dced5d..2285ef327 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ApplicationLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ApplicationLoader.java @@ -8,7 +8,6 @@ package org.telegram.ui; -import android.app.Activity; import android.app.AlarmManager; import android.app.Application; import android.app.PendingIntent; @@ -93,34 +92,6 @@ public class ApplicationLoader extends Application { UserConfig.loadConfig(); if (UserConfig.getCurrentUser() != null) { - boolean changed = false; - SharedPreferences preferences = applicationContext.getSharedPreferences("Notifications", MODE_PRIVATE); - int v = preferences.getInt("v", 0); - if (v != 1) { - SharedPreferences preferences2 = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); - SharedPreferences.Editor editor = preferences2.edit(); - if (preferences.contains("view_animations")) { - editor.putBoolean("view_animations", preferences.getBoolean("view_animations", false)); - } - if (preferences.contains("selectedBackground")) { - editor.putInt("selectedBackground", preferences.getInt("selectedBackground", 1000001)); - } - if (preferences.contains("selectedColor")) { - editor.putInt("selectedColor", preferences.getInt("selectedColor", 0)); - } - if (preferences.contains("fons_size")) { - editor.putInt("fons_size", preferences.getInt("fons_size", 16)); - } - editor.commit(); - editor = preferences.edit(); - editor.putInt("v", 1); - editor.remove("view_animations"); - editor.remove("selectedBackground"); - editor.remove("selectedColor"); - editor.remove("fons_size"); - editor.commit(); - } - MessagesController.getInstance().users.put(UserConfig.getClientUserId(), UserConfig.getCurrentUser()); ConnectionsManager.getInstance().applyCountryPortNumber(UserConfig.getCurrentUser().phone); ConnectionsManager.getInstance().initPushConnection(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java index cde0be595..52ba8e91f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java @@ -60,9 +60,11 @@ public class ChatBaseCell extends BaseCell { private static Drawable checkDrawable; private static Drawable halfCheckDrawable; private static Drawable clockDrawable; + private static Drawable broadcastDrawable; private static Drawable checkMediaDrawable; private static Drawable halfCheckMediaDrawable; private static Drawable clockMediaDrawable; + private static Drawable broadcastMediaDrawable; private static Drawable errorDrawable; protected static Drawable mediaBackgroundDrawable; private static TextPaint timePaintIn; @@ -177,6 +179,8 @@ public class ChatBaseCell extends BaseCell { clockMediaDrawable = getResources().getDrawable(R.drawable.msg_clock_photo); errorDrawable = getResources().getDrawable(R.drawable.msg_warning); mediaBackgroundDrawable = getResources().getDrawable(R.drawable.phototime); + broadcastDrawable = getResources().getDrawable(R.drawable.broadcast3); + broadcastMediaDrawable = getResources().getDrawable(R.drawable.broadcast4); timePaintIn = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); timePaintIn.setTextSize(AndroidUtilities.dp(12)); @@ -569,6 +573,7 @@ public class ChatBaseCell extends BaseCell { boolean drawCheck2 = false; boolean drawClock = false; boolean drawError = false; + boolean isBroadcast = (int)(currentMessageObject.getDialogId() >> 32) == 1; if (currentMessageObject.messageOwner.send_state == MessagesController.MESSAGE_SEND_STATE_SENDING) { drawCheck1 = false; @@ -601,30 +606,42 @@ public class ChatBaseCell extends BaseCell { clockMediaDrawable.draw(canvas); } } - if (drawCheck2) { - if (!media) { - if (drawCheck1) { - setDrawableBounds(checkDrawable, layoutWidth - AndroidUtilities.dpf(22.5f) - checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - checkDrawable.getIntrinsicHeight()); + if (isBroadcast) { + if (drawCheck1 || drawCheck2) { + if (!media) { + setDrawableBounds(broadcastDrawable, layoutWidth - AndroidUtilities.dpf(20.5f) - broadcastDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.0f) - broadcastDrawable.getIntrinsicHeight()); + broadcastDrawable.draw(canvas); } else { - setDrawableBounds(checkDrawable, layoutWidth - AndroidUtilities.dpf(18.5f) - checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - checkDrawable.getIntrinsicHeight()); + setDrawableBounds(broadcastMediaDrawable, layoutWidth - AndroidUtilities.dpf(24.0f) - broadcastMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - broadcastMediaDrawable.getIntrinsicHeight()); + broadcastMediaDrawable.draw(canvas); } - checkDrawable.draw(canvas); - } else { - if (drawCheck1) { - setDrawableBounds(checkMediaDrawable, layoutWidth - AndroidUtilities.dpf(26.0f) - checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - checkMediaDrawable.getIntrinsicHeight()); - } else { - setDrawableBounds(checkMediaDrawable, layoutWidth - AndroidUtilities.dpf(22.0f) - checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - checkMediaDrawable.getIntrinsicHeight()); - } - checkMediaDrawable.draw(canvas); } - } - if (drawCheck1) { - if (!media) { - setDrawableBounds(halfCheckDrawable, layoutWidth - AndroidUtilities.dp(18) - halfCheckDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - halfCheckDrawable.getIntrinsicHeight()); - halfCheckDrawable.draw(canvas); - } else { - setDrawableBounds(halfCheckMediaDrawable, layoutWidth - AndroidUtilities.dpf(20.5f) - halfCheckMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - halfCheckMediaDrawable.getIntrinsicHeight()); - halfCheckMediaDrawable.draw(canvas); + } else { + if (drawCheck2) { + if (!media) { + if (drawCheck1) { + setDrawableBounds(checkDrawable, layoutWidth - AndroidUtilities.dpf(22.5f) - checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - checkDrawable.getIntrinsicHeight()); + } else { + setDrawableBounds(checkDrawable, layoutWidth - AndroidUtilities.dpf(18.5f) - checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - checkDrawable.getIntrinsicHeight()); + } + checkDrawable.draw(canvas); + } else { + if (drawCheck1) { + setDrawableBounds(checkMediaDrawable, layoutWidth - AndroidUtilities.dpf(26.0f) - checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - checkMediaDrawable.getIntrinsicHeight()); + } else { + setDrawableBounds(checkMediaDrawable, layoutWidth - AndroidUtilities.dpf(22.0f) - checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - checkMediaDrawable.getIntrinsicHeight()); + } + checkMediaDrawable.draw(canvas); + } + } + if (drawCheck1) { + if (!media) { + setDrawableBounds(halfCheckDrawable, layoutWidth - AndroidUtilities.dp(18) - halfCheckDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - halfCheckDrawable.getIntrinsicHeight()); + halfCheckDrawable.draw(canvas); + } else { + setDrawableBounds(halfCheckMediaDrawable, layoutWidth - AndroidUtilities.dpf(20.5f) - halfCheckMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - halfCheckMediaDrawable.getIntrinsicHeight()); + halfCheckMediaDrawable.draw(canvas); + } } } if (drawError) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 7c8158722..d706ee32c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -2161,6 +2161,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not MessageObject newMsgObj = (MessageObject)args[2]; if (newMsgObj != null) { obj.messageOwner.media = newMsgObj.messageOwner.media; + obj.generateThumbs(true, 1); } messagesDict.remove(msgId); messagesDict.put(newMsgId, obj); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java index 1dd411aad..e4179b324 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java @@ -143,7 +143,8 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen membersSectionRow = rowCount++; rowCount += info.participants.size(); membersEndRow = rowCount; - if (info.participants.size() < 200) { + int maxCount = chat_id > 0 ? MessagesController.getInstance().maxGroupCount : MessagesController.getInstance().maxBroadcastCount; + if (info.participants.size() < maxCount) { addMemberRow = rowCount++; } else { addMemberRow = -1; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java index 93b6d220a..91d74a232 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java @@ -91,6 +91,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen private EditText userSelectEditText; private boolean ignoreChange = false; private boolean isBroadcast = false; + private int maxCount = 200; private HashMap selectedContacts = new HashMap(); private ArrayList allSpans = new ArrayList(); @@ -113,6 +114,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen public GroupCreateActivity(Bundle args) { super(args); isBroadcast = args.getBoolean("broadcast", false); + maxCount = !isBroadcast ? MessagesController.getInstance().maxGroupCount : MessagesController.getInstance().maxBroadcastCount; } @Override @@ -141,7 +143,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } else { actionBarLayer.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); } - actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), 200)); + actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override @@ -216,7 +218,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen selectedContacts.remove(sp.uid); } } - actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), 200)); + actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); listView.invalidateViews(); } else { search = true; @@ -274,7 +276,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen userSelectEditText.setSelection(text.length()); ignoreChange = false; } else { - if (selectedContacts.size() == 200) { + if (selectedContacts.size() == maxCount) { return; } ignoreChange = true; @@ -282,7 +284,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen span.uid = user.id; ignoreChange = false; } - actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), 200)); + actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); if (searching || searchWas) { searching = false; searchWas = false; diff --git a/TMessagesProj/src/main/res/drawable-hdpi/broadcast3.png b/TMessagesProj/src/main/res/drawable-hdpi/broadcast3.png new file mode 100644 index 0000000000000000000000000000000000000000..d296975976be8cd68b334c66f7615b45e8c52c79 GIT binary patch literal 1187 zcmbVMTWAzl7#@vAO$~$?EGbG)M=)5sGjnFLJG*1nWOrv*7qe@+S#%N6%+8!-hs|7^ zIdLaJWUYvaf_TZBJ|y~}z7#}!5ET`Jmlp{N-k%gop_D@V&=y+knIxO~5EMKx=lXx& zf1k0Q?3TucuNo+dYD{mHb7XDyzvcC0-tqXvPO`M(WC8bD{kWnyh>B@e5rMR!44@oR zwBdb^PzOcT_3QZpE@ZkT)iM~xmtj1^CTNQ4==5wwEh7wyXh1ik^lvwA(?Hjv^v+<0 z%h(B2(zlK{sCOirS4YZfM58-5gAPw31O~zi@QgvzmAoiD!z+=!f6dZhMg*6m^sG^Z zObV?F=4ky=PEO6~BBv-_ z!q}Erwo<7u6@jsw0TxCg5ubzS14JU=4x3o<0;apJ#vmhCb#xo+mI-`DrDzS|C`~M# zb-}PRnR#N6(;k=V3S{hLTA>9tuMk;p1FNfP6R+6H-tN z*Ekl!w#PYvONtP}6q%Ckv9J({hh%{aUKE3o8a8dZSTR*p)2kD`b6D=9SSjHk1zS$u zvIc7v&{MLo<(4cPBzl7&qo}&+pZ)aAdMhJG-;cDEV;Nv3zLLIx{!jZoi`70SW-Kv= z^^4qv9AaO!gBve7mQ3fGk z?v|$4@2;+RIq`ST#WPD!-ddea^If5zzqqz?*Y>g4LuGvF)TV0T%h6w|f3Zz$^~t$u zYGD2SiM?Gn>yQ09>8)xxe1`{nj;=ntiLXP5K!iq<86G%(!S3mxZo+^uiwqyEjb-M=^5cEtZ}q?1|s J$9Ufl{{i>Je`Ejv literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/broadcast4.png b/TMessagesProj/src/main/res/drawable-hdpi/broadcast4.png new file mode 100644 index 0000000000000000000000000000000000000000..ed908d8041727326452f16b676beb9ed4eae990a GIT binary patch literal 1175 zcmaJ>O=uid9DgQpkw8ErSQ}9uQx6K=nRzoiJ3B+R>F&-0S$u;M2 z1)KKrv2XA=0D}#uS|hdc0oC$d){HT1%MB@0Iw zD)Z%_fajg!N{DAyrmEJ;f~DBZ#6CFQQmFzL6BD-FMK4lYS*EL3rRVsXV_+9T7P8Ei zQ?>F8EchXY5-TMw9;KkHut-9w4B86?9*G<;a!5=fLFE+{NwBvVYAv)IYDF`8wy2b4 z<_QT@j%zlXY*S?YaE?QYqHw&x2||)0lF_n9%vREi_VhJqII=<~Adc_BSfg3@mq?bO zo^FNU2Ica$VlV0?il&TfnE{7bo^#zet}Z$v75uLoJEEiNa)7xCj{K$2qV;I(>62;h z9&acHQg77h(4j>!7d78na zs_!rMJ78wsCw?^V2e2?J!Ln&NUM$Du*@{-fq4Nf|jnH>tH@~X0gZ)&V7kORg5i+{I z=Q5&_PirDwf-Fl4)8pDZvdeC`!^X8nbu#WU>R(`x%d=b2Yud^l83k6P29Gx6Ev z=B}e(e17lr^KajgKKOd0UE9_9qy2z;nrq+uF|7$4M3mkc8)48q3nM8+S*CBE}Sdl340P(RToid-L4=|Fx4qkM5;c2^*KsXRP&@! zD&w*;B5AhCsDTdSn+`!!RC3UFRBZ-fP(f3Mm7>2qenJC7Ptlj63a2<(G;ItoxM*Tw zw4^P}XbGJjJP(q-LZ5M$k!-X|2 z#(@}Qpb!y7u^;dpdKB=8c)f%>9}HCLaMigLbgi%2PY8e>Od*=n`QR0YO% zr&yRsBmxee4-<{BH*aCp4_jVOgF!}~<{Az*YzqX8YQ>(zDVlh?7lP?1%098>)e}Wh z#`>zmLWW~aGl;9E?cpN&;GhAMPd_0>L@=%O7I1a+bL|Nw2Vg$mx z2w^UgjthxQOcu!EMKPLaU<;OqRZBw+y9Tja#|npHrL2ooY`Z1fo^5o%__U2}Z`yW1 zb|MNCRWqzW4$89^t&Cjb8q)KwZGu{UCF215|BibPtN%~VSmF#DG{;}f(zqfW7##Oo zp9uTIgDf&JE*Xu>kG?gLv05m|>5~7x@_l!Au$kF@_+sRQEWj=5^V%z6@$G!)z4jYR zG>CRRn_3Jlwe;VwB!|{l)|Zc5>}`g<%$oX6Ir`!B(9h#HUpIYakL3okW2c(?y1}oe z%}+zyt()C%l%~FxJI=|E=fDqed*%Awmm6)NqZtZpP)`Shom;DCcY^6ITx2|BlnI^AmSo6c=&9+m< zm=p9Up1cjuGGtc|UMeE`7YKtXUIbxR@iJe!c6z9Lki7SO@ALWo{ytk=m>nLvJVa5{ zaBfa5ko|o44Gxh1!SjI#*)HL12`{@9T-SX>rA)VsK+e`zPyy*?^ZrLPMN$0~t60LN z{JdhgHlv3areS-8O;J-b4No^#5e8+nVmV3r@a;PqSZ0#GBj&lhmqAr)Zrw-A>kCC= zebtandS)6-H58)2Mpy?8yXFK+BT2XQD&!nqvovT!@M@AicB+(L1R2*yKxD+I!NC}i zWCn^bmVlFh=b*rH0thx{9%#zuHht2JUtG<_VW1?#ZJ&k6iFG| z&^;D19BbQQTy1oK3+S&KJ<&n2=^?g&0(Z?fNIfbOT{6kt>4rie@kY7rTcjv@O?8bm z8#y?qCTa4*n3kz%F&-u~DW1*p>39M{nNM??0Qp2FC1_AebanLNX8BY$A#yP&auS5u zn5>GN3Z;y!34Bb;2wiT@39#-MsB70Eb~{|*RIZZok&a!z=(@FT2P{@y>;_fW1DRzJ z*4 ztiz4{m&+1o*swYNX_oF4>A>)K()vU=86M=2iSfy3{CxOmmyA^{r>2UHFXi7yM>GA` zUJt%{Iqp542h$_vgF^9a>xF*h!p-5)H`{y7&C=Do=jNCANbqg%Vr3tLjlS05=C8@f zQF`gg_b~%(47NVss*SX+?~K3y3dWrDK8`${*tsEaTgA~cRNnygX@B;^*f#YeoabD2 KLETN?+xi1Qwo+aI literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/broadcast3.png b/TMessagesProj/src/main/res/drawable-mdpi/broadcast3.png new file mode 100644 index 0000000000000000000000000000000000000000..fb81e5ebf9d6ae89c6e981569c57ce7f4f936f40 GIT binary patch literal 1125 zcmbVLOK1~87~WX=w54K_8T!A9}W&F-Y#Cj02_q)7{c z^&l-(D5AZ1@!-LV3VM*DpcgABqT)>vJbEegs)*Lvq^TZC1qXI#{+a*#{`Y)p=wwIR zp*DgbIuZk78t?7S*V2UlXG-V4;_V=cWzn#aM`g)^L|8F$5F|8d45p!^Oi#Xoy#&#a zS2J0ZO%4jOp?M@n$5YWvj3$WQ{)#Ed1&BZnj;VT(Tz~qU1ga7wM|?>-X-46=Ixu6w z;hCX~JX4T)h3xMGy%hlyXb?%Dq7`*ps07I>uYk|aHARA|3MvH2np4?i3PcSH0-uL= z%e0>ce#XOidpM3e0a%)$DVn7i*3EE&mlbFlY%UU8vy{A$7UP??uoNW65i$jeDwoTi zve#o+V-&;lyu-n=Zmi+9r*$M%+`8RWXAq$+TdIjvLkA9{lru^wNMcWGA!ueYxkaqo zn~B0Hqbia~F&>)IG$*dAwvE#8j~m-++nH$-QfX)#B}>Nj$amGjICnc6aul&Q!f8vz zMUjf4A(u3$ql6eF@ry@M6(QckGJ!bfkHy%CKfo|N8=>P~h7Cl+-Z;Yr>Kxl){hTP$ zVUA{)IL9!to^Zg+NBp7}FP7tcd>xz6Z6xV3tlL$w-5S;(-w`WBEhr(w${0qm-T|p` z0~z+XVS?ze4Pc2#zTIv*3;+CO-YJLTE8~gu`yM|T%CubCPhH{$YuV$%V z;SO|;Tdj|Ut>J+>o)`;{#)Yek7x7r#NQmJ~9=K%3}rnVp>v+;n%}PA<77>tY^^9B1C@p!4C((_O`b z)kQ&qE@-TC;;NPxfQs*W5(@V+#{s$kvH7<9O69;*#zoDrve?h|b#jG|D60T${bf%#W)Y^R(6r?wnC&Oe8QL-v%w;jh<-9bSu?ClY zG`c)oFqUTx#bo-=(|u)?D6kRM>9RfN1Zp|K?CDj>IlN{WdJlqU6U@F-V}sdaD{B3Jl-!u;n^*s8OGC7jS|hp6-WWd%4_! zVkf91ilmG!>mCcD9BbQQTzlvM=h0s`YNCU}l84wl3fu+XAoVErR>>rHhZ_ok#2fXJ zZ;_(tbI>&wY~ys0C+i_6f_{oRUNgsu}mDs zl@tUbN0^zI0!0o2DXnM%AJfu8m78?}tUCs(+O>$?3O9WyS55m!$F5&+-MMN9jLf*$ z4Q5=APLGOoPB$zkl*97uM+=c}Eh1C%U7Oy^uWHq>AD1BHl5q_HO$vQa%7T)LLxC(_ zl0=26aLpPy+viH$f4MAih7FtJpJu6Ekq!)x2dz(pgW*9AnHZmp#`@O|fsEBk7A6bj z_fx-jcl#UK2kO_ZuAUfzXPm~Zi{7bMO?~pu{>GKn^-rT8e)QCFvBvuEZ+0KoO*Fhd zer@2jwy~{ueG}S_-Wz*ZH(%fO@y6Djfu|?$_Dss1XE%?0{?+l8%I~zUy}R{tvAt#N mO6*xum1r^L|F*{ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/broadcast3.png b/TMessagesProj/src/main/res/drawable-xhdpi/broadcast3.png new file mode 100644 index 0000000000000000000000000000000000000000..c95c69020ceb9a23914b094941f48752d99bca43 GIT binary patch literal 1254 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nA0*tB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsfTnHU*b zxS5-|x*9o|Sr{5x8aWxb85SFg9>C2ik~7ua$FAYGO%#QAmD%4lD%( zWaO9R7iZ)bC^!e3D)=TQXXb(Upy+}4)+Mzlvn(~mttdZN0UW+onON*6>~DzP6mr5$ zALtl;P~t#JEHEKp3Is9XNgv38XP(qNV2&vQW{s(P@)4~@T2ziR>(a>vg$dq+b nN1?2NP5z;W+}baR3U2NM_6n2PUQ%W@^2Fs>N+a@{6{hq5c#_nzzX zo%5YPFHcS!8I0|X5d<+<8kfp=kB86phw%HSW_A^Cd;DV6pR((IQ*{xM)9o4pB~zV7 zWu)q@-d{9HvhLt6MzjTEJhMpy# z;T1-43aDX>&%0=9exjny&uD^9jvfXhfrt&5$X7vN&RU)rWXW~AB0h)LGzr#K{FyAd zL8_`uf`aWLz*BreV_*`b1q$*onSsNAWgtg091XbyWJN|0ArE?s#NJ%JE|w*^=L<_& zvf=xVNYl+`lWKC5?M~BB5CocGX_if3jfB^-d^Jc|-hsXa33-}pIKE+9Ahf8~>^VP6 zVx}7*n2w@s8n(P%qHxOSKy_$HF|=uhajk26ei{8sV@qwX(sB@8MxH(AYPcTt1AQ>g z-TfVfikOXf%r$UP)LF^a=1gSyB`HhdFO+WRqMT%5Moy=SMK+(xKq#&q#=PZp z$UT?ggnUZk@M6(vrmFQicD;(wGb#HphROrGJGxFg$LyJ{C5I2U&Px zTs#_1>uLj!)t@CPR|#&{?yaqjMiY@oqil@dJqeC2d zSAPs#R+fei5#1*`*G`I`bGLUt`<%0_y|%J)>eI33kC_AU&aNLmym@0P(%nDVd2;N; zo|3ZjgG^yrKY`wgmCwBJ=E1L{-B*`OpPY_eG{*Pdy?N)>Lcm{m{4-$O=#o1w-iaR` z*nYNn{{6Xq*MI4fYXj}Yh1Cbo+cVr(Ho Wkh}l(;=BUFpG&DYA$^g5>C`_|Igd{O literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/broadcast3.png b/TMessagesProj/src/main/res/drawable-xxhdpi/broadcast3.png new file mode 100644 index 0000000000000000000000000000000000000000..f89697b731e581c648ec70cf7d1844d632e996f0 GIT binary patch literal 1385 zcmbVMZA=?w9KV(f>S!flij45#*&%K*wD(eI?@l`U4oxU)3SrD?!qFb|fP3-opoPqY ztr@cJgPJHqG?5wRmN0SnWoBk9M$9IONo7XKOs1Q-Y*VwK?87n@p96}1AT#kvo_pT@ zzu*7;jzya4E!)esBM4#%HTa`&eOjNUeE7YAjE%u%rxs|_nx#%H$toP;iAxJu^vtX9b6YLy3l){TtWdK zccJ@h!gyHraS6U*P~n;fn_6OnJuy0t*6jtgDFzY0T62=GY?2Wo7%HHJHI;2>;-z1rz?Rsj+xa119gg0vD&#!fOg4mJh~wJGsV zCh8Av=z=E~n$R?v!LVd9X-nE|lG23{G)?OqBx!{bR&_ws*pyXND{>5ePK_zNtnrcv zbVjyA>eE~(v~=ACK@NvEiA8lIP%vazij^_KhGT-D`?V&mYEkYVGq#jgTLxqfi*l;e zr^H}BIxBKu7`sO+(gmS4%sz#ONnv~aQmjwlL@nfZq432P=i^MUnk1;8(-8=eUI#@G zH0i~Ic7mjQ9(#~*QaO&TupSTP_XZu+5CvzT+C$lCufuPLgLFD;=o~gAsv0ZCxSU=d z>fONFABkmr3dd@a(jrN{xeACRBu!Eik_>#!H6YB!cu_y==~?&I&nbLA7Y{0u0M_Em z@LTBrZ@<^E@&6Mu3>t&!#qqCV$z8z;)VG_Z4-cEo!-=qC6xbTAC-?CPVt6a$_q3$0 zb^NiqTK8GIvC*71o0)={NcYggZZ)%V&+MWnb}d=vcy|?1`rcXN$a!SB5$rY3y_0um zLIz^}%_(H&wwu0EH1d>X^o3i7xv9fr0#2Eh#`-3y;nByBRJJ!=IN?hmOG6K`{#txn zMR9i9%~O%_3zaqJR(>)>ce$$y<`$?GGH=E(o?hH@|H;CV%R}Wd@_ef~GvD`{o6bLx z{-xmH@9BYa^zCok)$H+4Z%w?M{?hY-`;eNYOpB9;ER*F!9~X@zk>vy6uLi7uD86bj zmW*D{&KKv;A~QvA1oJcQTFd?)3oTdjmMcEG_O&~F@T-NAGu=d9=G~*i!2F@1V+WWG zzA8p6WpxFm%HsUldUtQ(+-3eQXit>a7gk0-?>Xjs@EqtLe%~|R|3nvi=bIml-yfz- zBiPji&)XBTuNZb4?_TolSnV07Or-)SY(*dY^%?JX6^VvF1H})IPi4^4;fv-n%l$~B znKD}CofAi=cTYc?d41u=*vaeXPd9~J**AYalYY(M9x@;YF1|>xqKVdjexX2eM}o=7{38)0a?W?!HH-!sU_2;3eq!YQLwX*YUVO+W&?k`_Qz zVmpL{!18^2zZB{bq_|y7ri@f8u}J)=R^)d5xi9 z8Dez#(G{msu{a1RngHAmx1Dq1F5smcxEpu*@TURc#7WFaVmN8X3ED}~xEtgb3ax2; zJDp%6d0SBOqZz|cX$a_NvJu!f=~6{Wk-0r8AtD0)UwL8#RYVk{@hrfimHC0a(%#Fqs=qA3zs z&Mz&lVLuS?F~Nw3gb}+;-vd693VIk4F2d_|Q)r&cuaUDn7xMmxi$P~FvpN3LEQKrB zf#z|w^`WpjJc0}-MuVeK{&w{N1X-s>nLsi-onBm8YM5v%+F3DF@g|))Lrp!JyFQRA zI$a(=d1~X>-Gj)dgCiS{)BV)8#fEK%CQcoFyk*Wh`G#dj^#U^cUE@{HrkWD%DxIha z?Xd1f=BvQmmff`v9C@rryZ8#QJ@Gx#NjE*5I~EizozLW~xzIq$mV0mSC~HX#O=3HFvtsP`59)>DSJGG55|MaGr|WF72^> zZb@5#V}05Vs`gbCFWylrYlnXTN=7Ivere!_^|{*OFnG)ISIK7Z;N-z4#Y?}1yXKF~ z#;u)YFaEu2(^Sj!>z^>>ADb)5pW<~TlUFjog6?mOepFU#HBJb$8ebjcQ5{7Ae74y~^nzI$%}wLeR%6R!?W-kbgKwO2I{hzc