diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 1b361cea3..693a756c0 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -def verName = "7.4.1-preview02" -def verCode = 169 +def verName = "7.4.2-preview-2226" +def verCode = 170 def serviceAccountCredentialsFile = rootProject.file("service_account_credentials.json") diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java b/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java index 1548d77ed..a06305caf 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java @@ -65,10 +65,6 @@ import android.text.TextUtils; import android.text.method.LinkMovementMethod; import android.text.style.URLSpan; import android.text.util.Linkify; -import android.transition.ChangeBounds; -import android.transition.TransitionSet; -import android.transition.TransitionValues; -import android.transition.Visibility; import android.util.DisplayMetrics; import android.util.StateSet; import android.util.TypedValue; @@ -110,14 +106,12 @@ import org.telegram.tgnet.RequestTimeDelegate; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBarLayout; -import org.telegram.ui.ActionBar.ActionBarMenuItem; import org.telegram.ui.ActionBar.AlertDialog; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.BottomSheet; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Cells.TextDetailSettingsCell; import org.telegram.ui.Components.BackgroundGradientDrawable; -import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.ForegroundColorSpanThemable; import org.telegram.ui.Components.ForegroundDetector; import org.telegram.ui.Components.LayoutHelper; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ChatObject.java b/TMessagesProj/src/main/java/org/telegram/messenger/ChatObject.java index 4d8a534ee..f6deaa620 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ChatObject.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ChatObject.java @@ -436,10 +436,16 @@ public class ChatObject { invitedUsers.remove(id); } if (oldParticipant != null) { - oldParticipant.flags = participant.flags; oldParticipant.muted = participant.muted; oldParticipant.muted_by_you = participant.muted_by_you; - oldParticipant.volume = participant.volume; + if (!participant.min) { + oldParticipant.volume = participant.volume; + } else { + if ((participant.flags & 128) != 0 && (oldParticipant.flags & 128) == 0) { + participant.flags &=~ 128; + } + } + oldParticipant.flags = participant.flags; oldParticipant.can_self_unmute = participant.can_self_unmute; oldParticipant.date = participant.date; oldParticipant.lastTypingDate = Math.max(oldParticipant.active_date, participant.active_date); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java index 8d44beed3..2af6a9e53 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java @@ -3056,7 +3056,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } else { cleanupPlayer(true, true, messageObject != null && messageObject.isVoice(), false); } - } else if (seekToProgressPending != 0 && (playbackState == ExoPlayer.STATE_READY || playbackState == ExoPlayer.STATE_IDLE)) { + } else if (audioPlayer != null && seekToProgressPending != 0 && (playbackState == ExoPlayer.STATE_READY || playbackState == ExoPlayer.STATE_IDLE)) { int seekTo = (int) (audioPlayer.getDuration() * seekToProgressPending); audioPlayer.seekTo(seekTo); lastProgress = seekTo; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java index 18e4a789b..11c6b06d6 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java @@ -1428,6 +1428,9 @@ public class MediaDataController extends BaseController { req.stickerset = inputStickerSetShortName; } getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + if (BuildConfig.DEBUG && error != null) { //supress test backend warning + return; + } if (response instanceof TLRPC.TL_messages_stickerSet) { processLoadedDiceStickers(name, isEmoji, (TLRPC.TL_messages_stickerSet) response, false, (int) (System.currentTimeMillis() / 1000)); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java index 5f0a52007..c7f838160 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java @@ -12634,7 +12634,8 @@ public class MessagesController extends BaseController implements NotificationCe } if ((update.notify_settings.flags & 4) != 0) { editor.putInt("EnableGroup2", update.notify_settings.mute_until); - getNotificationsController().deleteNotificationChannelGlobal(NotificationsController.TYPE_GROUP); + editor.putBoolean("overwrite_group", true); + AndroidUtilities.runOnUIThread(() -> getNotificationsController().deleteNotificationChannelGlobal(NotificationsController.TYPE_GROUP)); } } else if (update.peer instanceof TLRPC.TL_notifyUsers) { if ((update.notify_settings.flags & 1) != 0) { @@ -12649,7 +12650,8 @@ public class MessagesController extends BaseController implements NotificationCe } if ((update.notify_settings.flags & 4) != 0) { editor.putInt("EnableAll2", update.notify_settings.mute_until); - getNotificationsController().deleteNotificationChannelGlobal(NotificationsController.TYPE_PRIVATE); + editor.putBoolean("overwrite_private", true); + AndroidUtilities.runOnUIThread(() -> getNotificationsController().deleteNotificationChannelGlobal(NotificationsController.TYPE_PRIVATE)); } } else if (update.peer instanceof TLRPC.TL_notifyBroadcasts) { if ((update.notify_settings.flags & 1) != 0) { @@ -12664,7 +12666,8 @@ public class MessagesController extends BaseController implements NotificationCe } if ((update.notify_settings.flags & 4) != 0) { editor.putInt("EnableChannel2", update.notify_settings.mute_until); - getNotificationsController().deleteNotificationChannelGlobal(NotificationsController.TYPE_CHANNEL); + editor.putBoolean("overwrite_channel", true); + AndroidUtilities.runOnUIThread(() -> getNotificationsController().deleteNotificationChannelGlobal(NotificationsController.TYPE_CHANNEL)); } } getMessagesStorage().updateMutedDialogsFiltersCounters(); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java index 5e8d60dcc..a395b4752 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java @@ -288,7 +288,14 @@ public class NotificationsController extends BaseController { NotificationChannel channel = list.get(a); String id = channel.getId(); if (id.startsWith(keyStart)) { - systemNotificationManager.deleteNotificationChannel(id); + try { + systemNotificationManager.deleteNotificationChannel(id); + } catch (Exception e) { + FileLog.e(e); + } + if (BuildVars.LOGS_ENABLED) { + FileLog.d("delete channel cleanup " + id); + } } } } catch (Throwable e) { @@ -2581,7 +2588,14 @@ public class NotificationsController extends BaseController { String channelId = preferences.getString(key, null); if (channelId != null) { editor.remove(key).remove(key + "_s"); - systemNotificationManager.deleteNotificationChannel(channelId); + try { + systemNotificationManager.deleteNotificationChannel(channelId); + } catch (Exception e) { + FileLog.e(e); + } + if (BuildVars.LOGS_ENABLED) { + FileLog.d("delete channel internal " + channelId); + } } } if (what == 1 || what == -1) { @@ -2589,7 +2603,14 @@ public class NotificationsController extends BaseController { String channelId = preferences.getString(key, null); if (channelId != null) { editor.remove(key).remove(key + "_s"); - systemNotificationManager.deleteNotificationChannel(channelId); + try { + systemNotificationManager.deleteNotificationChannel(channelId); + } catch (Exception e) { + FileLog.e(e); + } + if (BuildVars.LOGS_ENABLED) { + FileLog.d("delete channel internal " + channelId); + } } } editor.commit(); @@ -2628,7 +2649,14 @@ public class NotificationsController extends BaseController { String channelId = preferences.getString(key, null); if (channelId != null) { editor.remove(key).remove(key + "_s"); - systemNotificationManager.deleteNotificationChannel(channelId); + try { + systemNotificationManager.deleteNotificationChannel(channelId); + } catch (Exception e) { + FileLog.e(e); + } + if (BuildVars.LOGS_ENABLED) { + FileLog.d("delete channel global internal " + channelId); + } } } @@ -2644,9 +2672,25 @@ public class NotificationsController extends BaseController { String channelId = preferences.getString(key, null); if (channelId != null) { editor.remove(key).remove(key + "_s"); - systemNotificationManager.deleteNotificationChannel(channelId); + try { + systemNotificationManager.deleteNotificationChannel(channelId); + } catch (Exception e) { + FileLog.e(e); + } + if (BuildVars.LOGS_ENABLED) { + FileLog.d("delete channel global internal " + channelId); + } } } + String overwriteKey; + if (type == TYPE_CHANNEL) { + overwriteKey = "overwrite_channel"; + } else if (type == TYPE_GROUP) { + overwriteKey = "overwrite_group"; + } else { + overwriteKey = "overwrite_private"; + } + editor.remove(overwriteKey); editor.commit(); } catch (Exception e) { FileLog.e(e); @@ -2673,7 +2717,11 @@ public class NotificationsController extends BaseController { String key = entry.getKey(); if (key.startsWith("org.telegram.key")) { if (!key.endsWith("_s")) { - systemNotificationManager.deleteNotificationChannel((String) entry.getValue()); + String id = (String) entry.getValue(); + systemNotificationManager.deleteNotificationChannel(id); + if (BuildVars.LOGS_ENABLED) { + FileLog.d("delete all channel " + id); + } } editor.remove(key); } @@ -2830,19 +2878,25 @@ public class NotificationsController extends BaseController { String key; String groupId; + String overwriteKey; if (isSilent) { groupId = "other" + currentAccount; + overwriteKey = null; } else { if (type == TYPE_CHANNEL) { groupId = "channels" + currentAccount; + overwriteKey = "overwrite_channel"; } else if (type == TYPE_GROUP) { groupId = "groups" + currentAccount; + overwriteKey = "overwrite_group"; } else { groupId = "private" + currentAccount; + overwriteKey = "overwrite_private"; } } boolean secretChat = !isDefault && (int) dialogId == 0; + boolean shouldOverwrite = !isInApp && overwriteKey != null && preferences.getBoolean(overwriteKey, false); if (isSilent) { name = LocaleController.getString("NotificationsSilent", R.string.NotificationsSilent); @@ -2870,8 +2924,11 @@ public class NotificationsController extends BaseController { if (channelId != null) { NotificationChannel existingChannel = systemNotificationManager.getNotificationChannel(channelId); + if (BuildVars.LOGS_ENABLED) { + FileLog.d("current channel for " + channelId + " = " + existingChannel); + } if (existingChannel != null) { - if (!isSilent) { + if (!isSilent && !shouldOverwrite) { int channelImportance = existingChannel.getImportance(); Uri channelSound = existingChannel.getSound(); long[] channelVibrationPattern = existingChannel.getVibrationPattern(); @@ -2893,6 +2950,9 @@ public class NotificationsController extends BaseController { if (!isDefault && secretChat) { newSettings.append("secret"); } + if (BuildVars.LOGS_ENABLED) { + FileLog.d("current channel settings for " + channelId + " = " + newSettings + " old = " + settings); + } newSettingsHash = Utilities.MD5(newSettings.toString()); newSettings.setLength(0); if (!newSettingsHash.equals(settings)) { @@ -3053,7 +3113,10 @@ public class NotificationsController extends BaseController { if (edited && newSettingsHash != null) { preferences.edit().putString(key, channelId).putString(key + "_s", newSettingsHash).commit(); - } else if (newSettingsHash == null || !isInApp || !isDefault) { + if (BuildVars.LOGS_ENABLED) { + FileLog.d("change edited channel " + channelId); + } + } else if (shouldOverwrite || newSettingsHash == null || !isInApp || !isDefault) { for (int a = 0; a < vibrationPattern.length; a++) { newSettings.append(vibrationPattern[a]); } @@ -3067,8 +3130,15 @@ public class NotificationsController extends BaseController { } newSettingsHash = Utilities.MD5(newSettings.toString()); - if (!isSilent && channelId != null && !settings.equals(newSettingsHash)) { - systemNotificationManager.deleteNotificationChannel(channelId); + if (!isSilent && channelId != null && (shouldOverwrite || !settings.equals(newSettingsHash))) { + try { + systemNotificationManager.deleteNotificationChannel(channelId); + } catch (Exception e) { + FileLog.e(e); + } + if (BuildVars.LOGS_ENABLED) { + FileLog.d("delete channel by settings change " + channelId); + } channelId = null; } } @@ -3108,6 +3178,10 @@ public class NotificationsController extends BaseController { notificationChannel.setGroup(keyGroup); systemNotificationManager.createNotificationChannelGroup(notificationChannelGroup); systemNotificationManager.createNotificationChannel(notificationChannel); + if (BuildVars.LOGS_ENABLED) { + FileLog.d("create new channel group " + keyGroup); + FileLog.d("create new channel " + channelId); + } preferences.edit().putString(key, channelId).putString(key + "_s", newSettingsHash).commit(); } return channelId; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java index a019a1c26..9460ae590 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java @@ -97,7 +97,6 @@ public class SendMessagesHelper extends BaseController implements NotificationCe public class ImportingHistory { public String historyPath; public ArrayList mediaPaths = new ArrayList<>(); - public HashMap uploadedMedias = new HashMap<>(); public HashSet uploadSet = new HashSet<>(); public HashMap uploadProgresses = new HashMap<>(); public HashMap uploadSize = new HashMap<>(); @@ -149,6 +148,18 @@ public class SendMessagesHelper extends BaseController implements NotificationCe public long getTotalCount() { return totalSize; } + + private void onFileFailedToUpload(String path) { + if (path.equals(historyPath)) { + importingHistoryMap.remove(dialogId); + TLRPC.TL_error error = new TLRPC.TL_error(); + error.code = 400; + error.text = "IMPORT_UPLOAD_FAILED"; + getNotificationCenter().postNotificationName(NotificationCenter.historyImportProgressChanged, dialogId, new TLRPC.TL_messages_initHistoryImport(), error); + } else { + uploadSet.remove(path); + } + } private void addUploadProgress(String path, long sz, float progress) { uploadProgresses.put(path, progress); @@ -181,7 +192,6 @@ public class SendMessagesHelper extends BaseController implements NotificationCe private void onMediaImport(String path, long size, TLRPC.InputFile inputFile) { addUploadProgress(path, size, 1.0f); - uploadedMedias.put(path, inputFile); TLRPC.TL_messages_uploadImportedMedia req = new TLRPC.TL_messages_uploadImportedMedia(); req.peer = peer; req.import_id = importId; @@ -754,6 +764,12 @@ public boolean retriedToSend; } else if (id == NotificationCenter.FileDidFailUpload) { final String location = (String) args[0]; final boolean enc = (Boolean) args[1]; + + ImportingHistory importingHistory = importingHistoryFiles.get(location); + if (importingHistory != null) { + importingHistory.onFileFailedToUpload(location); + } + ArrayList arr = delayedMessages.get(location); if (arr != null) { for (int a = 0; a < arr.size(); a++) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/video/MediaCodecVideoConvertor.java b/TMessagesProj/src/main/java/org/telegram/messenger/video/MediaCodecVideoConvertor.java index e3990bcd3..ac47f61e4 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/video/MediaCodecVideoConvertor.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/video/MediaCodecVideoConvertor.java @@ -405,6 +405,7 @@ public class MediaCodecVideoConvertor { encoderOutputBuffers = encoder.getOutputBuffers(); } + int maxBufferSize = 0; if (audioIndex >= 0) { MediaFormat audioFormat = extractor.getTrackFormat(audioIndex); copyAudioBuffer = audioFormat.getString(MediaFormat.KEY_MIME).equals(MediaController.AUIDO_MIME_TYPE) || audioFormat.getString(MediaFormat.KEY_MIME).equals("audio/mpeg"); @@ -417,7 +418,14 @@ public class MediaCodecVideoConvertor { if (copyAudioBuffer) { audioTrackIndex = mediaMuxer.addTrack(audioFormat, true); extractor.selectTrack(audioIndex); - int maxBufferSize = audioFormat.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE); + try { + maxBufferSize = audioFormat.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE); + } catch (Exception e) { + FileLog.e(e); //s20 ultra exception + } + if (maxBufferSize <= 0) { + maxBufferSize = 16 * 1024; + } audioBuffer = ByteBuffer.allocateDirect(maxBufferSize); if (startTime > 0) { @@ -479,6 +487,11 @@ public class MediaCodecVideoConvertor { } } } else if (copyAudioBuffer && audioIndex != -1 && index == audioIndex) { + long size = extractor.getSampleSize(); + if (size > maxBufferSize) { + maxBufferSize = (int) (size + 1024); + audioBuffer = ByteBuffer.allocateDirect(maxBufferSize); + } info.size = extractor.readSampleData(audioBuffer, 0); if (Build.VERSION.SDK_INT < 21) { audioBuffer.position(0); @@ -788,7 +801,12 @@ public class MediaCodecVideoConvertor { extractor.selectTrack(videoTrackIndex); MediaFormat trackFormat = extractor.getTrackFormat(videoTrackIndex); muxerVideoTrackIndex = mediaMuxer.addTrack(trackFormat, false); - maxBufferSize = trackFormat.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE); + try { + maxBufferSize = trackFormat.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE); + } catch (Exception e) { + FileLog.e(e); //s20 ultra exception + } + if (start > 0) { extractor.seekTo(start, MediaExtractor.SEEK_TO_PREVIOUS_SYNC); } else { @@ -803,7 +821,11 @@ public class MediaCodecVideoConvertor { audioTrackIndex = -1; } else { muxerAudioTrackIndex = mediaMuxer.addTrack(trackFormat, true); - maxBufferSize = Math.max(trackFormat.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE), maxBufferSize); + try { + maxBufferSize = Math.max(trackFormat.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE), maxBufferSize); + } catch (Exception e) { + FileLog.e(e); //s20 ultra exception + } if (start > 0) { extractor.seekTo(start, MediaExtractor.SEEK_TO_PREVIOUS_SYNC); } else { @@ -811,6 +833,9 @@ public class MediaCodecVideoConvertor { } } } + if (maxBufferSize <= 0) { + maxBufferSize = 16 * 1024; + } ByteBuffer buffer = ByteBuffer.allocateDirect(maxBufferSize); if (audioTrackIndex >= 0 || videoTrackIndex >= 0) { long startTime = -1; @@ -819,6 +844,11 @@ public class MediaCodecVideoConvertor { checkConversionCanceled(); boolean eof = false; int muxerTrackIndex; + long size = extractor.getSampleSize(); + if (size > maxBufferSize) { + maxBufferSize = (int) (size + 1024); + buffer = ByteBuffer.allocateDirect(maxBufferSize); + } info.size = extractor.readSampleData(buffer, 0); int index = extractor.getSampleTrackIndex(); if (index == videoTrackIndex) { diff --git a/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java b/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java index 7d6fe23c7..a8c27bd60 100644 --- a/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java +++ b/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java @@ -36987,6 +36987,7 @@ public class TLRPC { public boolean can_self_unmute; public boolean just_joined; public boolean versioned; + public boolean min; public boolean muted_by_you; public int user_id; public int date; @@ -37020,6 +37021,7 @@ public class TLRPC { can_self_unmute = (flags & 4) != 0; just_joined = (flags & 16) != 0; versioned = (flags & 32) != 0; + min = (flags & 256) != 0; muted_by_you = (flags & 512) != 0; user_id = stream.readInt32(exception); date = stream.readInt32(exception); @@ -37039,6 +37041,7 @@ public class TLRPC { flags = can_self_unmute ? (flags | 4) : (flags &~ 4); flags = just_joined ? (flags | 16) : (flags &~ 16); flags = versioned ? (flags | 32) : (flags &~ 32); + flags = min ? (flags | 256) : (flags &~ 256); flags = muted_by_you ? (flags | 512) : (flags &~ 512); stream.writeInt32(flags); stream.writeInt32(user_id); @@ -45282,6 +45285,8 @@ public class TLRPC { id = stream.readInt32(exception); if ((flags & 1) != 0) { peer_id = Peer.TLdeserialize(stream, stream.readInt32(exception), exception); + } else { + peer_id = new TL_peerUser(); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java index 90cb3734b..ff99f21fe 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java @@ -201,7 +201,7 @@ public class DialogsAdapter extends RecyclerListView.SelectionAdapter { boolean hasContacts = false; if (hasHints) { count += 2 + messagesController.hintDialogs.size(); - } else if (dialogsType == 0 && dialogsCount <= 10 && folderId == 0 && messagesController.isDialogsEndReached(folderId)) { + } else if (dialogsType == 0 && messagesController.dialogs_dict.size() <= 10 && folderId == 0 && messagesController.isDialogsEndReached(folderId)) { if (ContactsController.getInstance(currentAccount).contacts.isEmpty() && ContactsController.getInstance(currentAccount).isLoadingContacts()) { onlineContacts = null; return (currentCount = 0); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/StickersSearchAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/StickersSearchAdapter.java index 4ae77095b..dcb2b5b6a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/StickersSearchAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/StickersSearchAdapter.java @@ -355,7 +355,7 @@ public class StickersSearchAdapter extends RecyclerListView.SelectionAdapter { ((FeaturedStickerSetInfoCell) view).setAddOnClickListener(v -> { final FeaturedStickerSetInfoCell cell = (FeaturedStickerSetInfoCell) v.getParent(); TLRPC.StickerSetCovered pack = cell.getStickerSet(); - if (installingStickerSets.indexOfKey(pack.set.id) >= 0 || removingStickerSets.indexOfKey(pack.set.id) >= 0) { + if (pack == null || installingStickerSets.indexOfKey(pack.set.id) >= 0 || removingStickerSets.indexOfKey(pack.set.id) >= 0) { return; } if (cell.isInstalled()) { @@ -439,11 +439,14 @@ public class StickersSearchAdapter extends RecyclerListView.SelectionAdapter { } } + @SuppressWarnings("unchecked") @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position, @NonNull List payloads) { if (payloads.contains(PAYLOAD_ANIMATED)) { if (holder.getItemViewType() == 3) { bindFeaturedStickerSetInfoCell((FeaturedStickerSetInfoCell) holder.itemView, position, true); + } else { + super.onBindViewHolder(holder, position, payloads); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java index 9b791f26a..ca8fa8f2c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java @@ -215,14 +215,16 @@ public class StickerEmojiCell extends FrameLayout { public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); String descr = LocaleController.getString("AttachSticker", R.string.AttachSticker); - for (int a = 0; a < sticker.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = sticker.attributes.get(a); - if (attribute instanceof TLRPC.TL_documentAttributeSticker) { - if (attribute.alt != null && attribute.alt.length() > 0) { - emojiTextView.setText(Emoji.replaceEmoji(attribute.alt, emojiTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(16), false)); - descr = attribute.alt + " " + descr; + if (sticker != null) { + for (int a = 0; a < sticker.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = sticker.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeSticker) { + if (attribute.alt != null && attribute.alt.length() > 0) { + emojiTextView.setText(Emoji.replaceEmoji(attribute.alt, emojiTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(16), false)); + descr = attribute.alt + " " + descr; + } + break; } - break; } } info.setContentDescription(descr); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChannelCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChannelCreateActivity.java index e6a32a3bf..f92603a8c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChannelCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChannelCreateActivity.java @@ -756,7 +756,18 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC return; } loadingInvite = true; - TLRPC.TL_messages_getExportedChatInvites req = new TLRPC.TL_messages_getExportedChatInvites(); + TLRPC.TL_messages_exportChatInvite req = new TLRPC.TL_messages_exportChatInvite(); + req.peer = getMessagesController().getInputPeer(-chatId); + final int reqId = getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + if (error == null) { + invite = (TLRPC.TL_chatInviteExported) response; + } + loadingInvite = false; + permanentLinkView.setLink(invite != null ? invite.link : null); + })); + getConnectionsManager().bindRequestToGuid(reqId, classGuid); + + /*TLRPC.TL_messages_getExportedChatInvites req = new TLRPC.TL_messages_getExportedChatInvites(); TODO layer 124 req.peer = getMessagesController().getInputPeer(-chatId); req.admin_id = getMessagesController().getInputUser(getUserConfig().getCurrentUser()); req.limit = 1; @@ -768,7 +779,7 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC } loadingInvite = false; permanentLinkView.setLink(invite != null ? invite.link : null); - })); + }));*/ } private void updatePrivatePublic() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 467e33d87..423bc8f95 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -8179,6 +8179,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return dialog_id; } + public UndoView getUndoView() { + return undoView; + } + public long getMergeDialogId() { return mergeDialogId; } @@ -20647,7 +20651,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (editTextItem != null) { editTextItem.setVisibility(View.GONE); } - if (threadMessageId == 0) { + if (threadMessageId == 0 && searchItem != null) { searchItem.setVisibility(View.VISIBLE); } searchItemVisible = true; @@ -20656,10 +20660,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (threadMessageId == 0 && !UserObject.isReplyUser(currentUser)) { openSearchKeyboard = text == null; - searchItem.openSearch(openSearchKeyboard); + if (searchItem != null) { + searchItem.openSearch(openSearchKeyboard); + } } if (text != null) { - searchItem.setSearchFieldText(text, false); + if (searchItem != null) { + searchItem.setSearchFieldText(text, false); + } getMediaDataController().searchMessagesInChat(text, dialog_id, mergeDialogId, classGuid, 0, threadMessageId, searchingUserMessages, searchingChatMessages); } updatePinnedMessageView(true); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java index 2906eb798..7bc210d72 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java @@ -2243,7 +2243,14 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente } if (type == TYPE_USERS) { for (int a = 0, N = participants.size(); a < N; a++) { - TLRPC.ChannelParticipant participant = (TLRPC.ChannelParticipant) participants.get(a); + TLObject object = participants.get(a); + if (!(object instanceof TLRPC.ChannelParticipant)) { + participants.remove(a); + a--; + N--; + continue; + } + TLRPC.ChannelParticipant participant = (TLRPC.ChannelParticipant) object; boolean remove = false; if (contactsMap.get(participant.user_id) != null || botsMap.get(participant.user_id) != null) { remove = true; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java index ef518f522..8e8715692 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java @@ -142,6 +142,8 @@ public class AlertsCreator { showSimpleAlert(fragment, LocaleController.getString("ImportErrorTitle", R.string.ImportErrorTitle), LocaleController.getString("ImportErrorFileFormatInvalid", R.string.ImportErrorFileFormatInvalid)); } else if (error.text.contains("IMPORT_LANG_NOT_FOUND")) { showSimpleAlert(fragment, LocaleController.getString("ImportErrorTitle", R.string.ImportErrorTitle), LocaleController.getString("ImportErrorFileLang", R.string.ImportErrorFileLang)); + } else if (error.text.contains("IMPORT_UPLOAD_FAILED")) { + showSimpleAlert(fragment, LocaleController.getString("ImportErrorTitle", R.string.ImportErrorTitle), LocaleController.getString("ImportFailedToUpload", R.string.ImportFailedToUpload)); } else { showSimpleAlert(fragment, LocaleController.getString("ImportErrorTitle", R.string.ImportErrorTitle), LocaleController.getString("ErrorOccurred", R.string.ErrorOccurred) + "\n" + error.text); } @@ -1265,15 +1267,19 @@ public class AlertsCreator { } boolean canDeleteInbox = !secret && user != null && canRevokeInbox && revokeTimeLimit == 0x7fffffff; final boolean[] deleteForAll = {true}; - boolean deleteGroupForAll = false; + boolean deleteChatForAll = false; - if (!second && (secret || canDeleteInbox) && !UserObject.isDeleted(user) || (deleteGroupForAll = checkDeleteForAll && !clear && chat != null && chat.creator && (!ChatObject.isChannel(chat) || chat.megagroup))) { + if (!second && (secret || canDeleteInbox) && !UserObject.isDeleted(user) || (deleteChatForAll = checkDeleteForAll && !clear && chat != null && chat.creator)) { cell[0] = new CheckBoxCell(context, 1); cell[0].setBackgroundDrawable(Theme.getSelectorDrawable(false)); if (secret) { cell[0].setText(LocaleController.formatString("DeleteForUser", R.string.DeleteForUser, UserObject.getFirstName(user)), "", false, false); - } else if (deleteGroupForAll) { - cell[0].setText(LocaleController.getString("DeleteGroupForAll", R.string.DeleteGroupForAll), "", false, false); + } else if (deleteChatForAll) { + if (ChatObject.isChannel(chat) && !chat.megagroup) { + cell[0].setText(LocaleController.getString("DeleteChannelForAll", R.string.DeleteChannelForAll), "", false, false); + } else { + cell[0].setText(LocaleController.getString("DeleteGroupForAll", R.string.DeleteGroupForAll), "", false, false); + } } else if (clear) { cell[0].setText(LocaleController.formatString("ClearHistoryOptionAlso", R.string.ClearHistoryOptionAlso, UserObject.getFirstName(user)), "", true, false); } else { @@ -1340,7 +1346,7 @@ public class AlertsCreator { if (chat.megagroup) { messageTextView.setText(LocaleController.getString("AreYouSureDeleteAndExit", R.string.AreYouSureDeleteAndExit)); } else { - messageTextView.setText(LocaleController.getString("ChannelDeleteAlert", R.string.ChannelDeleteAlert)); + messageTextView.setText(LocaleController.getString("AreYouSureDeleteAndExitChannel", R.string.AreYouSureDeleteAndExitChannel)); } } else { messageTextView.setText(LocaleController.getString("AreYouSureDeleteAndExit", R.string.AreYouSureDeleteAndExit)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java index b59a98b2c..dd6583b48 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java @@ -3,7 +3,6 @@ package org.telegram.ui.Components; import android.content.Context; import android.view.ViewGroup; import android.widget.FrameLayout; -import android.widget.LinearLayout; import androidx.annotation.CheckResult; @@ -27,20 +26,6 @@ public final class BulletinFactory { return fragment != null && fragment.getParentActivity() != null && fragment.getLayoutContainer() != null; } - public Bulletin createMembersNotifyInfo(boolean on) { - if (on) { - final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(getContext()); - layout.setAnimation(R.raw.silent_unmute, 36, 36, "NULL BODY", "BODY", "Waves R", "Waves L", "Bottom"); - layout.textView.setText(LocaleController.getString("ChannelNotifyMembersInfoOn", R.string.ChannelNotifyMembersInfoOn)); - return create(layout, Bulletin.DURATION_SHORT); - } else { - final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(getContext()); - layout.setAnimation(R.raw.silent_mute, 36, 36, "NULL BODY", "BODY", "Pieces", "Line Cross", "Bottom"); - layout.textView.setText(LocaleController.getString("ChannelNotifyMembersInfoOff", R.string.ChannelNotifyMembersInfoOff)); - return create(layout, Bulletin.DURATION_SHORT); - } - } - public enum FileType { PHOTO("PhotoSavedHint", R.string.PhotoSavedHint, Icon.SAVED_TO_GALLERY), @@ -243,6 +228,12 @@ public final class BulletinFactory { @CheckResult public static Bulletin createUnpinAllMessagesBulletin(BaseFragment fragment, int count, boolean hide, Runnable undoAction, Runnable delayedAction) { + if (fragment.getParentActivity() == null) { + if (delayedAction != null) { + delayedAction.run(); + } + return null; + } Bulletin.ButtonLayout buttonLayout; if (hide) { final Bulletin.TwoLineLottieLayout layout = new Bulletin.TwoLineLottieLayout(fragment.getParentActivity()); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java index 4eced8fea..444481fc2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java @@ -2136,7 +2136,7 @@ public class ChatActivityEnterView extends FrameLayout implements NotificationCe } catch (Exception e) { FileLog.e(e); } - BulletinFactory.of(fragment).createMembersNotifyInfo(!silent).show(); + fragment.getUndoView().showWithAction(0, !silent ? UndoView.ACTION_NOTIFY_ON : UndoView.ACTION_NOTIFY_OFF, null); notifyButton.setContentDescription(silent ? LocaleController.getString("AccDescrChanSilentOn", R.string.AccDescrChanSilentOn) : LocaleController.getString("AccDescrChanSilentOff", R.string.AccDescrChanSilentOff)); updateFieldHint(true); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/FilterTabsView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/FilterTabsView.java index 4f8e025ad..c79c58551 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/FilterTabsView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/FilterTabsView.java @@ -66,8 +66,6 @@ import tw.nekomimi.nekogram.NekoConfig; public class FilterTabsView extends FrameLayout { - private final ItemTouchHelper itemTouchHelper; - public interface FilterTabsViewDelegate { void onPageSelected(int page, boolean forward); @@ -195,6 +193,24 @@ public class FilterTabsView extends FrameLayout { return currentTab.id; } + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + animateChange = false; + animateTabCounter = false; + animateCounterChange = false; + animateTextChange = false; + animateTextX = false; + animateTabWidth = false; + if (changeAnimator != null) { + changeAnimator.removeAllListeners(); + changeAnimator.removeAllUpdateListeners(); + changeAnimator.cancel(); + changeAnimator = null; + } + invalidate(); + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int w = currentTab.getWidth(false) + AndroidUtilities.dp(32) + additionalTabWidth; @@ -803,6 +819,7 @@ public class FilterTabsView extends FrameLayout { if (tabView.animateChange) { if (tabView.changeAnimator != null) { tabView.changeAnimator.removeAllListeners(); + tabView.changeAnimator.removeAllUpdateListeners(); tabView.changeAnimator.cancel(); } ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1f); @@ -879,7 +896,7 @@ public class FilterTabsView extends FrameLayout { return super.scrollHorizontallyBy(dx, recycler, state); } }); - itemTouchHelper = new ItemTouchHelper(new TouchHelperCallback()); + ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new TouchHelperCallback()); itemTouchHelper.attachToRecyclerView(listView); listView.setPadding(AndroidUtilities.dp(7), 0, AndroidUtilities.dp(7), 0); listView.setClipToPadding(false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/RecyclerListView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/RecyclerListView.java index 2488b2269..e005d7081 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/RecyclerListView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/RecyclerListView.java @@ -1259,10 +1259,14 @@ public class RecyclerListView extends RecyclerView { } } else { emptyViewAnimateToVisibility = -1; - checkIfEmpty(isAttachedToWindow()); + checkIfEmpty(updateEmptyViewAnimated()); } } + protected boolean updateEmptyViewAnimated() { + return isAttachedToWindow(); + } + public View getEmptyView() { return emptyView; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/UndoView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/UndoView.java index e01b6811c..4705566b2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/UndoView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/UndoView.java @@ -132,6 +132,8 @@ public class UndoView extends FrameLayout { public final static int ACTION_PLAYBACK_SPEED_DISABLED = 51; public final static int ACTION_TEXT_COPIED = 52; public final static int ACTION_FWD_MESSAGES = 53; + public final static int ACTION_NOTIFY_ON = 54; + public final static int ACTION_NOTIFY_OFF = 55; public final static int ACTION_NEED_RESATRT = 100; @@ -620,41 +622,56 @@ public class UndoView extends FrameLayout { undoButton.setVisibility(GONE); } else if (currentAction == ACTION_IMPORT_NOT_MUTUAL || currentAction == ACTION_IMPORT_GROUP_NOT_ADMIN || currentAction == ACTION_IMPORT_INFO || currentAction == ACTION_PLAYBACK_SPEED_DISABLED || currentAction == ACTION_PLAYBACK_SPEED_ENABLED || currentAction == ACTION_TEXT_COPIED || - currentAction == ACTION_FWD_MESSAGES) { + currentAction == ACTION_FWD_MESSAGES || currentAction == ACTION_NOTIFY_ON || currentAction == ACTION_NOTIFY_OFF) { undoImageView.setVisibility(GONE); leftImageView.setVisibility(VISIBLE); infoTextView.setTypeface(Typeface.DEFAULT); - infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); if (currentAction == ACTION_IMPORT_NOT_MUTUAL) { infoTextView.setText(LocaleController.getString("ImportMutualError", R.string.ImportMutualError)); leftImageView.setAnimation(R.raw.error, 36, 36); infoOnly = true; layoutParams.topMargin = AndroidUtilities.dp(10); + infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); } else if (currentAction == ACTION_IMPORT_GROUP_NOT_ADMIN) { infoTextView.setText(LocaleController.getString("ImportNotAdmin", R.string.ImportNotAdmin)); leftImageView.setAnimation(R.raw.error, 36, 36); infoOnly = true; layoutParams.topMargin = AndroidUtilities.dp(10); + infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); } else if (currentAction == ACTION_IMPORT_INFO) { infoTextView.setText(LocaleController.getString("ImportedInfo", R.string.ImportedInfo)); leftImageView.setAnimation(R.raw.imported, 36, 36); leftImageView.setPadding(0, 0, 0, AndroidUtilities.dp(5)); infoOnly = true; layoutParams.topMargin = AndroidUtilities.dp(10); + infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); } else if (currentAction == ACTION_PLAYBACK_SPEED_DISABLED) { infoTextView.setText(LocaleController.getString("AudioSpeedNormal", R.string.AudioSpeedNormal)); leftImageView.setAnimation(R.raw.audio_stop_speed, 36, 36); timeLeft = 3000; + infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); } else if (currentAction == ACTION_PLAYBACK_SPEED_ENABLED) { infoTextView.setText(LocaleController.getString("AudioSpeedFast", R.string.AudioSpeedFast)); leftImageView.setAnimation(R.raw.audio_speed, 36, 36); timeLeft = 3000; + infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); } else if (currentAction == ACTION_TEXT_COPIED) { infoTextView.setText(LocaleController.getString("MessageCopied", R.string.MessageCopied)); leftImageView.setAnimation(R.raw.copy, 30, 30); timeLeft = 3000; + infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + } else if (currentAction == ACTION_NOTIFY_ON) { + infoTextView.setText(LocaleController.getString("ChannelNotifyMembersInfoOn", R.string.ChannelNotifyMembersInfoOn)); + leftImageView.setAnimation(R.raw.silent_unmute, 30, 30); + timeLeft = 3000; + infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + } else if (currentAction == ACTION_NOTIFY_OFF) { + infoTextView.setText(LocaleController.getString("ChannelNotifyMembersInfoOff", R.string.ChannelNotifyMembersInfoOff)); + leftImageView.setAnimation(R.raw.silent_mute, 30, 30); + timeLeft = 3000; + infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); } else if (currentAction == ACTION_FWD_MESSAGES) { Integer count = (Integer) infoObject; if (infoObject2 == null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java index 717fd81c8..5c84067aa 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java @@ -41,6 +41,7 @@ import android.os.Bundle; import android.os.Vibrator; import android.text.TextUtils; import android.util.Property; +import android.util.SparseArray; import android.util.StateSet; import android.view.Gravity; import android.view.HapticFeedbackConstants; @@ -404,6 +405,7 @@ private int lastMeasuredTopPadding; private float filterTabsMoveFrom; private float tabsYOffset; private float scrollAdditionalOffset; + private SparseArray listAlphaItems = new SparseArray<>(); public final Property SCROLL_Y = new AnimationProperties.FloatProperty("animationValue") { @Override @@ -1089,6 +1091,11 @@ private int lastMeasuredTopPadding; parentPage = page; } + @Override + protected boolean updateEmptyViewAnimated() { + return true; + } + public void setViewsOffset(float viewOffset) { DialogsActivity.viewOffset = viewOffset; int n = getChildCount(); @@ -1114,12 +1121,20 @@ private int lastMeasuredTopPadding; public void addView(View child, int index, ViewGroup.LayoutParams params) { super.addView(child, index, params); child.setTranslationY(viewOffset); + int position = getChildAdapterPosition(child); + Float alpha = listAlphaItems.get(position); + if (alpha != null) { + child.setAlpha(alpha); + } else { + child.setAlpha(1f); + } } @Override public void removeView(View view) { super.removeView(view); view.setTranslationY(0); + view.setAlpha(1f); } @Override @@ -1145,7 +1160,6 @@ private int lastMeasuredTopPadding; if (slidingView != null && pacmanAnimation != null) { pacmanAnimation.draw(canvas, slidingView.getTop() + slidingView.getMeasuredHeight() / 2); } - } @Override @@ -1456,16 +1470,19 @@ private int lastMeasuredTopPadding; parentPage.listView.toggleArchiveHidden(false, dialogCell); return; } + TLRPC.Dialog dialog = getMessagesController().dialogs_dict.get(dialogId); + if (dialog == null) { + return; + } slidingView = dialogCell; int position = viewHolder.getAdapterPosition(); - int dialogIndex = parentPage.dialogsAdapter.fixPosition(position); int count = parentPage.dialogsAdapter.getItemCount(); Runnable finishRunnable = () -> { if (frozenDialogsList == null) { return; } - TLRPC.Dialog dialog = frozenDialogsList.remove(dialogIndex); + frozenDialogsList.remove(dialog); int pinnedNum = dialog.pinnedNum; slidingView = null; parentPage.listView.invalidate(); @@ -5990,13 +6007,44 @@ private int lastMeasuredTopPadding; listView.getViewTreeObserver().removeOnPreDrawListener(this); int n = listView.getChildCount(); AnimatorSet animatorSet = new AnimatorSet(); + boolean animated = false; for (int i = 0; i < n; i++) { View child = listView.getChildAt(i); - if (child != finalProgressView && listView.getChildAdapterPosition(child) >= finalFrom - 1) { + int position = listView.getChildAdapterPosition(child); + if (child != finalProgressView && position >= finalFrom - 1 && listAlphaItems.get(position, null) == null) { + listAlphaItems.put(position, 0f); child.setAlpha(0); int s = Math.min(listView.getMeasuredHeight(), Math.max(0, child.getTop())); int delay = (int) ((s / (float) listView.getMeasuredHeight()) * 100); - ObjectAnimator a = ObjectAnimator.ofFloat(child, View.ALPHA, 0, 1f); + ValueAnimator a = ValueAnimator.ofFloat(0, 1f); + a.addUpdateListener(valueAnimator -> { + Float alpha = (Float) valueAnimator.getAnimatedValue(); + listAlphaItems.put(position, alpha); + if (listView.getChildAdapterPosition(child) == position) { + child.setAlpha(alpha); + } else { + RecyclerView.ViewHolder vh = listView.findViewHolderForAdapterPosition(position); + if (vh != null) { + vh.itemView.setAlpha(1f); + } + } + }); + a.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + listAlphaItems.remove(position); + if (listAlphaItems.size() == 0) { + for (int i = 0; i < listView.getChildCount(); i++) { + listView.getChildAt(i).setAlpha(1f); + } + } else { + RecyclerView.ViewHolder vh = listView.findViewHolderForAdapterPosition(position); + if (vh != null) { + vh.itemView.setAlpha(1f); + } + } + } + }); a.setStartDelay(delay); a.setDuration(200); animatorSet.playTogether(a); @@ -6020,7 +6068,6 @@ private int lastMeasuredTopPadding; animator.start(); } } - animatorSet.start(); return true; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java index 8c3d05f86..6c2c162c9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java @@ -148,6 +148,8 @@ import org.telegram.ui.Components.IdenticonDrawable; import org.telegram.ui.Components.ImageUpdater; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.ProfileGalleryView; +import org.telegram.ui.Components.RLottieDrawable; +import org.telegram.ui.Components.RLottieImageView; import org.telegram.ui.Components.RadialProgressView; import org.telegram.ui.Components.RecyclerListView; import org.telegram.ui.Components.ScamDrawable; @@ -199,7 +201,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private SimpleTextView[] onlineTextView = new SimpleTextView[2]; private AudioPlayerAlert.ClippingTextViewSwitcher mediaCounterTextView; private SimpleTextView idTextView; - private ImageView writeButton; + private RLottieImageView writeButton; private AnimatorSet writeButtonAnimation; private Drawable lockIconDrawable; private Drawable verifiedDrawable; @@ -213,6 +215,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private boolean sharedMediaLayoutAttached; private SharedMediaLayout.SharedMediaPreloader sharedMediaPreloader; + private RLottieDrawable cameraDrawable; + private FrameLayout avatarContainer; private AvatarImageView avatarImage; private View avatarOverlay; @@ -3273,7 +3277,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. frameLayout.addView(mediaCounterTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 118, 0, 8, 0)); updateProfileData(); - writeButton = new ImageView(context); + writeButton = new RLottieImageView(context); Drawable drawable = Theme.createSimpleSelectorCircleDrawable(AndroidUtilities.dp(56), Theme.getColor(Theme.key_profile_actionBackground), Theme.getColor(Theme.key_profile_actionPressedBackground)); if (Build.VERSION.SDK_INT < 21) { Drawable shadowDrawable = context.getResources().getDrawable(R.drawable.floating_shadow_profile).mutate(); @@ -3287,7 +3291,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (imageUpdater != null) { writeButton.setImageResource(R.drawable.baseline_edit_24); writeButton.setContentDescription(LocaleController.getString("AccDescrChangeProfilePicture", R.string.AccDescrChangeProfilePicture)); - writeButton.setPadding(AndroidUtilities.dp(2), AndroidUtilities.dp(2), 0, 0); + writeButton.setPadding(AndroidUtilities.dp(2), 0, 0, AndroidUtilities.dp(2)); } else { writeButton.setImageResource(R.drawable.profile_newmsg); writeButton.setContentDescription(LocaleController.getString("AccDescrOpenChat", R.string.AccDescrOpenChat)); @@ -5152,7 +5156,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } if (notify && listAdapter != null && membersStartRow > 0) { - listAdapter.notifyItemRangeChanged(membersStartRow, sortedUsers.size()); + try { + listAdapter.notifyItemRangeChanged(membersStartRow, sortedUsers.size()); + } catch (Exception e) { + FileLog.e(e); + listAdapter.notifyDataSetChanged(); + } } if (sharedMediaLayout != null && sharedMediaRow != -1 && (sortedUsers.size() > 5 || usersForceShowingIn == 2) && usersForceShowingIn != 1) { sharedMediaLayout.setChatUsers(sortedUsers, chatInfo); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/VoIPPermissionActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/VoIPPermissionActivity.java index 78ff9b407..8f9bb335b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/VoIPPermissionActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/VoIPPermissionActivity.java @@ -7,6 +7,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; +import org.telegram.messenger.FileLog; import org.telegram.messenger.voip.VoIPService; import org.telegram.ui.Components.voip.VoIPHelper; @@ -29,7 +30,11 @@ public class VoIPPermissionActivity extends Activity { permissions.add(Manifest.permission.CAMERA); } if (permissions.isEmpty()) { - requestPermissions(permissions.toArray(new String[0]), isVideoCall ? 102 : 101); + try { + requestPermissions(permissions.toArray(new String[0]), isVideoCall ? 102 : 101); + } catch (Exception e) { + FileLog.e(e); + } } } diff --git a/TMessagesProj/src/main/res/raw/camera_outline.json b/TMessagesProj/src/main/res/raw/camera_outline.json new file mode 100644 index 000000000..d5a5e74ff --- /dev/null +++ b/TMessagesProj/src/main/res/raw/camera_outline.json @@ -0,0 +1 @@ +{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"","k":"","d":"","tc":""},"fr":60,"ip":0,"op":86,"w":512,"h":512,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Circle 2","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.7,"y":1},"o":{"x":0.7,"y":0},"t":11,"s":[-7.992,-254.991,0],"to":[0,0,0],"ti":[0,0,0]},{"t":24,"s":[-7.992,61.009,0]}],"ix":2},"a":{"a":0,"k":[-7.992,-152.991,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14,"s":[{"i":[[16.125,0],[-0.5,-27.5],[-14,0.5],[0.933,27.984]],"o":[[-16,0],[0.573,31.499],[14,-0.5],[-1,-30]],"v":[[-8,-194.5],[-49,-152.5],[-6.5,-111.5],[33,-152]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":18,"s":[{"i":[[12.066,0],[3.376,-30.527],[-10.476,0.557],[4.067,30.909]],"o":[[-11.973,0],[-3.856,34.872],[10.476,-0.557],[-4.485,-34.084]],"v":[[-7.391,-214.248],[-38.626,-157.22],[-6.823,-117.557],[22.735,-156.664]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22,"s":[{"i":[[16.125,0],[-0.5,-27.5],[-14,0.5],[0.933,27.984]],"o":[[-16,0],[0.573,31.499],[14,-0.5],[-1,-30]],"v":[[-8,-194.5],[-49,-152.5],[-6.5,-111.5],[33,-152]],"c":true}]},{"t":25,"s":[{"i":[[35.818,-2.089],[-1.839,-34.089],[-18.385,0.5],[-1.851,16.062]],"o":[[-31.411,1.832],[1.698,31.462],[18.385,-0.5],[5.225,-45.339]],"v":[[-7.068,-134.5],[-89.661,-132.75],[-6.098,-111.5],[74.525,-125.5]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":11,"op":26,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Mountains","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[565.271,8,0],"ix":2},"a":{"a":0,"k":[565.271,8,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.3,"y":0},"t":24,"s":[{"i":[[7.203,-2.599],[0,0],[3.325,-0.441],[0,0],[3.253,0.38],[0,0],[3.289,-0.37],[5.643,12.516]],"o":[[-9.007,3.25],[-3.48,-0.429],[0,0],[-2.852,0.411],[0,0],[-3.435,-0.356],[0,0],[-3.552,-7.879]],"v":[[644.257,104.75],[611.64,108.429],[594.261,108.203],[567.438,108.249],[549.128,107.811],[529.182,108.208],[511.726,107.983],[477.607,98.484]],"c":false}]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":32,"s":[{"i":[[0,0],[0,0],[3.412,-4.699],[0,0],[3.339,4.042],[0,0],[3.375,-3.937],[0,0]],"o":[[0,0],[-3.571,-4.569],[0,0],[-2.926,4.373],[0,0],[-3.525,-3.793],[0,0],[0,0]],"v":[[650,54.25],[610.794,-2.249],[596.295,-2.244],[564.665,43.994],[552.033,43.649],[525.921,9.78],[513.138,10.298],[462.734,71.234]],"c":false}]},{"t":39,"s":[{"i":[[0,0],[0,0],[3.325,-4.699],[0,0],[3.253,4.042],[0,0],[3.289,-3.937],[0,0]],"o":[[0,0],[-3.48,-4.569],[0,0],[-2.852,4.373],[0,0],[-3.435,-3.793],[0,0],[0,0]],"v":[[645.943,43.5],[607.826,4.001],[594.447,4.256],[564.624,49.994],[552.564,50.649],[528.118,20.28],[515.661,20.548],[466.793,75.484]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":24,"op":42,"st":-1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Picture","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-7.729,8,0],"ix":2},"a":{"a":0,"k":[565.271,8,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.3,"y":0},"t":24,"s":[{"i":[[16.367,0],[0,0],[0,-18.143],[0,0],[-21.885,0.5],[-14.897,0],[0.914,29.699],[0,0]],"o":[[0,0],[-16.367,0],[0,0],[0,18.143],[0,0],[27.389,0],[-0.305,-9.898],[0,-18.142]],"v":[[629.909,-101],[500.635,-101],[471,-68.15],[471,75.15],[500.635,108],[622.111,108],[660.086,69.801],[659.543,-68.15]],"c":true}]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":32,"s":[{"i":[[17.922,0],[0,0],[0,-16.188],[0,0],[-17.922,0],[-9.96,0.256],[-1.5,18.102],[0,0]],"o":[[0,0],[-17.922,0],[0,0],[0,16.188],[0,0],[29.461,-0.758],[0.57,-6.874],[0,-16.187]],"v":[[636.05,-78],[494.493,-78],[462.043,-48.69],[462.043,79.168],[494.493,108.479],[630.039,109.116],[668.5,80.997],[668.5,-48.69]],"c":true}]},{"t":39,"s":[{"i":[[17.444,0],[0,0],[0,-17.444],[0,0],[-17.444,0],[-7.667,0.265],[0,23.121],[0,0]],"o":[[0,0],[-17.444,0],[0,0],[0,17.444],[0,0],[20.667,-0.715],[0,-12.879],[0,-17.444]],"v":[[634.165,-92.479],[496.379,-92.479],[464.793,-60.893],[464.793,76.893],[496.379,108.479],[623.333,108.336],[665.5,74.5],[665.75,-60.893]],"c":true}]}],"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":31,"s":[7.8]},{"t":39,"s":[7.8]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":24,"s":[100]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":31,"s":[92]},{"t":39,"s":[92]}],"ix":2},"o":{"a":0,"k":-102,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":24,"op":42,"st":-1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Camera Circle","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"t":0,"s":[100],"h":1},{"t":11,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-8.728,5,0],"ix":2},"a":{"a":0,"k":[-8.728,5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.2,"y":0},"t":0,"s":[{"i":[[7.765,0],[6.148,3.691],[3.501,6.751],[0,6.784],[-3.049,5.727],[-1.97,2.288],[-3.394,2.164],[-8.086,0],[-6.958,-5.466],[-1.896,-2.31],[-1.43,-2.993],[0,-6.312],[3.15,-5.8],[2.121,-2.367],[3.465,-2.103]],"o":[[-7.693,0],[-6.498,-3.901],[-2.921,-5.633],[0,-6.941],[1.43,-2.687],[2.615,-3.039],[6.348,-4.047],[9.535,0],[2.351,1.847],[2.082,2.537],[2.552,5.339],[0,7.064],[-1.529,2.815],[-2.691,3.003],[-6.186,3.755]],"v":[[-8.728,54.788],[-29.767,48.975],[-45.09,32.67],[-49.661,13.855],[-44.885,-5.351],[-39.765,-12.834],[-30.701,-20.687],[-8.728,-27.078],[16.537,-18.352],[22.928,-12.096],[28.224,-3.775],[32.205,13.855],[27.265,33.365],[21.765,41.162],[12.482,48.871]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":2,"s":[{"i":[[7.19,0],[5.66,3.837],[3.242,7.051],[0.349,8.271],[-2.823,5.981],[-1.824,2.39],[-3.143,2.26],[-7.488,0],[-6.443,-5.708],[-1.756,-2.413],[-1.325,-3.125],[0,-6.592],[2.917,-6.057],[1.964,-2.472],[3.547,-1.796]],"o":[[-7.124,0],[-5.268,-5.003],[-2.705,-5.883],[-0.259,-7.239],[1.324,-2.806],[2.422,-3.173],[5.878,-4.226],[8.829,0],[2.177,1.929],[1.928,2.65],[2.363,5.576],[0,7.377],[-1.416,2.94],[-2.492,3.136],[-5.203,2.454]],"v":[[-9.15,10.342],[-30.41,4.789],[-41.156,-8.557],[-46.554,-28.206],[-42.131,-48.264],[-37.389,-56.08],[-28.996,-64.281],[-8.756,-70.003],[14.746,-61.842],[20.664,-55.309],[25.568,-46.618],[29.254,-28.206],[23.939,-8.678],[19.116,-1.006],[9.453,5.922]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4,"s":[{"i":[[6.408,0],[4.906,8.876],[2.889,7.459],[0.824,10.295],[-2.516,6.327],[-1.625,2.528],[-2.828,2.358],[-6.673,0],[-5.742,-6.039],[-1.565,-2.552],[-1.18,-3.306],[0,-6.974],[2.6,-6.407],[1.75,-2.615],[2.538,-4.119]],"o":[[-6.349,0],[-3.595,-6.504],[-2.41,-6.223],[-0.612,-7.644],[1.18,-2.968],[2.158,-3.357],[5.426,-4.525],[7.869,0],[1.94,2.04],[1.718,2.803],[2.106,5.898],[0,7.804],[-1.262,3.11],[-2.221,3.317],[-4.041,6.558]],"v":[[-8.543,-26.492],[-28.905,-45.664],[-38.301,-64.677],[-42.324,-85.463],[-38.382,-106.681],[-34.156,-114.948],[-26.676,-123.373],[-8.793,-128.434],[12.309,-121.044],[17.583,-114.133],[21.953,-104.94],[25.238,-85.463],[20.662,-65.91],[16.123,-55.546],[9.712,-44.029]],"c":true}]},{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"t":6,"s":[{"i":[[5.239,0],[4.148,4.411],[2.362,8.068],[0,8.107],[-2.057,6.844],[-1.329,2.735],[-2.29,2.586],[-5.456,0],[-4.695,-6.532],[-1.279,-2.761],[-0.965,-3.576],[0,-7.543],[2.125,-6.931],[1.431,-2.829],[2.338,-2.513]],"o":[[-5.19,0],[-4.384,-4.661],[-1.971,-6.732],[0,-8.295],[0.965,-3.211],[1.765,-3.631],[4.283,-4.836],[6.433,0],[1.586,2.207],[1.405,3.032],[1.722,6.38],[0,8.442],[-1.032,3.364],[-1.815,3.588],[-4.174,4.487]],"v":[[-8.383,-122.139],[-22.577,-129.085],[-32.916,-148.57],[-36,-171.055],[-32.778,-194.007],[-29.323,-202.95],[-23.207,-212.334],[-8.383,-219.972],[8.664,-209.544],[12.976,-202.068],[16.549,-192.124],[19.235,-171.055],[15.902,-147.74],[12.192,-138.422],[5.928,-129.21]],"c":true}]},{"t":11,"s":[{"i":[[7.765,0],[6.148,3.691],[3.501,6.751],[0,6.784],[-3.049,5.727],[-1.97,2.288],[-3.394,2.164],[-8.086,0],[-6.958,-5.466],[-1.896,-2.31],[-1.43,-2.993],[0,-6.312],[3.15,-5.8],[2.121,-2.367],[3.465,-2.103]],"o":[[-7.693,0],[-6.498,-3.901],[-2.921,-5.633],[0,-6.941],[1.43,-2.687],[2.615,-3.039],[6.348,-4.047],[9.535,0],[2.351,1.847],[2.082,2.537],[2.552,5.339],[0,7.064],[-1.529,2.815],[-2.691,3.003],[-6.186,3.755]],"v":[[-8.246,-214.212],[-29.284,-220.025],[-44.608,-236.33],[-49.179,-255.145],[-44.403,-274.351],[-39.282,-281.834],[-30.219,-289.687],[-8.246,-296.078],[17.02,-287.352],[23.41,-281.096],[28.706,-272.775],[32.687,-255.145],[27.747,-235.635],[22.248,-227.838],[12.965,-220.129]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Camera 2","sr":1,"ks":{"o":{"a":1,"k":[{"t":0,"s":[0],"h":1},{"t":11,"s":[100],"h":1},{"t":24,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.3,"y":0},"t":0,"s":[247.272,261,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.7,"y":0},"t":11,"s":[247.272,363,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.3,"y":0},"t":24,"s":[247.272,236,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":30,"s":[247.272,287,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":37,"s":[247.272,253,0],"to":[0,0,0],"ti":[0,0,0]},{"t":42,"s":[247.272,261,0]}],"ix":2},"a":{"a":0,"k":[-8.728,5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":0,"s":[{"i":[[11.749,0],[0,0],[0.712,0.956],[0,0],[3.805,0],[0,0],[2.279,-2.975],[0,0],[1.174,0],[0,0],[0,-11.749],[0,0],[-11.749,0],[0,0],[0,0],[0,4.117],[0,0],[0,0]],"o":[[0,0],[-1.192,0],[0,0],[-2.273,-3.052],[0,0],[-3.748,0],[0,0],[-0.714,0.932],[0,0],[-11.749,0],[0,0],[0,11.749],[0,0],[0,0],[4.117,0],[0,0],[0,0],[0,-11.749]],"v":[[71.801,-68.735],[44.18,-68.735],[41.153,-70.255],[30.303,-84.825],[20.644,-89.675],[-37.757,-89.675],[-47.318,-84.955],[-58.609,-70.214],[-61.605,-68.735],[-89.258,-68.735],[-110.532,-47.461],[-110.532,78.401],[-89.258,99.675],[32.959,99.675],[71.528,100.177],[93.482,72.722],[93.075,42.447],[93.075,-47.461]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.7,"y":0},"t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[3.101,-7.199],[-7.351,-10.521],[-18.693,0.038],[0,0],[0,0],[0,0],[-0.64,14.238],[2.215,5.801],[18.939,0.156],[0,0],[0,0],[0,0],[4.176,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-22.766,0.955],[-3.101,7.199],[2.482,3.553],[0,0],[0,0],[0,0],[0,0],[0.379,-8.436],[-3.515,-9.203],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-12.075,35.105],[-49.654,35.036],[-62.179,35.043],[-66.397,35.033],[-92.109,35.295],[-120.274,47.926],[-117.024,85.271],[-89.436,91.962],[40.557,91.962],[62.902,91.872],[85.54,91.556],[106.39,75.012],[103.765,47.203],[71.378,35.183],[50.633,35.033],[45.185,35.031],[35.536,35],[-10.612,35.115]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[2.598,-10.769],[-6.53,-15.706],[-18.299,0.057],[0,0],[0,0],[-0.539,0.242],[-0.331,19.839],[1.962,8.704],[18.863,0.235],[0,0],[0,0],[0,0],[4.088,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-22.332,1.245],[-2.608,10.81],[2.224,5.348],[0,0],[0,0],[0,0],[0.809,-0.363],[0.16,-12.645],[-3.081,-13.667],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-8.106,8.466],[-48.602,8.675],[-60.863,8.686],[-65.024,8.705],[-90.163,9.063],[-118.042,28.002],[-115.076,83.86],[-87.547,94.031],[39.708,94.031],[61.582,93.896],[83.497,93.214],[104.054,70.488],[101.584,26.919],[69.879,8.895],[49.572,8.671],[44.238,8.668],[34.793,8.621],[-7.491,8.543]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[1.105,-19.258],[-4.137,-27.957],[-16.782,0.102],[0,0],[0,0],[-2.11,0.984],[0.583,32.16],[1.123,15.648],[18.268,0.422],[0,0],[0,0],[0,0],[1.514,0.148]],"o":[[0,0],[0,0],[0,0],[0,0],[-20.617,1.81],[-1.112,19.433],[1.422,9.647],[0,0],[0,0],[0,0],[3.167,-1.477],[-0.486,-22.682],[-1.748,-24.221],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-14.29,-50.862],[-47.239,-50.682],[-55.952,-50.85],[-59.86,-50.736],[-82.823,-50.173],[-109.311,-16.189],[-107.235,83.73],[-80.424,102.298],[36.283,102.298],[56.344,102.055],[75.706,100.358],[94.995,64.313],[93.03,-18.132],[63.953,-50.475],[45.329,-50.877],[40.437,-50.882],[31.775,-50.967],[-11.896,-50.886]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0.608,-22.087],[-3.339,-32.04],[-16.277,0.117],[0,0],[0,0],[-2.633,1.231],[0.888,36.267],[0.844,17.963],[18.069,0.485],[0,0],[0,0],[0,0],[0.656,0.197]],"o":[[0,0],[0,0],[0,0],[0,0],[-20.046,1.999],[-0.614,22.307],[1.155,11.079],[0,0],[0,0],[0,0],[3.953,-1.848],[-0.701,-26.028],[-1.303,-27.739],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-43.351,-70.526],[-46.784,-70.467],[-54.315,-70.695],[-58.138,-70.55],[-80.376,-69.918],[-106.401,-30.919],[-104.621,83.687],[-78.049,105.053],[35.141,105.054],[54.598,104.774],[73.109,102.739],[91.976,62.255],[90.179,-33.149],[61.978,-70.264],[43.915,-70.726],[39.17,-70.732],[30.769,-70.829],[27.969,-70.776]],"c":false}]},{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0.167},"t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0.04,-23.661],[-2.49,-34.296],[-15.979,0.126],[0,0],[0,0],[-3.296,1.424],[1.262,38.218],[0.521,19.259],[18.164,0.52],[0,0],[0,0],[0,0],[1.714,0.123]],"o":[[0,0],[0,0],[0,0],[0,0],[-19.739,2.062],[-0.039,23.916],[0.862,11.885],[0,0],[0,0],[0,0],[4.948,-2.138],[-0.966,-27.896],[-0.805,-29.674],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-10.676,-81.75],[-15.887,-81.743],[-53.242,-81.883],[-57.035,-81.713],[-78.826,-81.05],[-104.779,-39.25],[-103.315,83.528],[-76.541,106.49],[34.576,106.49],[53.676,106.191],[71.525,103.919],[90.238,61.428],[88.606,-41.64],[60.922,-81.422],[43.189,-81.917],[38.532,-81.923],[30.284,-82.027],[-9.523,-81.812]],"c":false}]},{"t":24,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.897,-26.257],[-1.09,-38.017],[-15.487,0.14],[0,0],[0,0],[-4.389,1.743],[1.878,41.438],[-0.011,21.398],[18.321,0.578],[0,0],[0,0],[0,0],[3.46,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-19.232,2.165],[0.908,26.57],[0.379,13.213],[0,0],[0,0],[0,0],[6.589,-2.616],[-1.404,-30.977],[0.017,-32.867],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-9.702,-100.788],[-41.094,-100.367],[-51.471,-100.34],[-55.216,-100.128],[-76.268,-99.415],[-102.103,-52.993],[-101.16,83.267],[-74.054,108.86],[33.644,108.86],[52.157,108.528],[68.911,105.866],[87.372,60.062],[86.011,-55.648],[59.179,-99.828],[41.992,-100.378],[37.478,-100.385],[29.484,-100.5],[-8.959,-100.538]],"c":false}]}],"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":11,"op":24,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Camera","sr":1,"ks":{"o":{"a":1,"k":[{"t":0,"s":[100],"h":1},{"t":11,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.3,"y":0},"t":0,"s":[247.272,261,0],"to":[0,0,0],"ti":[0,0,0]},{"t":11,"s":[247.272,363,0]}],"ix":2},"a":{"a":0,"k":[-8.728,5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.2,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[2.279,-2.975],[0,0],[1.174,0],[0,0],[0,-11.749],[0,0],[-11.749,0],[0,0],[0,0],[0,0],[0,0],[11.749,0],[0,0],[0.712,0.956],[0,0],[3.805,0],[0,0]],"o":[[0,0],[-3.748,0],[0,0],[-0.714,0.932],[0,0],[-11.749,0],[0,0],[0,11.749],[0,0],[0,0],[0,0],[0,0],[0,-11.749],[0,0],[-1.192,0],[0,0],[-2.273,-3.052],[0,0],[0,0]],"v":[[-10.25,-89.7],[-37.757,-89.675],[-47.318,-84.955],[-58.609,-70.214],[-61.605,-68.735],[-89.258,-68.735],[-110.532,-47.461],[-110.532,78.401],[-89.258,99.675],[32.959,99.675],[93.051,99.528],[93.075,42.447],[93.075,-47.461],[71.801,-68.735],[44.18,-68.735],[41.153,-70.255],[30.303,-84.825],[20.644,-89.675],[-10.5,-89.7]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":1,"s":[{"i":[[0,0],[0,0],[1.918,-2.505],[0,0],[1.2,0],[0,0],[0.507,-10.542],[-0.679,-1.096],[-12.004,0],[0,0],[-1.653,0.853],[0,0.759],[0.791,0.97],[12.004,0],[0,0],[0.6,0.805],[0,0],[3.887,0],[0,0]],"o":[[0,0],[-3.829,0],[0,0],[-0.601,0.785],[0,0],[-12.004,0],[-0.654,0.84],[0.461,10.634],[0,0],[0,0],[0.823,-0.425],[0,-1.275],[-0.662,-10.702],[0,0],[-1.218,0],[0,0],[-1.913,-2.569],[0,0],[0,0]],"v":[[-10.283,-70.043],[-38.385,-70.021],[-48.31,-66.049],[-59.373,-53.64],[-62.749,-52.396],[-90.091,-52.357],[-111.785,-33.013],[-111.904,78.761],[-90.605,98.54],[36.628,98.54],[93.826,97.642],[95.12,47.526],[94.447,-33.251],[72.397,-52.389],[45.324,-52.396],[42.12,-53.684],[30.968,-65.939],[21.279,-70.021],[-10.538,-70.043]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":2,"s":[{"i":[[0,0],[0,0],[1.362,-1.778],[0,0],[1.239,0],[0,0],[1.29,-8.679],[-1.728,-2.788],[-12.396,0],[0,0],[-4.205,2.171],[0,1.931],[2.012,2.467],[12.396,0],[0,0],[0.426,0.572],[0,0],[1.865,0.181],[0,0]],"o":[[0,0],[-1.52,-0.194],[0,0],[-0.427,0.557],[0,0],[-12.396,0],[-1.663,2.137],[1.172,8.913],[0,0],[0,0],[2.094,-1.081],[0,-3.242],[-1.684,-9.086],[0,0],[-1.258,0],[0,0],[-1.358,-1.824],[0,0],[0,0]],"v":[[-45.584,-39.324],[-45.23,-39.68],[-49.842,-36.864],[-60.554,-28.056],[-64.515,-27.175],[-91.376,-27.074],[-113.721,-10.711],[-114.023,79.318],[-92.684,96.788],[42.29,96.788],[95.022,94.731],[98.276,55.368],[96.566,-11.314],[73.316,-27.155],[47.092,-27.175],[43.612,-28.103],[31.994,-36.785],[27.51,-40.18],[27.902,-40.199]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":3,"s":[{"i":[[0,0],[0,0],[0.805,-1.052],[0,0],[1.278,0],[0,0],[2.073,-6.817],[-2.776,-4.481],[-12.788,0],[0,0],[-6.756,3.488],[0,3.102],[3.233,3.963],[12.788,0],[0,0],[0.252,0.338],[0,0],[4.142,0],[0,0]],"o":[[0,0],[-4.079,0],[0,0],[-0.252,0.329],[0,0],[-12.788,0],[-2.673,3.434],[1.883,7.192],[0,0],[0,0],[3.365,-1.737],[0,-5.21],[-2.706,-7.47],[0,0],[-1.298,0],[0,0],[-0.803,-1.079],[0,0],[0,0]],"v":[[-10.385,-9.354],[-40.324,-9.34],[-51.374,-7.679],[-61.734,-2.471],[-66.281,-1.953],[-92.662,-1.791],[-115.656,11.592],[-116.141,79.874],[-94.763,95.036],[47.953,95.036],[96.218,91.819],[101.432,63.209],[98.684,10.622],[74.235,-1.921],[48.859,-1.953],[45.105,-2.522],[33.02,-7.632],[23.242,-9.34],[-10.657,-9.354]],"c":false}]},{"t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[1.335,0],[0,0],[3.207,-4.12],[-4.293,-6.93],[-13.356,0],[0,0],[-10.449,5.394],[0,4.798],[5,6.13],[13.356,0],[0,0],[0,0],[0,0],[4.326,0],[0,0]],"o":[[0,0],[-4.26,0],[0,0],[0,0],[0,0],[-13.356,0],[-4.133,5.311],[2.912,4.701],[0,0],[0,0],[5.205,-2.687],[0,-8.058],[-4.185,-5.131],[0,0],[-1.355,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-10.458,34.562],[-41.728,34.571],[-53.591,34.56],[-63.442,34.557],[-68.837,34.55],[-94.523,34.8],[-118.457,43.87],[-119.207,80.68],[-97.773,92.5],[56.149,92.5],[97.949,87.606],[106,74.558],[101.75,42.37],[75.566,34.6],[51.416,34.55],[47.265,34.5],[34.505,34.562],[24.661,34.571],[-10.742,34.562]],"c":false}]}],"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[9]},{"t":3,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[90]},{"t":3,"s":[100]}],"ix":2},"o":{"a":0,"k":-132.5,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":12,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Plus","parent":5,"sr":1,"ks":{"o":{"a":1,"k":[{"t":0,"s":[100],"h":1},{"t":4,"s":[0],"h":1},{"t":25,"s":[100],"h":1}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":34,"s":[98]},{"t":40,"s":[90]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.3,"y":0},"t":0,"s":[94.011,100.66,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.7,"y":0},"t":9,"s":[76.706,93.041,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.3,"y":0},"t":24,"s":[67.882,97.761,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":32,"s":[94.261,119.91,0],"to":[0,0,0],"ti":[0,0,0]},{"t":39,"s":[91.511,109.66,0]}],"ix":2},"a":{"a":0,"k":[88.761,95.41,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.3,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[87.967,61.876],[87.967,128.944]],"c":false}]},{"i":{"x":0.7,"y":1},"o":{"x":0.7,"y":0},"t":6,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[88.01,95.619],[88.01,95.201]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.3,"y":0},"t":25,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[87.953,87.022],[87.953,95.285]],"c":false}]},{"t":32,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[87.967,61.876],[87.967,128.944]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[87.75,94.75],"ix":2},"a":{"a":0,"k":[88,95.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.3,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[123.287,94.021],[54.235,94.021]],"c":false}]},{"i":{"x":0.7,"y":1},"o":{"x":0.7,"y":0},"t":6,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[89.467,94.413],[88.055,94.413]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.3,"y":0},"t":25,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[84.96,90.105],[92.437,90.105]],"c":false}]},{"t":32,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[123.287,94.021],[54.235,94.021]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[88,94.75],"ix":2},"a":{"a":0,"k":[89,94.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":42,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Mountains","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[565.271,8,0],"ix":2},"a":{"a":0,"k":[565.271,8,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.3,"y":0},"t":42,"s":[{"i":[[0,0],[0,0],[3.325,-4.699],[0,0],[3.253,4.042],[0,0],[3.289,-3.937],[0,0]],"o":[[0,0],[-3.48,-4.569],[0,0],[-2.852,4.373],[0,0],[-3.435,-3.793],[0,0],[0,0]],"v":[[645.943,43.5],[607.826,4.001],[594.447,4.256],[564.624,49.994],[552.564,50.649],[528.118,20.28],[515.661,20.548],[466.793,75.484]],"c":false}]},{"i":{"x":0.3,"y":1},"o":{"x":0.2,"y":0},"t":48,"s":[{"i":[[0,0],[0,0],[3.512,-3.335],[0,0],[3.437,2.869],[0,0],[3.475,-2.795],[0,0]],"o":[[0,0],[-3.676,-3.243],[0,0],[-3.013,3.104],[0,0],[-3.629,-2.692],[0,0],[0,0]],"v":[[660.5,56.281],[613.481,24.743],[599.347,24.924],[563.84,61.64],[551.099,62.105],[521.523,36.798],[508.363,36.989],[453.986,82.484]],"c":false}]},{"i":{"x":0.3,"y":1},"o":{"x":0.2,"y":0},"t":49,"s":[{"i":[[0,0],[0,0],[3.512,-3.335],[0,0],[3.437,2.869],[0,0],[3.475,-2.795],[0,0]],"o":[[0,0],[-3.676,-3.243],[0,0],[-3.013,3.104],[0,0],[-3.629,-2.692],[0,0],[0,0]],"v":[[650.532,57.837],[613.481,24.743],[599.347,24.924],[563.84,61.64],[551.099,62.105],[521.523,36.798],[508.363,36.989],[460.069,80.752]],"c":false}]},{"i":{"x":0.172,"y":1},"o":{"x":0.2,"y":0},"t":50,"s":[{"i":[[0,0],[0,0],[3.512,-3.335],[0,0],[3.437,2.869],[0,0],[3.475,-2.795],[0,0]],"o":[[0,0],[-3.676,-3.243],[0,0],[-3.013,3.104],[0,0],[-3.629,-2.692],[0,0],[0,0]],"v":[[627.431,51.251],[600.005,23.044],[585.87,23.225],[562.641,49.524],[549.9,49.989],[521.487,32.675],[508.327,32.866],[484.247,72.17]],"c":false}]},{"i":{"x":0.1,"y":1},"o":{"x":0.3,"y":0},"t":52,"s":[{"i":[[0,0],[0,0],[0.014,-8.538],[0,0],[0.014,7.343],[0,0],[0.014,-7.154],[0,0]],"o":[[0,0],[-0.015,-8.301],[0,0],[-0.012,7.947],[0,0],[-0.014,-6.891],[0,0],[0,0]],"v":[[514.061,57.63],[513.847,-10.472],[513.748,-10.642],[513.587,53.485],[513.536,54.677],[513.295,-12.421],[513.243,-11.933],[513.23,64.882]],"c":false}]},{"t":56,"s":[{"i":[[0,0],[0,0],[0.001,-9.941],[0,0],[0.001,8.55],[0,0],[0.001,-8.33],[0,0]],"o":[[0,0],[-0.001,-9.665],[0,0],[-0.001,9.253],[0,0],[-0.001,-8.023],[0,0],[0,0]],"v":[[518.793,59.011],[518.782,-22.05],[518.776,-21.508],[518.8,51.336],[518.795,52.724],[518.785,-22.694],[518.78,-22.125],[518.799,64.21]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":42,"op":53,"st":41,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Picture 2","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":48,"s":[0]},{"t":61,"s":[-90]}],"ix":10},"p":{"a":0,"k":[-7.729,8,0],"ix":2},"a":{"a":0,"k":[565.271,8,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.3,"y":0},"t":42,"s":[{"i":[[17.444,0],[0,0],[0,-17.444],[0,0],[-17.444,0],[-7.667,0.265],[0,23.121],[0,0]],"o":[[0,0],[-17.444,0],[0,0],[0,17.444],[0,0],[20.667,-0.715],[0,-12.879],[0,-17.444]],"v":[[634.165,-92.479],[496.379,-92.479],[464.793,-60.893],[464.793,76.893],[496.379,108.479],[623.333,108.336],[665.5,74.5],[665.75,-60.893]],"c":true}]},{"i":{"x":0.1,"y":1},"o":{"x":0.2,"y":0},"t":48,"s":[{"i":[[24.767,1.473],[7.247,-0.664],[0,-13.97],[0,0],[-21.979,-0.206],[-12.506,1.502],[-0.003,16.646],[0,0]],"o":[[-7.51,-0.447],[-23.003,1.086],[0,0],[0,13.97],[4.818,1.544],[31.676,-1.274],[0.002,-10.314],[-0.123,-13.444]],"v":[[644.483,-52.723],[486.253,-52.836],[449.625,-27.701],[449.625,82.643],[485.979,108.206],[633.824,107.524],[680.789,80.727],[681,-27.047]],"c":true}]},{"t":58,"s":[{"i":[[8.219,8.39],[7.939,-6.651],[0,-21.276],[0,0],[-6.277,-4.032],[-9.737,5.268],[-0.004,21.028],[0,0]],"o":[[-11.368,-11.604],[-5.849,4.901],[0,0],[0,21.276],[9.217,5.921],[9.735,-5.267],[0.003,-15.707],[-0.236,-19.26]],"v":[[589.653,-106.805],[542.39,-110.114],[529.81,-76.036],[529.81,92.009],[542.344,127.723],[587.389,127.289],[600.645,89.091],[600.586,-73.529]],"c":true}]}],"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":42,"s":[7.8]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":48,"s":[10.2]},{"t":51,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":42,"s":[92]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":48,"s":[95]},{"t":51,"s":[100]}],"ix":2},"o":{"a":0,"k":-102,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":42,"op":61,"st":41,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Camera Circle","parent":12,"sr":1,"ks":{"o":{"a":1,"k":[{"t":42,"s":[0],"h":1},{"t":61,"s":[100],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-8.728,5,0],"ix":2},"a":{"a":0,"k":[-8.728,5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[{"i":[[7.534,0],[5.965,-0.016],[3.396,-0.03],[0,-0.03],[-2.958,-0.025],[-1.911,-0.01],[-3.293,-0.01],[-7.845,0],[-6.751,0.024],[-1.839,0.01],[-1.388,0.013],[0,0.028],[3.056,0.026],[2.058,0.01],[3.362,0.009]],"o":[[-7.464,0],[-6.304,0.017],[-2.834,0.025],[0,0.031],[1.388,0.012],[2.537,0.013],[6.159,0.018],[9.251,0],[2.281,-0.008],[2.02,-0.011],[2.476,-0.023],[0,-0.031],[-1.483,-0.012],[-2.611,-0.013],[-6.002,-0.017]],"v":[[-8.483,6],[-28.895,6.026],[-43.762,6.097],[-48.197,6.18],[-43.563,6.264],[-38.595,6.297],[-29.802,6.332],[-8.483,6.36],[16.03,6.322],[22.23,6.294],[27.368,6.258],[31.231,6.18],[26.438,6.094],[21.102,6.06],[12.096,6.026]],"c":true}]},{"i":{"x":0.414,"y":1},"o":{"x":0.3,"y":0},"t":70,"s":[{"i":[[8.904,0],[7.05,4.663],[4.014,8.529],[0,8.57],[-3.496,7.235],[-2.258,2.891],[-3.892,2.733],[-9.272,0],[-7.978,-6.905],[-2.174,-2.918],[-1.64,-3.781],[0,-7.974],[3.612,-7.326],[2.432,-2.99],[3.973,-2.657]],"o":[[-8.821,0],[-7.45,-4.928],[-3.349,-7.116],[0,-8.768],[1.64,-3.394],[2.999,-3.839],[7.279,-5.112],[10.933,0],[2.696,2.333],[2.388,3.205],[2.926,6.745],[0,8.924],[-1.753,3.556],[-3.085,3.793],[-7.093,4.744]],"v":[[-8.728,57.656],[-32.852,50.312],[-50.423,29.715],[-55.664,5.946],[-50.188,-18.316],[-44.316,-27.77],[-33.923,-37.689],[-8.728,-45.763],[20.242,-34.74],[27.57,-26.837],[33.643,-16.325],[38.207,5.946],[32.543,30.592],[26.237,40.442],[15.593,50.181]],"c":true}]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":77,"s":[{"i":[[7.526,0],[5.959,3.25],[3.393,5.945],[0,5.973],[-2.955,5.043],[-1.909,2.015],[-3.29,1.905],[-7.837,0],[-6.744,-4.813],[-1.837,-2.034],[-1.386,-2.635],[0,-5.558],[3.053,-5.107],[2.056,-2.084],[3.358,-1.852]],"o":[[-7.456,0],[-6.297,-3.434],[-2.831,-4.96],[0,-6.111],[1.386,-2.366],[2.535,-2.675],[6.152,-3.563],[9.241,0],[2.279,1.626],[2.018,2.234],[2.473,4.701],[0,6.22],[-1.482,2.478],[-2.608,2.644],[-5.995,3.306]],"v":[[-8.728,51.186],[-29.118,46.067],[-43.97,31.711],[-48.4,15.144],[-43.771,-1.766],[-38.808,-8.356],[-30.024,-15.27],[-8.728,-20.897],[15.759,-13.214],[21.953,-7.706],[27.085,-0.379],[30.943,15.144],[26.156,32.322],[20.826,39.188],[11.829,45.975]],"c":true}]},{"t":82,"s":[{"i":[[7.765,0],[6.148,3.691],[3.501,6.751],[0,6.784],[-3.049,5.727],[-1.97,2.288],[-3.394,2.164],[-8.086,0],[-6.958,-5.466],[-1.896,-2.31],[-1.43,-2.993],[0,-6.312],[3.15,-5.8],[2.121,-2.367],[3.465,-2.103]],"o":[[-7.693,0],[-6.498,-3.901],[-2.921,-5.633],[0,-6.941],[1.43,-2.687],[2.615,-3.039],[6.348,-4.047],[9.535,0],[2.351,1.847],[2.082,2.537],[2.552,5.339],[0,7.064],[-1.529,2.815],[-2.691,3.003],[-6.186,3.755]],"v":[[-8.728,54.788],[-29.767,48.975],[-45.09,32.67],[-49.661,13.855],[-44.885,-5.351],[-39.765,-12.834],[-30.701,-20.687],[-8.728,-27.078],[16.537,-18.352],[22.928,-12.096],[28.224,-3.775],[32.205,13.855],[27.265,33.365],[21.765,41.162],[12.482,48.871]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":61,"op":86,"st":42,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Camera 3","sr":1,"ks":{"o":{"a":1,"k":[{"t":42,"s":[0],"h":1},{"t":61,"s":[100],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0},"t":42,"s":[247.272,261,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.1,"y":1},"o":{"x":0.3,"y":0},"t":48,"s":[247.272,321,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.5,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[247.272,211,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.414,"y":1},"o":{"x":0.3,"y":0},"t":69,"s":[247.272,297,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":76,"s":[247.272,245,0],"to":[0,0,0],"ti":[0,0,0]},{"t":81,"s":[247.272,261,0]}],"ix":2},"a":{"a":0,"k":[-8.728,5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[1.435,0],[0,0],[4.283,-5.372],[-7.911,-15.297],[-15.697,-1.143],[0,0],[-12.292,7.547],[-1.428,5.646],[6.874,9.948],[17.264,0.129],[0,0],[0,0],[0,0],[4.649,0],[0,0]],"o":[[0,0],[-4.579,0],[0,0],[0,0],[0,0],[-14.354,0],[-4.879,6.121],[2.989,5.78],[0,0],[0,0],[5.518,-3.388],[2.306,-9.117],[-4.366,-6.32],[0,0],[-1.457,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-10.465,-26.425],[-44.071,-26.414],[-56.82,-26.427],[-67.408,-26.431],[-73.206,-26.44],[-100.811,-26.136],[-123.533,-14.878],[-126.339,28.547],[-98.053,43.143],[61.118,43.893],[104.042,38.453],[114.694,22.117],[108.626,-16.198],[77.986,-26.379],[56.032,-26.44],[51.571,-26.5],[37.857,-26.425],[27.278,-26.414],[-10.77,-26.425]],"c":false}]},{"i":{"x":0.414,"y":1},"o":{"x":0.3,"y":0},"t":69,"s":[{"i":[[0,0],[0,0],[2.121,-3.035],[0,0],[1.093,0],[0,0],[0,-11.987],[0,0],[-10.933,0],[0,0],[0,0],[0,0],[0,0],[10.933,0],[0,0],[0.663,0.976],[0,0],[3.541,0],[0,0]],"o":[[0,0],[-3.487,0],[0,0],[-0.664,0.951],[0,0],[-10.933,0],[0,0],[0,11.987],[0,0],[0,0],[0,0],[0,0],[0,-11.987],[0,0],[-1.109,0],[0,0],[-2.115,-3.114],[0,0],[0,0]],"v":[[-10.144,-89.7],[-35.74,-89.674],[-44.636,-84.859],[-55.142,-69.82],[-57.93,-68.312],[-83.661,-68.312],[-103.457,-46.608],[-103.457,81.796],[-83.661,103.5],[30.062,103.5],[85.978,103.351],[86,45.116],[86,-46.608],[66.204,-68.312],[40.503,-68.312],[37.686,-69.862],[27.59,-84.726],[18.603,-89.674],[-10.377,-89.7]],"c":false}]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":76,"s":[{"i":[[0,0],[0,0],[2.378,-2.828],[0,0],[1.225,0],[0,0],[0,-11.168],[0,0],[-12.26,0],[0,0],[0,0],[0,0],[0,0],[12.26,0],[0,0],[0.743,0.909],[0,0],[3.971,0],[0,0]],"o":[[0,0],[-3.911,0],[0,0],[-0.745,0.886],[0,0],[-12.26,0],[0,0],[0,11.168],[0,0],[0,0],[0,0],[0,0],[0,-11.168],[0,0],[-1.244,0],[0,0],[-2.371,-2.901],[0,0],[0,0]],"v":[[-10.316,-83.5],[-39.019,-83.477],[-48.995,-78.99],[-60.777,-64.979],[-63.903,-63.573],[-92.758,-63.573],[-114.957,-43.352],[-114.957,76.279],[-92.758,96.5],[34.771,96.5],[97.475,96.361],[97.5,42.105],[97.5,-43.352],[75.301,-63.573],[46.479,-63.573],[43.321,-65.018],[31.999,-78.866],[21.92,-83.477],[-10.577,-83.5]],"c":false}]},{"t":81,"s":[{"i":[[0,0],[0,0],[2.279,-2.975],[0,0],[1.174,0],[0,0],[0,-11.749],[0,0],[-11.749,0],[0,0],[0,0],[0,0],[0,0],[11.749,0],[0,0],[0.712,0.956],[0,0],[3.805,0],[0,0]],"o":[[0,0],[-3.748,0],[0,0],[-0.714,0.932],[0,0],[-11.749,0],[0,0],[0,11.749],[0,0],[0,0],[0,0],[0,0],[0,-11.749],[0,0],[-1.192,0],[0,0],[-2.273,-3.052],[0,0],[0,0]],"v":[[-10.25,-89.7],[-37.757,-89.675],[-47.318,-84.955],[-58.609,-70.214],[-61.605,-68.735],[-89.258,-68.735],[-110.532,-47.461],[-110.532,78.401],[-89.258,99.675],[32.959,99.675],[93.051,99.528],[93.075,42.447],[93.075,-47.461],[71.801,-68.735],[44.18,-68.735],[41.153,-70.255],[30.303,-84.825],[20.644,-89.675],[-10.5,-89.7]],"c":false}]}],"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.777],"y":[0.895]},"o":{"x":[0.47],"y":[0]},"t":64,"s":[0]},{"i":{"x":[0.734],"y":[0.922]},"o":{"x":[0.455],"y":[-0.985]},"t":66,"s":[8.508]},{"i":{"x":[0.428],"y":[1]},"o":{"x":[0.222],"y":[-0.131]},"t":67,"s":[7.579]},{"i":{"x":[0.414],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":69,"s":[8.5]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":76,"s":[9.5]},{"t":81,"s":[9]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":64,"s":[100]},{"i":{"x":[0.414],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":69,"s":[91]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":76,"s":[90]},{"t":81,"s":[90]}],"ix":2},"o":{"a":0,"k":-132.5,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":61,"op":86,"st":42,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Plus Camera 2","parent":12,"sr":1,"ks":{"o":{"a":1,"k":[{"t":42,"s":[100],"h":1},{"t":52,"s":[0],"h":1},{"t":66,"s":[100],"h":1}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":48,"s":[90]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":62,"s":[0]},{"i":{"x":[0.252],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":64,"s":[-90]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":73,"s":[6]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":80,"s":[-2]},{"t":85,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.3,"y":0},"t":42,"s":[91.511,109.66,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.339,"y":0.858},"o":{"x":0.447,"y":0},"t":48,"s":[106.261,110.41,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.542,"y":1},"o":{"x":0.226,"y":0.167},"t":54,"s":[91.022,-3.599,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.5,"y":1},"o":{"x":0.7,"y":0},"t":62,"s":[98.086,40.4,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.414,"y":1},"o":{"x":0.3,"y":0},"t":70,"s":[90.011,110.66,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":77,"s":[95.511,96.66,0],"to":[0,0,0],"ti":[0,0,0]},{"t":82,"s":[94.011,100.66,0]}],"ix":2},"a":{"a":0,"k":[88.761,95.41,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.3,"y":0},"t":42,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[87.967,61.876],[87.967,128.944]],"c":false}]},{"i":{"x":0.1,"y":1},"o":{"x":0.3,"y":0},"t":48,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[87.979,57.921],[87.979,132.899]],"c":false}]},{"i":{"x":0.1,"y":1},"o":{"x":0.7,"y":0},"t":54,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[88.008,94.206],[88.008,96.614]],"c":false}]},{"i":{"x":0.5,"y":1},"o":{"x":0.94,"y":0},"t":62,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[88.01,94.586],[88.01,96.234]],"c":false}]},{"i":{"x":0.414,"y":1},"o":{"x":0.3,"y":0},"t":70,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[87.978,57.75],[87.978,133.07]],"c":false}]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":77,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[87.967,65.07],[87.967,125.75]],"c":false}]},{"t":82,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[87.967,61.876],[87.967,128.944]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[87.75,94.75],"ix":2},"a":{"a":0,"k":[88,95.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.3,"y":0},"t":42,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[123.287,94.021],[54.235,94.021]],"c":false}]},{"i":{"x":0.1,"y":1},"o":{"x":0.3,"y":0},"t":48,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[113.851,93.975],[63.671,93.975]],"c":false}]},{"i":{"x":0.1,"y":1},"o":{"x":0.7,"y":0},"t":54,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[91.094,94.396],[86.428,94.396]],"c":false}]},{"i":{"x":0.5,"y":1},"o":{"x":0.94,"y":0},"t":62,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[89.609,94.401],[87.913,94.401]],"c":false}]},{"i":{"x":0.414,"y":1},"o":{"x":0.3,"y":0},"t":70,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[115.022,93.973],[62.5,93.973]],"c":false}]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":77,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[123.287,94.058],[54.235,94.058]],"c":false}]},{"t":82,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[123.287,94.021],[54.235,94.021]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[88,94.75],"ix":2},"a":{"a":0,"k":[89,94.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":42,"op":86,"st":42,"bm":0}],"markers":[{"tm":42,"cm":"1","dr":0}]} \ No newline at end of file diff --git a/TMessagesProj/src/main/res/values/strings.xml b/TMessagesProj/src/main/res/values/strings.xml index 30e8f7441..0945439bd 100644 --- a/TMessagesProj/src/main/res/values/strings.xml +++ b/TMessagesProj/src/main/res/values/strings.xml @@ -292,6 +292,7 @@ You can add administrators to help you manage your group. Tap and hold to remove them. Wait! Deleting this group will remove all members and all messages will be lost. Delete the group anyway? Delete the group for all members + Delete for all subscribers Group created un1 added you to this group Are you sure you want to leave the group? @@ -1124,6 +1125,7 @@ You will see the bar with pinned messages only if a new message is pinned. Imported Importing file is too large. + Failed to upload file. Audio will play at normal speed. Audio will play two times faster. Message copied to clipboard. @@ -3029,6 +3031,7 @@ Are you sure you want to clear history in selected chats? Delete all cached text and media from selected chats? Are you sure you want to delete and leave the group? + Are you sure you want to delete and leave the channel? Are you sure you want to delete and leave the group **%1$s**? Are you sure you want to delete this chat? Are you sure you want to delete the chat with **%1$s**? diff --git a/bin/app/alaha.sh b/bin/app/alaha.sh index e126b689e..dfdd96af0 100755 --- a/bin/app/alaha.sh +++ b/bin/app/alaha.sh @@ -1,5 +1,22 @@ #!/bin/bash +function flavor() { + for f in "$@"; do + ./gradlew TMessagesProj:assemble${1}Release || exit 1 + ./gradlew TMessagesProj:assemble${1}ReleaseNoGcm || exit 1 + done +} + source bin/app/build.sh + +flavor Full +flavor Mini & upload full/release -upload full/releaseNoGcm \ No newline at end of file +upload full/releaseNoGcm + +for job in $(jobs -p); do + wait $job || exit 1 +done + +upload mini/release +upload mini/releaseNoGcm