diff --git a/README.md b/README.md index f0dedf8..2fabcae 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Modular Client Mod for Discord's Android app. -**Latest supported Discord Android version:** 9.4.8 (948), released on 2019-08-27. +**Latest supported Discord Android version:** 9.6.3 (963), released on 2019-10-01. New patch development will be done for the latest supported version. diff --git a/patches/branding/963.patch b/patches/branding/963.patch new file mode 100644 index 0000000..f070cf3 --- /dev/null +++ b/patches/branding/963.patch @@ -0,0 +1,238 @@ +diff -crB com.discord-963-base/AndroidManifest.xml com.discord-963/AndroidManifest.xml +*** com.discord-963-base/AndroidManifest.xml 2019-10-01 22:10:01.214258768 +0300 +--- com.discord-963/AndroidManifest.xml 2019-10-01 22:40:49.236497113 +0300 +*************** +*** 1,4 **** +! <?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="29" android:compileSdkVersionCodename="10" android:installLocation="auto" package="com.discord" platformBuildVersionCode="963" platformBuildVersionName="9.6.3"> + <uses-feature android:name="android.hardware.camera" android:required="false"/> + <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> + <uses-feature android:name="android.hardware.faketouch" android:required="false"/> +--- 1,4 ---- +! <?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="29" android:compileSdkVersionCodename="10" android:installLocation="auto" package="com.cutthecord.CTCBRANCH" platformBuildVersionCode="963CTCBUILD" platformBuildVersionName="9.6.3-cutthecord-CTCBUILD"> + <uses-feature android:name="android.hardware.camera" android:required="false"/> + <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> + <uses-feature android:name="android.hardware.faketouch" android:required="false"/> +*************** +*** 19,29 **** + <uses-permission android:name="android.permission.VIBRATE"/> + <uses-permission android:name="android.permission.WAKE_LOCK"/> + <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> +! <permission android:description="@string/app_permission_connect_desc" android:label="@string/app_permission_connect_label" android:name="com.discord.permission.CONNECT" android:protectionLevel="dangerous"/> + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> + <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/> + <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/> +! <application android:allowBackup="false" android:appCategory="social" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:icon="@mipmap/ic_logo_square" android:label="@string/discord" android:largeHeap="true" android:name="com.discord.app.App" android:roundIcon="@mipmap/ic_logo_round" android:supportsRtl="true" android:theme="@style/AppTheme.Dark" android:usesCleartextTraffic="@bool/use_cleartext_traffic"> + <activity android:name="com.discord.samsung.SamsungConnectActivity" android:theme="@style/AppTheme.Translucent"/> + <activity android:name="com.discord.app.AppActivity" android:screenOrientation="fullUser" android:theme="@style/AppTheme.Dark" android:windowSoftInputMode="adjustResize|stateHidden"/> + <activity android:exported="true" android:launchMode="singleTask" android:name="com.discord.app.AppActivity$Main" android:screenOrientation="fullUser" android:theme="@style/AppTheme.Loading" android:windowSoftInputMode="adjustResize|stateHidden"> +--- 19,29 ---- + <uses-permission android:name="android.permission.VIBRATE"/> + <uses-permission android:name="android.permission.WAKE_LOCK"/> + <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> +! <permission android:description="@string/app_permission_connect_desc" android:label="@string/app_permission_connect_label" android:name="com.cutthecord.permission.CONNECT" android:protectionLevel="dangerous"/> + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> + <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/> + <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/> +! <application android:allowBackup="true" android:debuggable="true" android:appCategory="social" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:icon="@mipmap/ic_logo_square" android:label="@string/discord" android:largeHeap="true" android:name="com.discord.app.App" android:roundIcon="@mipmap/ic_logo_round" android:supportsRtl="true" android:theme="@style/AppTheme.Dark" android:usesCleartextTraffic="@bool/use_cleartext_traffic"> + <activity android:name="com.discord.samsung.SamsungConnectActivity" android:theme="@style/AppTheme.Translucent"/> + <activity android:name="com.discord.app.AppActivity" android:screenOrientation="fullUser" android:theme="@style/AppTheme.Dark" android:windowSoftInputMode="adjustResize|stateHidden"/> + <activity android:exported="true" android:launchMode="singleTask" android:name="com.discord.app.AppActivity$Main" android:screenOrientation="fullUser" android:theme="@style/AppTheme.Loading" android:windowSoftInputMode="adjustResize|stateHidden"> +*************** +*** 78,84 **** + <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> + </intent-filter> + </service> +! <service android:exported="true" android:name="com.discord.app.DiscordConnectService" android:permission="com.discord.permission.CONNECT"> + <intent-filter> + <action android:name="com.discord.intent.action.CONNECT"/> + <data android:host="app" android:pathPattern="/connect/.*" android:scheme="discord"/> +--- 78,84 ---- + <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> + </intent-filter> + </service> +! <service android:exported="true" android:name="com.discord.app.DiscordConnectService" android:permission="com.cutthecord.permission.CONNECT"> + <intent-filter> + <action android:name="com.discord.intent.action.CONNECT"/> + <data android:host="app" android:pathPattern="/connect/.*" android:scheme="discord"/> +*************** +*** 108,121 **** + </receiver> + <service android:enabled="true" android:exported="false" android:name="com.google.android.gms.analytics.CampaignTrackingService"/> + <service android:name="com.discord.utilities.voice.VoiceEngineForegroundService"/> +! <provider android:authorities="com.discord.file-provider" android:exported="false" android:grantUriPermissions="true" android:name="androidx.core.content.FileProvider"> + <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/> + </provider> + <meta-data android:name="firebase_crashlytics_collection_enabled" android:value="true"/> + <meta-data android:name="io.fabric.ApiKey" android:value="eaccfe98b3572a0a8721a8c3b10f9909018f5ec6"/> + <meta-data android:name="com.google.android.nearby.messages.API_KEY" android:value="AIzaSyD-4L6bgKMixqBRtrG2UktVXK6IexXlsog"/> + <activity android:name="com.yalantis.ucrop.UCropActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"/> +! <provider android:authorities="com.discord.workmanager-init" android:directBootAware="false" android:exported="false" android:multiprocess="true" android:name="androidx.work.impl.WorkManagerInitializer"/> + <service android:directBootAware="false" android:enabled="@bool/enable_system_alarm_service_default" android:exported="false" android:name="androidx.work.impl.background.systemalarm.SystemAlarmService"/> + <service android:directBootAware="false" android:enabled="@bool/enable_system_job_service_default" android:exported="true" android:name="androidx.work.impl.background.systemjob.SystemJobService" android:permission="android.permission.BIND_JOB_SERVICE"/> + <receiver android:directBootAware="false" android:enabled="true" android:exported="false" android:name="androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver"/> +--- 108,121 ---- + </receiver> + <service android:enabled="true" android:exported="false" android:name="com.google.android.gms.analytics.CampaignTrackingService"/> + <service android:name="com.discord.utilities.voice.VoiceEngineForegroundService"/> +! <provider android:authorities="com.cutthecord.CTCBRANCH.file-provider" android:exported="false" android:grantUriPermissions="true" android:name="androidx.core.content.FileProvider"> + <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/> + </provider> + <meta-data android:name="firebase_crashlytics_collection_enabled" android:value="true"/> + <meta-data android:name="io.fabric.ApiKey" android:value="eaccfe98b3572a0a8721a8c3b10f9909018f5ec6"/> + <meta-data android:name="com.google.android.nearby.messages.API_KEY" android:value="AIzaSyD-4L6bgKMixqBRtrG2UktVXK6IexXlsog"/> + <activity android:name="com.yalantis.ucrop.UCropActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"/> +! <provider android:authorities="top.distok.cutthecord.CTCBRANCH.workmanager-init" android:directBootAware="false" android:exported="false" android:multiprocess="true" android:name="androidx.work.impl.WorkManagerInitializer"/> + <service android:directBootAware="false" android:enabled="@bool/enable_system_alarm_service_default" android:exported="false" android:name="androidx.work.impl.background.systemalarm.SystemAlarmService"/> + <service android:directBootAware="false" android:enabled="@bool/enable_system_job_service_default" android:exported="true" android:name="androidx.work.impl.background.systemjob.SystemJobService" android:permission="android.permission.BIND_JOB_SERVICE"/> + <receiver android:directBootAware="false" android:enabled="true" android:exported="false" android:name="androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver"/> +*************** +*** 178,184 **** + <action android:name="com.google.android.c2dm.intent.RECEIVE"/> + </intent-filter> + </receiver> +! <provider android:authorities="com.discord.firebaseinitprovider" android:exported="false" android:initOrder="100" android:name="com.google.firebase.provider.FirebaseInitProvider"/> + <activity android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/> + <receiver android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementReceiver"/> + <receiver android:enabled="true" android:exported="true" android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver" android:permission="android.permission.INSTALL_PACKAGES"> +--- 178,184 ---- + <action android:name="com.google.android.c2dm.intent.RECEIVE"/> + </intent-filter> + </receiver> +! <provider android:authorities="top.distok.cutthecord.CTCBRANCH.firebaseinitprovider" android:exported="false" android:initOrder="100" android:name="com.google.firebase.provider.FirebaseInitProvider"/> + <activity android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/> + <receiver android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementReceiver"/> + <receiver android:enabled="true" android:exported="true" android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver" android:permission="android.permission.INSTALL_PACKAGES"> +*************** +*** 189,196 **** + <service android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementService"/> + <service android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementJobService" android:permission="android.permission.BIND_JOB_SERVICE"/> + <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/> +! <provider android:authorities="com.discord.lifecycle-process" android:exported="false" android:multiprocess="true" android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer"/> +! <provider android:authorities="com.discord.crashlyticsinitprovider" android:exported="false" android:initOrder="90" android:name="com.crashlytics.android.CrashlyticsInitProvider"/> + <meta-data android:name="firebase_crashlytics_ndk_enabled" android:value="true"/> + <meta-data android:name="com.android.vending.derived.apk.id" android:value="1"/> + </application> +--- 189,196 ---- + <service android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementService"/> + <service android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementJobService" android:permission="android.permission.BIND_JOB_SERVICE"/> + <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/> +! <provider android:authorities="top.distok.cutthecord.CTCBRANCH.lifecycle-process" android:exported="false" android:multiprocess="true" android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer"/> +! <provider android:authorities="top.distok.cutthecord.CTCBRANCH.crashlyticsinitprovider" android:exported="false" android:initOrder="90" android:name="com.crashlytics.android.CrashlyticsInitProvider"/> + <meta-data android:name="firebase_crashlytics_ndk_enabled" android:value="true"/> + <meta-data android:name="com.android.vending.derived.apk.id" android:value="1"/> + </application> +Only in com.discord-963: AndroidManifest.xml.orig +Only in com.discord-963: AndroidManifest.xml.rej +diff -crB com.discord-963-base/apktool.yml com.discord-963/apktool.yml +*** com.discord-963-base/apktool.yml 2019-10-01 22:09:25.290686590 +0300 +--- com.discord-963/apktool.yml 2019-10-01 22:40:05.296207118 +0300 +*************** +*** 181,185 **** + tag: null + version: 2.4.1-75e4c6-SNAPSHOT + versionInfo: +! versionCode: '963' +! versionName: 9.6.3 +--- 181,185 ---- + tag: null + version: 2.4.1-75e4c6-SNAPSHOT + versionInfo: +! versionCode: '963CTCBUILD' +! versionName: 9.6.3-cutthecord-CTCBUILD +diff -crB com.discord-963-base/res/values/strings.xml com.discord-963/res/values/strings.xml +*** com.discord-963-base/res/values/strings.xml 2019-10-01 22:09:16.950631138 +0300 +--- com.discord-963/res/values/strings.xml 2019-10-01 22:40:05.296207118 +0300 +*************** +*** 1308,1314 **** + <string name="disconnect_account_body">Disconnecting your account might remove you from servers you joined via this account.</string> + <string name="disconnect_account_title">Disconnect %1$s</string> + <string name="disconnect_from_voice">Disconnect from Voice</string> +! <string name="discord">Discord</string> + <string name="discord_desc_long">Free and secure chat for gamers, works on both your desktop and your phone.</string> + <string name="discord_desc_short">Team voice & text chat</string> + <string name="discord_gg">discord.gg/</string> +--- 1308,1314 ---- + <string name="disconnect_account_body">Disconnecting your account might remove you from servers you joined via this account.</string> + <string name="disconnect_account_title">Disconnect %1$s</string> + <string name="disconnect_from_voice">Disconnect from Voice</string> +! <string name="discord">CTCNAME</string> + <string name="discord_desc_long">Free and secure chat for gamers, works on both your desktop and your phone.</string> + <string name="discord_desc_short">Team voice & text chat</string> + <string name="discord_gg">discord.gg/</string> +*************** +*** 3185,3191 **** + <string name="notification_reply_failed">Failed to reply to %1$s</string> + <string name="notification_reply_success">Replied to %1$s</string> + <string name="notification_settings">Notification Settings</string> +! <string name="notification_title_discord">Discord</string> + <string name="notification_title_start_game">"Somebody Playin'"</string> + <string name="notification_voice_status_body">Join them: %1$s</string> + <string name="notification_voice_status_body_no_status">Join the party!</string> +--- 3185,3191 ---- + <string name="notification_reply_failed">Failed to reply to %1$s</string> + <string name="notification_reply_success">Replied to %1$s</string> + <string name="notification_settings">Notification Settings</string> +! <string name="notification_title_discord">CTCNAME</string> + <string name="notification_title_start_game">"Somebody Playin'"</string> + <string name="notification_voice_status_body">Join them: %1$s</string> + <string name="notification_voice_status_body_no_status">Join the party!</string> +*************** +*** 4366,4372 **** + <string name="sub_enabled_servers">Sub Enabled Servers</string> + <string name="subscriber_information">Subscriber Information</string> + <string name="suggestions">Suggestions</string> +! <string name="support">Support</string> + <string name="suppress_all_embeds">Remove all embeds</string> + <string name="suppressed">Suppressed</string> + <string name="suppressed_afk_body">"It seems you've gone AFK on us. We've went ahead and moved you to the AFK channel."</string> +--- 4366,4372 ---- + <string name="sub_enabled_servers">Sub Enabled Servers</string> + <string name="subscriber_information">Subscriber Information</string> + <string name="suggestions">Suggestions</string> +! <string name="support">CutTheCord Repo</string> + <string name="suppress_all_embeds">Remove all embeds</string> + <string name="suppressed">Suppressed</string> + <string name="suppressed_afk_body">"It seems you've gone AFK on us. We've went ahead and moved you to the AFK channel."</string> +Only in com.discord-963/res/values: strings.xml.orig +diff -crB com.discord-963-base/smali/com/discord/app/e.smali com.discord-963/smali/com/discord/app/e.smali +*** com.discord-963-base/smali/com/discord/app/e.smali 2019-10-01 22:09:20.530654941 +0300 +--- com.discord-963/smali/com/discord/app/e.smali 2019-10-01 22:40:05.296207118 +0300 +*************** +*** 56,62 **** + .line 17 + sput-object v0, Lcom/discord/app/e;->ul:Ljava/lang/String; + +! const-string v0, "https://support.discordapp.com" + + .line 18 + sput-object v0, Lcom/discord/app/e;->um:Ljava/lang/String; +--- 56,62 ---- + .line 17 + sput-object v0, Lcom/discord/app/e;->ul:Ljava/lang/String; + +! const-string v0, "https://gitdab.com/distok/cutthecord" + + .line 18 + sput-object v0, Lcom/discord/app/e;->um:Ljava/lang/String; +Only in com.discord-963/smali/com/discord/app: e.smali.orig +diff -crB com.discord-963-base/smali/com/discord/utilities/captcha/CaptchaHelper$showCaptchaHelpDialog$$inlined$let$lambda$1.smali com.discord-963/smali/com/discord/utilities/captcha/CaptchaHelper$showCaptchaHelpDialog$$inlined$let$lambda$1.smali +*** com.discord-963-base/smali/com/discord/utilities/captcha/CaptchaHelper$showCaptchaHelpDialog$$inlined$let$lambda$1.smali 2019-10-01 22:09:20.870657202 +0300 +--- com.discord-963/smali/com/discord/utilities/captcha/CaptchaHelper$showCaptchaHelpDialog$$inlined$let$lambda$1.smali 2019-10-01 22:40:05.296207118 +0300 +*************** +*** 77,83 **** + + new-instance v0, Landroid/content/Intent; + +! const-string v1, "https://discordapp.com/app" + + invoke-static {v1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; + +--- 77,83 ---- + + new-instance v0, Landroid/content/Intent; + +! const-string v1, "https://gitdab.com/distok/cutthecord/issues/22#issuecomment-82" + + invoke-static {v1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; + + diff --git a/patches/branding/README.md b/patches/branding/README.md index 4030038..31c0e11 100644 --- a/patches/branding/README.md +++ b/patches/branding/README.md @@ -60,4 +60,5 @@ You can use the following line to patch authorities: - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/compact/963.patch b/patches/compact/963.patch new file mode 100644 index 0000000..5832b9a --- /dev/null +++ b/patches/compact/963.patch @@ -0,0 +1,78 @@ +diff -crB from/res/layout/widget_chat_list_adapter_item_text.xml to/res/layout/widget_chat_list_adapter_item_text.xml +*** from/res/layout/widget_chat_list_adapter_item_text.xml 2019-10-01 22:09:14.867283952 +0300 +--- to/res/layout/widget_chat_list_adapter_item_text.xml 2019-10-01 22:10:21.921063112 +0300 +*************** +*** 2,12 **** + <androidx.constraintlayout.widget.ConstraintLayout android:background="?selectableItemBackground" android:paddingTop="10.0dip" android:paddingRight="@dimen/chat_cell_horizontal_spacing_padding" android:layout_width="fill_parent" android:layout_height="wrap_content" + xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> + <androidx.constraintlayout.widget.Guideline android:id="@id/uikit_chat_guideline" style="@style/UiKit.Chat.Guideline" /> +- <com.facebook.drawee.view.SimpleDraweeView android:id="@id/chat_list_adapter_item_text_avatar" android:layout_marginLeft="8.0dip" android:importantForAccessibility="no" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="@id/uikit_chat_guideline" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@id/uikit_chat_guideline" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/chat_list_adapter_item_text_header" style="@style/Avatar.Chat" /> + <androidx.constraintlayout.widget.ConstraintLayout android:id="@id/chat_list_adapter_item_text_header" android:layout_width="wrap_content" android:layout_height="0.0dip" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toTopOf="@id/chat_list_adapter_item_text_avatar"> + <TextView android:textColor="?theme_chat_name" android:id="@id/chat_list_adapter_item_text_name" android:lineSpacingMultiplier="1.0" app:layout_constrainedWidth="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" style="@style/UiKit.TextView.Large.SingleLine" /> + <TextView android:textSize="9.5sp" android:textColor="@color/white" android:id="@id/chat_list_adapter_item_text_bot" android:background="@drawable/drawable_button_purple_neutral" android:paddingLeft="3.0dip" android:paddingTop="0.5dip" android:paddingRight="3.0dip" android:paddingBottom="0.5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:text="BOT" android:singleLine="true" app:layout_constraintBottom_toBottomOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_name" style="@style/UiKit.TextView" /> + <TextView android:textSize="@dimen/uikit_textsize_small" android:textColor="?theme_chat_timestamp" android:gravity="center_vertical" android:id="@id/chat_list_adapter_item_text_timestamp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:maxWidth="150.0dip" android:singleLine="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_bot" style="@style/UiKit.TextView" /> + </androidx.constraintlayout.widget.ConstraintLayout> +- <com.discord.utilities.view.text.LinkifiedTextView android:id="@id/chat_list_adapter_item_text" android:layout_width="0.0dip" android:layout_marginTop="@dimen/uikit_spacing_xsmall" android:layout_marginRight="@dimen/uikit_spacing_small" android:layout_marginBottom="2.0dip" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toBottomOf="@id/chat_list_adapter_item_text_header" style="@style/UiKit.Chat.Text" /> + </androidx.constraintlayout.widget.ConstraintLayout> +\ No newline at end of file +--- 2,11 ---- + <androidx.constraintlayout.widget.ConstraintLayout android:background="?selectableItemBackground" android:paddingTop="10.0dip" android:paddingRight="@dimen/chat_cell_horizontal_spacing_padding" android:layout_width="fill_parent" android:layout_height="wrap_content" + xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> + <androidx.constraintlayout.widget.Guideline android:id="@id/uikit_chat_guideline" style="@style/UiKit.Chat.Guideline" /> + <androidx.constraintlayout.widget.ConstraintLayout android:id="@id/chat_list_adapter_item_text_header" android:layout_width="wrap_content" android:layout_height="0.0dip" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toTopOf="@id/chat_list_adapter_item_text_avatar"> + <TextView android:textColor="?theme_chat_name" android:id="@id/chat_list_adapter_item_text_name" android:lineSpacingMultiplier="1.0" app:layout_constrainedWidth="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" style="@style/UiKit.TextView.Large.SingleLine" /> + <TextView android:textSize="9.5sp" android:textColor="@color/white" android:id="@id/chat_list_adapter_item_text_bot" android:background="@drawable/drawable_button_purple_neutral" android:paddingLeft="3.0dip" android:paddingTop="0.5dip" android:paddingRight="3.0dip" android:paddingBottom="0.5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:text="BOT" android:singleLine="true" app:layout_constraintBottom_toBottomOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_name" style="@style/UiKit.TextView" /> + <TextView android:textSize="@dimen/uikit_textsize_small" android:textColor="?theme_chat_timestamp" android:gravity="center_vertical" android:id="@id/chat_list_adapter_item_text_timestamp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:maxWidth="150.0dip" android:singleLine="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_bot" style="@style/UiKit.TextView" /> ++ <com.discord.utilities.view.text.LinkifiedTextView android:id="@id/chat_list_adapter_item_text" app:layout_constrainedWidth="true" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:layout_marginStart="6.0dip" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintLeft_toRightOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintRight_toRightOf="parent" style="@style/UiKit.Chat.Text" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </androidx.constraintlayout.widget.ConstraintLayout> +\ No newline at end of file +diff -crB from/res/layout-v17/widget_chat_list_adapter_item_text.xml to/res/layout-v17/widget_chat_list_adapter_item_text.xml +*** from/res/layout-v17/widget_chat_list_adapter_item_text.xml 2019-10-01 22:09:13.297273514 +0300 +--- to/res/layout-v17/widget_chat_list_adapter_item_text.xml 2019-10-01 22:10:21.921063112 +0300 +*************** +*** 2,12 **** + <androidx.constraintlayout.widget.ConstraintLayout android:background="?selectableItemBackground" android:paddingTop="10.0dip" android:paddingRight="@dimen/chat_cell_horizontal_spacing_padding" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingEnd="@dimen/chat_cell_horizontal_spacing_padding" + xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> + <androidx.constraintlayout.widget.Guideline android:id="@id/uikit_chat_guideline" style="@style/UiKit.Chat.Guideline" /> +- <com.facebook.drawee.view.SimpleDraweeView android:id="@id/chat_list_adapter_item_text_avatar" android:layout_marginLeft="8.0dip" android:importantForAccessibility="no" android:layout_marginStart="8.0dip" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="@id/uikit_chat_guideline" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@id/uikit_chat_guideline" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/chat_list_adapter_item_text_header" style="@style/Avatar.Chat" /> + <androidx.constraintlayout.widget.ConstraintLayout android:id="@id/chat_list_adapter_item_text_header" android:layout_width="wrap_content" android:layout_height="0.0dip" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toTopOf="@id/chat_list_adapter_item_text_avatar"> + <TextView android:textColor="?theme_chat_name" android:id="@id/chat_list_adapter_item_text_name" android:lineSpacingMultiplier="1.0" app:layout_constrainedWidth="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" style="@style/UiKit.TextView.Large.SingleLine" /> + <TextView android:textSize="9.5sp" android:textColor="@color/white" android:id="@id/chat_list_adapter_item_text_bot" android:background="@drawable/drawable_button_purple_neutral" android:paddingLeft="3.0dip" android:paddingTop="0.5dip" android:paddingRight="3.0dip" android:paddingBottom="0.5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:text="BOT" android:singleLine="true" android:layout_marginStart="6.0dip" app:layout_constraintBottom_toBottomOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_name" style="@style/UiKit.TextView" /> + <TextView android:textSize="@dimen/uikit_textsize_small" android:textColor="?theme_chat_timestamp" android:gravity="center_vertical" android:id="@id/chat_list_adapter_item_text_timestamp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:maxWidth="150.0dip" android:singleLine="true" android:layout_marginStart="6.0dip" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_bot" style="@style/UiKit.TextView" /> + </androidx.constraintlayout.widget.ConstraintLayout> +- <com.discord.utilities.view.text.LinkifiedTextView android:id="@id/chat_list_adapter_item_text" android:layout_width="0.0dip" android:layout_marginTop="@dimen/uikit_spacing_xsmall" android:layout_marginRight="@dimen/uikit_spacing_small" android:layout_marginBottom="2.0dip" android:layout_marginEnd="@dimen/uikit_spacing_small" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toBottomOf="@id/chat_list_adapter_item_text_header" style="@style/UiKit.Chat.Text" /> + </androidx.constraintlayout.widget.ConstraintLayout> +\ No newline at end of file +--- 2,11 ---- + <androidx.constraintlayout.widget.ConstraintLayout android:background="?selectableItemBackground" android:paddingTop="10.0dip" android:paddingRight="@dimen/chat_cell_horizontal_spacing_padding" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingEnd="@dimen/chat_cell_horizontal_spacing_padding" + xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> + <androidx.constraintlayout.widget.Guideline android:id="@id/uikit_chat_guideline" style="@style/UiKit.Chat.Guideline" /> + <androidx.constraintlayout.widget.ConstraintLayout android:id="@id/chat_list_adapter_item_text_header" android:layout_width="wrap_content" android:layout_height="0.0dip" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toRightOf="@id/uikit_chat_guideline" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toEndOf="@id/uikit_chat_guideline" app:layout_constraintTop_toTopOf="@id/chat_list_adapter_item_text_avatar"> + <TextView android:textColor="?theme_chat_name" android:id="@id/chat_list_adapter_item_text_name" android:lineSpacingMultiplier="1.0" app:layout_constrainedWidth="true" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_bot" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" style="@style/UiKit.TextView.Large.SingleLine" /> + <TextView android:textSize="9.5sp" android:textColor="@color/white" android:id="@id/chat_list_adapter_item_text_bot" android:background="@drawable/drawable_button_purple_neutral" android:paddingLeft="3.0dip" android:paddingTop="0.5dip" android:paddingRight="3.0dip" android:paddingBottom="0.5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:text="BOT" android:singleLine="true" android:layout_marginStart="6.0dip" app:layout_constraintBottom_toBottomOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toStartOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_name" style="@style/UiKit.TextView" /> + <TextView android:textSize="@dimen/uikit_textsize_small" android:textColor="?theme_chat_timestamp" android:gravity="center_vertical" android:id="@id/chat_list_adapter_item_text_timestamp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:maxWidth="150.0dip" android:singleLine="true" android:layout_marginStart="6.0dip" app:layout_constraintBaseline_toBaselineOf="@id/chat_list_adapter_item_text_name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_bot" style="@style/UiKit.TextView" /> ++ <com.discord.utilities.view.text.LinkifiedTextView android:id="@id/chat_list_adapter_item_text" app:layout_constrainedWidth="true" android:layout_marginLeft="6.0dip" android:layout_marginBottom="1.0dip" android:layout_marginStart="6.0dip" app:layout_constraintStart_toEndOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintLeft_toRightOf="@id/chat_list_adapter_item_text_timestamp" app:layout_constraintRight_toRightOf="parent" style="@style/UiKit.Chat.Text" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </androidx.constraintlayout.widget.ConstraintLayout> +\ No newline at end of file +diff -crB from/res/values/dimens.xml to/res/values/dimens.xml +*** from/res/values/dimens.xml 2019-10-01 22:09:16.847297117 +0300 +--- to/res/values/dimens.xml 2019-10-01 22:10:21.921063112 +0300 +*************** +*** 336,342 **** + <dimen name="uikit_btn_padding_vertical">4.0dip</dimen> + <dimen name="uikit_btn_stroke_width">1.0dip</dimen> + <dimen name="uikit_btn_wrapped_min_width">96.0dip</dimen> +! <dimen name="uikit_guideline_chat">58.0dip</dimen> + <dimen name="uikit_guideline_item_row">48.0dip</dimen> + <dimen name="uikit_guideline_sheet">72.0dip</dimen> + <dimen name="uikit_image_border_size">3.0dip</dimen> +--- 336,342 ---- + <dimen name="uikit_btn_padding_vertical">4.0dip</dimen> + <dimen name="uikit_btn_stroke_width">1.0dip</dimen> + <dimen name="uikit_btn_wrapped_min_width">96.0dip</dimen> +! <dimen name="uikit_guideline_chat">20.0dip</dimen> + <dimen name="uikit_guideline_item_row">48.0dip</dimen> + <dimen name="uikit_guideline_sheet">72.0dip</dimen> + <dimen name="uikit_image_border_size">3.0dip</dimen> diff --git a/patches/compact/README.md b/patches/compact/README.md index 0e0b785..4ed1a9c 100644 --- a/patches/compact/README.md +++ b/patches/compact/README.md @@ -44,4 +44,5 @@ This patch, when combined with `smalltime` patch, emulates the "compact"/"irc" t - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/customdefaultemoji/963.patch b/patches/customdefaultemoji/963.patch new file mode 100644 index 0000000..48aa3bc --- /dev/null +++ b/patches/customdefaultemoji/963.patch @@ -0,0 +1,80 @@ +diff -crB from/smali/com/discord/stores/StoreEmoji.smali to/smali/com/discord/stores/StoreEmoji.smali +*** from/smali/com/discord/stores/StoreEmoji.smali 2019-10-01 22:09:20.710656138 +0300 +--- to/smali/com/discord/stores/StoreEmoji.smali 2019-10-01 22:10:14.464346867 +0300 +*************** +*** 100,136 **** + + const/4 v1, 0x0 + +! const-string v2, "thinking" + + aput-object v2, v0, v1 + + const/4 v1, 0x1 + +! const-string v2, "ok_hand" + + aput-object v2, v0, v1 + + const/4 v1, 0x2 + +! const-string v2, "eyes" + + aput-object v2, v0, v1 + + const/4 v1, 0x3 + +! const-string v2, "sweat_drops" + + aput-object v2, v0, v1 + + const/4 v1, 0x4 + +! const-string v2, "joy" + + aput-object v2, v0, v1 + + const/4 v1, 0x5 + +! const-string v2, "pig" + + aput-object v2, v0, v1 + +--- 100,136 ---- + + const/4 v1, 0x0 + +! const-string v2, "star" + + aput-object v2, v0, v1 + + const/4 v1, 0x1 + +! const-string v2, "thinking" + + aput-object v2, v0, v1 + + const/4 v1, 0x2 + +! const-string v2, "ok_hand" + + aput-object v2, v0, v1 + + const/4 v1, 0x3 + +! const-string v2, "eyes" + + aput-object v2, v0, v1 + + const/4 v1, 0x4 + +! const-string v2, "sweat_drops" + + aput-object v2, v0, v1 + + const/4 v1, 0x5 + +! const-string v2, "joy" + + aput-object v2, v0, v1 + diff --git a/patches/customdefaultemoji/README.md b/patches/customdefaultemoji/README.md index 824177b..1862c6e 100644 --- a/patches/customdefaultemoji/README.md +++ b/patches/customdefaultemoji/README.md @@ -26,4 +26,5 @@ This patch changes default list of custom emojis. - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/customtheme/963.patch b/patches/customtheme/963.patch new file mode 100644 index 0000000..1c5389e --- /dev/null +++ b/patches/customtheme/963.patch @@ -0,0 +1,283 @@ +diff -crB com.discord-963-base/res/values/colors.xml com.discord-963/res/values/colors.xml +*** com.discord-963-base/res/values/colors.xml 2019-10-01 22:09:17.390634063 +0300 +--- com.discord-963/res/values/colors.xml 2019-10-01 22:16:44.570273981 +0300 +*************** +*** 51,57 **** + <color name="cardview_shadow_start_color">#37000000</color> + <color name="code">#ff657b83</color> + <color name="colorPrimary">#ff333333</color> +! <color name="colorPrimaryDark">#ff1d1d1d</color> + <color name="color_clicked_darker">#40000000</color> + <color name="color_clicked_lighter">#40ffffff</color> + <color name="common_google_signin_btn_text_dark_default">@android:color/white</color> +--- 51,57 ---- + <color name="cardview_shadow_start_color">#37000000</color> + <color name="code">#ff657b83</color> + <color name="colorPrimary">#ff333333</color> +! <color name="colorPrimaryDark">#ff000000</color> + <color name="color_clicked_darker">#40000000</color> + <color name="color_clicked_lighter">#40ffffff</color> + <color name="common_google_signin_btn_text_dark_default">@android:color/white</color> +*************** +*** 62,69 **** + <color name="common_google_signin_btn_text_light_disabled">#1f000000</color> + <color name="common_google_signin_btn_text_light_focused">#90000000</color> + <color name="common_google_signin_btn_text_light_pressed">#de000000</color> +! <color name="dark_grey_2">#ff36393e</color> +! <color name="dark_grey_2_alpha_10">#ff303337</color> + <color name="design_bottom_navigation_shadow_color">#14000000</color> + <color name="design_default_color_primary">#ff3f51b5</color> + <color name="design_default_color_primary_dark">#ff303f9f</color> +--- 62,69 ---- + <color name="common_google_signin_btn_text_light_disabled">#1f000000</color> + <color name="common_google_signin_btn_text_light_focused">#90000000</color> + <color name="common_google_signin_btn_text_light_pressed">#de000000</color> +! <color name="dark_grey_2">#ff000000</color> +! <color name="dark_grey_2_alpha_10">#ff000000</color> + <color name="design_bottom_navigation_shadow_color">#14000000</color> + <color name="design_default_color_primary">#ff3f51b5</color> + <color name="design_default_color_primary_dark">#ff303f9f</color> +*************** +*** 97,105 **** + <color name="grey_6">#ff4f545c</color> + <color name="grey_6_alpha_05">#0d4f545c</color> + <color name="grey_6_alpha_30">#4d4f545c</color> +! <color name="grey_account">#ff282b30</color> +! <color name="grey_channels">#ff2e3136</color> +! <color name="grey_guilds">#ff1e2124</color> + <color name="grey_unread">#ff8a8e94</color> + <color name="highlighted_text_material_dark">#6680cbc4</color> + <color name="highlighted_text_material_light">#66009688</color> +--- 97,105 ---- + <color name="grey_6">#ff4f545c</color> + <color name="grey_6_alpha_05">#0d4f545c</color> + <color name="grey_6_alpha_30">#4d4f545c</color> +! <color name="grey_account">#ff000000</color> +! <color name="grey_channels">#ff000000</color> +! <color name="grey_guilds">#ff000000</color> + <color name="grey_unread">#ff8a8e94</color> + <color name="highlighted_text_material_dark">#6680cbc4</color> + <color name="highlighted_text_material_light">#66009688</color> +*************** +*** 107,121 **** + <color name="hypesquad_house2">#fff47b67</color> + <color name="hypesquad_house3">#ff45ddc0</color> + <color name="league_of_legends">#ff021f25</color> +! <color name="link_100">#fff2fbfe</color> +! <color name="link_200">#ffcceffd</color> +! <color name="link_300">#ff99dffb</color> +! <color name="link_400">#ff33c0f6</color> +! <color name="link_500">#ff00b0f4</color> +! <color name="link_600">#ff0078a6</color> +! <color name="link_700">#ff004662</color> +! <color name="link_800">#ff003549</color> +! <color name="link_900">#ff00090c</color> + <color name="material_blue_grey_800">#ff37474f</color> + <color name="material_blue_grey_900">#ff263238</color> + <color name="material_blue_grey_950">#ff21272b</color> +--- 107,121 ---- + <color name="hypesquad_house2">#fff47b67</color> + <color name="hypesquad_house3">#ff45ddc0</color> + <color name="league_of_legends">#ff021f25</color> +! <color name="link_100">#ff8cf687</color> +! <color name="link_200">#ff7df577</color> +! <color name="link_300">#ff6ef368</color> +! <color name="link_400">#ff5ff258</color> +! <color name="link_500">#ff50f148</color> +! <color name="link_600">#ff41f038</color> +! <color name="link_700">#ff32ef28</color> +! <color name="link_800">#ff23ed19</color> +! <color name="link_900">#ff1be411</color> + <color name="material_blue_grey_800">#ff37474f</color> + <color name="material_blue_grey_900">#ff263238</color> + <color name="material_blue_grey_950">#ff21272b</color> +*************** +*** 154,168 **** + <color name="primary_400">#ff72767d</color> + <color name="primary_400_alpha_30">#4d72767d</color> + <color name="primary_400_alpha_60">#9972767d</color> +! <color name="primary_500">#ff4f545c</color> +! <color name="primary_500_alpha_30">#4d4f545c</color> +! <color name="primary_500_alpha_60">#994f545c</color> + <color name="primary_560">#ff40444b</color> +! <color name="primary_600">#ff36393f</color> +! <color name="primary_600_alpha_60">#9936393f</color> +! <color name="primary_630">#ff2f3136</color> +! <color name="primary_630_alpha_60">#992f3136</color> +! <color name="primary_630_alpha_90">#e62f3136</color> + <color name="primary_660">#ff292b2f</color> + <color name="primary_700">#ff202225</color> + <color name="primary_700_alpha_60">#99202225</color> +--- 154,168 ---- + <color name="primary_400">#ff72767d</color> + <color name="primary_400_alpha_30">#4d72767d</color> + <color name="primary_400_alpha_60">#9972767d</color> +! <color name="primary_500">#ff0f0f0f</color> +! <color name="primary_500_alpha_30">#4d0f0f0f</color> +! <color name="primary_500_alpha_60">#990f0f0f</color> + <color name="primary_560">#ff40444b</color> +! <color name="primary_600">#ff000000</color> +! <color name="primary_600_alpha_60">#99000000</color> +! <color name="primary_630">#ff000000</color> +! <color name="primary_630_alpha_60">#99000000</color> +! <color name="primary_630_alpha_90">#e6000000</color> + <color name="primary_660">#ff292b2f</color> + <color name="primary_700">#ff202225</color> + <color name="primary_700_alpha_60">#99202225</color> +*************** +*** 195,203 **** + <color name="primary_text_default_material_light">#de000000</color> + <color name="primary_text_disabled_material_dark">#4dffffff</color> + <color name="primary_text_disabled_material_light">#39000000</color> +! <color name="purple_brand">#ff738bd7</color> +! <color name="purple_brand_alpha_10">#1a738bd7</color> +! <color name="purple_brand_dark">#ff697ec4</color> + <color name="purple_brand_hint">#ffc9d2f0</color> + <color name="purple_brand_notification">#ff5161ff</color> + <color name="reaction_background_me_dark">#4d5c6a9e</color> +--- 195,203 ---- + <color name="primary_text_default_material_light">#de000000</color> + <color name="primary_text_disabled_material_dark">#4dffffff</color> + <color name="primary_text_disabled_material_light">#39000000</color> +! <color name="purple_brand">#ff9c4249</color> +! <color name="purple_brand_alpha_10">#1a9c4249</color> +! <color name="purple_brand_dark">#ff000000</color> + <color name="purple_brand_hint">#ffc9d2f0</color> + <color name="purple_brand_notification">#ff5161ff</color> + <color name="reaction_background_me_dark">#4d5c6a9e</color> +*************** +*** 259,265 **** + <color name="switch_thumb_disabled_material_light">#ffbdbdbd</color> + <color name="switch_thumb_normal_material_dark">#ffbdbdbd</color> + <color name="switch_thumb_normal_material_light">#fff1f1f1</color> +! <color name="tooltip_background_dark">#e6616161</color> + <color name="tooltip_background_light">#e6ffffff</color> + <color name="transparent">@android:color/transparent</color> + <color name="twitch">#ff593695</color> +--- 259,265 ---- + <color name="switch_thumb_disabled_material_light">#ffbdbdbd</color> + <color name="switch_thumb_normal_material_dark">#ffbdbdbd</color> + <color name="switch_thumb_normal_material_light">#fff1f1f1</color> +! <color name="tooltip_background_dark">#e6000000</color> + <color name="tooltip_background_light">#e6ffffff</color> + <color name="transparent">@android:color/transparent</color> + <color name="twitch">#ff593695</color> +diff -crB com.discord-963-base/res/values/styles.xml com.discord-963/res/values/styles.xml +*** com.discord-963-base/res/values/styles.xml 2019-10-01 22:09:17.070631936 +0300 +--- com.discord-963/res/values/styles.xml 2019-10-01 22:12:52.288729561 +0300 +*************** +*** 114,120 **** + <item name="colorPrimary">@color/primary_600</item> + <item name="colorPrimaryBg">@drawable/drawable_uikit_primary_600_bg_dark</item> + <item name="colorPrimaryCircle">@drawable/drawable_uikit_primary_600_circle</item> +! <item name="colorPrimaryDark">#ff2b2e31</item> + <item name="colorPrimaryDivider">@color/primary_500_alpha_60</item> + <item name="colorPrimaryTabs">@color/black_alpha_05</item> + <item name="dialogTheme">@style/AppTheme.Dark.Notice</item> +--- 114,120 ---- + <item name="colorPrimary">@color/primary_600</item> + <item name="colorPrimaryBg">@drawable/drawable_uikit_primary_600_bg_dark</item> + <item name="colorPrimaryCircle">@drawable/drawable_uikit_primary_600_circle</item> +! <item name="colorPrimaryDark">@color/primary_630</item> + <item name="colorPrimaryDivider">@color/primary_500_alpha_60</item> + <item name="colorPrimaryTabs">@color/black_alpha_05</item> + <item name="dialogTheme">@style/AppTheme.Dark.Notice</item> +*************** +*** 337,343 **** + <item name="tabTextColor">@color/white_alpha_40</item> + <item name="theme_backspace_icon">@drawable/ic_backspace_white_24dp</item> + <item name="theme_chat_block_quote_divider">@color/primary_500</item> +! <item name="theme_chat_blocked_bg">#ff34373c</item> + <item name="theme_chat_blocked_text">@color/grey_unread</item> + <item name="theme_chat_code">@color/grey_channels</item> + <item name="theme_chat_codeblock_border">@color/grey_account</item> +--- 337,343 ---- + <item name="tabTextColor">@color/white_alpha_40</item> + <item name="theme_backspace_icon">@drawable/ic_backspace_white_24dp</item> + <item name="theme_chat_block_quote_divider">@color/primary_500</item> +! <item name="theme_chat_blocked_bg">@color/primary_500</item> + <item name="theme_chat_blocked_text">@color/grey_unread</item> + <item name="theme_chat_code">@color/grey_channels</item> + <item name="theme_chat_codeblock_border">@color/grey_account</item> +*************** +*** 351,362 **** + <item name="theme_chat_input_button_tint_colors">@color/chat_input_button_tint_colors_dark</item> + <item name="theme_chat_input_content_tab_bg">@drawable/drawable_rect_rounded_dark</item> + <item name="theme_chat_input_divider">@color/dark_grey_2_alpha_10</item> +! <item name="theme_chat_input_edit">#ff3e4145</item> + <item name="theme_chat_input_photo_selection_icon">@drawable/ic_img_selected_dark_theme</item> + <item name="theme_chat_input_text">@color/white_alpha_70</item> + <item name="theme_chat_input_text_placeholder">@color/white_alpha_20</item> + <item name="theme_chat_loading_spinner_color">@color/white</item> +! <item name="theme_chat_mentioned_me">#1afaa61a</item> + <item name="theme_chat_name">@color/white</item> + <item name="theme_chat_reaction_background">@drawable/drawable_bg_reaction_dark</item> + <item name="theme_chat_reaction_text_color">@drawable/drawable_reaction_text_color_dark</item> +--- 351,362 ---- + <item name="theme_chat_input_button_tint_colors">@color/chat_input_button_tint_colors_dark</item> + <item name="theme_chat_input_content_tab_bg">@drawable/drawable_rect_rounded_dark</item> + <item name="theme_chat_input_divider">@color/dark_grey_2_alpha_10</item> +! <item name="theme_chat_input_edit">@color/primary_600</item> + <item name="theme_chat_input_photo_selection_icon">@drawable/ic_img_selected_dark_theme</item> + <item name="theme_chat_input_text">@color/white_alpha_70</item> + <item name="theme_chat_input_text_placeholder">@color/white_alpha_20</item> + <item name="theme_chat_loading_spinner_color">@color/white</item> +! <item name="theme_chat_mentioned_me">@color/purple_brand_alpha_10</item> + <item name="theme_chat_name">@color/white</item> + <item name="theme_chat_reaction_background">@drawable/drawable_bg_reaction_dark</item> + <item name="theme_chat_reaction_text_color">@drawable/drawable_reaction_text_color_dark</item> +*************** +*** 422,428 **** + <item name="colorControlActivated">@color/brand_500</item> + <item name="colorControlNormal">@color/primary_100</item> + <item name="colorPrimary">@color/primary_600</item> +! <item name="colorPrimaryDark">#ff2b2e31</item> + </style> + <style name="AppTheme.Dark.Evil" parent="@style/AppTheme.Dark"> + <item name="colorAccent">@color/brand_600</item> +--- 422,428 ---- + <item name="colorControlActivated">@color/brand_500</item> + <item name="colorControlNormal">@color/primary_100</item> + <item name="colorPrimary">@color/primary_600</item> +! <item name="colorPrimaryDark">@color/primary_630</item> + </style> + <style name="AppTheme.Dark.Evil" parent="@style/AppTheme.Dark"> + <item name="colorAccent">@color/brand_600</item> +*************** +*** 448,454 **** + <item name="colorControlActivated">@color/brand_500</item> + <item name="colorControlNormal">@color/primary_100</item> + <item name="colorPrimary">@color/primary_600</item> +! <item name="colorPrimaryDark">#ff2b2e31</item> + </style> + <style name="AppTheme.Dark.Notice.PositiveRed" parent="@style/AppTheme.Dark.Notice"> + <item name="buttonBarPositiveButtonStyle">@style/UiKit.Button.Red.Fit</item> +--- 448,454 ---- + <item name="colorControlActivated">@color/brand_500</item> + <item name="colorControlNormal">@color/primary_100</item> + <item name="colorPrimary">@color/primary_600</item> +! <item name="colorPrimaryDark">@color/primary_630</item> + </style> + <style name="AppTheme.Dark.Notice.PositiveRed" parent="@style/AppTheme.Dark.Notice"> + <item name="buttonBarPositiveButtonStyle">@style/UiKit.Button.Red.Fit</item> +diff -crB com.discord-963-base/smali/com/discord/app/AppActivity$d.smali com.discord-963/smali/com/discord/app/AppActivity$d.smali +*** com.discord-963-base/smali/com/discord/app/AppActivity$d.smali 2019-10-01 22:09:20.523988230 +0300 +--- com.discord-963/smali/com/discord/app/AppActivity$d.smali 2019-10-01 22:34:04.187157223 +0300 +*************** +*** 113,119 **** + + check-cast v0, Landroid/app/Activity; + +! const v1, 0x7f060138 + + invoke-static {v0, v1}, Lcom/discord/utilities/color/ColorCompat;->setStatusBarColorResourceId(Landroid/app/Activity;I)V + +--- 113,119 ---- + + check-cast v0, Landroid/app/Activity; + +! const v1, 0x7f060021 + + invoke-static {v0, v1}, Lcom/discord/utilities/color/ColorCompat;->setStatusBarColorResourceId(Landroid/app/Activity;I)V + + diff --git a/patches/customtheme/README.md b/patches/customtheme/README.md index 4b34964..c749924 100644 --- a/patches/customtheme/README.md +++ b/patches/customtheme/README.md @@ -54,6 +54,7 @@ Self note: Top bar color is set by `setStatusBarColorResourceId` - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 #### Value reference diff --git a/patches/customversion/963.patch b/patches/customversion/963.patch new file mode 100644 index 0000000..c64732b --- /dev/null +++ b/patches/customversion/963.patch @@ -0,0 +1,20 @@ +diff -crB from/smali/com/discord/widgets/settings/WidgetSettings.smali to/smali/com/discord/widgets/settings/WidgetSettings.smali +*** from/smali/com/discord/widgets/settings/WidgetSettings.smali 2019-10-01 22:09:21.347327038 +0300 +--- to/smali/com/discord/widgets/settings/WidgetSettings.smali 2019-10-01 22:10:18.231038578 +0300 +*************** +*** 1657,1663 **** + + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +! const-string v0, " - 9.6.3 (963)" + + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +--- 1657,1663 ---- + + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +! const-string v0, " - 9.6.3 (963), with Cutthecord patches" + + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + diff --git a/patches/customversion/README.md b/patches/customversion/README.md index ebb3986..68f92d9 100644 --- a/patches/customversion/README.md +++ b/patches/customversion/README.md @@ -47,4 +47,5 @@ This patch replaces version string and adds mention of cutthecord in the user se - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/disable-mobileindicator/963.patch b/patches/disable-mobileindicator/963.patch new file mode 100644 index 0000000..96b0857 --- /dev/null +++ b/patches/disable-mobileindicator/963.patch @@ -0,0 +1,20 @@ +diff -crB from/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali to/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali +*** from/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali 2019-10-01 22:09:20.860657135 +0300 +--- to/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali 2019-10-01 22:10:06.937630156 +0300 +*************** +*** 179,185 **** + + const-string v1, "browser" + +! const-string v2, "Discord Android" + + .line 64 + invoke-static {v1, v2}, Lkotlin/q;->m(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair; +--- 179,185 ---- + + const-string v1, "browser" + +! const-string v2, "Discord Client" + + .line 64 + invoke-static {v1, v2}, Lkotlin/q;->m(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair; diff --git a/patches/disable-mobileindicator/README.md b/patches/disable-mobileindicator/README.md index fe514d2..c60ee20 100644 --- a/patches/disable-mobileindicator/README.md +++ b/patches/disable-mobileindicator/README.md @@ -48,4 +48,5 @@ However, this causes some issues. See the `Bugs / Side effects` list below. - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/experiments/963.patch b/patches/experiments/963.patch new file mode 100644 index 0000000..14b6609 --- /dev/null +++ b/patches/experiments/963.patch @@ -0,0 +1,199 @@ +diff -crB com.discord-963-base/smali/com/discord/stores/StoreExperiments$getExperimentalAlpha$1.smali com.discord-963/smali/com/discord/stores/StoreExperiments$getExperimentalAlpha$1.smali +*** com.discord-963-base/smali/com/discord/stores/StoreExperiments$getExperimentalAlpha$1.smali 2019-10-01 22:09:20.713989493 +0300 +--- com.discord-963/smali/com/discord/stores/StoreExperiments$getExperimentalAlpha$1.smali 2019-10-01 22:41:50.796903956 +0300 +*************** +*** 80,108 **** + + .method public final call(Lcom/discord/models/domain/ModelUser;Lcom/discord/models/domain/ModelGuild;)Z + .locals 1 +- +- const-string v0, "meUser" +- +- .line 98 +- invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V +- +- invoke-virtual {p1}, Lcom/discord/models/domain/ModelUser;->isStaff()Z +- +- move-result p1 +- +- if-nez p1, :cond_1 +- +- if-eqz p2, :cond_0 +- +- goto :goto_0 +- +- :cond_0 +- const/4 p1, 0x0 +- +- return p1 +- +- :cond_1 +- :goto_0 + const/4 p1, 0x1 + + return p1 +--- 80,85 ---- +diff -crB com.discord-963-base/smali/com/discord/stores/StoreExperiments.smali com.discord-963/smali/com/discord/stores/StoreExperiments.smali +*** com.discord-963-base/smali/com/discord/stores/StoreExperiments.smali 2019-10-01 22:09:20.717322849 +0300 +--- com.discord-963/smali/com/discord/stores/StoreExperiments.smali 2019-10-01 22:41:50.796903956 +0300 +*************** +*** 1236,1296 **** + .end method + + .method public final isExperimentalAlpha()Z +! .locals 4 +! +! .line 91 +! iget-boolean v0, p0, Lcom/discord/stores/StoreExperiments;->initialized:Z +! +! const/4 v1, 0x1 +! +! if-eqz v0, :cond_0 +! +! iget-object v0, p0, Lcom/discord/stores/StoreExperiments;->stream:Lcom/discord/stores/StoreStream; +! +! invoke-virtual {v0}, Lcom/discord/stores/StoreStream;->getUsers$app_productionDiscordExternalRelease()Lcom/discord/stores/StoreUser; +! +! move-result-object v0 +! +! iget-object v0, v0, Lcom/discord/stores/StoreUser;->me:Lcom/discord/models/domain/ModelUser$Me; +! +! if-eqz v0, :cond_0 +! +! invoke-virtual {v0}, Lcom/discord/models/domain/ModelUser$Me;->isStaff()Z +! +! move-result v0 +! +! if-eq v0, v1, :cond_1 +! +! :cond_0 +! iget-object v0, p0, Lcom/discord/stores/StoreExperiments;->stream:Lcom/discord/stores/StoreStream; +! +! invoke-virtual {v0}, Lcom/discord/stores/StoreStream;->getGuilds$app_productionDiscordExternalRelease()Lcom/discord/stores/StoreGuilds; +! +! move-result-object v0 +! +! iget-object v0, v0, Lcom/discord/stores/StoreGuilds;->guilds:Ljava/util/Map; +! +! const-string v2, "stream.guilds.guilds" +! +! invoke-static {v0, v2}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V +! +! const-wide v2, 0x2bc056ab0800006L +! +! invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; +! +! move-result-object v2 +! +! invoke-interface {v0, v2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z +! +! move-result v0 +! +! if-eqz v0, :cond_2 +! +! :cond_1 +! return v1 +! +! :cond_2 +! const/4 v0, 0x0 + + return v0 + .end method +--- 1236,1243 ---- + .end method + + .method public final isExperimentalAlpha()Z +! .locals 1 +! const/4 v0, 0x1 + + return v0 + .end method +diff -crB com.discord-963-base/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$1.smali com.discord-963/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$1.smali +*** com.discord-963-base/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$1.smali 2019-10-01 22:09:21.340660327 +0300 +--- com.discord-963/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$1.smali 2019-10-01 22:41:50.796903956 +0300 +*************** +*** 77,87 **** + const-string v0, "meUser" + + .line 186 +! invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V +! +! invoke-virtual {p1}, Lcom/discord/models/domain/ModelUser;->isStaff()Z +! +! move-result v2 + + const-string v1, "fontScale" + +--- 77,83 ---- + const-string v0, "meUser" + + .line 186 +! const/4 v2, 0x1 + + const-string v1, "fontScale" + +*************** +*** 95,105 **** + const-string p3, "isAlphaTesterOrStaff" + + .line 188 +! invoke-static {p4, p3}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V +! +! invoke-virtual {p4}, Ljava/lang/Boolean;->booleanValue()Z +! +! move-result v4 + + .line 189 + invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V +--- 91,97 ---- + const-string p3, "isAlphaTesterOrStaff" + + .line 188 +! const/4 v4, 0x1 + + .line 189 + invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V +diff -crB com.discord-963-base/smali/com/discord/widgets/settings/WidgetSettings.smali com.discord-963/smali/com/discord/widgets/settings/WidgetSettings.smali +*** com.discord-963-base/smali/com/discord/widgets/settings/WidgetSettings.smali 2019-10-01 22:09:21.347327038 +0300 +--- com.discord-963/smali/com/discord/widgets/settings/WidgetSettings.smali 2019-10-01 22:42:28.187151887 +0300 +*************** +*** 877,885 **** + if-eqz p1, :cond_1 + + .line 133 +! invoke-virtual {p1}, Lcom/discord/models/domain/ModelUser;->isStaff()Z +! +! move-result v2 + + if-eq v2, v0, :cond_0 + +--- 877,883 ---- + if-eqz p1, :cond_1 + + .line 133 +! const/4 v2, 0x1 + + if-eq v2, v0, :cond_0 + +*************** +*** 898,906 **** + if-eqz p1, :cond_2 + + .line 134 +! invoke-virtual {p1}, Lcom/discord/models/domain/ModelUser;->isVerified()Z +! +! move-result v3 + + if-ne v3, v0, :cond_2 + +--- 896,902 ---- + if-eqz p1, :cond_2 + + .line 134 +! const/4 v3, 0x1 + + if-ne v3, v0, :cond_2 + +Only in com.discord-963/smali/com/discord/widgets/settings: WidgetSettings.smali.orig +Only in com.discord-963/smali/com/discord/widgets/settings: WidgetSettings.smali.rej + diff --git a/patches/experiments/README.md b/patches/experiments/README.md index 5967fad..3a02920 100644 --- a/patches/experiments/README.md +++ b/patches/experiments/README.md @@ -51,4 +51,5 @@ This patch enables developer options (empty), mobile experiments (of which there - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/litecord/963.patch b/patches/litecord/963.patch new file mode 100644 index 0000000..4499bcf --- /dev/null +++ b/patches/litecord/963.patch @@ -0,0 +1,298 @@ +diff -crB com.discord-963-base/smali/com/discord/app/App.smali com.discord-963/smali/com/discord/app/App.smali +*** com.discord-963-base/smali/com/discord/app/App.smali 2019-10-01 22:09:20.523988230 +0300 +--- com.discord-963/smali/com/discord/app/App.smali 2019-10-01 22:45:15.508261371 +0300 +*************** +*** 221,227 **** + + invoke-virtual {v1, v2, v3}, Lcom/discord/utilities/view/text/LinkifiedTextView$Companion;->init(Lcom/discord/utilities/logging/Logger;Lkotlin/jvm/functions/Function2;)Lkotlin/Unit; + +! const-string v1, "https://cdn.discordapp.com" + + .line 75 + invoke-static {v1}, Lcom/discord/models/domain/emoji/ModelEmojiCustom;->setCdnUri(Ljava/lang/String;)V +--- 221,227 ---- + + invoke-virtual {v1, v2, v3}, Lcom/discord/utilities/view/text/LinkifiedTextView$Companion;->init(Lcom/discord/utilities/logging/Logger;Lkotlin/jvm/functions/Function2;)Lkotlin/Unit; + +! const-string v1, "https://dev.litecord.top" + + .line 75 + invoke-static {v1}, Lcom/discord/models/domain/emoji/ModelEmojiCustom;->setCdnUri(Ljava/lang/String;)V +Only in com.discord-963/smali/com/discord/app: App.smali.orig +diff -crB com.discord-963-base/smali/com/discord/BuildConfig.smali com.discord-963/smali/com/discord/BuildConfig.smali +*** com.discord-963-base/smali/com/discord/BuildConfig.smali 2019-10-01 22:09:20.520654875 +0300 +--- com.discord-963/smali/com/discord/BuildConfig.smali 2019-10-01 22:45:15.508261371 +0300 +*************** +*** 18,32 **** + + .field public static final FLAVOR_vendor:Ljava/lang/String; = "discord" + +! .field public static final HOST:Ljava/lang/String; = "https://discordapp.com" + +! .field public static final HOST_API:Ljava/lang/String; = "https://discordapp.com/api/" + +! .field public static final HOST_CDN:Ljava/lang/String; = "https://cdn.discordapp.com" + + .field public static final HOST_GIFT:Ljava/lang/String; = "https://discord.gift" + +! .field public static final HOST_INVITE:Ljava/lang/String; = "https://discord.gg" + + .field public static final LOCAL_IP:Ljava/lang/String; = "" + +--- 18,32 ---- + + .field public static final FLAVOR_vendor:Ljava/lang/String; = "discord" + +! .field public static final HOST:Ljava/lang/String; = "https://dev.litecord.top" + +! .field public static final HOST_API:Ljava/lang/String; = "https://dev.litecord.top/api/" + +! .field public static final HOST_CDN:Ljava/lang/String; = "https://dev.litecord.top" + + .field public static final HOST_GIFT:Ljava/lang/String; = "https://discord.gift" + +! .field public static final HOST_INVITE:Ljava/lang/String; = "https://dev.litecord.top" + + .field public static final LOCAL_IP:Ljava/lang/String; = "" + +diff -crB com.discord-963-base/smali/com/discord/gateway/GatewaySocket.smali com.discord-963/smali/com/discord/gateway/GatewaySocket.smali +*** com.discord-963-base/smali/com/discord/gateway/GatewaySocket.smali 2019-10-01 22:09:20.573988563 +0300 +--- com.discord-963/smali/com/discord/gateway/GatewaySocket.smali 2019-10-01 22:45:36.571734373 +0300 +*************** +*** 42,48 **** + .end annotation + .end field + +! .field private static final GATEWAY_COMPRESSION:Ljava/lang/String; = "zlib-stream" + + .field private static final GATEWAY_ENCODING:Ljava/lang/String; = "json" + +--- 42,48 ---- + .end annotation + .end field + +! .field private static final GATEWAY_COMPRESSION:Ljava/lang/String; = "" + + .field private static final GATEWAY_ENCODING:Ljava/lang/String; = "json" + +*************** +*** 1050,1056 **** + + invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +! const-string p1, "/?encoding=json&v=7&compress=zlib-stream" + + invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +--- 1050,1056 ---- + + invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +! const-string p1, "/?encoding=json&v=7" + + invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +Only in com.discord-963/smali/com/discord/gateway: GatewaySocket.smali.orig +Only in com.discord-963/smali/com/discord/gateway: GatewaySocket.smali.rej +diff -crB com.discord-963-base/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali com.discord-963/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali +*** com.discord-963-base/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali 2019-10-01 22:09:20.550655074 +0300 +--- com.discord-963/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali 2019-10-01 22:45:27.125005067 +0300 +*************** +*** 66,71 **** +--- 66,73 ---- + + iput p2, p0, Lcom/discord/gateway/io/OutgoingPayload$Identify;->large_threshold:I + ++ const/4 p3, 0x0 ++ + iput-boolean p3, p0, Lcom/discord/gateway/io/OutgoingPayload$Identify;->compress:Z + + iput-object p4, p0, Lcom/discord/gateway/io/OutgoingPayload$Identify;->properties:Ljava/util/Map; +Only in com.discord-963/smali/com/discord/gateway/io: OutgoingPayload$Identify.smali.orig +Only in com.discord-963/smali/com/discord/gateway/io: OutgoingPayload$Identify.smali.rej +diff -crB com.discord-963-base/smali/com/discord/stores/StoreGatewayConnection.smali com.discord-963/smali/com/discord/stores/StoreGatewayConnection.smali +*** com.discord-963-base/smali/com/discord/stores/StoreGatewayConnection.smali 2019-10-01 22:09:20.777323248 +0300 +--- com.discord-963/smali/com/discord/stores/StoreGatewayConnection.smali 2019-10-01 22:45:15.511594726 +0300 +*************** +*** 1409,1415 **** + + check-cast v2, Lcom/discord/restapi/RequiredHeadersInterceptor$HeadersProvider; + +! const-string v3, "https://discordapp.com/api/" + + invoke-direct {v9, v3, v2, v0}, Lcom/discord/gateway/rest/RestConfig;-><init>(Ljava/lang/String;Lcom/discord/restapi/RequiredHeadersInterceptor$HeadersProvider;Ljava/util/List;)V + +--- 1409,1415 ---- + + check-cast v2, Lcom/discord/restapi/RequiredHeadersInterceptor$HeadersProvider; + +! const-string v3, "https://dev.litecord.top/api/" + + invoke-direct {v9, v3, v2, v0}, Lcom/discord/gateway/rest/RestConfig;-><init>(Ljava/lang/String;Lcom/discord/restapi/RequiredHeadersInterceptor$HeadersProvider;Ljava/util/List;)V + +Only in com.discord-963/smali/com/discord/stores: StoreGatewayConnection.smali.orig +diff -crB com.discord-963-base/smali/com/discord/utilities/icon/IconUtils.smali com.discord-963/smali/com/discord/utilities/icon/IconUtils.smali +*** com.discord-963-base/smali/com/discord/utilities/icon/IconUtils.smali 2019-10-01 22:09:20.903990757 +0300 +--- com.discord-963/smali/com/discord/utilities/icon/IconUtils.smali 2019-10-01 22:45:15.511594726 +0300 +*************** +*** 448,454 **** + goto :goto_2 + + :cond_1 +! const-string p3, "https://cdn.discordapp.com" + + .line 117 + check-cast p3, Ljava/lang/CharSequence; +--- 448,454 ---- + goto :goto_2 + + :cond_1 +! const-string p3, "https://dev.litecord.top" + + .line 117 + check-cast p3, Ljava/lang/CharSequence; +*************** +*** 496,502 **** + :cond_3 + new-instance p3, Ljava/lang/StringBuilder; + +! const-string v0, "https://cdn.discordapp.com/channel-icons/" + + invoke-direct {p3, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + +--- 496,502 ---- + :cond_3 + new-instance p3, Ljava/lang/StringBuilder; + +! const-string v0, "https://dev.litecord.top/channel-icons/" + + invoke-direct {p3, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + +*************** +*** 816,822 **** + goto :goto_2 + + :cond_0 +! const-string p2, "https://cdn.discordapp.com" + + .line 151 + check-cast p2, Ljava/lang/CharSequence; +--- 816,822 ---- + goto :goto_2 + + :cond_0 +! const-string p2, "https://dev.litecord.top" + + .line 151 + check-cast p2, Ljava/lang/CharSequence; +*************** +*** 893,899 **** + :goto_1 + new-instance p3, Ljava/lang/StringBuilder; + +! const-string v0, "https://cdn.discordapp.com/icons/" + + invoke-direct {p3, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + +--- 893,899 ---- + :goto_1 + new-instance p3, Ljava/lang/StringBuilder; + +! const-string v0, "https://dev.litecord.top/icons/" + + invoke-direct {p3, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + +*************** +*** 1112,1118 **** + :cond_0 + if-eqz p1, :cond_4 + +! const-string p2, "https://cdn.discordapp.com" + + .line 96 + check-cast p2, Ljava/lang/CharSequence; +--- 1112,1118 ---- + :cond_0 + if-eqz p1, :cond_4 + +! const-string p2, "https://dev.litecord.top" + + .line 96 + check-cast p2, Ljava/lang/CharSequence; +*************** +*** 1179,1185 **** + :goto_1 + new-instance p3, Ljava/lang/StringBuilder; + +! const-string v0, "https://cdn.discordapp.com/avatars/" + + invoke-direct {p3, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + +--- 1179,1185 ---- + :goto_1 + new-instance p3, Ljava/lang/StringBuilder; + +! const-string v0, "https://dev.litecord.top/avatars/" + + invoke-direct {p3, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + +*************** +*** 2093,2099 **** + .line 194 + new-instance v0, Ljava/lang/StringBuilder; + +! const-string v1, "https://cdn.discordapp.com/app-assets/" + + invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + +--- 2093,2099 ---- + .line 194 + new-instance v0, Ljava/lang/StringBuilder; + +! const-string v1, "https://dev.litecord.top/app-assets/" + + invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + +Only in com.discord-963/smali/com/discord/utilities/icon: IconUtils.smali.orig +diff -crB com.discord-963-base/smali/com/discord/utilities/rest/RestAPI$Companion.smali com.discord-963/smali/com/discord/utilities/rest/RestAPI$Companion.smali +*** com.discord-963-base/smali/com/discord/utilities/rest/RestAPI$Companion.smali 2019-10-01 22:09:20.943991023 +0300 +--- com.discord-963/smali/com/discord/utilities/rest/RestAPI$Companion.smali 2019-10-01 22:45:15.511594726 +0300 +*************** +*** 307,313 **** + + check-cast v6, Lokhttp3/m; + +! const-string v9, "https://discordapp.com/api/" + + invoke-direct {v0, v9, v6}, Lcom/discord/restapi/RestAPIBuilder;-><init>(Ljava/lang/String;Lokhttp3/m;)V + +--- 307,313 ---- + + check-cast v6, Lokhttp3/m; + +! const-string v9, "https://dev.litecord.top/api/" + + invoke-direct {v0, v9, v6}, Lcom/discord/restapi/RestAPIBuilder;-><init>(Ljava/lang/String;Lokhttp3/m;)V + +Only in com.discord-963/smali/com/discord/utilities/rest: RestAPI$Companion.smali.orig +diff -crB com.discord-963-base/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGameInvite.smali com.discord-963/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGameInvite.smali +*** com.discord-963-base/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGameInvite.smali 2019-10-01 22:09:21.137325641 +0300 +--- com.discord-963/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemGameInvite.smali 2019-10-01 22:45:15.511594726 +0300 +*************** +*** 606,612 **** + .line 106 + new-instance v1, Ljava/lang/StringBuilder; + +! const-string v6, "https://cdn.discordapp.com/app-icons/" + + invoke-direct {v1, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + +--- 606,612 ---- + .line 106 + new-instance v1, Ljava/lang/StringBuilder; + +! const-string v6, "https://dev.litecord.top/app-icons/" + + invoke-direct {v1, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + + diff --git a/patches/litecord/README.md b/patches/litecord/README.md index 2e0c433..b6ade0b 100644 --- a/patches/litecord/README.md +++ b/patches/litecord/README.md @@ -51,4 +51,5 @@ Please keep in mind that litecord is free (gratis and libre) software, provided - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/mutant/963.patch b/patches/mutant/963.patch new file mode 100644 index 0000000..40c55a9 --- /dev/null +++ b/patches/mutant/963.patch @@ -0,0 +1,1909 @@ +diff -crB com.discord-963-base/assets/data/emojis.json com.discord-963/assets/data/emojis.json +*** com.discord-963-base/assets/data/emojis.json 2019-10-01 22:09:24.037344924 +0300 +--- com.discord-963/assets/data/emojis.json 2019-10-01 22:36:37.594836344 +0300 +*************** +*** 549,554 **** +--- 549,568 ---- + }, + { + "names": [ ++ "raised_hands_paw" ++ ], ++ "surrogates": "🙌", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "raised_hands_claw" ++ ], ++ "surrogates": "🙌", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "clap" + ], + "surrogates": "👏", +*************** +*** 556,561 **** +--- 570,589 ---- + }, + { + "names": [ ++ "clap_paw" ++ ], ++ "surrogates": "👏", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "clap_claw" ++ ], ++ "surrogates": "👏", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "wave" + ], + "surrogates": "👋", +*************** +*** 563,568 **** +--- 591,610 ---- + }, + { + "names": [ ++ "wave_paw" ++ ], ++ "surrogates": "👋", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "wave_claw" ++ ], ++ "surrogates": "👋", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "thumbsup", + "+1", + "thumbup" +*************** +*** 572,577 **** +--- 614,637 ---- + }, + { + "names": [ ++ "thumbsup_paw", ++ "+1_paw", ++ "thumbup_paw" ++ ], ++ "surrogates": "👍", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "thumbsup_claw", ++ "+1_claw", ++ "thumbup_claw" ++ ], ++ "surrogates": "👍", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "thumbsdown", + "-1", + "thumbdown" +*************** +*** 581,586 **** +--- 641,664 ---- + }, + { + "names": [ ++ "thumbsdown_paw", ++ "-1_paw", ++ "thumbdown_paw" ++ ], ++ "surrogates": "👎", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "thumbsdown_claw", ++ "-1_claw", ++ "thumbdown_claw" ++ ], ++ "surrogates": "👎", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "punch" + ], + "surrogates": "👊", +*************** +*** 588,593 **** +--- 666,685 ---- + }, + { + "names": [ ++ "punch_paw" ++ ], ++ "surrogates": "👊", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "punch_claw" ++ ], ++ "surrogates": "👊", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "fist" + ], + "surrogates": "✊", +*************** +*** 595,600 **** +--- 687,706 ---- + }, + { + "names": [ ++ "fist_paw" ++ ], ++ "surrogates": "✊", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "fist_claw" ++ ], ++ "surrogates": "✊", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "v" + ], + "surrogates": "✌", +*************** +*** 602,607 **** +--- 708,727 ---- + }, + { + "names": [ ++ "v_paw" ++ ], ++ "surrogates": "✌", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "v_claw" ++ ], ++ "surrogates": "✌", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "ok_hand" + ], + "surrogates": "👌", +*************** +*** 609,614 **** +--- 729,748 ---- + }, + { + "names": [ ++ "ok_hand_paw" ++ ], ++ "surrogates": "👌", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "ok_hand_claw" ++ ], ++ "surrogates": "👌", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "raised_hand" + ], + "surrogates": "✋", +*************** +*** 616,621 **** +--- 750,769 ---- + }, + { + "names": [ ++ "raised_hand_paw" ++ ], ++ "surrogates": "✋", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "raised_hand_claw" ++ ], ++ "surrogates": "✋", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "open_hands" + ], + "surrogates": "👐", +*************** +*** 623,628 **** +--- 771,790 ---- + }, + { + "names": [ ++ "open_hands_paw" ++ ], ++ "surrogates": "👐", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "open_hands_claw" ++ ], ++ "surrogates": "👐", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "muscle" + ], + "surrogates": "💪", +*************** +*** 630,635 **** +--- 792,811 ---- + }, + { + "names": [ ++ "muscle_paw" ++ ], ++ "surrogates": "💪", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "muscle_claw" ++ ], ++ "surrogates": "💪", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "pray" + ], + "surrogates": "🙏", +*************** +*** 637,642 **** +--- 813,832 ---- + }, + { + "names": [ ++ "pray_paw" ++ ], ++ "surrogates": "🙏", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "pray_claw" ++ ], ++ "surrogates": "🙏", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "point_up" + ], + "surrogates": "☝", +*************** +*** 644,649 **** +--- 834,853 ---- + }, + { + "names": [ ++ "point_up_paw" ++ ], ++ "surrogates": "☝", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "point_up_claw" ++ ], ++ "surrogates": "☝", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "point_up_2" + ], + "surrogates": "👆", +*************** +*** 651,656 **** +--- 855,874 ---- + }, + { + "names": [ ++ "point_up_2_paw" ++ ], ++ "surrogates": "👆", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "point_up_2_claw" ++ ], ++ "surrogates": "👆", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "point_down" + ], + "surrogates": "👇", +*************** +*** 658,663 **** +--- 876,895 ---- + }, + { + "names": [ ++ "point_down_paw" ++ ], ++ "surrogates": "👇", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "point_down_claw" ++ ], ++ "surrogates": "👇", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "point_left" + ], + "surrogates": "👈", +*************** +*** 665,670 **** +--- 897,916 ---- + }, + { + "names": [ ++ "point_left_paw" ++ ], ++ "surrogates": "👈", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "point_left_claw" ++ ], ++ "surrogates": "👈", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "point_right" + ], + "surrogates": "👉", +*************** +*** 672,677 **** +--- 918,937 ---- + }, + { + "names": [ ++ "point_right_paw" ++ ], ++ "surrogates": "👉", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "point_right_claw" ++ ], ++ "surrogates": "👉", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "middle_finger", + "reversed_hand_with_middle_finger_extended" + ], +*************** +*** 680,685 **** +--- 940,961 ---- + }, + { + "names": [ ++ "middle_finger_paw", ++ "reversed_hand_with_middle_finger_extended_paw" ++ ], ++ "surrogates": "🖕", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "middle_finger_claw", ++ "reversed_hand_with_middle_finger_extended_claw" ++ ], ++ "surrogates": "🖕", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "hand_splayed", + "raised_hand_with_fingers_splayed" + ], +*************** +*** 688,693 **** +--- 964,977 ---- + }, + { + "names": [ ++ "hand_splayed_claw", ++ "raised_hand_with_fingers_splayed_claw" ++ ], ++ "surrogates": "🖐", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "metal", + "sign_of_the_horns" + ], +*************** +*** 696,701 **** +--- 980,1001 ---- + }, + { + "names": [ ++ "metal_paw", ++ "sign_of_the_horns_paw" ++ ], ++ "surrogates": "🤘", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "metal_claw", ++ "sign_of_the_horns_claw" ++ ], ++ "surrogates": "🤘", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "vulcan", + "raised_hand_with_part_between_middle_and_ring_fingers" + ], +*************** +*** 704,709 **** +--- 1004,1025 ---- + }, + { + "names": [ ++ "vulcan_paw", ++ "raised_hand_with_part_between_middle_and_ring_fingers_paw" ++ ], ++ "surrogates": "🖖", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "vulcan_claw", ++ "raised_hand_with_part_between_middle_and_ring_fingers_claw" ++ ], ++ "surrogates": "🖖", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "writing_hand" + ], + "surrogates": "✍", +*************** +*** 711,716 **** +--- 1027,1046 ---- + }, + { + "names": [ ++ "writing_hand_paw" ++ ], ++ "surrogates": "✍", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "writing_hand_claw" ++ ], ++ "surrogates": "✍", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "nail_care" + ], + "surrogates": "💅", +*************** +*** 718,723 **** +--- 1048,1067 ---- + }, + { + "names": [ ++ "nail_care_paw" ++ ], ++ "surrogates": "💅", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "nail_care_claw" ++ ], ++ "surrogates": "💅", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "lips" + ], + "surrogates": "👄" +*************** +*** 1417,1422 **** +--- 1761,1780 ---- + }, + { + "names": [ ++ "selfie_paw" ++ ], ++ "surrogates": "🤳", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "selfie_claw" ++ ], ++ "surrogates": "🤳", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "man_dancing", + "male_dancer" + ], +*************** +*** 1433,1438 **** +--- 1791,1812 ---- + }, + { + "names": [ ++ "call_me_paw", ++ "call_me_hand_paw" ++ ], ++ "surrogates": "🤙", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "call_me_claw", ++ "call_me_hand_claw" ++ ], ++ "surrogates": "🤙", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "raised_back_of_hand", + "back_of_hand" + ], +*************** +*** 1441,1446 **** +--- 1815,1836 ---- + }, + { + "names": [ ++ "raised_back_of_hand_paw", ++ "back_of_hand_paw" ++ ], ++ "surrogates": "🤚", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "raised_back_of_hand_claw", ++ "back_of_hand_claw" ++ ], ++ "surrogates": "🤚", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "left_facing_fist", + "left_fist" + ], +*************** +*** 1449,1454 **** +--- 1839,1860 ---- + }, + { + "names": [ ++ "left_facing_fist_paw", ++ "left_fist_paw" ++ ], ++ "surrogates": "🤛", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "left_facing_fist_claw", ++ "left_fist_claw" ++ ], ++ "surrogates": "🤛", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "right_facing_fist", + "right_fist" + ], +*************** +*** 1457,1462 **** +--- 1863,1884 ---- + }, + { + "names": [ ++ "right_facing_fist_paw", ++ "right_fist_paw" ++ ], ++ "surrogates": "🤜", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "right_facing_fist_claw", ++ "right_fist_claw" ++ ], ++ "surrogates": "🤜", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ + "handshake", + "shaking_hands" + ], +*************** +*** 1464,1474 **** +--- 1886,2100 ---- + }, + { + "names": [ ++ "handshake_paw", ++ "shaking_hands_paw" ++ ], ++ "surrogates": "🤝" ++ }, ++ { ++ "names": [ ++ "handshake_claw", ++ "shaking_hands_claw" ++ ], ++ "surrogates": "🤝" ++ }, ++ { ++ "names": [ + "fingers_crossed", + "hand_with_index_and_middle_finger_crossed" + ], + "surrogates": "🤞", + "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "fingers_crossed_paw", ++ "hand_with_index_and_middle_finger_crossed_paw" ++ ], ++ "surrogates": "🤞", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "fingers_crossed_claw", ++ "hand_with_index_and_middle_finger_crossed_claw" ++ ], ++ "surrogates": "🤞", ++ "hasDiversity": true ++ }, ++ { ++ "names": [ ++ "pilot" ++ ], ++ "surrogates": "🧑✈" ++ }, ++ { ++ "names": [ ++ "health_worker" ++ ], ++ "surrogates": "🧑⚕" ++ }, ++ { ++ "names": [ ++ "firefighter" ++ ], ++ "surrogates": "🧑🥢" ++ }, ++ { ++ "names": [ ++ "astronaut" ++ ], ++ "surrogates": "🧑🚀" ++ }, ++ { ++ "names": [ ++ "scientist" ++ ], ++ "surrogates": "🧑🔬" ++ }, ++ { ++ "names": [ ++ "mechanic" ++ ], ++ "surrogates": "🧑🔧" ++ }, ++ { ++ "names": [ ++ "technologist" ++ ], ++ "surrogates": "🧑💻" ++ }, ++ { ++ "names": [ ++ "chef" ++ ], ++ "surrogates": "🧑🍳" ++ }, ++ { ++ "names": [ ++ "monocle" ++ ], ++ "surrogates": "🧐" ++ }, ++ { ++ "names": [ ++ "pleading" ++ ], ++ "surrogates": "🥺" ++ }, ++ { ++ "names": [ ++ "cold" ++ ], ++ "surrogates": "🥶" ++ }, ++ { ++ "names": [ ++ "hot" ++ ], ++ "surrogates": "🥵" ++ }, ++ { ++ "names": [ ++ "woozy" ++ ], ++ "surrogates": "🥴" ++ }, ++ { ++ "names": [ ++ "party_face" ++ ], ++ "surrogates": "🥳" ++ }, ++ { ++ "names": [ ++ "smile_hearts" ++ ], ++ "surrogates": "🥰" ++ }, ++ { ++ "names": [ ++ "mind_blown" ++ ], ++ "surrogates": "🤯" ++ }, ++ { ++ "names": [ ++ "vomiting" ++ ], ++ "surrogates": "🤮" ++ }, ++ { ++ "names": [ ++ "hand_over_mouth" ++ ], ++ "surrogates": "🤭" ++ }, ++ { ++ "names": [ ++ "swearing" ++ ], ++ "surrogates": "🤬" ++ }, ++ { ++ "names": [ ++ "shush" ++ ], ++ "surrogates": "🤫" ++ }, ++ { ++ "names": [ ++ "crazy" ++ ], ++ "surrogates": "🤪" ++ }, ++ { ++ "names": [ ++ "starry_eyes" ++ ], ++ "surrogates": "🤩" ++ }, ++ { ++ "names": [ ++ "raised_eyebrow" ++ ], ++ "surrogates": "🤨" ++ }, ++ { ++ "names": [ ++ "detective" ++ ], ++ "surrogates": "🕵" ++ }, ++ { ++ "names": [ ++ "massage" ++ ], ++ "surrogates": "💆" ++ }, ++ { ++ "names": [ ++ "tipping_hand" ++ ], ++ "surrogates": "💁" ++ }, ++ { ++ "names": [ ++ "hot_shit" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "headpats" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "merperson" ++ ], ++ "surrogates": "🧜" + } + ], + "nature": [ +*************** +*** 2453,2458 **** +--- 3079,3140 ---- + "squid" + ], + "surrogates": "🦑" ++ }, ++ { ++ "names": [ ++ "furry_pride", ++ "rainbow_paw" ++ ], ++ "surrogates": "🌈" ++ }, ++ { ++ "names": [ ++ "paw" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "awoo" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "dont_awoo", ++ "no_awoo" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "elf" ++ ], ++ "surrogates": "🧝" ++ }, ++ { ++ "names": [ ++ "raccoon" ++ ], ++ "surrogates": "🦝" ++ }, ++ { ++ "names": [ ++ "parrot" ++ ], ++ "surrogates": "🦜" ++ }, ++ { ++ "names": [ ++ "peacock" ++ ], ++ "surrogates": "🦚" ++ }, ++ { ++ "names": [ ++ "demon" ++ ], ++ "surrogates": "" + } + ], + "food": [ +*************** +*** 2980,2985 **** +--- 3662,3673 ---- + "pancakes" + ], + "surrogates": "🥞" ++ }, ++ { ++ "names": [ ++ "cannabis_leaf" ++ ], ++ "surrogates": "" + } + ], + "activity": [ +*************** +*** 5271,5276 **** +--- 5959,6018 ---- + "shopping_trolley" + ], + "surrogates": "🛒" ++ }, ++ { ++ "names": [ ++ "toilet_paper" ++ ], ++ "surrogates": "🧻" ++ }, ++ { ++ "names": [ ++ "brick" ++ ], ++ "surrogates": "🧱" ++ }, ++ { ++ "names": [ ++ "firecracker" ++ ], ++ "surrogates": "🧨" ++ }, ++ { ++ "names": [ ++ "bone" ++ ], ++ "surrogates": "🦴" ++ }, ++ { ++ "names": [ ++ "d20" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "d12" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "d10" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "d8" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "d4" ++ ], ++ "surrogates": "" + } + ], + "symbols": [ +*************** +*** 7082,7087 **** +--- 7824,7934 ---- + "regional_indicator_a" + ], + "surrogates": "🇦" ++ }, ++ { ++ "names": [ ++ "queer_100" ++ ], ++ "surrogates": "💯🌈" ++ }, ++ { ++ "names": [ ++ "dont_at", ++ "no_at", ++ "no_mention", ++ "dont_mention" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "neuter_symbol" ++ ], ++ "surrogates": "⚲" ++ }, ++ { ++ "names": [ ++ "androgyne_symbol" ++ ], ++ "surrogates": "⚨" ++ }, ++ { ++ "names": [ ++ "transgender_symbol" ++ ], ++ "surrogates": "⚧" ++ }, ++ { ++ "names": [ ++ "male_female_symbol" ++ ], ++ "surrogates": "⚥" ++ }, ++ { ++ "names": [ ++ "male_and_female_symbol" ++ ], ++ "surrogates": "⚤" ++ }, ++ { ++ "names": [ ++ "two_male_symbols" ++ ], ++ "surrogates": "⚣" ++ }, ++ { ++ "names": [ ++ "two_female_symbols" ++ ], ++ "surrogates": "⚢" ++ }, ++ { ++ "names": [ ++ "red_heart" ++ ], ++ "surrogates": "♴" ++ }, ++ { ++ "names": [ ++ "male_symbol" ++ ], ++ "surrogates": "♂" ++ }, ++ { ++ "names": [ ++ "female_symbol" ++ ], ++ "surrogates": "♀" ++ }, ++ { ++ "names": [ ++ "orange_heart" ++ ], ++ "surrogates": "🧡" ++ }, ++ { ++ "names": [ ++ "labrys_symbol" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "bisexual_triangles" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "black_triangle" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "pink_triangle" ++ ], ++ "surrogates": "" + } + ], + "flags": [ +*************** +*** 8633,8638 **** + "rainbow_flag" + ], + "surrogates": "🏳️🌈" + } + ] +! } +\ No newline at end of file +--- 9480,9917 ---- + "rainbow_flag" + ], + "surrogates": "🏳️🌈" ++ }, ++ { ++ "names": [ ++ "pirate_flag" ++ ], ++ "surrogates": "🏴️" ++ }, ++ { ++ "names": [ ++ "transgender_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "polysexual_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "polyamory_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "pansexual_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "nonbinary_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "neutrois_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "intersex_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "genderqueer_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "genderfluid_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "deminonbinary_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "demigirl_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "demiguy_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "bisexual_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "bigender_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "bear_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "asexual_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "aromantic_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "agender_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "lesbian_flag" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "paw-modifier" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "claw-modifier" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-1" ++ ], ++ "surrogates": "🏻" ++ }, ++ { ++ "names": [ ++ "skin-tone-2" ++ ], ++ "surrogates": "🏼" ++ }, ++ { ++ "names": [ ++ "skin-tone-3" ++ ], ++ "surrogates": "🏽" ++ }, ++ { ++ "names": [ ++ "skin-tone-4" ++ ], ++ "surrogates": "🏾" ++ }, ++ { ++ "names": [ ++ "skin-tone-5" ++ ], ++ "surrogates": "🏿" ++ }, ++ { ++ "names": [ ++ "skin-tone-6" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-7" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-8" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-9" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-10" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-11" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-12" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-13" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-14" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-15" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-16" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-17" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-18" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-19" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-20" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-21" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-22" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-23" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-24" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-25" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-26" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-27" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-28" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-29" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-30" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-31" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-32" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-33" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-34" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-35" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-36" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-37" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-38" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-39" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-40" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-41" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-42" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-43" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-44" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-45" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-46" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-47" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-48" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-49" ++ ], ++ "surrogates": "" ++ }, ++ { ++ "names": [ ++ "skin-tone-50" ++ ], ++ "surrogates": "" + } + ] +! } +diff -crB com.discord-963-base/smali/com/discord/models/domain/emoji/ModelEmojiUnicode.smali com.discord-963/smali/com/discord/models/domain/emoji/ModelEmojiUnicode.smali +*** com.discord-963-base/smali/com/discord/models/domain/emoji/ModelEmojiUnicode.smali 2019-10-01 22:09:20.613988829 +0300 +--- com.discord-963/smali/com/discord/models/domain/emoji/ModelEmojiUnicode.smali 2019-10-01 22:38:21.222186924 +0300 +*************** +*** 65,71 **** + .method static constructor <clinit>()V + .locals 3 + +! const/4 v0, 0x5 + + new-array v0, v0, [Ljava/lang/String; + +--- 65,71 ---- + .method static constructor <clinit>()V + .locals 3 + +! const/16 v0, 0x32 + + new-array v0, v0, [Ljava/lang/String; + +*************** +*** 99,104 **** +--- 99,374 ---- + + aput-object v2, v0, v1 + ++ const-string v2, "" ++ ++ const/16 v1, 0x5 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x6 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x7 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x8 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x9 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0xa ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0xb ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0xc ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0xd ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0xe ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0xf ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x10 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x11 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x12 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x13 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x14 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x15 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x16 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x17 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x18 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x19 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x1a ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x1b ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x1c ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x1d ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x1e ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x1f ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x20 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x21 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x22 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x23 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x24 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x25 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x26 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x27 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x28 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x29 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x2a ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x2b ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x2c ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x2d ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x2e ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x2f ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x30 ++ ++ aput-object v2, v0, v1 ++ ++ const-string v2, "" ++ ++ const/16 v1, 0x31 ++ ++ aput-object v2, v0, v1 ++ + .line 37 + sput-object v0, Lcom/discord/models/domain/emoji/ModelEmojiUnicode;->DIVERSITY_MODIFIERS:[Ljava/lang/String; + + diff --git a/patches/mutant/README.md b/patches/mutant/README.md index 3d624fb..2b5d938 100644 --- a/patches/mutant/README.md +++ b/patches/mutant/README.md @@ -59,6 +59,7 @@ Various scripts are provided to help building of custom patches easier. - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 #### Disclaimer diff --git a/patches/necessary/963.patch b/patches/necessary/963.patch new file mode 100644 index 0000000..65e3b63 --- /dev/null +++ b/patches/necessary/963.patch @@ -0,0 +1,14 @@ +diff -crB from/AndroidManifest.xml to/AndroidManifest.xml +*** from/AndroidManifest.xml 2019-10-01 22:09:11.817263673 +0300 +--- to/AndroidManifest.xml 2019-10-01 22:10:00.197585341 +0300 +*************** +*** 1,4 **** +! <?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="29" android:compileSdkVersionCodename="10" android:installLocation="auto" package="com.discord" platformBuildVersionCode="29" platformBuildVersionName="10"> + <uses-feature android:name="android.hardware.camera" android:required="false"/> + <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> + <uses-feature android:name="android.hardware.faketouch" android:required="false"/> +--- 1,4 ---- +! <?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="29" android:compileSdkVersionCodename="10" android:installLocation="auto" package="com.discord" platformBuildVersionCode="963" platformBuildVersionName="9.6.3"> + <uses-feature android:name="android.hardware.camera" android:required="false"/> + <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> + <uses-feature android:name="android.hardware.faketouch" android:required="false"/> diff --git a/patches/noblocked/963.patch b/patches/noblocked/963.patch new file mode 100644 index 0000000..985a85f --- /dev/null +++ b/patches/noblocked/963.patch @@ -0,0 +1,18 @@ +diff -crB -x dist -x build com.discord-835-base/res/layout/widget_chat_list_adapter_item_blocked.xml com.discord-835/res/layout/widget_chat_list_adapter_item_blocked.xml +*** com.discord-835-base/res/layout/widget_chat_list_adapter_item_blocked.xml 2019-01-25 10:57:34.359248256 +0300 +--- com.discord-835/res/layout/widget_chat_list_adapter_item_blocked.xml 2019-01-27 00:08:22.929085528 +0300 +*************** +*** 1,5 **** + <?xml version="1.0" encoding="utf-8"?> +! <RelativeLayout android:background="?selectableItemBackground" android:paddingLeft="@dimen/chat_cell_horizontal_spacing_padding" android:paddingTop="@dimen/chat_cell_vertical_spacing_padding" android:paddingRight="@dimen/chat_cell_horizontal_spacing_padding" android:paddingBottom="@dimen/chat_cell_vertical_spacing_padding" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/chat_cell_horizontal_spacing_margin" android:layout_marginRight="@dimen/chat_cell_horizontal_spacing_margin" + xmlns:android="http://schemas.android.com/apk/res/android"> +! <TextView android:textSize="11.0sp" android:textColor="?theme_chat_blocked_text" android:gravity="center" android:id="@id/chat_list_adapter_item_blocked" android:background="?theme_chat_blocked_bg" android:paddingTop="7.5dip" android:paddingBottom="7.5dip" android:layout_width="fill_parent" style="@style/UiKit.TextView" /> + </RelativeLayout> +\ No newline at end of file +--- 1,5 ---- + <?xml version="1.0" encoding="utf-8"?> +! <RelativeLayout android:background="?selectableItemBackground" android:paddingLeft="0px" android:paddingTop="0px" android:paddingRight="0px" android:paddingBottom="@dimen/chat_cell_vertical_spacing_padding" android:layout_width="0px" android:layout_height="0px" android:layout_marginLeft="0px" android:layout_marginRight="@dimen/chat_cell_horizontal_spacing_margin" + xmlns:android="http://schemas.android.com/apk/res/android"> +! <TextView android:textSize="0sp" android:textColor="?theme_chat_blocked_text" android:gravity="center" android:id="@id/chat_list_adapter_item_blocked" android:background="?theme_chat_blocked_bg" android:paddingTop="0dip" android:paddingBottom="0dip" android:layout_width="fill_parent" style="@style/UiKit.TextView" /> + </RelativeLayout> +\ No newline at end of file \ No newline at end of file diff --git a/patches/noblocked/README.md b/patches/noblocked/README.md index 593b552..c40d519 100644 --- a/patches/noblocked/README.md +++ b/patches/noblocked/README.md @@ -42,4 +42,5 @@ This patch completely hides the "# Blocked Message(s)" thing. - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/nonearby/963.patch b/patches/nonearby/963.patch new file mode 100644 index 0000000..725ce31 --- /dev/null +++ b/patches/nonearby/963.patch @@ -0,0 +1,100 @@ +diff -crB from/smali/com/discord/widgets/friends/NearbyManager.smali to/smali/com/discord/widgets/friends/NearbyManager.smali +*** from/smali/com/discord/widgets/friends/NearbyManager.smali 2019-10-01 22:09:21.200659396 +0300 +--- to/smali/com/discord/widgets/friends/NearbyManager.smali 2019-10-01 22:10:03.627608148 +0300 +*************** +*** 443,514 **** + + # virtual methods + .method public final activateNearby()V +! .locals 9 +! +! .line 58 +! iget-object v0, p0, Lcom/discord/widgets/friends/NearbyManager;->messagesClient:Lcom/google/android/gms/nearby/messages/MessagesClient; +! +! if-nez v0, :cond_0 +! +! return-void +! +! .line 59 +! :cond_0 +! iget-object v1, p0, Lcom/discord/widgets/friends/NearbyManager;->outboundMessage:Lcom/google/android/gms/nearby/messages/Message; +! +! if-nez v1, :cond_1 +! +! return-void +! +! .line 60 +! :cond_1 +! iget-object v2, p0, Lcom/discord/widgets/friends/NearbyManager;->messagePublishOptions:Lcom/google/android/gms/nearby/messages/PublishOptions; +! +! if-nez v2, :cond_2 +! +! return-void +! +! .line 61 +! :cond_2 +! iget-object v3, p0, Lcom/discord/widgets/friends/NearbyManager;->messageListener:Lcom/google/android/gms/nearby/messages/MessageListener; +! +! if-nez v3, :cond_3 +! +! return-void +! +! .line 62 +! :cond_3 +! iget-object v4, p0, Lcom/discord/widgets/friends/NearbyManager;->subscribeOptions:Lcom/google/android/gms/nearby/messages/SubscribeOptions; +! +! if-nez v4, :cond_4 +! +! return-void +! +! .line 64 +! :cond_4 +! iget-object v5, p0, Lcom/discord/widgets/friends/NearbyManager;->nearbyStateSubject:Lrx/subjects/BehaviorSubject; +! +! new-instance v6, Lcom/discord/widgets/friends/NearbyManager$NearbyState$Connected; +! +! new-instance v7, Ljava/util/HashSet; +! +! iget-object v8, p0, Lcom/discord/widgets/friends/NearbyManager;->nearbyUserIds:Ljava/util/HashSet; +! +! check-cast v8, Ljava/util/Collection; +! +! invoke-direct {v7, v8}, Ljava/util/HashSet;-><init>(Ljava/util/Collection;)V +! +! check-cast v7, Ljava/util/Set; +! +! invoke-direct {v6, v7}, Lcom/discord/widgets/friends/NearbyManager$NearbyState$Connected;-><init>(Ljava/util/Set;)V +! +! invoke-virtual {v5, v6}, Lrx/subjects/BehaviorSubject;->onNext(Ljava/lang/Object;)V +! +! .line 66 +! invoke-virtual {v0, v1, v2}, Lcom/google/android/gms/nearby/messages/MessagesClient;->a(Lcom/google/android/gms/nearby/messages/Message;Lcom/google/android/gms/nearby/messages/PublishOptions;)Lcom/google/android/gms/tasks/Task; +! +! .line 67 +! invoke-virtual {v0, v3, v4}, Lcom/google/android/gms/nearby/messages/MessagesClient;->a(Lcom/google/android/gms/nearby/messages/MessageListener;Lcom/google/android/gms/nearby/messages/SubscribeOptions;)Lcom/google/android/gms/tasks/Task; + + return-void + .end method +--- 443,449 ---- + + # virtual methods + .method public final activateNearby()V +! .locals 0 + + return-void + .end method +*************** +*** 608,619 **** + + .method public final initialize(J)V + .locals 0 +- +- .line 34 +- invoke-direct {p0, p1, p2}, Lcom/discord/widgets/friends/NearbyManager;->setupBroadcaster(J)V +- +- .line 35 +- invoke-direct {p0}, Lcom/discord/widgets/friends/NearbyManager;->setupListener()V +- + return-void + .end method +--- 543,547 ---- diff --git a/patches/nonearby/README.md b/patches/nonearby/README.md index e45616d..8de1f40 100644 --- a/patches/nonearby/README.md +++ b/patches/nonearby/README.md @@ -45,4 +45,5 @@ This patch nulls a bunch of nearby friends features for privacy. - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/noprofilestrip/963.patch b/patches/noprofilestrip/963.patch new file mode 100644 index 0000000..400dc30 --- /dev/null +++ b/patches/noprofilestrip/963.patch @@ -0,0 +1,55 @@ +diff -crB com.discord-910-base/smali/com/discord/widgets/user/WidgetUserProfileStrip.smali com.discord-910/smali/com/discord/widgets/user/WidgetUserProfileStrip.smali +*** com.discord-910-base/smali/com/discord/widgets/user/WidgetUserProfileStrip.smali 2019-06-25 14:39:18.242542912 +0300 +--- com.discord-910/smali/com/discord/widgets/user/WidgetUserProfileStrip.smali 2019-06-25 14:44:50.891235106 +0300 +*************** +*** 440,454 **** + + move-result-object v2 + +! invoke-virtual {p1}, Lcom/discord/widgets/user/WidgetUserProfileStrip$Model;->getUser()Lcom/discord/models/domain/ModelUser; +! +! move-result-object v4 +! +! invoke-virtual {v4}, Lcom/discord/models/domain/ModelUser;->getUsername()Ljava/lang/String; +! +! move-result-object v4 +! +! check-cast v4, Ljava/lang/CharSequence; + + invoke-virtual {v2, v4}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V + +--- 440,446 ---- + + move-result-object v2 + +! const-string v4, "" + + invoke-virtual {v2, v4}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V + +*************** +*** 457,471 **** + + move-result-object v2 + +! invoke-virtual {p1}, Lcom/discord/widgets/user/WidgetUserProfileStrip$Model;->getUser()Lcom/discord/models/domain/ModelUser; +! +! move-result-object p1 +! +! invoke-virtual {p1}, Lcom/discord/models/domain/ModelUser;->getDiscriminatorWithPadding()Ljava/lang/String; +! +! move-result-object p1 +! +! check-cast p1, Ljava/lang/CharSequence; + + invoke-virtual {v2, p1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V + +--- 449,455 ---- + + move-result-object v2 + +! const-string p1, "" + + invoke-virtual {v2, p1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V + +Only in com.discord-910/smali/com/discord/widgets/user: WidgetUserProfileStrip.smali.orig +Only in com.discord-910/smali/com/discord/widgets/user: WidgetUserProfileStrip.smali.rej diff --git a/patches/noprofilestrip/README.md b/patches/noprofilestrip/README.md index 677c7c4..e091465 100644 --- a/patches/noprofilestrip/README.md +++ b/patches/noprofilestrip/README.md @@ -40,4 +40,5 @@ This patch removes the "profile strip" from the left side menu, helping remove P - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/nospoiler/963.patch b/patches/nospoiler/963.patch new file mode 100644 index 0000000..3bde8f1 --- /dev/null +++ b/patches/nospoiler/963.patch @@ -0,0 +1,64 @@ +diff -crB from/smali/com/discord/models/domain/ModelMessageEmbed.smali to/smali/com/discord/models/domain/ModelMessageEmbed.smali +*** from/smali/com/discord/models/domain/ModelMessageEmbed.smali 2019-10-01 22:09:20.587321985 +0300 +--- to/smali/com/discord/models/domain/ModelMessageEmbed.smali 2019-10-01 22:10:10.570987647 +0300 +*************** +*** 1897,1926 **** + .end method + + .method public isSpoilerAttachment()Z +! .locals 2 +! +! .line 135 +! invoke-virtual {p0}, Lcom/discord/models/domain/ModelMessageEmbed;->isAttachment()Z +! +! move-result v0 +! +! if-eqz v0, :cond_0 +! +! iget-object v0, p0, Lcom/discord/models/domain/ModelMessageEmbed;->title:Ljava/lang/String; +! +! const-string v1, "SPOILER_" +! +! invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z +! +! move-result v0 +! +! if-eqz v0, :cond_0 +! +! const/4 v0, 0x1 +! +! return v0 +! +! :cond_0 + const/4 v0, 0x0 + + return v0 +--- 1897,1903 ---- + .end method + + .method public isSpoilerAttachment()Z +! .locals 0 + const/4 v0, 0x0 + + return v0 +diff -crB from/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali to/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali +*** from/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali 2019-10-01 22:09:20.983991289 +0300 +--- to/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali 2019-10-01 22:10:10.570987647 +0300 +*************** +*** 204,211 **** + .method public final isRevealed()Z + .locals 1 + +! .line 23 +! iget-boolean v0, p0, Lcom/discord/utilities/textprocessing/node/SpoilerNode;->isRevealed:Z + + return v0 + .end method +--- 204,210 ---- + .method public final isRevealed()Z + .locals 1 + +! const/4 v0, 0x1 + + return v0 + .end method diff --git a/patches/nospoiler/README.md b/patches/nospoiler/README.md index 9e057d7..c72f138 100644 --- a/patches/nospoiler/README.md +++ b/patches/nospoiler/README.md @@ -42,4 +42,5 @@ I personally won't be using it as I like to use them as CWs, but I do acknowledg - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/notrack/963.patch b/patches/notrack/963.patch new file mode 100644 index 0000000..09fbe30 --- /dev/null +++ b/patches/notrack/963.patch @@ -0,0 +1,3078 @@ +diff -crB com.discord-963-base/AndroidManifest.xml com.discord-963/AndroidManifest.xml +*** com.discord-963-base/AndroidManifest.xml 2019-10-01 22:10:01.214258768 +0300 +--- com.discord-963/AndroidManifest.xml 2019-10-01 22:57:45.859903528 +0300 +*************** +*** 112,119 **** + <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/> + </provider> + <meta-data android:name="firebase_crashlytics_collection_enabled" android:value="true"/> +! <meta-data android:name="io.fabric.ApiKey" android:value="eaccfe98b3572a0a8721a8c3b10f9909018f5ec6"/> +! <meta-data android:name="com.google.android.nearby.messages.API_KEY" android:value="AIzaSyD-4L6bgKMixqBRtrG2UktVXK6IexXlsog"/> + <activity android:name="com.yalantis.ucrop.UCropActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"/> + <provider android:authorities="com.discord.workmanager-init" android:directBootAware="false" android:exported="false" android:multiprocess="true" android:name="androidx.work.impl.WorkManagerInitializer"/> + <service android:directBootAware="false" android:enabled="@bool/enable_system_alarm_service_default" android:exported="false" android:name="androidx.work.impl.background.systemalarm.SystemAlarmService"/> +--- 112,119 ---- + <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/> + </provider> + <meta-data android:name="firebase_crashlytics_collection_enabled" android:value="true"/> +! <meta-data android:name="io.fabric.ApiKey" android:value="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"/> +! <meta-data android:name="com.google.android.nearby.messages.API_KEY" android:value="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"/> + <activity android:name="com.yalantis.ucrop.UCropActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"/> + <provider android:authorities="com.discord.workmanager-init" android:directBootAware="false" android:exported="false" android:multiprocess="true" android:name="androidx.work.impl.WorkManagerInitializer"/> + <service android:directBootAware="false" android:enabled="@bool/enable_system_alarm_service_default" android:exported="false" android:name="androidx.work.impl.background.systemalarm.SystemAlarmService"/> +diff -crB com.discord-963-base/res/values/strings.xml com.discord-963/res/values/strings.xml +*** com.discord-963-base/res/values/strings.xml 2019-10-01 22:09:16.950631138 +0300 +--- com.discord-963/res/values/strings.xml 2019-10-01 22:57:45.863236883 +0300 +*************** +*** 1008,1014 **** + <string name="cloud_sync_modal_error_header">Unable to sync cloud saves</string> + <string name="cloud_sync_modal_or">OR</string> + <string name="collapse_category">Collapse Category</string> +! <string name="com.crashlytics.android.build_id">840df02b-cf80-4d6b-a87d-a2661a9d07da</string> + <string name="coming_soon">Coming Soon</string> + <string name="coming_soon_notifications">Granular notification control only works on desktop apps at the moment. For now use the iOS notification settings.</string> + <string name="coming_soon_title">COMING SOON!</string> +--- 1008,1014 ---- + <string name="cloud_sync_modal_error_header">Unable to sync cloud saves</string> + <string name="cloud_sync_modal_or">OR</string> + <string name="collapse_category">Collapse Category</string> +! <string name="com.crashlytics.android.build_id">00000000-0000-0000-0000-000000000000</string> + <string name="coming_soon">Coming Soon</string> + <string name="coming_soon_notifications">Granular notification control only works on desktop apps at the moment. For now use the iOS notification settings.</string> + <string name="coming_soon_title">COMING SOON!</string> +Only in com.discord-963/res/values: strings.xml.orig +diff -crB com.discord-963-base/smali/com/crashlytics/android/answers/ab.smali com.discord-963/smali/com/crashlytics/android/answers/ab.smali +*** com.discord-963-base/smali/com/crashlytics/android/answers/ab.smali 2019-10-01 22:09:20.407320788 +0300 +--- com.discord-963/smali/com/crashlytics/android/answers/ab.smali 2019-10-01 22:57:52.643281841 +0300 +*************** +*** 38,205 **** + + # virtual methods + .method public final h(Ljava/util/List;)Z +! .locals 9 +! .annotation system Ldalvik/annotation/Signature; +! value = { +! "(", +! "Ljava/util/List<", +! "Ljava/io/File;", +! ">;)Z" +! } +! .end annotation + +! .line 34 +! invoke-virtual {p0}, Lcom/crashlytics/android/answers/ab;->CI()Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! const-string v1, "X-CRASHLYTICS-API-CLIENT-TYPE" +! +! const-string v2, "android" +! +! .line 38 +! invoke-virtual {v0, v1, v2}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! iget-object v1, p0, Lcom/crashlytics/android/answers/ab;->oR:Lio/fabric/sdk/android/i; +! +! .line 39 +! invoke-virtual {v1}, Lio/fabric/sdk/android/i;->getVersion()Ljava/lang/String; +! +! move-result-object v1 +! +! const-string v2, "X-CRASHLYTICS-API-CLIENT-VERSION" +! +! invoke-virtual {v0, v2, v1}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! iget-object v1, p0, Lcom/crashlytics/android/answers/ab;->pO:Ljava/lang/String; +! +! const-string v2, "X-CRASHLYTICS-API-KEY" +! +! .line 40 +! invoke-virtual {v0, v2, v1}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! .line 44 +! invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator; +! +! move-result-object v1 +! +! const/4 v2, 0x0 +! +! const/4 v3, 0x0 +! +! :goto_0 +! invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z +! +! move-result v4 +! +! const/4 v5, 0x1 +! +! if-eqz v4, :cond_0 +! +! invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; +! +! move-result-object v4 +! +! check-cast v4, Ljava/io/File; +! +! .line 45 +! invoke-static {v3}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; +! +! move-result-object v6 +! +! const-string v7, "session_analytics_file_" +! +! invoke-virtual {v7, v6}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object v6 +! +! invoke-virtual {v4}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v7 +! +! const-string v8, "application/vnd.crashlytics.android.events" +! +! invoke-virtual {v0, v6, v7, v8, v4}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! add-int/2addr v3, v5 +! +! goto :goto_0 +! +! .line 49 +! :cond_0 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v1 +! +! new-instance v3, Ljava/lang/StringBuilder; +! +! const-string v4, "Sending " +! +! invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! .line 50 +! invoke-interface {p1}, Ljava/util/List;->size()I +! +! move-result p1 +! +! invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; +! +! const-string p1, " analytics files to " +! +! invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! .line 1100 +! iget-object p1, p0, Lio/fabric/sdk/android/a/b/a;->url:Ljava/lang/String; +! +! .line 50 +! invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object p1 +! +! const-string v3, "Answers" +! +! .line 49 +! invoke-interface {v1, v3, p1}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 51 +! invoke-virtual {v0}, Lio/fabric/sdk/android/a/e/d;->Dv()I +! +! move-result p1 +! +! .line 52 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v0 +! +! invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; +! +! move-result-object v1 +! +! const-string v4, "Response code for analytics file send is " +! +! invoke-virtual {v4, v1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object v1 +! +! invoke-interface {v0, v3, v1}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 55 +! invoke-static {p1}, Lio/fabric/sdk/android/a/b/v;->di(I)I +! +! move-result p1 +! +! if-nez p1, :cond_1 +! +! return v5 +! +! :cond_1 +! return v2 + .end method +--- 38,44 ---- + + # virtual methods + .method public final h(Ljava/util/List;)Z +! .locals 0 + +! return-void + .end method +Only in com.discord-963/smali/com/crashlytics/android/answers: ab.smali.orig +Only in com.discord-963/smali/com/crashlytics/android/answers: ab.smali.rej +diff -crB com.discord-963-base/smali/com/crashlytics/android/core/ah.smali com.discord-963/smali/com/crashlytics/android/core/ah.smali +*** com.discord-963-base/smali/com/crashlytics/android/core/ah.smali 2019-10-01 22:09:20.440654343 +0300 +--- com.discord-963/smali/com/crashlytics/android/core/ah.smali 2019-10-01 22:57:59.346659623 +0300 +*************** +*** 29,465 **** + .end method + + .method private static a(Lio/fabric/sdk/android/a/e/d;Lcom/crashlytics/android/core/aq;)Lio/fabric/sdk/android/a/e/d; +! .locals 6 + +! .line 62 +! invoke-interface {p1}, Lcom/crashlytics/android/core/aq;->getIdentifier()Ljava/lang/String; +! +! move-result-object v0 +! +! const-string v1, "report_id" +! +! const/4 v2, 0x0 +! +! .line 3530 +! invoke-virtual {p0, v1, v2, v0}, Lio/fabric/sdk/android/a/e/d;->k(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! .line 63 +! invoke-interface {p1}, Lcom/crashlytics/android/core/aq;->cU()[Ljava/io/File; +! +! move-result-object p1 +! +! array-length v0, p1 +! +! const/4 v1, 0x0 +! +! :goto_0 +! if-ge v1, v0, :cond_a +! +! aget-object v2, p1, v1 +! +! .line 64 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v4, "minidump" +! +! invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v3 +! +! const-string v4, "application/octet-stream" +! +! if-eqz v3, :cond_0 +! +! .line 66 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "minidump_file" +! +! .line 65 +! invoke-virtual {p0, v5, v3, v4, v2}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! goto/16 :goto_1 +! +! .line 67 +! :cond_0 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "metadata" +! +! invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v3 +! +! if-eqz v3, :cond_1 +! +! .line 69 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "crash_meta_file" +! +! .line 68 +! invoke-virtual {p0, v5, v3, v4, v2}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! goto/16 :goto_1 +! +! .line 70 +! :cond_1 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "binaryImages" +! +! invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v3 +! +! if-eqz v3, :cond_2 +! +! .line 72 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "binary_images_file" +! +! .line 71 +! invoke-virtual {p0, v5, v3, v4, v2}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! goto/16 :goto_1 +! +! .line 73 +! :cond_2 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "session" +! +! invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v3 +! +! if-eqz v3, :cond_3 +! +! .line 75 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "session_meta_file" +! +! .line 74 +! invoke-virtual {p0, v5, v3, v4, v2}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! goto/16 :goto_1 +! +! .line 76 +! :cond_3 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "app" +! +! invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v3 +! +! if-eqz v3, :cond_4 +! +! .line 78 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "app_meta_file" +! +! .line 77 +! invoke-virtual {p0, v5, v3, v4, v2}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! goto :goto_1 +! +! .line 79 +! :cond_4 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "device" +! +! invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v3 +! +! if-eqz v3, :cond_5 +! +! .line 81 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "device_meta_file" +! +! .line 80 +! invoke-virtual {p0, v5, v3, v4, v2}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! goto :goto_1 +! +! .line 82 +! :cond_5 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "os" +! +! invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v3 +! +! if-eqz v3, :cond_6 +! +! .line 84 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "os_meta_file" +! +! .line 83 +! invoke-virtual {p0, v5, v3, v4, v2}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! goto :goto_1 +! +! .line 85 +! :cond_6 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "user" +! +! invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v3 +! +! if-eqz v3, :cond_7 +! +! .line 87 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "user_meta_file" +! +! .line 86 +! invoke-virtual {p0, v5, v3, v4, v2}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! goto :goto_1 +! +! .line 88 +! :cond_7 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "logs" +! +! invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v3 +! +! if-eqz v3, :cond_8 +! +! .line 90 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "logs_file" +! +! .line 89 +! invoke-virtual {p0, v5, v3, v4, v2}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! goto :goto_1 +! +! .line 91 +! :cond_8 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "keys" +! +! invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v3 +! +! if-eqz v3, :cond_9 +! +! .line 93 +! invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v5, "keys_file" +! +! .line 92 +! invoke-virtual {p0, v5, v3, v4, v2}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! :cond_9 +! :goto_1 +! add-int/lit8 v1, v1, 0x1 +! +! goto/16 :goto_0 +! +! :cond_a +! return-object p0 + .end method + + + # virtual methods + .method public final a(Lcom/crashlytics/android/core/u;)Z +! .locals 5 +! +! .line 36 +! invoke-virtual {p0}, Lcom/crashlytics/android/core/ah;->CI()Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! .line 39 +! iget-object v1, p1, Lcom/crashlytics/android/core/u;->pO:Ljava/lang/String; +! +! .line 3052 +! new-instance v2, Ljava/lang/StringBuilder; +! +! const-string v3, "Crashlytics Android SDK/" +! +! invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! iget-object v3, p0, Lcom/crashlytics/android/core/ah;->oR:Lio/fabric/sdk/android/i; +! +! .line 3054 +! invoke-virtual {v3}, Lio/fabric/sdk/android/i;->getVersion()Ljava/lang/String; +! +! move-result-object v3 +! +! invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v2 +! +! const-string v3, "User-Agent" +! +! .line 3053 +! invoke-virtual {v0, v3, v2}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v2 +! +! const-string v3, "X-CRASHLYTICS-API-CLIENT-TYPE" +! +! const-string v4, "android" +! +! .line 3055 +! invoke-virtual {v2, v3, v4}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v2 +! +! iget-object v3, p0, Lcom/crashlytics/android/core/ah;->oR:Lio/fabric/sdk/android/i; +! +! .line 3056 +! invoke-virtual {v3}, Lio/fabric/sdk/android/i;->getVersion()Ljava/lang/String; +! +! move-result-object v3 +! +! const-string v4, "X-CRASHLYTICS-API-CLIENT-VERSION" +! +! invoke-virtual {v2, v4, v3}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v2 +! +! const-string v3, "X-CRASHLYTICS-API-KEY" +! +! .line 3057 +! invoke-virtual {v2, v3, v1}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! .line 40 +! iget-object p1, p1, Lcom/crashlytics/android/core/u;->rZ:Lcom/crashlytics/android/core/aq; +! +! invoke-static {v0, p1}, Lcom/crashlytics/android/core/ah;->a(Lio/fabric/sdk/android/a/e/d;Lcom/crashlytics/android/core/aq;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object p1 +! +! .line 42 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v0 +! +! new-instance v1, Ljava/lang/StringBuilder; +! +! const-string v2, "Sending report to: " +! +! invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! .line 3100 +! iget-object v2, p0, Lio/fabric/sdk/android/a/b/a;->url:Ljava/lang/String; +! +! .line 42 +! invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v1 +! +! const-string v2, "CrashlyticsCore" +! +! invoke-interface {v0, v2, v1}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 44 +! invoke-virtual {p1}, Lio/fabric/sdk/android/a/e/d;->Dv()I +! +! move-result p1 +! +! .line 46 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v0 +! +! invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; +! +! move-result-object v1 +! +! const-string v3, "Result was: " +! +! invoke-virtual {v3, v1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object v1 +! +! invoke-interface {v0, v2, v1}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 48 +! invoke-static {p1}, Lio/fabric/sdk/android/a/b/v;->di(I)I +! +! move-result p1 +! +! if-nez p1, :cond_0 +! +! const/4 p1, 0x1 +! +! return p1 +! +! :cond_0 +! const/4 p1, 0x0 + +! return p1 + .end method +--- 29,43 ---- + .end method + + .method private static a(Lio/fabric/sdk/android/a/e/d;Lcom/crashlytics/android/core/aq;)Lio/fabric/sdk/android/a/e/d; +! .locals 0 + +! return-void + .end method + + + # virtual methods + .method public final a(Lcom/crashlytics/android/core/u;)Z +! .locals 0 + +! return-void + .end method +Only in com.discord-963/smali/com/crashlytics/android/core: ah.smali.orig +Only in com.discord-963/smali/com/crashlytics/android/core: ah.smali.rej +diff -crB com.discord-963-base/smali/com/crashlytics/android/core/x.smali com.discord-963/smali/com/crashlytics/android/core/x.smali +*** com.discord-963-base/smali/com/crashlytics/android/core/x.smali 2019-10-01 22:09:20.467321187 +0300 +--- com.discord-963/smali/com/crashlytics/android/core/x.smali 2019-10-01 22:58:05.906703122 +0300 +*************** +*** 31,371 **** + + # virtual methods + .method public final a(Lcom/crashlytics/android/core/u;)Z +! .locals 14 + +! .line 59 +! invoke-virtual {p0}, Lcom/crashlytics/android/core/x;->CI()Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! .line 3075 +! iget-object v1, p1, Lcom/crashlytics/android/core/u;->pO:Ljava/lang/String; +! +! const-string v2, "X-CRASHLYTICS-API-KEY" +! +! invoke-virtual {v0, v2, v1}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! const-string v1, "X-CRASHLYTICS-API-CLIENT-TYPE" +! +! const-string v2, "android" +! +! .line 3076 +! invoke-virtual {v0, v1, v2}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! iget-object v1, p0, Lcom/crashlytics/android/core/x;->oR:Lio/fabric/sdk/android/i; +! +! .line 3077 +! invoke-virtual {v1}, Lio/fabric/sdk/android/i;->getVersion()Ljava/lang/String; +! +! move-result-object v1 +! +! const-string v2, "X-CRASHLYTICS-API-CLIENT-VERSION" +! +! invoke-virtual {v0, v2, v1}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! .line 3080 +! iget-object v1, p1, Lcom/crashlytics/android/core/u;->rZ:Lcom/crashlytics/android/core/aq; +! +! invoke-interface {v1}, Lcom/crashlytics/android/core/aq;->cV()Ljava/util/Map; +! +! move-result-object v1 +! +! .line 3082 +! invoke-interface {v1}, Ljava/util/Map;->entrySet()Ljava/util/Set; +! +! move-result-object v1 +! +! invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; +! +! move-result-object v1 +! +! :goto_0 +! invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z +! +! move-result v2 +! +! if-eqz v2, :cond_0 +! +! invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; +! +! move-result-object v2 +! +! check-cast v2, Ljava/util/Map$Entry; +! +! .line 3868 +! invoke-interface {v2}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; +! +! move-result-object v3 +! +! check-cast v3, Ljava/lang/String; +! +! invoke-interface {v2}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; +! +! move-result-object v2 +! +! check-cast v2, Ljava/lang/String; +! +! invoke-virtual {v0, v3, v2}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! goto :goto_0 +! +! .line 61 +! :cond_0 +! iget-object p1, p1, Lcom/crashlytics/android/core/u;->rZ:Lcom/crashlytics/android/core/aq; +! +! .line 4089 +! invoke-interface {p1}, Lcom/crashlytics/android/core/aq;->getIdentifier()Ljava/lang/String; +! +! move-result-object v1 +! +! const/4 v2, 0x0 +! +! const-string v3, "report[identifier]" +! +! .line 4530 +! invoke-virtual {v0, v3, v2, v1}, Lio/fabric/sdk/android/a/e/d;->k(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! .line 4091 +! invoke-interface {p1}, Lcom/crashlytics/android/core/aq;->cU()[Ljava/io/File; +! +! move-result-object v1 +! +! array-length v1, v1 +! +! const-string v2, "application/octet-stream" +! +! const-string v3, " to report " +! +! const/4 v4, 0x0 +! +! const/4 v5, 0x1 +! +! const-string v6, "CrashlyticsCore" +! +! if-ne v1, v5, :cond_1 +! +! .line 4092 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v1 +! +! new-instance v7, Ljava/lang/StringBuilder; +! +! const-string v8, "Adding single file " +! +! invoke-direct {v7, v8}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! invoke-interface {p1}, Lcom/crashlytics/android/core/aq;->getFileName()Ljava/lang/String; +! +! move-result-object v8 +! +! invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v7, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! .line 4093 +! invoke-interface {p1}, Lcom/crashlytics/android/core/aq;->getIdentifier()Ljava/lang/String; +! +! move-result-object v3 +! +! invoke-virtual {v7, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v3 +! +! .line 4092 +! invoke-interface {v1, v6, v3}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 4094 +! invoke-interface {p1}, Lcom/crashlytics/android/core/aq;->getFileName()Ljava/lang/String; +! +! move-result-object v1 +! +! .line 4095 +! invoke-interface {p1}, Lcom/crashlytics/android/core/aq;->getFile()Ljava/io/File; +! +! move-result-object p1 +! +! const-string v3, "report[file]" +! +! .line 4094 +! invoke-virtual {v0, v3, v1, v2, p1}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! goto :goto_2 +! +! .line 4099 +! :cond_1 +! invoke-interface {p1}, Lcom/crashlytics/android/core/aq;->cU()[Ljava/io/File; +! +! move-result-object v1 +! +! array-length v7, v1 +! +! const/4 v8, 0x0 +! +! const/4 v9, 0x0 +! +! :goto_1 +! if-ge v8, v7, :cond_2 +! +! aget-object v10, v1, v8 +! +! .line 4100 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v11 +! +! new-instance v12, Ljava/lang/StringBuilder; +! +! const-string v13, "Adding file " +! +! invoke-direct {v12, v13}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! invoke-virtual {v10}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v13 +! +! invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v12, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! .line 4101 +! invoke-interface {p1}, Lcom/crashlytics/android/core/aq;->getIdentifier()Ljava/lang/String; +! +! move-result-object v13 +! +! invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v12 +! +! .line 4100 +! invoke-interface {v11, v6, v12}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 4102 +! new-instance v11, Ljava/lang/StringBuilder; +! +! const-string v12, "report[file" +! +! invoke-direct {v11, v12}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! invoke-virtual {v11, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; +! +! const-string v12, "]" +! +! invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v11 +! +! invoke-virtual {v10}, Ljava/io/File;->getName()Ljava/lang/String; +! +! move-result-object v12 +! +! invoke-virtual {v0, v11, v12, v2, v10}, Lio/fabric/sdk/android/a/e/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lio/fabric/sdk/android/a/e/d; +! +! add-int/2addr v9, v5 +! +! add-int/lit8 v8, v8, 0x1 +! +! goto :goto_1 +! +! .line 63 +! :cond_2 +! :goto_2 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object p1 +! +! new-instance v1, Ljava/lang/StringBuilder; +! +! const-string v2, "Sending report to: " +! +! invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! .line 5100 +! iget-object v2, p0, Lio/fabric/sdk/android/a/b/a;->url:Ljava/lang/String; +! +! .line 63 +! invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v1 +! +! invoke-interface {p1, v6, v1}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 65 +! invoke-virtual {v0}, Lio/fabric/sdk/android/a/e/d;->Dv()I +! +! move-result p1 +! +! .line 67 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v1 +! +! new-instance v2, Ljava/lang/StringBuilder; +! +! const-string v3, "Create report request ID: " +! +! invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! const-string v3, "X-REQUEST-ID" +! +! .line 68 +! invoke-virtual {v0, v3}, Lio/fabric/sdk/android/a/e/d;->dI(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object v0 +! +! invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v0 +! +! .line 67 +! invoke-interface {v1, v6, v0}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 69 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v0 +! +! invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; +! +! move-result-object v1 +! +! const-string v2, "Result was: " +! +! invoke-virtual {v2, v1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object v1 +! +! invoke-interface {v0, v6, v1}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 71 +! invoke-static {p1}, Lio/fabric/sdk/android/a/b/v;->di(I)I +! +! move-result p1 +! +! if-nez p1, :cond_3 +! +! return v5 +! +! :cond_3 +! return v4 + .end method +--- 31,37 ---- + + # virtual methods + .method public final a(Lcom/crashlytics/android/core/u;)Z +! .locals 0 + +! return-void + .end method +Only in com.discord-963/smali/com/crashlytics/android/core: x.smali.orig +Only in com.discord-963/smali/com/crashlytics/android/core: x.smali.rej +diff -crB com.discord-963-base/smali/com/discord/utilities/analytics/AdjustConfig$AdjustLifecycleListener.smali com.discord-963/smali/com/discord/utilities/analytics/AdjustConfig$AdjustLifecycleListener.smali +*** com.discord-963-base/smali/com/discord/utilities/analytics/AdjustConfig$AdjustLifecycleListener.smali 2019-10-01 22:09:20.857323780 +0300 +--- com.discord-963/smali/com/discord/utilities/analytics/AdjustConfig$AdjustLifecycleListener.smali 2019-10-01 22:57:45.863236883 +0300 +*************** +*** 42,95 **** + .end method + + .method public final onActivityPaused(Landroid/app/Activity;)V +! .locals 1 + +- .line 1050 +- invoke-static {}, Lcom/adjust/sdk/e;->W()Lcom/adjust/sdk/k; +- +- move-result-object p1 +- +- const/4 v0, 0x0 +- +- .line 1396 +- invoke-virtual {p1, v0}, Lcom/adjust/sdk/k;->e(Ljava/lang/String;)Z +- +- move-result v0 +- +- if-eqz v0, :cond_0 +- +- .line 1094 +- iget-object p1, p1, Lcom/adjust/sdk/k;->dk:Lcom/adjust/sdk/v; +- +- invoke-interface {p1}, Lcom/adjust/sdk/v;->onPause()V +- +- :cond_0 + return-void + .end method + + .method public final onActivityResumed(Landroid/app/Activity;)V +! .locals 1 +! +! .line 2045 +! invoke-static {}, Lcom/adjust/sdk/e;->W()Lcom/adjust/sdk/k; +! +! move-result-object p1 +! +! const/4 v0, 0x0 +! +! .line 2396 +! invoke-virtual {p1, v0}, Lcom/adjust/sdk/k;->e(Ljava/lang/String;)Z +! +! move-result v0 +! +! if-eqz v0, :cond_0 +! +! .line 2083 +! iget-object p1, p1, Lcom/adjust/sdk/k;->dk:Lcom/adjust/sdk/v; +! +! invoke-interface {p1}, Lcom/adjust/sdk/v;->onResume()V + +- :cond_0 + return-void + .end method + +--- 42,55 ---- + .end method + + .method public final onActivityPaused(Landroid/app/Activity;)V +! .locals 0 + + return-void + .end method + + .method public final onActivityResumed(Landroid/app/Activity;)V +! .locals 0 + + return-void + .end method + +diff -crB com.discord-963-base/smali/com/discord/utilities/analytics/AdjustConfig.smali com.discord-963/smali/com/discord/utilities/analytics/AdjustConfig.smali +*** com.discord-963-base/smali/com/discord/utilities/analytics/AdjustConfig.smali 2019-10-01 22:09:20.857323780 +0300 +--- com.discord-963/smali/com/discord/utilities/analytics/AdjustConfig.smali 2019-10-01 22:57:45.863236883 +0300 +*************** +*** 12,18 **** + + + # static fields +! .field private static final ADJUST_APP_TOKEN:Ljava/lang/String; = "d8fcx8xdmrr4" + + .field private static final ADJUST_ENVIRONMENT:Ljava/lang/String; + +--- 12,18 ---- + + + # static fields +! .field private static final ADJUST_APP_TOKEN:Ljava/lang/String; = "aaaaaaaaaaaa" + + .field private static final ADJUST_ENVIRONMENT:Ljava/lang/String; + +*************** +*** 50,168 **** + + # virtual methods + .method public final init(Landroid/app/Application;Z)V +! .locals 3 +! +! const-string v0, "application" +! +! invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V +! +! if-eqz p2, :cond_0 +! +! return-void +! +! .line 26 +! :cond_0 +! new-instance p2, Lcom/adjust/sdk/f; +! +! move-object v0, p1 +! +! check-cast v0, Landroid/content/Context; +! +! sget-object v1, Lcom/discord/utilities/analytics/AdjustConfig;->ADJUST_ENVIRONMENT:Ljava/lang/String; +! +! const-string v2, "d8fcx8xdmrr4" +! +! invoke-direct {p2, v0, v2, v1}, Lcom/adjust/sdk/f;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V +! +! .line 27 +! sget-object v1, Lcom/discord/utilities/analytics/AdjustConfig$init$1;->INSTANCE:Lcom/discord/utilities/analytics/AdjustConfig$init$1; +! +! check-cast v1, Lcom/adjust/sdk/af; +! +! .line 1098 +! iput-object v1, p2, Lcom/adjust/sdk/f;->cN:Lcom/adjust/sdk/af; +! +! .line 2035 +! invoke-static {}, Lcom/adjust/sdk/e;->W()Lcom/adjust/sdk/k; +! +! move-result-object v1 +! +! .line 2047 +! iget-object v2, v1, Lcom/adjust/sdk/k;->dk:Lcom/adjust/sdk/v; +! +! if-eqz v2, :cond_1 +! +! .line 2048 +! invoke-static {}, Lcom/adjust/sdk/j;->X()Lcom/adjust/sdk/x; +! +! move-result-object p2 +! +! const/4 v1, 0x0 +! +! new-array v1, v1, [Ljava/lang/Object; +! +! const-string v2, "Adjust already initialized" +! +! invoke-interface {p2, v2, v1}, Lcom/adjust/sdk/x;->f(Ljava/lang/String;[Ljava/lang/Object;)V +! +! goto :goto_0 +! +! .line 2052 +! :cond_1 +! iget-object v2, v1, Lcom/adjust/sdk/k;->cX:Ljava/util/List; +! +! iput-object v2, p2, Lcom/adjust/sdk/f;->cX:Ljava/util/List; +! +! .line 2053 +! iget-object v2, v1, Lcom/adjust/sdk/k;->pushToken:Ljava/lang/String; +! +! iput-object v2, p2, Lcom/adjust/sdk/f;->pushToken:Ljava/lang/String; +! +! .line 2054 +! iget-object v2, v1, Lcom/adjust/sdk/k;->cZ:Ljava/lang/Boolean; +! +! iput-object v2, p2, Lcom/adjust/sdk/f;->cZ:Ljava/lang/Boolean; +! +! .line 2055 +! iget-boolean v2, v1, Lcom/adjust/sdk/k;->da:Z +! +! iput-boolean v2, p2, Lcom/adjust/sdk/f;->da:Z +! +! .line 2057 +! invoke-static {p2}, Lcom/adjust/sdk/j;->b(Lcom/adjust/sdk/f;)Lcom/adjust/sdk/v; +! +! move-result-object v2 +! +! iput-object v2, v1, Lcom/adjust/sdk/k;->dk:Lcom/adjust/sdk/v; +! +! .line 2059 +! iget-object p2, p2, Lcom/adjust/sdk/f;->context:Landroid/content/Context; +! +! .line 2472 +! new-instance v2, Lcom/adjust/sdk/k$2; +! +! invoke-direct {v2, v1, p2}, Lcom/adjust/sdk/k$2;-><init>(Lcom/adjust/sdk/k;Landroid/content/Context;)V +! +! .line 2480 +! invoke-static {v2}, Lcom/adjust/sdk/az;->a(Ljava/lang/Runnable;)V +! +! .line 35 +! :goto_0 +! sget-object p2, Lcom/discord/utilities/analytics/AdjustConfig$init$2;->INSTANCE:Lcom/discord/utilities/analytics/AdjustConfig$init$2; +! +! check-cast p2, Lcom/adjust/sdk/ah; +! +! .line 3125 +! invoke-static {v0, p2}, Lcom/adjust/sdk/az;->a(Landroid/content/Context;Lcom/adjust/sdk/ah;)V +! +! .line 41 +! new-instance p2, Lcom/discord/utilities/analytics/AdjustConfig$AdjustLifecycleListener; +! +! invoke-direct {p2}, Lcom/discord/utilities/analytics/AdjustConfig$AdjustLifecycleListener;-><init>()V +! +! check-cast p2, Landroid/app/Application$ActivityLifecycleCallbacks; +! +! invoke-virtual {p1, p2}, Landroid/app/Application;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V + + return-void + .end method +--- 50,56 ---- + + # virtual methods + .method public final init(Landroid/app/Application;Z)V +! .locals 0 + + return-void + .end method +diff -crB com.discord-963-base/smali/com/discord/utilities/analytics/AnalyticsTracker$AdjustEventTracker.smali com.discord-963/smali/com/discord/utilities/analytics/AnalyticsTracker$AdjustEventTracker.smali +*** com.discord-963-base/smali/com/discord/utilities/analytics/AnalyticsTracker$AdjustEventTracker.smali 2019-10-01 22:09:20.860657135 +0300 +--- com.discord-963/smali/com/discord/utilities/analytics/AnalyticsTracker$AdjustEventTracker.smali 2019-10-01 22:58:15.256765121 +0300 +*************** +*** 15,23 **** + + + # static fields +! .field private static final EVENT_TOKEN_LOGIN:Ljava/lang/String; = "ctt5aq" + +! .field private static final EVENT_TOKEN_REGISTER:Ljava/lang/String; = "ebn8ke" + + .field public static final INSTANCE:Lcom/discord/utilities/analytics/AnalyticsTracker$AdjustEventTracker; + +--- 15,23 ---- + + + # static fields +! .field private static final EVENT_TOKEN_LOGIN:Ljava/lang/String; = "aaaaaa" + +! .field private static final EVENT_TOKEN_REGISTER:Ljava/lang/String; = "aaaaaa" + + .field public static final INSTANCE:Lcom/discord/utilities/analytics/AnalyticsTracker$AdjustEventTracker; + +*************** +*** 48,78 **** + + # virtual methods + .method public final trackLogin()V +! .locals 2 +! +! .line 1009 +! new-instance v0, Lcom/adjust/sdk/g; +! +! const-string v1, "ctt5aq" +! +! invoke-direct {v0, v1}, Lcom/adjust/sdk/g;-><init>(Ljava/lang/String;)V +! +! invoke-static {v0}, Lcom/adjust/sdk/e;->a(Lcom/adjust/sdk/g;)V + + return-void + .end method + + .method public final trackRegister()V +! .locals 2 +! +! .line 1007 +! new-instance v0, Lcom/adjust/sdk/g; +! +! const-string v1, "ebn8ke" +! +! invoke-direct {v0, v1}, Lcom/adjust/sdk/g;-><init>(Ljava/lang/String;)V +! +! invoke-static {v0}, Lcom/adjust/sdk/e;->a(Lcom/adjust/sdk/g;)V + + return-void + .end method +--- 48,60 ---- + + # virtual methods + .method public final trackLogin()V +! .locals 0 + + return-void + .end method + + .method public final trackRegister()V +! .locals 0 + + return-void + .end method +Only in com.discord-963/smali/com/discord/utilities/analytics: AnalyticsTracker$AdjustEventTracker.smali.orig +Only in com.discord-963/smali/com/discord/utilities/analytics: AnalyticsTracker$AdjustEventTracker.smali.rej +diff -crB com.discord-963-base/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali com.discord-963/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali +*** com.discord-963-base/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali 2019-10-01 22:09:20.860657135 +0300 +--- com.discord-963/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali 2019-10-01 23:00:19.560922352 +0300 +*************** +*** 173,179 **** + .method private final setBaselineProperties()V + .locals 3 + +! const/16 v0, 0x8 + + new-array v0, v0, [Lkotlin/Pair; + +--- 173,179 ---- + .method private final setBaselineProperties()V + .locals 3 + +! const/16 v0, 0x4 + + new-array v0, v0, [Lkotlin/Pair; + +*************** +*** 233,312 **** + + aput-object v1, v0, v2 + +- .line 68 +- new-instance v1, Ljava/lang/StringBuilder; +- +- invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V +- +- sget-object v2, Landroid/os/Build;->MODEL:Ljava/lang/String; +- +- invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +- +- const-string v2, ", " +- +- invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +- +- sget-object v2, Landroid/os/Build;->PRODUCT:Ljava/lang/String; +- +- invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +- +- invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +- +- move-result-object v1 +- +- const-string v2, "device" +- +- invoke-static {v2, v1}, Lkotlin/q;->m(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair; +- +- move-result-object v1 +- +- const/4 v2, 0x4 +- +- aput-object v1, v0, v2 +- +- const-string v1, "os" +- +- const-string v2, "Android" +- +- .line 69 +- invoke-static {v1, v2}, Lkotlin/q;->m(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair; +- +- move-result-object v1 +- +- const/4 v2, 0x5 +- +- aput-object v1, v0, v2 +- +- .line 70 +- sget v1, Landroid/os/Build$VERSION;->SDK_INT:I +- +- invoke-static {v1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; +- +- move-result-object v1 +- +- const-string v2, "os_sdk_version" +- +- invoke-static {v2, v1}, Lkotlin/q;->m(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair; +- +- move-result-object v1 +- +- const/4 v2, 0x6 +- +- aput-object v1, v0, v2 +- +- .line 71 +- sget-object v1, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String; +- +- const-string v2, "os_version" +- +- invoke-static {v2, v1}, Lkotlin/q;->m(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair; +- +- move-result-object v1 +- +- const/4 v2, 0x7 +- +- aput-object v1, v0, v2 +- + .line 63 + invoke-static {v0}, Lkotlin/a/ad;->a([Lkotlin/Pair;)Ljava/util/Map; + +--- 233,238 ---- +*************** +*** 436,858 **** + .end method + + .method public final setAdvertiserId(Ljava/lang/String;)V +! .locals 1 +! +! const-string v0, "advertiserId" +! +! invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V +! +! const-string v0, "device_advertiser_id" +! +! .line 29 +! invoke-static {v0, p1}, Lkotlin/q;->m(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair; +! +! move-result-object p1 +! +! invoke-static {p1}, Lkotlin/a/ad;->a(Lkotlin/Pair;)Ljava/util/Map; +! +! move-result-object p1 +! +! invoke-direct {p0, p1}, Lcom/discord/utilities/analytics/AnalyticSuperProperties;->updateSuperProperties(Ljava/util/Map;)V + + return-void + .end method + + .method public final setCampaignProperties(Landroid/content/Intent;)V +! .locals 7 +! +! const-string v0, "intent" +! +! invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V +! +! .line 33 +! invoke-virtual {p1}, Landroid/content/Intent;->getExtras()Landroid/os/Bundle; +! +! move-result-object p1 +! +! if-eqz p1, :cond_9 +! +! const-string v0, "referrer" +! +! invoke-virtual {p1, v0}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object p1 +! +! if-nez p1, :cond_0 +! +! goto/16 :goto_8 +! +! :cond_0 +! const-string v1, "intent.extras?.getString\u2026PERTY_REFERRER) ?: return" +! +! invoke-static {p1, v1}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V +! +! const/4 v1, 0x1 +! +! new-array v2, v1, [Lkotlin/Pair; +! +! .line 34 +! invoke-static {v0, p1}, Lkotlin/q;->m(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair; +! +! move-result-object v0 +! +! const/4 v3, 0x0 +! +! aput-object v0, v2, v3 +! +! invoke-static {v2}, Lkotlin/a/ad;->b([Lkotlin/Pair;)Ljava/util/Map; +! +! move-result-object v0 +! +! .line 36 +! check-cast p1, Ljava/lang/CharSequence; +! +! new-array v2, v1, [Ljava/lang/String; +! +! const-string v4, "&" +! +! aput-object v4, v2, v3 +! +! .line 2199 +! invoke-static {p1, v2, v3, v3}, Lkotlin/text/l;->b(Ljava/lang/CharSequence;[Ljava/lang/String;ZI)Ljava/util/List; +! +! move-result-object p1 +! +! .line 37 +! check-cast p1, Ljava/lang/Iterable; +! +! .line 101 +! new-instance v2, Ljava/util/ArrayList; +! +! const/16 v4, 0xa +! +! invoke-static {p1, v4}, Lkotlin/a/m;->a(Ljava/lang/Iterable;I)I +! +! move-result v4 +! +! invoke-direct {v2, v4}, Ljava/util/ArrayList;-><init>(I)V +! +! check-cast v2, Ljava/util/Collection; +! +! .line 102 +! invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; +! +! move-result-object p1 +! +! :goto_0 +! invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z +! +! move-result v4 +! +! if-eqz v4, :cond_1 +! +! invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; +! +! move-result-object v4 +! +! .line 103 +! check-cast v4, Ljava/lang/String; +! +! .line 38 +! check-cast v4, Ljava/lang/CharSequence; +! +! new-array v5, v1, [Ljava/lang/String; +! +! const-string v6, "=" +! +! aput-object v6, v5, v3 +! +! .line 3199 +! invoke-static {v4, v5, v3, v3}, Lkotlin/text/l;->b(Ljava/lang/CharSequence;[Ljava/lang/String;ZI)Ljava/util/List; +! +! move-result-object v4 +! +! .line 38 +! invoke-interface {v2, v4}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z +! +! goto :goto_0 +! +! .line 104 +! :cond_1 +! check-cast v2, Ljava/util/List; +! +! check-cast v2, Ljava/lang/Iterable; + +- .line 105 +- new-instance p1, Ljava/util/ArrayList; +- +- invoke-direct {p1}, Ljava/util/ArrayList;-><init>()V +- +- check-cast p1, Ljava/util/Collection; +- +- .line 106 +- invoke-interface {v2}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; +- +- move-result-object v2 +- +- :cond_2 +- :goto_1 +- invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z +- +- move-result v4 +- +- if-eqz v4, :cond_4 +- +- invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; +- +- move-result-object v4 +- +- move-object v5, v4 +- +- check-cast v5, Ljava/util/List; +- +- .line 39 +- invoke-interface {v5}, Ljava/util/List;->size()I +- +- move-result v5 +- +- const/4 v6, 0x2 +- +- if-ne v5, v6, :cond_3 +- +- const/4 v5, 0x1 +- +- goto :goto_2 +- +- :cond_3 +- const/4 v5, 0x0 +- +- :goto_2 +- if-eqz v5, :cond_2 +- +- invoke-interface {p1, v4}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z +- +- goto :goto_1 +- +- .line 107 +- :cond_4 +- check-cast p1, Ljava/util/List; +- +- check-cast p1, Ljava/lang/Iterable; +- +- .line 108 +- new-instance v2, Ljava/util/ArrayList; +- +- invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V +- +- check-cast v2, Ljava/util/Collection; +- +- .line 109 +- invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; +- +- move-result-object p1 +- +- :cond_5 +- :goto_3 +- invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z +- +- move-result v4 +- +- if-eqz v4, :cond_7 +- +- invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; +- +- move-result-object v4 +- +- move-object v5, v4 +- +- check-cast v5, Ljava/util/List; +- +- .line 41 +- invoke-interface {v5, v3}, Ljava/util/List;->get(I)Ljava/lang/Object; +- +- move-result-object v5 +- +- check-cast v5, Ljava/lang/String; +- +- .line 42 +- invoke-virtual {v5}, Ljava/lang/String;->hashCode()I +- +- move-result v6 +- +- sparse-switch v6, :sswitch_data_0 +- +- goto :goto_5 +- +- :sswitch_0 +- const-string v6, "utm_source" +- +- invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +- +- move-result v5 +- +- if-eqz v5, :cond_6 +- +- goto :goto_4 +- +- :sswitch_1 +- const-string v6, "location" +- +- invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +- +- move-result v5 +- +- if-eqz v5, :cond_6 +- +- goto :goto_4 +- +- :sswitch_2 +- const-string v6, "utm_medium" +- +- invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +- +- move-result v5 +- +- if-eqz v5, :cond_6 +- +- goto :goto_4 +- +- :sswitch_3 +- const-string v6, "search_engine" +- +- invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +- +- move-result v5 +- +- if-eqz v5, :cond_6 +- +- goto :goto_4 +- +- :sswitch_4 +- const-string v6, "mp_keyword" +- +- invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +- +- move-result v5 +- +- if-eqz v5, :cond_6 +- +- goto :goto_4 +- +- :sswitch_5 +- const-string v6, "utm_term" +- +- invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +- +- move-result v5 +- +- if-eqz v5, :cond_6 +- +- goto :goto_4 +- +- :sswitch_6 +- const-string v6, "utm_campaign" +- +- invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +- +- move-result v5 +- +- if-eqz v5, :cond_6 +- +- goto :goto_4 +- +- :sswitch_7 +- const-string v6, "referring_domain" +- +- invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +- +- move-result v5 +- +- if-eqz v5, :cond_6 +- +- goto :goto_4 +- +- :sswitch_8 +- const-string v6, "utm_content" +- +- invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +- +- move-result v5 +- +- if-eqz v5, :cond_6 +- +- :goto_4 +- const/4 v5, 0x1 +- +- goto :goto_6 +- +- :cond_6 +- :goto_5 +- const/4 v5, 0x0 +- +- :goto_6 +- if-eqz v5, :cond_5 +- +- .line 55 +- invoke-interface {v2, v4}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z +- +- goto :goto_3 +- +- .line 110 +- :cond_7 +- check-cast v2, Ljava/util/List; +- +- check-cast v2, Ljava/lang/Iterable; +- +- .line 111 +- invoke-interface {v2}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; +- +- move-result-object p1 +- +- :goto_7 +- invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z +- +- move-result v2 +- +- if-eqz v2, :cond_8 +- +- invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; +- +- move-result-object v2 +- +- .line 112 +- check-cast v2, Ljava/util/List; +- +- .line 57 +- invoke-interface {v2, v3}, Ljava/util/List;->get(I)Ljava/lang/Object; +- +- move-result-object v4 +- +- check-cast v4, Ljava/lang/String; +- +- invoke-interface {v2, v1}, Ljava/util/List;->get(I)Ljava/lang/Object; +- +- move-result-object v2 +- +- check-cast v2, Ljava/lang/String; +- +- invoke-interface {v0, v4, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +- +- goto :goto_7 +- +- .line 59 +- :cond_8 +- invoke-direct {p0, v0}, Lcom/discord/utilities/analytics/AnalyticSuperProperties;->updateSuperProperties(Ljava/util/Map;)V +- +- :cond_9 +- :goto_8 + return-void +- +- :sswitch_data_0 +- .sparse-switch +- -0x5bc8ed18 -> :sswitch_8 +- -0x40f32acd -> :sswitch_7 +- -0x3db0f7f -> :sswitch_6 +- 0x31ad945d -> :sswitch_5 +- 0x3d3a7f4d -> :sswitch_4 +- 0x3f4764b9 -> :sswitch_3 +- 0x70a1a726 -> :sswitch_2 +- 0x714f9fb5 -> :sswitch_1 +- 0x7b737fcc -> :sswitch_0 +- .end sparse-switch + .end method +--- 362,374 ---- + .end method + + .method public final setAdvertiserId(Ljava/lang/String;)V +! .locals 0 + + return-void + .end method + + .method public final setCampaignProperties(Landroid/content/Intent;)V +! .locals 0 + + return-void + .end method +Only in com.discord-963/smali/com/discord/utilities/analytics: AnalyticSuperProperties.smali.orig +Only in com.discord-963/smali/com/discord/utilities/analytics: AnalyticSuperProperties.smali.rej +diff -crB com.discord-963-base/smali/com/discord/utilities/analytics/AnalyticsUtils$Tracker.smali com.discord-963/smali/com/discord/utilities/analytics/AnalyticsUtils$Tracker.smali +*** com.discord-963-base/smali/com/discord/utilities/analytics/AnalyticsUtils$Tracker.smali 2019-10-01 22:09:20.863990491 +0300 +--- com.discord-963/smali/com/discord/utilities/analytics/AnalyticsUtils$Tracker.smali 2019-10-01 22:59:59.060786487 +0300 +*************** +*** 71,79 **** + .method public static final synthetic access$drainEventsQueue(Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;)V + .locals 0 + +- .line 65 +- invoke-direct {p0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->drainEventsQueue()V +- + return-void + .end method + +--- 71,76 ---- +*************** +*** 87,184 **** + .end method + + .method private final declared-synchronized drainEventsQueue()V +! .locals 5 +! +! monitor-enter p0 +! +! .line 196 +! :try_start_0 +! invoke-direct {p0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->getCanDrain()Z +! +! move-result v0 +! :try_end_0 +! .catchall {:try_start_0 .. :try_end_0} :catchall_0 +! +! if-nez v0, :cond_0 +! +! .line 197 +! monitor-exit p0 +! +! return-void +! +! .line 200 +! :cond_0 +! :try_start_1 +! new-instance v0, Ljava/util/ArrayList; +! +! iget-object v1, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->eventsQueue:Ljava/util/concurrent/ConcurrentLinkedQueue; +! +! check-cast v1, Ljava/util/Collection; +! +! invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V +! +! .line 202 +! iget-object v1, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->eventsQueue:Ljava/util/concurrent/ConcurrentLinkedQueue; +! +! invoke-virtual {v1}, Ljava/util/concurrent/ConcurrentLinkedQueue;->clear()V +! +! .line 204 +! sget-object v1, Lcom/discord/utilities/rest/RestAPI;->Companion:Lcom/discord/utilities/rest/RestAPI$Companion; +! +! invoke-virtual {v1}, Lcom/discord/utilities/rest/RestAPI$Companion;->getApi()Lcom/discord/utilities/rest/RestAPI; +! +! move-result-object v1 +! +! .line 206 +! new-instance v2, Lcom/discord/restapi/RestAPIParams$Track; +! +! iget-object v3, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->analyticsToken:Ljava/lang/String; +! +! move-object v4, v0 +! +! check-cast v4, Ljava/util/List; +! +! invoke-direct {v2, v3, v4}, Lcom/discord/restapi/RestAPIParams$Track;-><init>(Ljava/lang/String;Ljava/util/List;)V +! +! invoke-virtual {v1, v2}, Lcom/discord/utilities/rest/RestAPI;->track(Lcom/discord/restapi/RestAPIParams$Track;)Lrx/Observable; +! +! move-result-object v1 +! +! .line 207 +! invoke-static {}, Lcom/discord/app/i;->dz()Lrx/Observable$c; +! +! move-result-object v2 +! +! invoke-virtual {v1, v2}, Lrx/Observable;->a(Lrx/Observable$c;)Lrx/Observable; +! +! move-result-object v1 +! +! .line 208 +! sget-object v2, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$drainEventsQueue$1;->INSTANCE:Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$drainEventsQueue$1; +! +! check-cast v2, Lrx/functions/Action1; +! +! new-instance v3, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$drainEventsQueue$2; +! +! invoke-direct {v3, p0, v0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$drainEventsQueue$2;-><init>(Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;Ljava/util/ArrayList;)V +! +! check-cast v3, Lrx/functions/Action1; +! +! invoke-virtual {v1, v2, v3}, Lrx/Observable;->a(Lrx/functions/Action1;Lrx/functions/Action1;)Lrx/Subscription; +! :try_end_1 +! .catchall {:try_start_1 .. :try_end_1} :catchall_0 +! +! .line 211 +! monitor-exit p0 + + return-void +- +- :catchall_0 +- move-exception v0 +- +- monitor-exit p0 +- +- throw v0 + .end method + + .method private final getCanDrain()Z +--- 84,92 ---- + .end method + + .method private final declared-synchronized drainEventsQueue()V +! .locals 0 + + return-void + .end method + + .method private final getCanDrain()Z +*************** +*** 408,441 **** + .method public static synthetic setTrackingData$default(Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;Ljava/lang/String;ZILjava/lang/Object;)V + .locals 0 + +- and-int/lit8 p3, p3, 0x2 +- +- if-eqz p3, :cond_0 +- +- const/4 p2, 0x0 +- +- .line 106 +- :cond_0 +- invoke-virtual {p0, p1, p2}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->setTrackingData(Ljava/lang/String;Z)V +- + return-void + .end method + + .method public static synthetic track$default(Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)V + .locals 0 + +- and-int/lit8 p3, p3, 0x2 +- +- if-eqz p3, :cond_0 +- +- .line 133 +- invoke-static {}, Lkotlin/a/ad;->emptyMap()Ljava/util/Map; +- +- move-result-object p2 +- +- :cond_0 +- invoke-virtual {p0, p1, p2}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->track(Ljava/lang/String;Ljava/util/Map;)V +- + return-void + .end method + +--- 316,327 ---- +*************** +*** 576,816 **** + .method public final declared-synchronized setTrackingData(Ljava/lang/String;Z)V + .locals 0 + +- monitor-enter p0 +- +- .line 107 +- :try_start_0 +- invoke-direct {p0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->drainEventsQueue()V +- +- .line 109 +- iput-object p1, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->analyticsToken:Ljava/lang/String; +- +- .line 110 +- iput-boolean p2, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->fingerprinted:Z +- +- .line 112 +- invoke-direct {p0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->drainEventsQueue()V +- :try_end_0 +- .catchall {:try_start_0 .. :try_end_0} :catchall_0 +- +- .line 113 +- monitor-exit p0 +- + return-void +- +- :catchall_0 +- move-exception p1 +- +- monitor-exit p0 +- +- throw p1 + .end method + + .method public final track(Ljava/lang/String;Ljava/util/Map;)V +! .locals 2 +! .annotation system Ldalvik/annotation/Signature; +! value = { +! "(", +! "Ljava/lang/String;", +! "Ljava/util/Map<", +! "Ljava/lang/String;", +! "+", +! "Ljava/lang/Object;", +! ">;)V" +! } +! .end annotation +! +! const-string v0, "event" +! +! invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V +! +! const-string v0, "properties" +! +! invoke-static {p2, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V +! +! .line 134 +! iget-object v0, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->eventsQueue:Ljava/util/concurrent/ConcurrentLinkedQueue; +! +! new-instance v1, Lcom/discord/restapi/RestAPIParams$Track$Event; +! +! invoke-direct {v1, p1, p2}, Lcom/discord/restapi/RestAPIParams$Track$Event;-><init>(Ljava/lang/String;Ljava/util/Map;)V +! +! invoke-virtual {v0, v1}, Ljava/util/concurrent/ConcurrentLinkedQueue;->add(Ljava/lang/Object;)Z +! +! .line 136 +! sget-object p1, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; +! +! const-wide/16 v0, 0x5dc +! +! invoke-static {v0, v1, p1}, Lrx/Observable;->g(JLjava/util/concurrent/TimeUnit;)Lrx/Observable; +! +! move-result-object p1 +! +! .line 137 +! new-instance p2, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$track$1; +! +! invoke-direct {p2, p0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$track$1;-><init>(Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;)V +! +! check-cast p2, Lrx/functions/Action1; +! +! invoke-virtual {p1, p2}, Lrx/Observable;->b(Lrx/functions/Action1;)Lrx/Subscription; + + return-void + .end method + + .method public final track(Lkotlin/Pair;JLkotlin/jvm/functions/Function0;)V +! .locals 7 +! .annotation system Ldalvik/annotation/Signature; +! value = { +! "(", +! "Lkotlin/Pair<", +! "Ljava/lang/String;", +! "Ljava/lang/Long;", +! ">;J", +! "Lkotlin/jvm/functions/Function0<", +! "+", +! "Ljava/util/Map<", +! "Ljava/lang/String;", +! "+", +! "Ljava/lang/Object;", +! ">;>;)V" +! } +! .end annotation +! +! const-string v0, "throttleKey" +! +! invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V +! +! const-string v0, "lazyPropertyProvider" +! +! invoke-static {p4, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V +! +! .line 125 +! invoke-static {p2, p3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; +! +! move-result-object v3 +! +! const/4 v4, 0x0 +! +! const/4 v5, 0x4 +! +! const/4 v6, 0x0 +! +! move-object v1, p0 +! +! move-object v2, p1 +! +! invoke-static/range {v1 .. v6}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->isEventThrottled$default(Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;Lkotlin/Pair;Ljava/lang/Long;ZILjava/lang/Object;)Z +! +! move-result p2 +! +! if-eqz p2, :cond_0 +! +! return-void +! +! .line 1000 +! :cond_0 +! iget-object p1, p1, Lkotlin/Pair;->first:Ljava/lang/Object; +! +! .line 129 +! check-cast p1, Ljava/lang/String; +! +! .line 130 +! invoke-interface {p4}, Lkotlin/jvm/functions/Function0;->invoke()Ljava/lang/Object; +! +! move-result-object p2 +! +! check-cast p2, Ljava/util/Map; +! +! invoke-virtual {p0, p1, p2}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->track(Ljava/lang/String;Ljava/util/Map;)V + + return-void + .end method + + .method public final trackFireBase(Ljava/lang/String;Ljava/util/Map;)V +! .locals 9 +! .annotation system Ldalvik/annotation/Signature; +! value = { +! "(", +! "Ljava/lang/String;", +! "Ljava/util/Map<", +! "Ljava/lang/String;", +! "+", +! "Ljava/lang/Object;", +! ">;)V" +! } +! .end annotation +! +! const-string v0, "event" +! +! invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V +! +! const-string v0, "properties" +! +! invoke-static {p2, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V +! +! .line 144 +! new-instance v0, Landroid/os/Bundle; +! +! invoke-direct {v0}, Landroid/os/Bundle;-><init>()V +! +! invoke-direct {p0, v0, p2}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->putMap(Landroid/os/Bundle;Ljava/util/Map;)Landroid/os/Bundle; +! +! move-result-object v4 +! +! .line 145 +! sget-object p2, Lcom/discord/utilities/analytics/AnalyticsUtils;->INSTANCE:Lcom/discord/utilities/analytics/AnalyticsUtils; +! +! invoke-static {p2}, Lcom/discord/utilities/analytics/AnalyticsUtils;->access$getFireBaseInstance$p(Lcom/discord/utilities/analytics/AnalyticsUtils;)Lcom/google/firebase/analytics/FirebaseAnalytics; +! +! move-result-object p2 +! +! if-eqz p2, :cond_1 +! +! .line 1014 +! iget-boolean v0, p2, Lcom/google/firebase/analytics/FirebaseAnalytics;->aDr:Z +! +! if-eqz v0, :cond_0 +! +! .line 1015 +! iget-object p2, p2, Lcom/google/firebase/analytics/FirebaseAnalytics;->aTC:Lcom/google/android/gms/internal/measurement/lw; +! +! const/4 v0, 0x0 +! +! const/4 v1, 0x0 +! +! .line 1084 +! invoke-virtual {p2, v0, p1, v4, v1}, Lcom/google/android/gms/internal/measurement/lw;->a(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Z)V +! +! return-void +! +! .line 1016 +! :cond_0 +! iget-object p2, p2, Lcom/google/firebase/analytics/FirebaseAnalytics;->aDp:Lcom/google/android/gms/measurement/internal/ek; +! +! invoke-virtual {p2}, Lcom/google/android/gms/measurement/internal/ek;->vA()Lcom/google/android/gms/measurement/internal/fr; +! +! move-result-object v1 +! +! const/4 v5, 0x0 +! +! const/4 v6, 0x1 +! +! .line 2080 +! invoke-virtual {v1}, Lcom/google/android/gms/measurement/internal/fh;->vH()Lcom/google/android/gms/common/util/e; +! +! move-result-object p2 +! +! invoke-interface {p2}, Lcom/google/android/gms/common/util/e;->currentTimeMillis()J +! +! move-result-wide v7 +! +! const-string v2, "app" +! +! move-object v3, p1 +! +! invoke-virtual/range {v1 .. v8}, Lcom/google/android/gms/measurement/internal/fr;->logEvent(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ZZJ)V + +- :cond_1 + return-void + .end method +--- 462,484 ---- + .method public final declared-synchronized setTrackingData(Ljava/lang/String;Z)V + .locals 0 + + return-void + .end method + + .method public final track(Ljava/lang/String;Ljava/util/Map;)V +! .locals 0 + + return-void + .end method + + .method public final track(Lkotlin/Pair;JLkotlin/jvm/functions/Function0;)V +! .locals 0 + + return-void + .end method + + .method public final trackFireBase(Ljava/lang/String;Ljava/util/Map;)V +! .locals 0 + + return-void + .end method +Only in com.discord-963/smali/com/discord/utilities/analytics: AnalyticsUtils$Tracker.smali.orig +Only in com.discord-963/smali/com/discord/utilities/analytics: AnalyticsUtils$Tracker.smali.rej +diff -crB com.discord-963-base/smali/com/discord/utilities/integrations/SpotifyHelper$openPlayStoreForSpotify$1.smali com.discord-963/smali/com/discord/utilities/integrations/SpotifyHelper$openPlayStoreForSpotify$1.smali +*** com.discord-963-base/smali/com/discord/utilities/integrations/SpotifyHelper$openPlayStoreForSpotify$1.smali 2019-10-01 22:09:20.900657401 +0300 +--- com.discord-963/smali/com/discord/utilities/integrations/SpotifyHelper$openPlayStoreForSpotify$1.smali 2019-10-01 22:57:45.866570239 +0300 +*************** +*** 43,49 **** + + new-instance v1, Ljava/lang/StringBuilder; + +! const-string v2, "https://app.adjust.com/ndjczk?campaign=" + + invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + +--- 43,49 ---- + + new-instance v1, Ljava/lang/StringBuilder; + +! const-string v2, "https://play.google.com/store/apps/details?id=com.spotify.music&trash=" + + invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + +diff -crB com.discord-963-base/smali/com/discord/utilities/receiver/CampaignReceiver.smali com.discord-963/smali/com/discord/utilities/receiver/CampaignReceiver.smali +*** com.discord-963-base/smali/com/discord/utilities/receiver/CampaignReceiver.smali 2019-10-01 22:09:20.940657667 +0300 +--- com.discord-963/smali/com/discord/utilities/receiver/CampaignReceiver.smali 2019-10-01 22:57:45.866570239 +0300 +*************** +*** 16,49 **** + + # virtual methods + .method public final onReceive(Landroid/content/Context;Landroid/content/Intent;)V +! .locals 1 +! +! const-string v0, "context" +! +! invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V +! +! const-string v0, "intent" +! +! invoke-static {p2, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V +! +! .line 23 +! new-instance v0, Lcom/adjust/sdk/l; +! +! invoke-direct {v0}, Lcom/adjust/sdk/l;-><init>()V +! +! invoke-virtual {v0, p1, p2}, Lcom/adjust/sdk/l;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +! +! .line 24 +! new-instance v0, Lcom/google/android/gms/analytics/a; +! +! invoke-direct {v0}, Lcom/google/android/gms/analytics/a;-><init>()V +! +! invoke-virtual {v0, p1, p2}, Lcom/google/android/gms/analytics/a;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +! +! .line 26 +! sget-object p1, Lcom/discord/utilities/analytics/AnalyticSuperProperties;->INSTANCE:Lcom/discord/utilities/analytics/AnalyticSuperProperties; +! +! invoke-virtual {p1, p2}, Lcom/discord/utilities/analytics/AnalyticSuperProperties;->setCampaignProperties(Landroid/content/Intent;)V + + return-void + .end method +--- 16,22 ---- + + # virtual methods + .method public final onReceive(Landroid/content/Context;Landroid/content/Intent;)V +! .locals 0 + + return-void + .end method +diff -crB com.discord-963-base/smali_classes2/io/fabric/sdk/android/a/b/a.smali com.discord-963/smali_classes2/io/fabric/sdk/android/a/b/a.smali +*** com.discord-963-base/smali_classes2/io/fabric/sdk/android/a/b/a.smali 2019-10-01 22:09:23.570675154 +0300 +--- com.discord-963/smali_classes2/io/fabric/sdk/android/a/b/a.smali 2019-10-01 22:57:45.873236949 +0300 +*************** +*** 189,195 **** + + const-string v0, "X-CRASHLYTICS-DEVELOPER-TOKEN" + +! const-string v1, "470fa2b4ae81cd56ecbcda9735803434cec591fa" + + .line 142 + invoke-virtual {p1, v0, v1}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +--- 189,195 ---- + + const-string v0, "X-CRASHLYTICS-DEVELOPER-TOKEN" + +! const-string v1, "blamelunapoopoopeepeepoopoopeepblameluna" + + .line 142 + invoke-virtual {p1, v0, v1}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +diff -crB com.discord-963-base/smali_classes2/io/fabric/sdk/android/a/b/h.smali com.discord-963/smali_classes2/io/fabric/sdk/android/a/b/h.smali +*** com.discord-963-base/smali_classes2/io/fabric/sdk/android/a/b/h.smali 2019-10-01 22:09:23.574008510 +0300 +--- com.discord-963/smali_classes2/io/fabric/sdk/android/a/b/h.smali 2019-10-01 22:58:57.753713512 +0300 +*************** +*** 22,36 **** + .end method + + .method public final run()V +! .locals 1 +! +! const/16 v0, 0xa +! +! .line 29 +! invoke-static {v0}, Landroid/os/Process;->setThreadPriority(I)V +! +! .line 30 +! invoke-virtual {p0}, Lio/fabric/sdk/android/a/b/h;->de()V + + return-void + .end method +--- 22,28 ---- + .end method + + .method public final run()V +! .locals 0 + + return-void + .end method +Only in com.discord-963/smali_classes2/io/fabric/sdk/android/a/b: h.smali.orig +Only in com.discord-963/smali_classes2/io/fabric/sdk/android/a/b: h.smali.rej +diff -crB com.discord-963-base/smali_classes2/io/fabric/sdk/android/a/g/a.smali com.discord-963/smali_classes2/io/fabric/sdk/android/a/g/a.smali +*** com.discord-963-base/smali_classes2/io/fabric/sdk/android/a/g/a.smali 2019-10-01 22:09:23.594008642 +0300 +--- com.discord-963/smali_classes2/io/fabric/sdk/android/a/g/a.smali 2019-10-01 22:58:46.793640874 +0300 +*************** +*** 343,571 **** + + # virtual methods + .method public a(Lio/fabric/sdk/android/a/g/d;)Z +! .locals 5 + +! .line 74 +! invoke-virtual {p0}, Lio/fabric/sdk/android/a/g/a;->CI()Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! .line 3098 +! iget-object v1, p1, Lio/fabric/sdk/android/a/g/d;->pO:Ljava/lang/String; +! +! const-string v2, "X-CRASHLYTICS-API-KEY" +! +! invoke-virtual {v0, v2, v1}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! const-string v1, "X-CRASHLYTICS-API-CLIENT-TYPE" +! +! const-string v2, "android" +! +! .line 3099 +! invoke-virtual {v0, v1, v2}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! iget-object v1, p0, Lio/fabric/sdk/android/a/g/a;->oR:Lio/fabric/sdk/android/i; +! +! .line 3102 +! invoke-virtual {v1}, Lio/fabric/sdk/android/i;->getVersion()Ljava/lang/String; +! +! move-result-object v1 +! +! const-string v2, "X-CRASHLYTICS-API-CLIENT-VERSION" +! +! .line 3101 +! invoke-virtual {v0, v2, v1}, Lio/fabric/sdk/android/a/e/d;->ac(Ljava/lang/String;Ljava/lang/String;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! .line 76 +! invoke-direct {p0, v0, p1}, Lio/fabric/sdk/android/a/g/a;->a(Lio/fabric/sdk/android/a/e/d;Lio/fabric/sdk/android/a/g/d;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v0 +! +! .line 78 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v1 +! +! new-instance v2, Ljava/lang/StringBuilder; +! +! const-string v3, "Sending app info to " +! +! invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! .line 4100 +! iget-object v3, p0, Lio/fabric/sdk/android/a/b/a;->url:Ljava/lang/String; +! +! .line 78 +! invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v2 +! +! const-string v3, "Fabric" +! +! invoke-interface {v1, v3, v2}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 79 +! iget-object v1, p1, Lio/fabric/sdk/android/a/g/d;->biO:Lio/fabric/sdk/android/a/g/n; +! +! if-eqz v1, :cond_0 +! +! .line 80 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v1 +! +! new-instance v2, Ljava/lang/StringBuilder; +! +! const-string v4, "App icon hash is " +! +! invoke-direct {v2, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! iget-object v4, p1, Lio/fabric/sdk/android/a/g/d;->biO:Lio/fabric/sdk/android/a/g/n; +! +! iget-object v4, v4, Lio/fabric/sdk/android/a/g/n;->aaW:Ljava/lang/String; +! +! invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v2 +! +! invoke-interface {v1, v3, v2}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 82 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v1 +! +! new-instance v2, Ljava/lang/StringBuilder; +! +! const-string v4, "App icon size is " +! +! invoke-direct {v2, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! iget-object v4, p1, Lio/fabric/sdk/android/a/g/d;->biO:Lio/fabric/sdk/android/a/g/n; +! +! iget v4, v4, Lio/fabric/sdk/android/a/g/n;->width:I +! +! invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; +! +! const-string v4, "x" +! +! invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! iget-object p1, p1, Lio/fabric/sdk/android/a/g/d;->biO:Lio/fabric/sdk/android/a/g/n; +! +! iget p1, p1, Lio/fabric/sdk/android/a/g/n;->height:I +! +! invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; +! +! invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object p1 +! +! invoke-interface {v1, v3, p1}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 86 +! :cond_0 +! invoke-virtual {v0}, Lio/fabric/sdk/android/a/e/d;->Dv()I +! +! move-result p1 +! +! .line 4929 +! invoke-virtual {v0}, Lio/fabric/sdk/android/a/e/d;->Du()Ljava/net/HttpURLConnection; +! +! move-result-object v1 +! +! invoke-virtual {v1}, Ljava/net/HttpURLConnection;->getRequestMethod()Ljava/lang/String; +! +! move-result-object v1 +! +! const-string v2, "POST" +! +! .line 87 +! invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v1 +! +! if-eqz v1, :cond_1 +! +! const-string v1, "Create" +! +! goto :goto_0 +! +! :cond_1 +! const-string v1, "Update" +! +! .line 90 +! :goto_0 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v2 +! +! new-instance v4, Ljava/lang/StringBuilder; +! +! invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V +! +! invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! const-string v1, " app request ID: " +! +! invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! const-string v1, "X-REQUEST-ID" +! +! .line 91 +! invoke-virtual {v0, v1}, Lio/fabric/sdk/android/a/e/d;->dI(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object v0 +! +! invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v0 +! +! .line 90 +! invoke-interface {v2, v3, v0}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 92 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v0 +! +! invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; +! +! move-result-object v1 +! +! const-string v2, "Result was " +! +! invoke-virtual {v2, v1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object v1 +! +! invoke-interface {v0, v3, v1}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 94 +! invoke-static {p1}, Lio/fabric/sdk/android/a/b/v;->di(I)I +! +! move-result p1 +! +! if-nez p1, :cond_2 +! +! const/4 p1, 0x1 +! +! return p1 +! +! :cond_2 +! const/4 p1, 0x0 +! +! return p1 + .end method +--- 343,349 ---- + + # virtual methods + .method public a(Lio/fabric/sdk/android/a/g/d;)Z +! .locals 0 + +! return-void + .end method +Only in com.discord-963/smali_classes2/io/fabric/sdk/android/a/g: a.smali.orig +Only in com.discord-963/smali_classes2/io/fabric/sdk/android/a/g: a.smali.rej +diff -crB com.discord-963-base/smali_classes2/io/fabric/sdk/android/a/g/l.smali com.discord-963/smali_classes2/io/fabric/sdk/android/a/g/l.smali +*** com.discord-963-base/smali_classes2/io/fabric/sdk/android/a/g/l.smali 2019-10-01 22:09:23.597341998 +0300 +--- com.discord-963/smali_classes2/io/fabric/sdk/android/a/g/l.smali 2019-10-01 22:58:38.906921938 +0300 +*************** +*** 115,502 **** + + # virtual methods + .method public final a(Lio/fabric/sdk/android/a/g/w;)Lorg/json/JSONObject; +! .locals 8 + +! const-string v0, "X-REQUEST-ID" +! +! const-string v1, "Settings request ID: " +! +! const-string v2, "Fabric" +! +! const/4 v3, 0x0 +! +! .line 1140 +! :try_start_0 +! new-instance v4, Ljava/util/HashMap; +! +! invoke-direct {v4}, Ljava/util/HashMap;-><init>()V +! +! const-string v5, "build_version" +! +! .line 1141 +! iget-object v6, p1, Lio/fabric/sdk/android/a/g/w;->biJ:Ljava/lang/String; +! +! invoke-interface {v4, v5, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +! +! const-string v5, "display_version" +! +! .line 1142 +! iget-object v6, p1, Lio/fabric/sdk/android/a/g/w;->biI:Ljava/lang/String; +! +! invoke-interface {v4, v5, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +! +! const-string v5, "source" +! +! .line 1143 +! iget v6, p1, Lio/fabric/sdk/android/a/g/w;->biL:I +! +! invoke-static {v6}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; +! +! move-result-object v6 +! +! invoke-interface {v4, v5, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +! +! .line 1145 +! iget-object v5, p1, Lio/fabric/sdk/android/a/g/w;->bjM:Ljava/lang/String; +! +! if-eqz v5, :cond_0 +! +! const-string v5, "icon_hash" +! +! .line 1146 +! iget-object v6, p1, Lio/fabric/sdk/android/a/g/w;->bjM:Ljava/lang/String; +! +! invoke-interface {v4, v5, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +! +! .line 1149 +! :cond_0 +! iget-object v5, p1, Lio/fabric/sdk/android/a/g/w;->bjL:Ljava/lang/String; +! +! .line 1150 +! invoke-static {v5}, Lio/fabric/sdk/android/a/b/i;->O(Ljava/lang/String;)Z +! +! move-result v6 +! +! if-nez v6, :cond_1 +! +! const-string v6, "instance" +! +! .line 1151 +! invoke-interface {v4, v6, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +! +! .line 82 +! :cond_1 +! invoke-virtual {p0, v4}, Lio/fabric/sdk/android/a/g/l;->p(Ljava/util/Map;)Lio/fabric/sdk/android/a/e/d; +! +! move-result-object v5 +! :try_end_0 +! .catch Lio/fabric/sdk/android/a/e/d$c; {:try_start_0 .. :try_end_0} :catch_1 +! .catchall {:try_start_0 .. :try_end_0} :catchall_0 +! +! :try_start_1 +! const-string v6, "X-CRASHLYTICS-API-KEY" +! +! .line 1160 +! iget-object v7, p1, Lio/fabric/sdk/android/a/g/w;->pO:Ljava/lang/String; +! +! invoke-static {v5, v6, v7}, Lio/fabric/sdk/android/a/g/l;->a(Lio/fabric/sdk/android/a/e/d;Ljava/lang/String;Ljava/lang/String;)V +! +! const-string v6, "X-CRASHLYTICS-API-CLIENT-TYPE" +! +! const-string v7, "android" +! +! .line 1161 +! invoke-static {v5, v6, v7}, Lio/fabric/sdk/android/a/g/l;->a(Lio/fabric/sdk/android/a/e/d;Ljava/lang/String;Ljava/lang/String;)V +! +! const-string v6, "X-CRASHLYTICS-API-CLIENT-VERSION" +! +! .line 1163 +! iget-object v7, p0, Lio/fabric/sdk/android/a/g/l;->oR:Lio/fabric/sdk/android/i; +! +! invoke-virtual {v7}, Lio/fabric/sdk/android/i;->getVersion()Ljava/lang/String; +! +! move-result-object v7 +! +! invoke-static {v5, v6, v7}, Lio/fabric/sdk/android/a/g/l;->a(Lio/fabric/sdk/android/a/e/d;Ljava/lang/String;Ljava/lang/String;)V +! +! const-string v6, "Accept" +! +! const-string v7, "application/json" +! +! .line 1164 +! invoke-static {v5, v6, v7}, Lio/fabric/sdk/android/a/g/l;->a(Lio/fabric/sdk/android/a/e/d;Ljava/lang/String;Ljava/lang/String;)V +! +! const-string v6, "X-CRASHLYTICS-DEVICE-MODEL" +! +! .line 1166 +! iget-object v7, p1, Lio/fabric/sdk/android/a/g/w;->qr:Ljava/lang/String; +! +! invoke-static {v5, v6, v7}, Lio/fabric/sdk/android/a/g/l;->a(Lio/fabric/sdk/android/a/e/d;Ljava/lang/String;Ljava/lang/String;)V +! +! const-string v6, "X-CRASHLYTICS-OS-BUILD-VERSION" +! +! .line 1167 +! iget-object v7, p1, Lio/fabric/sdk/android/a/g/w;->bjJ:Ljava/lang/String; +! +! invoke-static {v5, v6, v7}, Lio/fabric/sdk/android/a/g/l;->a(Lio/fabric/sdk/android/a/e/d;Ljava/lang/String;Ljava/lang/String;)V +! +! const-string v6, "X-CRASHLYTICS-OS-DISPLAY-VERSION" +! +! .line 1168 +! iget-object v7, p1, Lio/fabric/sdk/android/a/g/w;->bjK:Ljava/lang/String; +! +! invoke-static {v5, v6, v7}, Lio/fabric/sdk/android/a/g/l;->a(Lio/fabric/sdk/android/a/e/d;Ljava/lang/String;Ljava/lang/String;)V +! +! const-string v6, "X-CRASHLYTICS-INSTALLATION-ID" +! +! .line 1169 +! iget-object p1, p1, Lio/fabric/sdk/android/a/g/w;->qm:Ljava/lang/String; +! +! invoke-static {v5, v6, p1}, Lio/fabric/sdk/android/a/g/l;->a(Lio/fabric/sdk/android/a/e/d;Ljava/lang/String;Ljava/lang/String;)V +! +! .line 85 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object p1 +! +! new-instance v6, Ljava/lang/StringBuilder; +! +! const-string v7, "Requesting settings from " +! +! invoke-direct {v6, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! .line 2100 +! iget-object v7, p0, Lio/fabric/sdk/android/a/b/a;->url:Ljava/lang/String; +! +! .line 85 +! invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v6 +! +! invoke-interface {p1, v2, v6}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 86 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object p1 +! +! const-string v6, "Settings query params were: " +! +! invoke-static {v4}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; +! +! move-result-object v4 +! +! invoke-virtual {v6, v4}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object v4 +! +! invoke-interface {p1, v2, v4}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 2104 +! invoke-virtual {v5}, Lio/fabric/sdk/android/a/e/d;->Dv()I +! +! move-result p1 +! +! .line 2105 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v4 +! +! const-string v6, "Settings result was: " +! +! invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; +! +! move-result-object v7 +! +! invoke-virtual {v6, v7}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object v6 +! +! invoke-interface {v4, v2, v6}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! const/16 v4, 0xc8 +! +! if-eq p1, v4, :cond_3 +! +! const/16 v4, 0xc9 +! +! if-eq p1, v4, :cond_3 +! +! const/16 v4, 0xca +! +! if-eq p1, v4, :cond_3 +! +! const/16 v4, 0xcb +! +! if-ne p1, v4, :cond_2 +! +! goto :goto_0 +! +! :cond_2 +! const/4 p1, 0x0 +! +! goto :goto_1 +! +! :cond_3 +! :goto_0 +! const/4 p1, 0x1 +! +! :goto_1 +! if-eqz p1, :cond_4 +! +! .line 2109 +! invoke-virtual {v5}, Lio/fabric/sdk/android/a/e/d;->Dw()Ljava/lang/String; +! +! move-result-object p1 +! +! invoke-direct {p0, p1}, Lio/fabric/sdk/android/a/g/l;->dM(Ljava/lang/String;)Lorg/json/JSONObject; +! +! move-result-object p1 +! +! move-object v3, p1 +! +! goto :goto_2 +! +! .line 2111 +! :cond_4 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object p1 +! +! new-instance v4, Ljava/lang/StringBuilder; +! +! const-string v6, "Failed to retrieve settings from " +! +! invoke-direct {v4, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! .line 3100 +! iget-object v6, p0, Lio/fabric/sdk/android/a/b/a;->url:Ljava/lang/String; +! +! .line 2111 +! invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v4 +! +! invoke-interface {p1, v2, v4}, Lio/fabric/sdk/android/l;->e(Ljava/lang/String;Ljava/lang/String;)V +! :try_end_1 +! .catch Lio/fabric/sdk/android/a/e/d$c; {:try_start_1 .. :try_end_1} :catch_0 +! .catchall {:try_start_1 .. :try_end_1} :catchall_1 +! +! :goto_2 +! if-eqz v5, :cond_5 +! +! .line 94 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object p1 +! +! new-instance v4, Ljava/lang/StringBuilder; +! +! invoke-direct {v4, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! .line 95 +! :goto_3 +! invoke-virtual {v5, v0}, Lio/fabric/sdk/android/a/e/d;->dI(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object v0 +! +! invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v0 +! +! .line 94 +! invoke-interface {p1, v2, v0}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! goto :goto_5 +! +! :catch_0 +! move-exception p1 +! +! goto :goto_4 +! +! :catchall_0 +! move-exception p1 +! +! move-object v5, v3 +! +! goto :goto_6 +! +! :catch_1 +! move-exception p1 +! +! move-object v5, v3 +! +! .line 90 +! :goto_4 +! :try_start_2 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v4 +! +! const-string v6, "Settings request failed." +! +! invoke-interface {v4, v2, v6, p1}, Lio/fabric/sdk/android/l;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V +! :try_end_2 +! .catchall {:try_start_2 .. :try_end_2} :catchall_1 +! +! if-eqz v5, :cond_5 +! +! .line 94 +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object p1 +! +! new-instance v4, Ljava/lang/StringBuilder; +! +! invoke-direct {v4, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! goto :goto_3 +! +! :cond_5 +! :goto_5 +! return-object v3 +! +! :catchall_1 +! move-exception p1 +! +! :goto_6 +! if-eqz v5, :cond_6 +! +! invoke-static {}, Lio/fabric/sdk/android/c;->Cw()Lio/fabric/sdk/android/l; +! +! move-result-object v3 +! +! new-instance v4, Ljava/lang/StringBuilder; +! +! invoke-direct {v4, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +! +! .line 95 +! invoke-virtual {v5, v0}, Lio/fabric/sdk/android/a/e/d;->dI(Ljava/lang/String;)Ljava/lang/String; +! +! move-result-object v0 +! +! invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +! +! invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +! +! move-result-object v0 +! +! .line 94 +! invoke-interface {v3, v2, v0}, Lio/fabric/sdk/android/l;->d(Ljava/lang/String;Ljava/lang/String;)V +! +! .line 97 +! :cond_6 +! goto :goto_8 +! +! :goto_7 +! throw p1 +! +! :goto_8 +! goto :goto_7 + .end method +--- 115,121 ---- + + # virtual methods + .method public final a(Lio/fabric/sdk/android/a/g/w;)Lorg/json/JSONObject; +! .locals 0 + +! return-void + .end method +Only in com.discord-963/smali_classes2/io/fabric/sdk/android/a/g: l.smali.orig +Only in com.discord-963/smali_classes2/io/fabric/sdk/android/a/g: l.smali.rej + diff --git a/patches/nozlib/963.patch b/patches/nozlib/963.patch new file mode 100644 index 0000000..e707587 --- /dev/null +++ b/patches/nozlib/963.patch @@ -0,0 +1,37 @@ +diff -crB com.discord-963-base/smali/com/discord/gateway/GatewaySocket.smali com.discord-963/smali/com/discord/gateway/GatewaySocket.smali +*** com.discord-963-base/smali/com/discord/gateway/GatewaySocket.smali 2019-10-01 22:09:20.573988563 +0300 +--- com.discord-963/smali/com/discord/gateway/GatewaySocket.smali 2019-10-01 22:43:46.314336604 +0300 +*************** +*** 1050,1056 **** + + invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +! const-string p1, "/?encoding=json&v=7&compress=zlib-stream" + + invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +--- 1050,1056 ---- + + invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +! const-string p1, "/?encoding=json&v=7" + + invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +diff -crB com.discord-963-base/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali com.discord-963/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali +*** com.discord-963-base/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali 2019-10-01 22:09:20.550655074 +0300 +--- com.discord-963/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali 2019-10-01 22:44:23.654584202 +0300 +*************** +*** 66,71 **** +--- 66,73 ---- + + iput p2, p0, Lcom/discord/gateway/io/OutgoingPayload$Identify;->large_threshold:I + ++ const/4 p3, 0x0 ++ + iput-boolean p3, p0, Lcom/discord/gateway/io/OutgoingPayload$Identify;->compress:Z + + iput-object p4, p0, Lcom/discord/gateway/io/OutgoingPayload$Identify;->properties:Ljava/util/Map; +Only in com.discord-963/smali/com/discord/gateway/io: OutgoingPayload$Identify.smali.orig +Only in com.discord-963/smali/com/discord/gateway/io: OutgoingPayload$Identify.smali.rej + diff --git a/patches/nozlib/README.md b/patches/nozlib/README.md index 9adf5e9..604ba8c 100644 --- a/patches/nozlib/README.md +++ b/patches/nozlib/README.md @@ -45,4 +45,5 @@ This patch disables zlib-stream field on wss, making it easier to parse it. - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/pureevil/963.patch b/patches/pureevil/963.patch new file mode 100644 index 0000000..8e3895b --- /dev/null +++ b/patches/pureevil/963.patch @@ -0,0 +1,45 @@ +diff -crB com.discord-938-base/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$1.smali com.discord-938/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$1.smali +*** com.discord-938-base/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$1.smali 2019-08-12 17:12:55.110381830 +0300 +--- com.discord-938/smali/com/discord/widgets/settings/WidgetSettingsAppearance$Model$Companion$get$1.smali 2019-08-12 19:09:49.705585102 +0300 +*************** +*** 77,87 **** + const-string v0, "meUser" + + .line 186 +! invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V +! +! invoke-virtual {p1}, Lcom/discord/models/domain/ModelUser;->isStaff()Z +! +! move-result v2 + + const-string v1, "fontScale" + +--- 77,83 ---- + const-string v0, "meUser" + + .line 186 +! const/4 v2, 0x1 + + const-string v1, "fontScale" + +*************** +*** 95,105 **** + const-string p3, "isAlphaTesterOrStaff" + + .line 188 +! invoke-static {p4, p3}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V +! +! invoke-virtual {p4}, Ljava/lang/Boolean;->booleanValue()Z +! +! move-result v4 + + .line 189 + invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V +--- 91,97 ---- + const-string p3, "isAlphaTesterOrStaff" + + .line 188 +! const/4 v4, 0x1 + + .line 189 + invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V diff --git a/patches/pureevil/README.md b/patches/pureevil/README.md index da726d4..c79e5ce 100644 --- a/patches/pureevil/README.md +++ b/patches/pureevil/README.md @@ -51,4 +51,5 @@ This patch enables the secret AMOLED theme (which is shit). - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/slashcommands/963.patch b/patches/slashcommands/963.patch new file mode 100644 index 0000000..5000ce3 --- /dev/null +++ b/patches/slashcommands/963.patch @@ -0,0 +1,3125 @@ +diff -crB com.discord-963-base/smali/com/discord/models/domain/ModelChannel.smali com.discord-963/smali/com/discord/models/domain/ModelChannel.smali +*** com.discord-963-base/smali/com/discord/models/domain/ModelChannel.smali 2019-10-01 22:09:20.573988563 +0300 +--- com.discord-963/smali/com/discord/models/domain/ModelChannel.smali 2019-10-01 22:47:54.389314892 +0300 +*************** +*** 2193,2198 **** +--- 2193,2208 ---- + } + .end annotation + ++ invoke-static {}, Lcom/discord/stores/StoreStream;->getUserSettings()Lcom/discord/stores/StoreUserSettings; ++ ++ move-result-object v0 ++ ++ invoke-virtual {v0}, Lcom/discord/stores/StoreUserSettings;->getLeakChannels()Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_0 ++ + .line 270 + iget-object v0, p0, Lcom/discord/models/domain/ModelChannel;->permissionOverwrites:Ljava/util/Map; + +Only in com.discord-963/smali/com/discord/models/domain: ModelChannel.smali.orig +Only in com.discord-963/smali/com/discord/models/domain: ModelChannel.smali.rej +diff -crB com.discord-963-base/smali/com/discord/stores/StoreMessages.smali com.discord-963/smali/com/discord/stores/StoreMessages.smali +*** com.discord-963-base/smali/com/discord/stores/StoreMessages.smali 2019-10-01 22:09:20.797323381 +0300 +--- com.discord-963/smali/com/discord/stores/StoreMessages.smali 2019-10-01 22:47:11.022360664 +0300 +*************** +*** 432,437 **** +--- 432,441 ---- + + invoke-static {p5, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V + ++ invoke-static {p5}, Lcom/discord/stores/StoreMessages;->interceptEditMessage(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p5 ++ + .line 168 + invoke-direct {p0, p3, p4}, Lcom/discord/stores/StoreMessages;->getMessageQueue(J)Lcom/discord/utilities/messagesend/MessageQueue; + +*************** +*** 954,959 **** +--- 958,3739 ---- + return-void + .end method + ++ .method public static final slashUpper(Ljava/lang/String;)Ljava/lang/String; ++ .locals 1 ++ ++ # Length of command + space ++ const/4 v0, 0x7 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ invoke-virtual {p0}, Ljava/lang/String;->toUpperCase()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashLower(Ljava/lang/String;)Ljava/lang/String; ++ .locals 1 ++ ++ # Length of command + space ++ const/4 v0, 0x7 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ invoke-virtual {p0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashBold(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command + space ++ const/4 v0, 0x6 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ const-string v1, "**" ++ ++ invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashSpoiler(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command + space ++ const/16 v0, 0x9 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ const-string v1, "||" ++ ++ invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashMe(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command + space ++ const/4 v0, 0x4 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ const-string v1, "*" ++ ++ invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashSt(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command + space ++ const/4 v0, 0x4 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ const-string v1, "~~" ++ ++ invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashShrug(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command (no space) ++ const/4 v0, 0x6 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ const-string v1, " ¯\\_(ツ)_/¯" ++ ++ invoke-direct {v0, p0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashTableflip(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command (no space) ++ const/16 v0, 0xa ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ const-string v1, " (╯°□°)╯︵ ┻━┻" ++ ++ invoke-direct {v0, p0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashUnflip(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command (no space) ++ const/16 v0, 0x7 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ const-string v1, " ┬─┬ ノ( ゜-゜ノ)" ++ ++ invoke-direct {v0, p0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashLenny(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command (no space) ++ const/4 v0, 0x6 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ const-string v1, " ( ͡° ͜ʖ ͡°)" ++ ++ invoke-direct {v0, p0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashFw(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command + space ++ const/16 v0, 0x4 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, " " ++ ++ const-string v1, " " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Start of automatically generated code with textreplacegen.py ++ ++ const-string v0, "!" ++ ++ const-string v1, "!" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "#" ++ ++ const-string v1, "#" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "$" ++ ++ const-string v1, "$" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "%" ++ ++ const-string v1, "%" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "&" ++ ++ const-string v1, "&" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "'" ++ ++ const-string v1, "'" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "(" ++ ++ const-string v1, "(" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, ")" ++ ++ const-string v1, ")" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "*" ++ ++ const-string v1, "*" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "+" ++ ++ const-string v1, "+" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "," ++ ++ const-string v1, "," ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "-" ++ ++ const-string v1, "-" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "." ++ ++ const-string v1, "." ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "/" ++ ++ const-string v1, "/" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "0" ++ ++ const-string v1, "0" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "1" ++ ++ const-string v1, "1" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "2" ++ ++ const-string v1, "2" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "3" ++ ++ const-string v1, "3" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "4" ++ ++ const-string v1, "4" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "5" ++ ++ const-string v1, "5" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "6" ++ ++ const-string v1, "6" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "7" ++ ++ const-string v1, "7" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "8" ++ ++ const-string v1, "8" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "9" ++ ++ const-string v1, "9" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, ":" ++ ++ const-string v1, ":" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, ";" ++ ++ const-string v1, ";" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "<" ++ ++ const-string v1, "<" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "=" ++ ++ const-string v1, "=" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, ">" ++ ++ const-string v1, ">" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "?" ++ ++ const-string v1, "?" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "@" ++ ++ const-string v1, "@" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "A" ++ ++ const-string v1, "A" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "B" ++ ++ const-string v1, "B" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "C" ++ ++ const-string v1, "C" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "D" ++ ++ const-string v1, "D" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "E" ++ ++ const-string v1, "E" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "F" ++ ++ const-string v1, "F" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "G" ++ ++ const-string v1, "G" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "H" ++ ++ const-string v1, "H" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "I" ++ ++ const-string v1, "I" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "J" ++ ++ const-string v1, "J" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "K" ++ ++ const-string v1, "K" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "L" ++ ++ const-string v1, "L" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "M" ++ ++ const-string v1, "M" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "N" ++ ++ const-string v1, "N" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "O" ++ ++ const-string v1, "O" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "P" ++ ++ const-string v1, "P" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "Q" ++ ++ const-string v1, "Q" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "R" ++ ++ const-string v1, "R" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "S" ++ ++ const-string v1, "S" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "T" ++ ++ const-string v1, "T" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "U" ++ ++ const-string v1, "U" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "V" ++ ++ const-string v1, "V" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "W" ++ ++ const-string v1, "W" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "X" ++ ++ const-string v1, "X" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "Y" ++ ++ const-string v1, "Y" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "Z" ++ ++ const-string v1, "Z" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "[" ++ ++ const-string v1, "[" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "]" ++ ++ const-string v1, "]" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "^" ++ ++ const-string v1, "^" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "_" ++ ++ const-string v1, "_" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "`" ++ ++ const-string v1, "`" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "a" ++ ++ const-string v1, "a" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "b" ++ ++ const-string v1, "b" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "c" ++ ++ const-string v1, "c" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "d" ++ ++ const-string v1, "d" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "e" ++ ++ const-string v1, "e" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "f" ++ ++ const-string v1, "f" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "g" ++ ++ const-string v1, "g" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "h" ++ ++ const-string v1, "h" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "i" ++ ++ const-string v1, "i" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "j" ++ ++ const-string v1, "j" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "k" ++ ++ const-string v1, "k" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "l" ++ ++ const-string v1, "l" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "m" ++ ++ const-string v1, "m" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "n" ++ ++ const-string v1, "n" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "o" ++ ++ const-string v1, "o" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "p" ++ ++ const-string v1, "p" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "q" ++ ++ const-string v1, "q" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "r" ++ ++ const-string v1, "r" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "s" ++ ++ const-string v1, "s" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "t" ++ ++ const-string v1, "t" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "u" ++ ++ const-string v1, "u" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "v" ++ ++ const-string v1, "v" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "w" ++ ++ const-string v1, "w" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "x" ++ ++ const-string v1, "x" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "y" ++ ++ const-string v1, "y" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "z" ++ ++ const-string v1, "z" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "{" ++ ++ const-string v1, "{" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "|" ++ ++ const-string v1, "|" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "}" ++ ++ const-string v1, "}" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "~" ++ ++ const-string v1, "~" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # End of automatically generated code by textreplacegen.py ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashSmall(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command + space ++ const/16 v0, 0x7 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ invoke-virtual {p0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Start of automatically generated code with textreplacegen.py ++ ++ const-string v0, "a" ++ ++ const-string v1, "ᴀ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "b" ++ ++ const-string v1, "ʙ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "c" ++ ++ const-string v1, "ᴄ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "d" ++ ++ const-string v1, "ᴅ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "e" ++ ++ const-string v1, "ᴇ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "f" ++ ++ const-string v1, "ꜰ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "g" ++ ++ const-string v1, "ɢ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "h" ++ ++ const-string v1, "ʜ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "i" ++ ++ const-string v1, "ɪ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "j" ++ ++ const-string v1, "ᴊ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "k" ++ ++ const-string v1, "ᴋ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "l" ++ ++ const-string v1, "ʟ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "m" ++ ++ const-string v1, "ᴍ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "n" ++ ++ const-string v1, "ɴ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "o" ++ ++ const-string v1, "ᴏ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "p" ++ ++ const-string v1, "ᴘ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "q" ++ ++ const-string v1, "ǫ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "r" ++ ++ const-string v1, "ʀ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "s" ++ ++ const-string v1, "s" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "t" ++ ++ const-string v1, "ᴛ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "u" ++ ++ const-string v1, "ᴜ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "v" ++ ++ const-string v1, "ᴠ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "w" ++ ++ const-string v1, "ᴡ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "x" ++ ++ const-string v1, "x" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "y" ++ ++ const-string v1, "ʏ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "z" ++ ++ const-string v1, "ᴢ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # End of automatically generated code by textreplacegen.py ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashSmaller(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command + space ++ const/16 v0, 0x9 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ invoke-virtual {p0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Start of automatically generated code with textreplacegen.py ++ ++ const-string v0, "a" ++ ++ const-string v1, "ᵃ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "b" ++ ++ const-string v1, "ᵇ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "c" ++ ++ const-string v1, "ᶜ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "d" ++ ++ const-string v1, "ᵈ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "e" ++ ++ const-string v1, "ᵉ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "f" ++ ++ const-string v1, "ᶠ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "g" ++ ++ const-string v1, "ᵍ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "h" ++ ++ const-string v1, "ʰ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "i" ++ ++ const-string v1, "ᶦ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "j" ++ ++ const-string v1, "ʲ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "k" ++ ++ const-string v1, "ᵏ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "l" ++ ++ const-string v1, "ˡ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "m" ++ ++ const-string v1, "ᵐ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "n" ++ ++ const-string v1, "ⁿ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "o" ++ ++ const-string v1, "ᵒ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "p" ++ ++ const-string v1, "ᵖ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "q" ++ ++ const-string v1, "ᑫ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "r" ++ ++ const-string v1, "ʳ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "s" ++ ++ const-string v1, "ˢ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "t" ++ ++ const-string v1, "ᵗ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "u" ++ ++ const-string v1, "ᵘ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "v" ++ ++ const-string v1, "ᵛ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "w" ++ ++ const-string v1, "ʷ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "x" ++ ++ const-string v1, "ˣ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "y" ++ ++ const-string v1, "ʸ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "z" ++ ++ const-string v1, "ᶻ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # End of automatically generated code by textreplacegen.py ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashFlip(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command + space ++ const/16 v0, 0x6 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ invoke-virtual {p0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Reverse text ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v0, p0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->reverse()Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Start of automatically generated code with textreplacegen.py ++ ++ const-string v0, "a" ++ ++ const-string v1, "ɐ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "b" ++ ++ const-string v1, "q" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "c" ++ ++ const-string v1, "ɔ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "d" ++ ++ const-string v1, "p" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "e" ++ ++ const-string v1, "ǝ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "f" ++ ++ const-string v1, "ɟ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "g" ++ ++ const-string v1, "ƃ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "h" ++ ++ const-string v1, "ɥ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "i" ++ ++ const-string v1, "ı" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "j" ++ ++ const-string v1, "ɾ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "k" ++ ++ const-string v1, "ʞ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "l" ++ ++ const-string v1, "ן" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "m" ++ ++ const-string v1, "ɯ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "n" ++ ++ const-string v1, "u" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "o" ++ ++ const-string v1, "o" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "p" ++ ++ const-string v1, "d" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "q" ++ ++ const-string v1, "b" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "r" ++ ++ const-string v1, "ɹ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "s" ++ ++ const-string v1, "s" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "t" ++ ++ const-string v1, "ʇ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "u" ++ ++ const-string v1, "n" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "v" ++ ++ const-string v1, "ʌ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "w" ++ ++ const-string v1, "ʍ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "x" ++ ++ const-string v1, "x" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "y" ++ ++ const-string v1, "ʎ" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "z" ++ ++ const-string v1, "z" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # End of automatically generated code by textreplacegen.py ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashClap(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command + space ++ const/4 v0, 0x6 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, " " ++ ++ const-string v1, " :clap: " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashOwo(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command + space ++ const/4 v0, 0x5 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Thanks Cynthia for the regex! ++ ++ const-string v0, "(?:r|l)" ++ ++ const-string v1, "w" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "(?:R|L)" ++ ++ const-string v1, "W" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "n([aeiou])" ++ ++ const-string v1, "ny$1" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "N([aeiou])" ++ ++ const-string v1, "Ny$1" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "N([AEIOU])" ++ ++ const-string v1, "NY$1" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "ove" ++ ++ const-string v1, "uv" ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashMorse(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ # Length of command + space ++ const/16 v0, 0x7 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ invoke-virtual {p0}, Ljava/lang/String;->toUpperCase()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Start of automatically generated code with textreplacegen.py ++ ++ const-string v0, " " ++ ++ const-string v1, "/ " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "." ++ ++ const-string v1, ".-.-.- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "," ++ ++ const-string v1, "--..-- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, ":" ++ ++ const-string v1, "---... " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "?" ++ ++ const-string v1, "..--.. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "'" ++ ++ const-string v1, ".----. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "-" ++ ++ const-string v1, "-....- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "/" ++ ++ const-string v1, "-..-. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "@" ++ ++ const-string v1, ".--.-. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "=" ++ ++ const-string v1, "-...- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "A" ++ ++ const-string v1, ".- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "B" ++ ++ const-string v1, "-... " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "C" ++ ++ const-string v1, "-.-. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "D" ++ ++ const-string v1, "-.. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "E" ++ ++ const-string v1, ". " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "F" ++ ++ const-string v1, "..-. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "G" ++ ++ const-string v1, "--. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "H" ++ ++ const-string v1, ".... " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "I" ++ ++ const-string v1, ".. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "J" ++ ++ const-string v1, ".--- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "K" ++ ++ const-string v1, "-.- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "L" ++ ++ const-string v1, ".-.. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "M" ++ ++ const-string v1, "-- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "N" ++ ++ const-string v1, "-. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "O" ++ ++ const-string v1, "--- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "P" ++ ++ const-string v1, ".--. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "Q" ++ ++ const-string v1, "--.- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "R" ++ ++ const-string v1, ".-. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "S" ++ ++ const-string v1, "... " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "T" ++ ++ const-string v1, "- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "U" ++ ++ const-string v1, "..- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "V" ++ ++ const-string v1, "...- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "W" ++ ++ const-string v1, ".-- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "X" ++ ++ const-string v1, "-..- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "Y" ++ ++ const-string v1, "-.-- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "Z" ++ ++ const-string v1, "--.. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "0" ++ ++ const-string v1, "----- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "1" ++ ++ const-string v1, ".---- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "2" ++ ++ const-string v1, "..--- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "3" ++ ++ const-string v1, "...-- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "4" ++ ++ const-string v1, "....- " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "5" ++ ++ const-string v1, "..... " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "6" ++ ++ const-string v1, "-.... " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "7" ++ ++ const-string v1, "--... " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "8" ++ ++ const-string v1, "---.. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "9" ++ ++ const-string v1, "----. " ++ ++ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # End of automatically generated code by textreplacegen.py ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashCtc(Ljava/lang/String;)Ljava/lang/String; ++ .locals 3 ++ ++ # called from smali/com/discord/widgets/chat/input/WidgetChatInputSend$configureSendListeners$1.smali ++ ++ # Length of command + space ++ const/4 v0, 0x5 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Move to second word interpretation ++ ++ const-string v0, "channelleak " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2 ++ ++ # Move to config value interpretation ++ ++ const/16 v0, 0xc ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "false" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v1 ++ ++ # Set value ++ ++ invoke-static {}, Lcom/discord/stores/StoreStream;->getUserSettings()Lcom/discord/stores/StoreUserSettings; ++ ++ move-result-object v0 ++ ++ invoke-virtual {v0, v1}, Lcom/discord/stores/StoreUserSettings;->setLeakChannels(Z)V ++ ++ const-string p0, "CTC: Successfully set leakchannels state." ++ ++ return-object p0 ++ ++ # Move to second secondary command's interpretation ++ ++ :cond_2 ++ const-string v0, "showtyping " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_3 ++ ++ # Move to config value interpretation ++ ++ const/16 v0, 0xb ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v0, "true" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v1 ++ ++ # Set value ++ ++ invoke-static {}, Lcom/discord/stores/StoreStream;->getUserSettings()Lcom/discord/stores/StoreUserSettings; ++ ++ move-result-object v0 ++ ++ invoke-virtual {v0, v1}, Lcom/discord/stores/StoreUserSettings;->setShowTyping(Z)V ++ ++ const-string p0, "CTC: Successfully set showtyping state." ++ ++ return-object p0 ++ ++ :cond_3 ++ const-string v0, "token " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4 ++ ++ # Move to config value interpretation ++ ++ const/16 v0, 0x6 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Set value ++ ++ invoke-static {}, Lcom/discord/stores/StoreStream;->getUserSettings()Lcom/discord/stores/StoreUserSettings; ++ ++ move-result-object v0 ++ ++ invoke-virtual {v0, p0}, Lcom/discord/stores/StoreUserSettings;->setStoredToken(Ljava/lang/String;)V ++ ++ const-string p0, "CTC: Successfully changed token. Please restart application." ++ ++ return-object p0 ++ ++ :cond_4 ++ const-string v0, "token" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_5 ++ ++ # Get value ++ ++ invoke-static {}, Lcom/discord/stores/StoreStream;->getUserSettings()Lcom/discord/stores/StoreUserSettings; ++ ++ move-result-object v0 ++ ++ invoke-virtual {v0}, Lcom/discord/stores/StoreUserSettings;->getStoredToken()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ ++ :cond_5 ++ const-string v0, "account " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_7 ++ ++ # Move to config value interpretation ++ ++ const/16 v0, 0x8 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ invoke-virtual {p0}, Ljava/lang/String;->trim()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Set value ++ ++ invoke-static {}, Lcom/discord/stores/StoreStream;->getUserSettings()Lcom/discord/stores/StoreUserSettings; ++ ++ move-result-object v0 ++ ++ invoke-virtual {v0, p0}, Lcom/discord/stores/StoreUserSettings;->getAccountToken(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ const-string v1, "none" ++ ++ invoke-virtual {p0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v1 ++ ++ if-nez v1, :cond_6 ++ ++ invoke-virtual {v0, p0}, Lcom/discord/stores/StoreUserSettings;->setStoredToken(Ljava/lang/String;)V ++ ++ const-string p0, "CTC: Successfully changed accounts. Please restart application." ++ ++ return-object p0 ++ ++ :cond_6 ++ ++ const-string p0, "CTC: No such account found." ++ ++ return-object p0 ++ ++ :cond_7 ++ const-string v0, "addaccount " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_1 ++ ++ # Get value ++ ++ const/16 v0, 0xb ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Get next space ++ ++ const-string v0, " " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I ++ ++ move-result v0 ++ ++ # const/4 v1, 0x6 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ # at this point: ++ # p0 = "$username $token" ++ # v1 = "$username" ++ ++ const-string v2, "" ++ ++ invoke-virtual {p0, v1, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ invoke-virtual {p0}, Ljava/lang/String;->trim()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ invoke-virtual {v1}, Ljava/lang/String;->trim()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ # at this point: ++ # p0 = "$token" ++ # v1 = "$username" ++ ++ invoke-static {}, Lcom/discord/stores/StoreStream;->getUserSettings()Lcom/discord/stores/StoreUserSettings; ++ ++ move-result-object v0 ++ ++ const-string v2, "current" ++ ++ invoke-virtual {p0, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_8 ++ ++ invoke-virtual {v0}, Lcom/discord/stores/StoreUserSettings;->getStoredToken()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ :cond_8 ++ invoke-virtual {v0, p0, v1}, Lcom/discord/stores/StoreUserSettings;->setAccountToken(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string p0, "CTC: Added account." ++ ++ return-object p0 ++ ++ :cond_1 ++ const-string p0, "CTC: No known command supplied. (available: token, showtyping, channelleak, addaccount, account. Everything except specified token needs to be lowercase)" ++ ++ return-object p0 ++ .end method ++ ++ .method public static final slashCommands(Ljava/lang/String;)Ljava/lang/String; ++ .locals 1 ++ ++ # Ideas for commands (by luna): lower [done], upper [done], fw [done], bold [done], shrug [done] ++ # Ideas for commands (by bela): small [done], smaller [done] ++ # Discord's defaults: me [done], tableflip [done], unflip [done], spoiler [done] ++ # More ideas: morse [done], mock, help ++ ++ # Trim input before anything ++ invoke-virtual {p0}, Ljava/lang/String;->trim()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ # Upper command ++ const-string v0, "/upper " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_1 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashUpper(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Lower command ++ :cond_1 ++ const-string v0, "/lower " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashLower(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Bold command ++ :cond_2 ++ const-string v0, "/bold " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_3 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashBold(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Spoiler command ++ :cond_3 ++ const-string v0, "/spoiler " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashSpoiler(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Me command ++ :cond_4 ++ const-string v0, "/me " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_5 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashMe(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # St (strikethrough) command ++ :cond_5 ++ const-string v0, "/st " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_6 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashSt(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Shrug command ++ :cond_6 ++ const-string v0, "/shrug" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_7 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashShrug(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Tableflip command ++ :cond_7 ++ const-string v0, "/tableflip" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_8 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashTableflip(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Unflip command ++ :cond_8 ++ const-string v0, "/unflip" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_9 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashUnflip(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Lenny command ++ :cond_9 ++ const-string v0, "/lenny" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_10 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashLenny(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Fw command ++ :cond_10 ++ const-string v0, "/fw " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_11 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashFw(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Small command ++ :cond_11 ++ const-string v0, "/small " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_12 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashSmall(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Smaller command ++ :cond_12 ++ const-string v0, "/smaller " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_13 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashSmaller(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Flip command ++ :cond_13 ++ const-string v0, "/flip " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_14 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashFlip(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Clap command ++ # *jeb voice* please clap ++ :cond_14 ++ const-string v0, "/clap " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_15 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashClap(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # OwO command ++ :cond_15 ++ const-string v0, "/owo " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_16 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashOwo(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ # Morse command ++ :cond_16 ++ const-string v0, "/morse " ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_0 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashMorse(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ goto :goto_0 ++ ++ :cond_0 ++ :goto_0 ++ # And finally, trim output before sending it back ++ invoke-virtual {p0}, Ljava/lang/String;->trim()Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ return-object p0 ++ .end method ++ ++ .method public static final interceptSendMessage(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ const-string v0, "/" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_0 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashCommands(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ :cond_0 ++ return-object p0 ++ .end method ++ ++ .method public static final interceptEditMessage(Ljava/lang/String;)Ljava/lang/String; ++ .locals 2 ++ ++ const-string v0, "/" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_0 ++ ++ invoke-static {p0}, Lcom/discord/stores/StoreMessages;->slashCommands(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p0 ++ ++ :cond_0 ++ return-object p0 ++ .end method ++ + .method public final sendMessage(JLcom/discord/models/domain/ModelUser;Ljava/lang/String;Ljava/util/List;Ljava/util/List;)Lrx/Observable; + .locals 8 + .annotation system Ldalvik/annotation/Signature; +*************** +*** 983,988 **** +--- 3763,3772 ---- + + invoke-static {p4, v0}, Lkotlin/jvm/internal/k;->h(Ljava/lang/Object;Ljava/lang/String;)V + ++ invoke-static {p4}, Lcom/discord/stores/StoreMessages;->interceptSendMessage(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object p4 ++ + const/4 v0, 0x1 + + if-eqz p6, :cond_0 +diff -crB com.discord-963-base/smali/com/discord/stores/StoreUserSettings.smali com.discord-963/smali/com/discord/stores/StoreUserSettings.smali +*** com.discord-963-base/smali/com/discord/stores/StoreUserSettings.smali 2019-10-01 22:09:20.853990424 +0300 +--- com.discord-963/smali/com/discord/stores/StoreUserSettings.smali 2019-10-01 22:47:11.025694020 +0300 +*************** +*** 1294,1299 **** +--- 1294,1474 ---- + return v0 + .end method + ++ .method public getLeakChannels()Z ++ .locals 3 ++ ++ iget-object v0, p0, Lcom/discord/stores/StoreUserSettings;->prefs:Landroid/content/SharedPreferences; ++ ++ const-string v1, "CACHE_KEY_CTC_LEAK_CHANNELS" ++ ++ const/4 v2, 0x1 ++ ++ invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z ++ ++ move-result v0 ++ ++ return v0 ++ .end method ++ ++ .method public setLeakChannels(Z)V ++ .locals 2 ++ ++ iget-object v0, p0, Lcom/discord/stores/StoreUserSettings;->prefs:Landroid/content/SharedPreferences; ++ ++ invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; ++ ++ move-result-object v0 ++ ++ const-string v1, "CACHE_KEY_CTC_LEAK_CHANNELS" ++ ++ invoke-interface {v0, v1, p1}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; ++ ++ move-result-object p1 ++ ++ invoke-interface {p1}, Landroid/content/SharedPreferences$Editor;->apply()V ++ ++ return-void ++ .end method ++ ++ .method public getShowTyping()Z ++ .locals 3 ++ ++ iget-object v0, p0, Lcom/discord/stores/StoreUserSettings;->prefs:Landroid/content/SharedPreferences; ++ ++ const-string v1, "CACHE_KEY_CTC_SHOW_TYPING" ++ ++ const/4 v2, 0x1 ++ ++ invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z ++ ++ move-result v0 ++ ++ return v0 ++ .end method ++ ++ .method public setShowTyping(Z)V ++ .locals 2 ++ ++ iget-object v0, p0, Lcom/discord/stores/StoreUserSettings;->prefs:Landroid/content/SharedPreferences; ++ ++ invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; ++ ++ move-result-object v0 ++ ++ const-string v1, "CACHE_KEY_CTC_SHOW_TYPING" ++ ++ invoke-interface {v0, v1, p1}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; ++ ++ move-result-object p1 ++ ++ invoke-interface {p1}, Landroid/content/SharedPreferences$Editor;->apply()V ++ ++ return-void ++ .end method ++ ++ ++ .method public getStoredToken()Ljava/lang/String; ++ .locals 3 ++ ++ iget-object v0, p0, Lcom/discord/stores/StoreAuthentication;->prefs:Landroid/content/SharedPreferences; ++ ++ const-string v1, "none" ++ ++ const-string v2, "STORE_AUTHED_TOKEN" ++ ++ invoke-interface {v0, v2, v1}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++ .end method ++ ++ ++ .method public setStoredToken(Ljava/lang/String;)V ++ .locals 2 ++ ++ iget-object v0, p0, Lcom/discord/stores/StoreAuthentication;->prefs:Landroid/content/SharedPreferences; ++ ++ invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; ++ ++ move-result-object v0 ++ ++ const-string v1, "STORE_AUTHED_TOKEN" ++ ++ invoke-interface {v0, v1, p1}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; ++ ++ move-result-object p1 ++ ++ invoke-interface {p1}, Landroid/content/SharedPreferences$Editor;->apply()V ++ ++ return-void ++ .end method ++ ++ .method public getAccountToken(Ljava/lang/String;)Ljava/lang/String; ++ .locals 3 ++ ++ const-string v2, "STORE_AUTHED_TOKEN_CTC_USER_" ++ ++ invoke-virtual {p1}, Ljava/lang/String;->toUpperCase()Ljava/lang/String; ++ ++ move-result-object p1 ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v0, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ iget-object v0, p0, Lcom/discord/stores/StoreAuthentication;->prefs:Landroid/content/SharedPreferences; ++ ++ const-string v1, "none" ++ ++ invoke-interface {v0, v2, v1}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++ .end method ++ ++ ++ .method public setAccountToken(Ljava/lang/String;Ljava/lang/String;)V ++ .locals 2 ++ ++ const-string v1, "STORE_AUTHED_TOKEN_CTC_USER_" ++ ++ invoke-virtual {p1}, Ljava/lang/String;->toUpperCase()Ljava/lang/String; ++ ++ move-result-object p1 ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iget-object v0, p0, Lcom/discord/stores/StoreAuthentication;->prefs:Landroid/content/SharedPreferences; ++ ++ invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; ++ ++ move-result-object v0 ++ ++ invoke-interface {v0, v1, p2}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; ++ ++ move-result-object p1 ++ ++ invoke-interface {p1}, Landroid/content/SharedPreferences$Editor;->apply()V ++ ++ return-void ++ .end method ++ + .method handleConnectionOpen(Lcom/discord/models/domain/ModelPayload;)V + .locals 0 + +Only in com.discord-963/smali/com/discord/stores: StoreUserSettings.smali.orig +diff -crB com.discord-963-base/smali/com/discord/widgets/chat/input/WidgetChatInputEditText$1.smali com.discord-963/smali/com/discord/widgets/chat/input/WidgetChatInputEditText$1.smali +*** com.discord-963-base/smali/com/discord/widgets/chat/input/WidgetChatInputEditText$1.smali 2019-10-01 22:09:21.107325442 +0300 +--- com.discord-963/smali/com/discord/widgets/chat/input/WidgetChatInputEditText$1.smali 2019-10-01 22:47:11.025694020 +0300 +*************** +*** 55,60 **** +--- 55,70 ---- + + invoke-virtual {v0}, Lcom/discord/widgets/chat/input/WidgetChatInputEditText;->saveText()V + ++ invoke-static {}, Lcom/discord/stores/StoreStream;->getUserSettings()Lcom/discord/stores/StoreUserSettings; ++ ++ move-result-object v0 ++ ++ invoke-virtual {v0}, Lcom/discord/stores/StoreUserSettings;->getShowTyping()Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_1 ++ + .line 222 + invoke-static {p1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z + +Only in com.discord-963/smali/com/discord/widgets/chat/input: WidgetChatInputEditText$1.smali.orig +diff -crB com.discord-963-base/smali/com/discord/widgets/chat/input/WidgetChatInputSend$configureSendListeners$1.smali com.discord-963/smali/com/discord/widgets/chat/input/WidgetChatInputSend$configureSendListeners$1.smali +*** com.discord-963-base/smali/com/discord/widgets/chat/input/WidgetChatInputSend$configureSendListeners$1.smali 2019-10-01 22:09:21.110658797 +0300 +--- com.discord-963/smali/com/discord/widgets/chat/input/WidgetChatInputSend$configureSendListeners$1.smali 2019-10-01 22:47:11.025694020 +0300 +*************** +*** 371,376 **** +--- 371,402 ---- + + move-result-object v10 + ++ # intercept send here ++ ++ const-string v11, "/ctc " ++ ++ invoke-virtual {v10, v11}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v11 ++ ++ if-eqz v11, :cond_6 ++ ++ invoke-static {v10}, Lcom/discord/stores/StoreMessages;->slashCtc(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ sget-object p1, Lcom/discord/widgets/chat/input/WidgetChatInputSend;->INSTANCE:Lcom/discord/widgets/chat/input/WidgetChatInputSend; ++ ++ iget-object v0, p0, Lcom/discord/widgets/chat/input/WidgetChatInputSend$configureSendListeners$1;->$chatInput:Lcom/discord/widgets/chat/input/WidgetChatInputEditText; ++ ++ invoke-static {p1, v0, v10}, Lcom/discord/widgets/chat/input/WidgetChatInputSend;->access$SetInput(Lcom/discord/widgets/chat/input/WidgetChatInputSend;Lcom/discord/widgets/chat/input/WidgetChatInputEditText;Ljava/lang/CharSequence;)Z ++ ++ move-result p1 ++ ++ return p1 ++ ++ :cond_6 ++ + invoke-static {v10, v2}, Lkotlin/jvm/internal/k;->g(Ljava/lang/Object;Ljava/lang/String;)V + + .line 74 +Only in com.discord-963/smali/com/discord/widgets/chat/input: WidgetChatInputSend$configureSendListeners$1.smali.orig +diff -crB com.discord-963-base/smali/com/discord/widgets/chat/input/WidgetChatInputSend.smali com.discord-963/smali/com/discord/widgets/chat/input/WidgetChatInputSend.smali +*** com.discord-963-base/smali/com/discord/widgets/chat/input/WidgetChatInputSend.smali 2019-10-01 22:09:21.110658797 +0300 +--- com.discord-963/smali/com/discord/widgets/chat/input/WidgetChatInputSend.smali 2019-10-01 22:47:11.025694020 +0300 +*************** +*** 60,65 **** +--- 60,89 ---- + return p0 + .end method + ++ .method public static final access$SetInput(Lcom/discord/widgets/chat/input/WidgetChatInputSend;Lcom/discord/widgets/chat/input/WidgetChatInputEditText;Ljava/lang/CharSequence;)Z ++ .locals 1 ++ ++ .line 147 ++ invoke-virtual {p1, p2}, Lcom/discord/widgets/chat/input/WidgetChatInputEditText;->setText(Ljava/lang/CharSequence;)V ++ ++ .line 148 ++ invoke-virtual {p1}, Lcom/discord/widgets/chat/input/WidgetChatInputEditText;->clearLastTypingEmission()V ++ ++ .line 151 ++ invoke-static {}, Lcom/discord/stores/StoreStream;->getChat()Lcom/discord/stores/StoreChat; ++ ++ move-result-object p1 ++ ++ const/4 v0, 0x0 ++ ++ .line 152 ++ invoke-virtual {p1, v0}, Lcom/discord/stores/StoreChat;->setEditingMessage(Lcom/discord/stores/StoreChat$EditingMessage;)V ++ ++ const/4 p1, 0x1 ++ ++ return p1 ++ .end method ++ + .method private final clearInput(Lcom/discord/widgets/chat/input/WidgetChatInputEditText;)Z + .locals 1 + + diff --git a/patches/slashcommands/README.md b/patches/slashcommands/README.md index c641fe9..0c08d11 100644 --- a/patches/slashcommands/README.md +++ b/patches/slashcommands/README.md @@ -54,4 +54,5 @@ Commands like fw can be generated by `textreplacegen.py` or `textreplacegen-arra - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/smalltime/963.patch b/patches/smalltime/963.patch new file mode 100644 index 0000000..417c8d6 --- /dev/null +++ b/patches/smalltime/963.patch @@ -0,0 +1,190 @@ +diff -crB from/smali_classes2/com/miguelgaeta/simple_time/SimpleTime.smali to/smali_classes2/com/miguelgaeta/simple_time/SimpleTime.smali +*** from/smali_classes2/com/miguelgaeta/simple_time/SimpleTime.smali 2019-05-12 12:13:48.187878981 +0300 +--- to/smali_classes2/com/miguelgaeta/simple_time/SimpleTime.smali 2019-05-12 12:15:32.663889927 +0300 +*************** +*** 239,411 **** + .end method + + .method public toReadableTimeString(Ljava/lang/Long;)Ljava/lang/String; +! .locals 6 +! +! .line 126 +! invoke-virtual {p0}, Lcom/miguelgaeta/simple_time/SimpleTime;->currentTimeMillis()J +! +! move-result-wide v0 +! +! invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; +! +! move-result-object v0 +! +! invoke-virtual {p0, v0}, Lcom/miguelgaeta/simple_time/SimpleTime;->toCalendar(Ljava/lang/Long;)Ljava/util/Calendar; +! +! move-result-object v0 +! +! const/4 v1, 0x0 +! +! const/16 v2, 0xb +! +! .line 128 +! invoke-virtual {v0, v2, v1}, Ljava/util/Calendar;->set(II)V +! +! const/16 v2, 0xc +! +! .line 129 +! invoke-virtual {v0, v2, v1}, Ljava/util/Calendar;->set(II)V +! +! const/16 v2, 0xd +! +! .line 130 +! invoke-virtual {v0, v2, v1}, Ljava/util/Calendar;->set(II)V +! +! const/16 v2, 0xe +! +! .line 131 +! invoke-virtual {v0, v2, v1}, Ljava/util/Calendar;->set(II)V +! +! .line 133 +! iget-object v1, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->locale:Ljava/util/Locale; +! +! invoke-virtual {v1}, Ljava/util/Locale;->getLanguage()Ljava/lang/String; +! +! move-result-object v1 +! +! const-string v2, "en" +! +! invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z +! +! move-result v1 +! +! if-nez v1, :cond_1 +! +! .line 136 +! invoke-virtual {p1}, Ljava/lang/Long;->longValue()J +! +! move-result-wide v1 +! +! invoke-virtual {v0}, Ljava/util/Calendar;->getTimeInMillis()J +! +! move-result-wide v3 +! +! cmp-long v0, v1, v3 +! +! if-lez v0, :cond_0 +! +! .line 137 + iget-object v0, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterTime:Ljava/text/DateFormat; + + invoke-virtual {v0, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String; + +- move-result-object p1 +- +- return-object p1 +- +- .line 139 +- :cond_0 +- iget-object v0, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterDateTime:Ljava/text/DateFormat; +- +- invoke-virtual {v0, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String; +- +- move-result-object p1 +- +- return-object p1 +- +- .line 143 +- :cond_1 +- invoke-virtual {p1}, Ljava/lang/Long;->longValue()J +- +- move-result-wide v1 +- +- invoke-virtual {v0}, Ljava/util/Calendar;->getTimeInMillis()J +- +- move-result-wide v3 +- +- cmp-long v5, v1, v3 +- +- if-lez v5, :cond_2 +- +- .line 144 +- new-instance v0, Ljava/lang/StringBuilder; +- +- const-string v1, "Today at " +- +- invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +- +- iget-object v1, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterTime:Ljava/text/DateFormat; +- +- invoke-virtual {v1, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String; +- +- move-result-object p1 +- +- invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +- +- invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +- +- move-result-object p1 +- +- return-object p1 +- +- :cond_2 +- const/4 v1, 0x5 +- +- const/4 v2, -0x1 +- +- .line 147 +- invoke-virtual {v0, v1, v2}, Ljava/util/Calendar;->add(II)V +- +- .line 149 +- invoke-virtual {p1}, Ljava/lang/Long;->longValue()J +- +- move-result-wide v1 +- +- invoke-virtual {v0}, Ljava/util/Calendar;->getTimeInMillis()J +- +- move-result-wide v3 +- +- cmp-long v0, v1, v3 +- +- if-lez v0, :cond_3 +- +- .line 150 +- new-instance v0, Ljava/lang/StringBuilder; +- +- const-string v1, "Yesterday at " +- +- invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V +- +- iget-object v1, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterTime:Ljava/text/DateFormat; +- +- invoke-virtual {v1, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String; +- +- move-result-object p1 +- +- invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +- +- invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +- +- move-result-object p1 +- +- return-object p1 +- +- .line 153 +- :cond_3 +- iget-object v0, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterDateTime:Ljava/text/DateFormat; +- +- invoke-virtual {v0, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String; +- + move-result-object p1 + + return-object p1 +--- 239,249 ---- + .end method + + .method public toReadableTimeString(Ljava/lang/Long;)Ljava/lang/String; +! .locals 1 + iget-object v0, p0, Lcom/miguelgaeta/simple_time/SimpleTime;->formatterTime:Ljava/text/DateFormat; + + invoke-virtual {v0, p1}, Ljava/text/DateFormat;->format(Ljava/lang/Object;)Ljava/lang/String; + + move-result-object p1 + + return-object p1 diff --git a/patches/smalltime/README.md b/patches/smalltime/README.md index 7a19a9f..3aa7599 100644 --- a/patches/smalltime/README.md +++ b/patches/smalltime/README.md @@ -42,4 +42,5 @@ This patch replaces the long time string with just a simple time string. This is - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/squareavatars/963.patch b/patches/squareavatars/963.patch new file mode 100644 index 0000000..18e7503 --- /dev/null +++ b/patches/squareavatars/963.patch @@ -0,0 +1,21 @@ +diff -crB from/res/values/styles.xml to/res/values/styles.xml +*** from/res/values/styles.xml 2019-10-01 22:09:17.070631936 +0300 +--- to/res/values/styles.xml 2019-10-01 22:10:25.744421867 +0300 +*************** +*** 853,859 **** + <item name="actualImageScaleType">fitCenter</item> + <item name="placeholderImage">@drawable/asset_default_avatar_32dp</item> + <item name="placeholderImageScaleType">fitCenter</item> +! <item name="roundAsCircle">true</item> + </style> + <style name="Avatar.Chat" parent="@style/Avatar.Large"> + <item name="android:layout_width">@dimen/avatar_size_chat</item> +--- 853,860 ---- + <item name="actualImageScaleType">fitCenter</item> + <item name="placeholderImage">@drawable/asset_default_avatar_32dp</item> + <item name="placeholderImageScaleType">fitCenter</item> +! <item name="roundAsCircle">false</item> +! <item name="roundedCornerRadius">3dp</item> + </style> + <style name="Avatar.Chat" parent="@style/Avatar.Large"> + <item name="android:layout_width">@dimen/avatar_size_chat</item> diff --git a/patches/squareavatars/README.md b/patches/squareavatars/README.md index f29c803..e84857c 100644 --- a/patches/squareavatars/README.md +++ b/patches/squareavatars/README.md @@ -44,4 +44,5 @@ A very small amount of rounding is applied to make it look a little better. - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patches/tokenlogin/963.patch b/patches/tokenlogin/963.patch new file mode 100644 index 0000000..bbf5d71 --- /dev/null +++ b/patches/tokenlogin/963.patch @@ -0,0 +1,33 @@ +diff -crB from/smali/com/discord/widgets/auth/WidgetAuthLogin.smali to/smali/com/discord/widgets/auth/WidgetAuthLogin.smali +*** from/smali/com/discord/widgets/auth/WidgetAuthLogin.smali 2019-10-01 22:09:21.033991621 +0300 +--- to/smali/com/discord/widgets/auth/WidgetAuthLogin.smali 2019-10-01 22:10:29.801115506 +0300 +*************** +*** 927,932 **** +--- 927,953 ---- + + move-result-object v3 + ++ # tokenlogin code ++ ++ const-string v6, "tokenlogin" ++ ++ invoke-virtual {v2, v6}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z ++ ++ move-result v6 ++ ++ if-eqz v6, :cond_2 ++ ++ invoke-static {}, Lcom/discord/stores/StoreStream;->getUserSettings()Lcom/discord/stores/StoreUserSettings; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v6, v3}, Lcom/discord/stores/StoreUserSettings;->setStoredToken(Ljava/lang/String;)V ++ ++ return-void ++ ++ # end of new code (except conf below, that's also new) ++ ++ :cond_2 + invoke-virtual {v0, v2, v3, p1, p2}, Lcom/discord/stores/StoreAuthentication;->login(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lrx/Observable; + + move-result-object p1 diff --git a/patches/tokenlogin/README.md b/patches/tokenlogin/README.md index 2bd2833..b6a682a 100644 --- a/patches/tokenlogin/README.md +++ b/patches/tokenlogin/README.md @@ -21,3 +21,4 @@ This patch relies on some stuff I added with slashcommands, so please use that p - 9.4.6 - 9.4.7 - 9.4.8 +- 9.6.3 diff --git a/patchport-state.json b/patchport-state.json index 8b2b031..3ce8c3c 100644 --- a/patchport-state.json +++ b/patchport-state.json @@ -1 +1 @@ -{"versionname": "9.4.8", "versioncode": "948"} \ No newline at end of file +{"versionname": "9.6.3", "versioncode": "963"} \ No newline at end of file