From 687c9f7eb03cca5f7b3486f07f2e3453ebc77faf Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Fri, 12 Jul 2024 21:04:12 +0400 Subject: [PATCH 01/50] fix(YouTube - Hide keyword content): Do not hide flyout menu --- src/main/resources/addresources/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml index bf15113d1..480c43f2c 100644 --- a/src/main/resources/addresources/values/strings.xml +++ b/src/main/resources/addresources/values/strings.xml @@ -248,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Invalid keyword. Cannot use: \'%s\' as a filter Invalid keyword. \'%1$s\' is less than %2$d characters - Keyword \'$s\' will hide all videos + Keyword \'%s\' will hide all videos Hide general ads From bd41a1c782b5cc513f4d754da5aef2dff93cfb5b Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 12 Jul 2024 18:17:37 +0000 Subject: [PATCH 02/50] chore(release): 4.11.1-dev.1 [skip ci] ## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12) ### Bug Fixes * **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1f09ee13..fbfacaca0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12) + + +### Bug Fixes + +* **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf)) + # [4.11.0](https://github.com/ReVanced/revanced-patches/compare/v4.10.0...v4.11.0) (2024-07-11) diff --git a/gradle.properties b/gradle.properties index 11bb63e82..7dd0ed8d3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.11.0 +version = 4.11.1-dev.1 From 92a93c51110dd82de7889bdb86d04bac186d0803 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sat, 13 Jul 2024 00:43:59 +0200 Subject: [PATCH 03/50] ci: Correct usage of repository variable --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 84ac54421..8cf1d3a61 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,7 +42,7 @@ jobs: with: gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} passphrase: ${{ secrets.GPG_PASSPHRASE }} - fingerprint: ${{ env.GPG_FINGERPRINT }} + fingerprint: ${{ vars.GPG_FINGERPRINT }} - name: Release env: From c3e014f7ba2342d220b13264e7b88fb5fc0ad3d8 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 12 Jul 2024 22:45:58 +0000 Subject: [PATCH 04/50] chore(release): 4.11.1-dev.1 [skip ci] ## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12) ### Bug Fixes * **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf)) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fbfacaca0..f36506e8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ ## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12) +### Bug Fixes + +* **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf)) + +## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12) + + ### Bug Fixes * **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf)) From 4de86c6407376bcd3cc0513a2f0707410b8d7ccd Mon Sep 17 00:00:00 2001 From: LightCat <13179138+BenCat07@users.noreply.github.com> Date: Sun, 14 Jul 2024 01:43:48 +0200 Subject: [PATCH 05/50] feat(SoundCloud): Add `Enable offline sync` patch (#3407) Co-authored-by: bewzusore Co-authored-by: oSumAtrIX Co-authored-by: BenCat07 --- api/revanced-patches.api | 6 ++ .../patches/soundcloud/ad/HideAdsPatch.kt | 2 +- .../offlinesync/EnableOfflineSyncPatch.kt | 83 +++++++++++++++++++ ...OperationsHeaderVerificationFingerprint.kt | 21 +++++ ...DownloadOperationsURLBuilderFingerprint.kt | 20 +++++ .../FeatureConstructorFingerprint.kt | 2 +- 6 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsHeaderVerificationFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsURLBuilderFingerprint.kt rename src/main/kotlin/app/revanced/patches/soundcloud/{ad => shared}/fingerprints/FeatureConstructorFingerprint.kt (88%) diff --git a/api/revanced-patches.api b/api/revanced-patches.api index 4530ff7cb..4b518d1d4 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -1050,6 +1050,12 @@ public final class app/revanced/patches/soundcloud/analytics/DisableTelemetryPat public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } +public final class app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch : app/revanced/patcher/patch/BytecodePatch { + public static final field INSTANCE Lapp/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch; + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V +} + public final class app/revanced/patches/spotify/layout/theme/CustomThemePatch : app/revanced/patcher/patch/ResourcePatch { public static final field INSTANCE Lapp/revanced/patches/spotify/layout/theme/CustomThemePatch; public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/ad/HideAdsPatch.kt b/src/main/kotlin/app/revanced/patches/soundcloud/ad/HideAdsPatch.kt index 402fa464f..4f538458a 100644 --- a/src/main/kotlin/app/revanced/patches/soundcloud/ad/HideAdsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/soundcloud/ad/HideAdsPatch.kt @@ -10,7 +10,7 @@ import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.util.smali.ExternalLabel import app.revanced.patches.soundcloud.ad.fingerprints.InterceptFingerprint -import app.revanced.patches.soundcloud.ad.fingerprints.FeatureConstructorFingerprint +import app.revanced.patches.soundcloud.shared.fingerprints.FeatureConstructorFingerprint import app.revanced.patches.soundcloud.ad.fingerprints.UserConsumerPlanConstructorFingerprint import app.revanced.util.resultOrThrow diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt new file mode 100644 index 000000000..b6795e4a8 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt @@ -0,0 +1,83 @@ +package app.revanced.patches.soundcloud.offlinesync + +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction +import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.extensions.InstructionExtensions.getInstructions +import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotation.CompatiblePackage +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patcher.util.smali.ExternalLabel +import app.revanced.patches.soundcloud.offlinesync.fingerprints.DownloadOperationsHeaderVerificationFingerprint +import app.revanced.patches.soundcloud.offlinesync.fingerprints.DownloadOperationsURLBuilderFingerprint +import app.revanced.patches.soundcloud.shared.fingerprints.FeatureConstructorFingerprint +import app.revanced.util.getReference +import app.revanced.util.resultOrThrow +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +import com.android.tools.smali.dexlib2.iface.reference.FieldReference + +@Patch( + name = "Enable offline sync", + compatiblePackages = [CompatiblePackage("com.soundcloud.android")], +) +@Suppress("unused") +object EnableOfflineSyncPatch : BytecodePatch( + setOf( + FeatureConstructorFingerprint, DownloadOperationsURLBuilderFingerprint, + DownloadOperationsHeaderVerificationFingerprint + ), +) { + override fun execute(context: BytecodeContext) { + // Enable the feature to allow offline track syncing by modifying the JSON server response. + // This method is the constructor of a class representing a "Feature" object parsed from JSON data. + // p1 is the name of the feature. + // p2 is true if the feature is enabled, false otherwise. + FeatureConstructorFingerprint.resultOrThrow().mutableMethod.apply { + val afterCheckNotNullIndex = 2 + + addInstructionsWithLabels( + afterCheckNotNullIndex, + """ + const-string v0, "offline_sync" + invoke-virtual { p1, v0 }, Ljava/lang/String;->equals(Ljava/lang/Object;)Z + move-result v0 + if-eqz v0, :skip + const/4 p2, 0x1 + """, + ExternalLabel("skip", getInstruction(afterCheckNotNullIndex)), + ) + } + + // Patch the URL builder to use the HTTPS_STREAM endpoint + // instead of the offline sync endpoint to downloading the track. + DownloadOperationsURLBuilderFingerprint.resultOrThrow().mutableMethod.apply { + val getEndpointsEnumFieldIndex = 1 + val getEndpointsEnumFieldInstruction = getInstruction(getEndpointsEnumFieldIndex) + + val targetRegister = getEndpointsEnumFieldInstruction.registerA + val endpointsType = getEndpointsEnumFieldInstruction.getReference()!!.type + + replaceInstruction( + getEndpointsEnumFieldIndex, + "sget-object v$targetRegister, $endpointsType->HTTPS_STREAM:$endpointsType" + ) + } + + // The HTTPS_STREAM endpoint does not return the necessary headers for offline sync. + // Mock the headers to prevent the app from crashing by setting them to empty strings. + // The headers are all cosmetic and do not affect the functionality of the app. + DownloadOperationsHeaderVerificationFingerprint.resultOrThrow().mutableMethod.apply { + // The first three null checks need to be patched. + getInstructions().asSequence().filter { + it.opcode == Opcode.IF_EQZ + }.take(3).map { it.location.index }.forEach { nullCheckIndex -> + val headerStringRegister = getInstruction(nullCheckIndex).registerA + + addInstruction(nullCheckIndex, "const-string v$headerStringRegister, \"\"") + } + } + } +} diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsHeaderVerificationFingerprint.kt b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsHeaderVerificationFingerprint.kt new file mode 100644 index 000000000..e3629c788 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsHeaderVerificationFingerprint.kt @@ -0,0 +1,21 @@ +package app.revanced.patches.soundcloud.offlinesync.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +internal object DownloadOperationsHeaderVerificationFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = listOf("L","L"), + opcodes = listOf( + Opcode.CONST_STRING, + Opcode.INVOKE_VIRTUAL, + Opcode.MOVE_RESULT_OBJECT, + Opcode.CONST_STRING + ), + customFingerprint = { _, classDef -> + classDef.sourceFile == "DownloadOperations.kt" + } +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsURLBuilderFingerprint.kt b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsURLBuilderFingerprint.kt new file mode 100644 index 000000000..5394658e5 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsURLBuilderFingerprint.kt @@ -0,0 +1,20 @@ +package app.revanced.patches.soundcloud.offlinesync.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +internal object DownloadOperationsURLBuilderFingerprint : MethodFingerprint( + returnType = "Ljava/lang/String", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = listOf("L","L"), + opcodes = listOf( + Opcode.IGET_OBJECT, + Opcode.SGET_OBJECT, + Opcode.FILLED_NEW_ARRAY + ), + customFingerprint = { _, classDef -> + classDef.sourceFile == "DownloadOperations.kt" + } +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/ad/fingerprints/FeatureConstructorFingerprint.kt b/src/main/kotlin/app/revanced/patches/soundcloud/shared/fingerprints/FeatureConstructorFingerprint.kt similarity index 88% rename from src/main/kotlin/app/revanced/patches/soundcloud/ad/fingerprints/FeatureConstructorFingerprint.kt rename to src/main/kotlin/app/revanced/patches/soundcloud/shared/fingerprints/FeatureConstructorFingerprint.kt index c6d93f491..6506ebab2 100644 --- a/src/main/kotlin/app/revanced/patches/soundcloud/ad/fingerprints/FeatureConstructorFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/soundcloud/shared/fingerprints/FeatureConstructorFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.soundcloud.ad.fingerprints +package app.revanced.patches.soundcloud.shared.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint From d37184d6bdc8f22c86acabe327e6bd54212f70ad Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 13 Jul 2024 23:45:56 +0000 Subject: [PATCH 06/50] chore(release): 4.12.0-dev.1 [skip ci] # [4.12.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.1-dev.1...v4.12.0-dev.1) (2024-07-13) ### Features * **SoundCloud:** Add `Enable offline sync` patch ([#3407](https://github.com/ReVanced/revanced-patches/issues/3407)) ([4de86c6](https://github.com/ReVanced/revanced-patches/commit/4de86c6407376bcd3cc0513a2f0707410b8d7ccd)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f36506e8a..33c0112a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.1-dev.1...v4.12.0-dev.1) (2024-07-13) + + +### Features + +* **SoundCloud:** Add `Enable offline sync` patch ([#3407](https://github.com/ReVanced/revanced-patches/issues/3407)) ([4de86c6](https://github.com/ReVanced/revanced-patches/commit/4de86c6407376bcd3cc0513a2f0707410b8d7ccd)) + ## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12) diff --git a/gradle.properties b/gradle.properties index 7dd0ed8d3..320c7cba7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.11.1-dev.1 +version = 4.12.0-dev.1 From 765fab2af2769349446cc0f2109343ef3bd8c621 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Mon, 15 Jul 2024 02:56:12 +0400 Subject: [PATCH 07/50] feat(YouTube): Add `Bypass image region restrictions` patch (#3442) Co-authored-by: oSumAtrIX --- api/revanced-patches.api | 16 ++ .../thumbnails/AlternativeThumbnailsPatch.kt | 140 +----------------- .../BypassImageRegionRestrictions.kt | 71 +++++++++ .../misc/imageurlhook/CronetImageUrlHook.kt | 134 +++++++++++++++++ .../MessageDigestImageUrlFingerprint.kt | 2 +- .../MessageDigestImageUrlParentFingerprint.kt | 2 +- .../fingerprints/cronet/RequestFingerprint.kt | 4 +- .../request/callback/OnFailureFingerprint.kt | 2 +- .../callback/OnResponseStartedFingerprint.kt | 2 +- .../callback/OnSucceededFingerprint.kt | 2 +- .../resources/addresources/values/strings.xml | 5 + 11 files changed, 240 insertions(+), 140 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/MessageDigestImageUrlFingerprint.kt (84%) rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/MessageDigestImageUrlParentFingerprint.kt (86%) rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/cronet/RequestFingerprint.kt (81%) rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/cronet/request/callback/OnFailureFingerprint.kt (89%) rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt (91%) rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt (88%) diff --git a/api/revanced-patches.api b/api/revanced-patches.api index 4b518d1d4..35e283213 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -1724,6 +1724,12 @@ public final class app/revanced/patches/youtube/layout/thumbnails/AlternativeThu public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } +public final class app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions : app/revanced/patcher/patch/BytecodePatch { + public static final field INSTANCE Lapp/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions; + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V +} + public final class app/revanced/patches/youtube/misc/announcements/AnnouncementsPatch : app/revanced/patcher/patch/BytecodePatch { public static final field INSTANCE Lapp/revanced/patches/youtube/misc/announcements/AnnouncementsPatch; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V @@ -1790,6 +1796,16 @@ public final class app/revanced/patches/youtube/misc/gms/GmsCoreSupportResourceP public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V } +public final class app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook : app/revanced/patcher/patch/BytecodePatch { + public static final field INSTANCE Lapp/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook; + public final fun addImageUrlErrorCallbackHook (Ljava/lang/String;)V + public final fun addImageUrlHook (Ljava/lang/String;Z)V + public static synthetic fun addImageUrlHook$default (Lapp/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook;Ljava/lang/String;ZILjava/lang/Object;)V + public final fun addImageUrlSuccessCallbackHook (Ljava/lang/String;)V + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V +} + public final class app/revanced/patches/youtube/misc/integrations/IntegrationsPatch : app/revanced/patches/shared/misc/integrations/BaseIntegrationsPatch { public static final field INSTANCE Lapp/revanced/patches/youtube/misc/integrations/IntegrationsPatch; } diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt index 86b7a4925..095d567c7 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt @@ -1,36 +1,18 @@ package app.revanced.patches.youtube.layout.thumbnails import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstruction -import app.revanced.patcher.extensions.InstructionExtensions.addInstructions -import app.revanced.patcher.extensions.InstructionExtensions.getInstructions -import app.revanced.patcher.fingerprint.MethodFingerprint import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.Patch -import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod -import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable import app.revanced.patches.all.misc.resources.AddResourcesPatch import app.revanced.patches.shared.misc.settings.preference.ListPreference import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.shared.misc.settings.preference.TextPreference -import app.revanced.patches.youtube.layout.thumbnails.fingerprints.MessageDigestImageUrlFingerprint -import app.revanced.patches.youtube.layout.thumbnails.fingerprints.MessageDigestImageUrlParentFingerprint -import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.RequestFingerprint -import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnFailureFingerprint -import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnResponseStartedFingerprint -import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnSucceededFingerprint +import app.revanced.patches.youtube.misc.imageurlhook.CronetImageUrlHook import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch import app.revanced.patches.youtube.misc.settings.SettingsPatch -import app.revanced.util.resultOrThrow -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode -import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation -import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction -import com.android.tools.smali.dexlib2.iface.reference.FieldReference -import com.android.tools.smali.dexlib2.immutable.ImmutableMethod @Patch( name = "Alternative thumbnails", @@ -39,7 +21,8 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod IntegrationsPatch::class, SettingsPatch::class, AddResourcesPatch::class, - NavigationBarHookPatch::class + NavigationBarHookPatch::class, + CronetImageUrlHook::class ], compatiblePackages = [ CompatiblePackage( @@ -74,65 +57,10 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod ], ) @Suppress("unused") -object AlternativeThumbnailsPatch : BytecodePatch( - setOf( - MessageDigestImageUrlParentFingerprint, - OnResponseStartedFingerprint, - RequestFingerprint, - ), -) { +object AlternativeThumbnailsPatch : BytecodePatch(emptySet()) { private const val INTEGRATIONS_CLASS_DESCRIPTOR = "Lapp/revanced/integrations/youtube/patches/AlternativeThumbnailsPatch;" - private lateinit var loadImageUrlMethod: MutableMethod - private var loadImageUrlIndex = 0 - - private lateinit var loadImageSuccessCallbackMethod: MutableMethod - private var loadImageSuccessCallbackIndex = 0 - - private lateinit var loadImageErrorCallbackMethod: MutableMethod - private var loadImageErrorCallbackIndex = 0 - - /** - * @param highPriority If the hook should be called before all other hooks. - */ - @Suppress("SameParameterValue") - private fun addImageUrlHook(targetMethodClass: String, highPriority: Boolean) { - loadImageUrlMethod.addInstructions( - if (highPriority) 0 else loadImageUrlIndex, - """ - invoke-static { p1 }, $targetMethodClass->overrideImageURL(Ljava/lang/String;)Ljava/lang/String; - move-result-object p1 - """, - ) - loadImageUrlIndex += 2 - } - - /** - * If a connection completed, which includes normal 200 responses but also includes - * status 404 and other error like http responses. - */ - @Suppress("SameParameterValue") - private fun addImageUrlSuccessCallbackHook(targetMethodClass: String) { - loadImageSuccessCallbackMethod.addInstruction( - loadImageSuccessCallbackIndex++, - "invoke-static { p1, p2 }, $targetMethodClass->handleCronetSuccess(" + - "Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;)V", - ) - } - - /** - * If a connection outright failed to complete any connection. - */ - @Suppress("SameParameterValue") - private fun addImageUrlErrorCallbackHook(targetMethodClass: String) { - loadImageErrorCallbackMethod.addInstruction( - loadImageErrorCallbackIndex++, - "invoke-static { p1, p2, p3 }, $targetMethodClass->handleCronetFailure(" + - "Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;Ljava/io/IOException;)V", - ) - } - override fun execute(context: BytecodeContext) { AddResourcesPatch(this::class) @@ -177,62 +105,8 @@ object AlternativeThumbnailsPatch : BytecodePatch( ListPreference("revanced_alt_thumbnail_stills_time", summaryKey = null) ) - fun MethodFingerprint.alsoResolve(fingerprint: MethodFingerprint) = - also { resolve(context, fingerprint.resultOrThrow().classDef) }.resultOrThrow() - - fun MethodFingerprint.resolveAndLetMutableMethod( - fingerprint: MethodFingerprint, - block: (MutableMethod) -> Unit, - ) = alsoResolve(fingerprint).also { block(it.mutableMethod) } - - MessageDigestImageUrlFingerprint.resolveAndLetMutableMethod(MessageDigestImageUrlParentFingerprint) { - loadImageUrlMethod = it - addImageUrlHook(INTEGRATIONS_CLASS_DESCRIPTOR, true) - } - - OnSucceededFingerprint.resolveAndLetMutableMethod(OnResponseStartedFingerprint) { - loadImageSuccessCallbackMethod = it - addImageUrlSuccessCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR) - } - - OnFailureFingerprint.resolveAndLetMutableMethod(OnResponseStartedFingerprint) { - loadImageErrorCallbackMethod = it - addImageUrlErrorCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR) - } - - // The URL is required for the failure callback hook, but the URL field is obfuscated. - // Add a helper get method that returns the URL field. - RequestFingerprint.resultOrThrow().apply { - // The url is the only string field that is set inside the constructor. - val urlFieldInstruction = mutableMethod.getInstructions().first { - if (it.opcode != Opcode.IPUT_OBJECT) return@first false - - val reference = (it as ReferenceInstruction).reference as FieldReference - reference.type == "Ljava/lang/String;" - } as ReferenceInstruction - - val urlFieldName = (urlFieldInstruction.reference as FieldReference).name - val definingClass = RequestFingerprint.IMPLEMENTATION_CLASS_NAME - val addedMethodName = "getHookedUrl" - mutableClass.methods.add( - ImmutableMethod( - definingClass, - addedMethodName, - emptyList(), - "Ljava/lang/String;", - AccessFlags.PUBLIC.value, - null, - null, - MutableMethodImplementation(2), - ).toMutable().apply { - addInstructions( - """ - iget-object v0, p0, $definingClass->$urlFieldName:Ljava/lang/String; - return-object v0 - """, - ) - }, - ) - } + CronetImageUrlHook.addImageUrlHook(INTEGRATIONS_CLASS_DESCRIPTOR) + CronetImageUrlHook.addImageUrlSuccessCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR) + CronetImageUrlHook.addImageUrlErrorCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR) } } diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt new file mode 100644 index 000000000..132f5c96a --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt @@ -0,0 +1,71 @@ +package app.revanced.patches.youtube.layout.thumbnails + +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotation.CompatiblePackage +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patches.all.misc.resources.AddResourcesPatch +import app.revanced.patches.shared.misc.settings.preference.SwitchPreference +import app.revanced.patches.youtube.misc.imageurlhook.CronetImageUrlHook +import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch +import app.revanced.patches.youtube.misc.settings.SettingsPatch + +@Patch( + name = "Bypass image region restrictions", + description = "Adds an option to use a different host for user avatar and channel images," + + "and can fix missing images that are blocked in some countries.", + dependencies = [ + IntegrationsPatch::class, + SettingsPatch::class, + AddResourcesPatch::class, + CronetImageUrlHook::class + ], + compatiblePackages = [ + CompatiblePackage( + "com.google.android.youtube", + [ + "18.32.39", + "18.37.36", + "18.38.44", + "18.43.45", + "18.44.41", + "18.45.43", + "18.48.39", + "18.49.37", + "19.01.34", + "19.02.39", + "19.03.36", + "19.04.38", + "19.05.36", + "19.06.39", + "19.07.40", + "19.08.36", + "19.09.38", + "19.10.39", + "19.11.43", + "19.12.41", + "19.13.37", + "19.14.43", + "19.15.36", + "19.16.39", + ] + ) + ] +) +@Suppress("unused") +object BypassImageRegionRestrictions : BytecodePatch(emptySet()) { + private const val INTEGRATIONS_CLASS_DESCRIPTOR = + "Lapp/revanced/integrations/youtube/patches/BypassImageRegionRestrictionsPatch;" + + override fun execute(context: BytecodeContext) { + AddResourcesPatch(this::class) + + SettingsPatch.PreferenceScreen.GENERAL_LAYOUT.addPreferences( + SwitchPreference("revanced_bypass_image_region_restrictions") + ) + + // A priority hook is not needed, as the image urls of interest are not modified + // by AlternativeThumbnails or any other patch in this repo. + CronetImageUrlHook.addImageUrlHook(INTEGRATIONS_CLASS_DESCRIPTOR) + } +} diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt new file mode 100644 index 000000000..d300327f2 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt @@ -0,0 +1,134 @@ +package app.revanced.patches.youtube.misc.imageurlhook + +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.getInstructions +import app.revanced.patcher.fingerprint.MethodFingerprint +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod +import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable +import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.MessageDigestImageUrlFingerprint +import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.MessageDigestImageUrlParentFingerprint +import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.RequestFingerprint +import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback.OnFailureFingerprint +import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback.OnResponseStartedFingerprint +import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback.OnSucceededFingerprint +import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch +import app.revanced.util.resultOrThrow +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation +import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction +import com.android.tools.smali.dexlib2.iface.reference.FieldReference +import com.android.tools.smali.dexlib2.immutable.ImmutableMethod + +@Patch( + description = "Hooks Cronet image urls", + dependencies = [ + IntegrationsPatch::class + ] +) +object CronetImageUrlHook : BytecodePatch( + setOf( + MessageDigestImageUrlParentFingerprint, + OnResponseStartedFingerprint, + RequestFingerprint + ) +) { + private lateinit var loadImageUrlMethod: MutableMethod + private var loadImageUrlIndex = 0 + + private lateinit var loadImageSuccessCallbackMethod: MutableMethod + private var loadImageSuccessCallbackIndex = 0 + + private lateinit var loadImageErrorCallbackMethod: MutableMethod + private var loadImageErrorCallbackIndex = 0 + + /** + * @param highPriority If the hook should be called before all other hooks. + */ + fun addImageUrlHook(targetMethodClass: String, highPriority: Boolean = false) { + loadImageUrlMethod.addInstructions( + if (highPriority) 0 else loadImageUrlIndex, + """ + invoke-static { p1 }, $targetMethodClass->overrideImageURL(Ljava/lang/String;)Ljava/lang/String; + move-result-object p1 + """, + ) + loadImageUrlIndex += 2 + } + + /** + * If a connection completed, which includes normal 200 responses but also includes + * status 404 and other error like http responses. + */ + fun addImageUrlSuccessCallbackHook(targetMethodClass: String) { + loadImageSuccessCallbackMethod.addInstruction( + loadImageSuccessCallbackIndex++, + "invoke-static { p1, p2 }, $targetMethodClass->handleCronetSuccess(" + + "Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;)V", + ) + } + + /** + * If a connection outright failed to complete any connection. + */ + fun addImageUrlErrorCallbackHook(targetMethodClass: String) { + loadImageErrorCallbackMethod.addInstruction( + loadImageErrorCallbackIndex++, + "invoke-static { p1, p2, p3 }, $targetMethodClass->handleCronetFailure(" + + "Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;Ljava/io/IOException;)V", + ) + } + + override fun execute(context: BytecodeContext) { + fun MethodFingerprint.alsoResolve(fingerprint: MethodFingerprint) = + also { resolve(context, fingerprint.resultOrThrow().classDef) }.resultOrThrow() + + loadImageUrlMethod = MessageDigestImageUrlFingerprint + .alsoResolve(MessageDigestImageUrlParentFingerprint).mutableMethod + + loadImageSuccessCallbackMethod = OnSucceededFingerprint + .alsoResolve(OnResponseStartedFingerprint).mutableMethod + + loadImageErrorCallbackMethod = OnFailureFingerprint + .alsoResolve(OnResponseStartedFingerprint).mutableMethod + + // The URL is required for the failure callback hook, but the URL field is obfuscated. + // Add a helper get method that returns the URL field. + RequestFingerprint.resultOrThrow().apply { + // The url is the only string field that is set inside the constructor. + val urlFieldInstruction = mutableMethod.getInstructions().single { + if (it.opcode != Opcode.IPUT_OBJECT) return@single false + + val reference = (it as ReferenceInstruction).reference as FieldReference + reference.type == "Ljava/lang/String;" + } as ReferenceInstruction + + val urlFieldName = (urlFieldInstruction.reference as FieldReference).name + val definingClass = RequestFingerprint.IMPLEMENTATION_CLASS_NAME + val addedMethodName = "getHookedUrl" + mutableClass.methods.add( + ImmutableMethod( + definingClass, + addedMethodName, + emptyList(), + "Ljava/lang/String;", + AccessFlags.PUBLIC.value, + null, + null, + MutableMethodImplementation(2), + ).toMutable().apply { + addInstructions( + """ + iget-object v0, p0, $definingClass->$urlFieldName:Ljava/lang/String; + return-object v0 + """, + ) + } + ) + } + } +} diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlFingerprint.kt similarity index 84% rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlFingerprint.kt index 52f9005bb..3eff257b1 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.layout.thumbnails.fingerprints +package app.revanced.patches.youtube.misc.imageurlhook.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlParentFingerprint.kt similarity index 86% rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlParentFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlParentFingerprint.kt index 44902cb06..8b3af75bd 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlParentFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlParentFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.layout.thumbnails.fingerprints +package app.revanced.patches.youtube.misc.imageurlhook.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/RequestFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/RequestFingerprint.kt similarity index 81% rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/RequestFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/RequestFingerprint.kt index b66ab5971..18f5e0dcf 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/RequestFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/RequestFingerprint.kt @@ -1,8 +1,8 @@ -package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet +package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint -import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.RequestFingerprint.IMPLEMENTATION_CLASS_NAME +import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.RequestFingerprint.IMPLEMENTATION_CLASS_NAME import com.android.tools.smali.dexlib2.AccessFlags internal object RequestFingerprint : MethodFingerprint( diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnFailureFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnFailureFingerprint.kt similarity index 89% rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnFailureFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnFailureFingerprint.kt index 5848810e7..4214fe7d4 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnFailureFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnFailureFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback +package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt similarity index 91% rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt index 1021d243a..f50dc16f0 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback +package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt similarity index 88% rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt index ed8523c82..295c91ec0 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback +package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml index 480c43f2c..85588efc1 100644 --- a/src/main/resources/addresources/values/strings.xml +++ b/src/main/resources/addresources/values/strings.xml @@ -998,6 +998,11 @@ This is because Crowdin requires temporarily flattening this file and removing t The color of the seekbar Invalid seekbar color value. Using default value. + + Bypass image region restrictions + Using image host yt4.ggpht.com + Using original image host\n\nEnabling this can fix missing images that are blocked in some regions + Home tab From 516eb3b05402e18c5715f3ebcc910340f02810bc Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 15 Jul 2024 19:01:14 +0000 Subject: [PATCH 08/50] chore(release): 4.12.0-dev.2 [skip ci] # [4.12.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.1...v4.12.0-dev.2) (2024-07-15) ### Features * **YouTube:** Add `Bypass image region restrictions` patch ([#3442](https://github.com/ReVanced/revanced-patches/issues/3442)) ([765fab2](https://github.com/ReVanced/revanced-patches/commit/765fab2af2769349446cc0f2109343ef3bd8c621)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33c0112a3..297a31943 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.1...v4.12.0-dev.2) (2024-07-15) + + +### Features + +* **YouTube:** Add `Bypass image region restrictions` patch ([#3442](https://github.com/ReVanced/revanced-patches/issues/3442)) ([765fab2](https://github.com/ReVanced/revanced-patches/commit/765fab2af2769349446cc0f2109343ef3bd8c621)) + # [4.12.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.1-dev.1...v4.12.0-dev.1) (2024-07-13) diff --git a/gradle.properties b/gradle.properties index 320c7cba7..50c96b995 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.1 +version = 4.12.0-dev.2 From bf604df0c5b0d23d3aff3b8339d4ae077e05c618 Mon Sep 17 00:00:00 2001 From: ReVanced Bot Date: Thu, 18 Jul 2024 15:22:23 +0200 Subject: [PATCH 09/50] chore: Sync translations (#3451) --- .../addresources/values-af-rZA/strings.xml | 2 + .../addresources/values-am-rET/strings.xml | 2 + .../addresources/values-ar-rSA/strings.xml | 7 +- .../addresources/values-as-rIN/strings.xml | 2 + .../addresources/values-az-rAZ/strings.xml | 1125 +++++++++-------- .../addresources/values-be-rBY/strings.xml | 5 +- .../addresources/values-bg-rBG/strings.xml | 2 + .../addresources/values-bn-rBD/strings.xml | 10 +- .../addresources/values-bs-rBA/strings.xml | 2 + .../addresources/values-ca-rES/strings.xml | 2 + .../addresources/values-cs-rCZ/strings.xml | 7 +- .../addresources/values-da-rDK/strings.xml | 13 +- .../addresources/values-de-rDE/strings.xml | 8 +- .../addresources/values-el-rGR/strings.xml | 7 +- .../addresources/values-es-rES/strings.xml | 8 +- .../addresources/values-et-rEE/strings.xml | 2 + .../addresources/values-eu-rES/strings.xml | 2 + .../addresources/values-fa-rIR/strings.xml | 2 + .../addresources/values-fi-rFI/strings.xml | 760 +++++------ .../addresources/values-fil-rPH/strings.xml | 4 +- .../addresources/values-fr-rFR/strings.xml | 7 +- .../addresources/values-gl-rES/strings.xml | 2 + .../addresources/values-gu-rIN/strings.xml | 2 + .../addresources/values-hi-rIN/strings.xml | 2 + .../addresources/values-hr-rHR/strings.xml | 2 + .../addresources/values-hu-rHU/strings.xml | 8 +- .../addresources/values-hy-rAM/strings.xml | 2 + .../addresources/values-in-rID/strings.xml | 113 +- .../addresources/values-is-rIS/strings.xml | 2 + .../addresources/values-it-rIT/strings.xml | 11 +- .../addresources/values-iw-rIL/strings.xml | 2 + .../addresources/values-ja-rJP/strings.xml | 6 +- .../addresources/values-ka-rGE/strings.xml | 2 + .../addresources/values-kk-rKZ/strings.xml | 2 + .../addresources/values-km-rKH/strings.xml | 2 + .../addresources/values-kn-rIN/strings.xml | 2 + .../addresources/values-ko-rKR/strings.xml | 71 +- .../addresources/values-ky-rKG/strings.xml | 2 + .../addresources/values-lo-rLA/strings.xml | 2 + .../addresources/values-lt-rLT/strings.xml | 2 + .../addresources/values-lv-rLV/strings.xml | 2 + .../addresources/values-mk-rMK/strings.xml | 2 + .../addresources/values-ml-rIN/strings.xml | 2 + .../addresources/values-mn-rMN/strings.xml | 2 + .../addresources/values-mr-rIN/strings.xml | 2 + .../addresources/values-ms-rMY/strings.xml | 2 + .../addresources/values-my-rMM/strings.xml | 2 + .../addresources/values-nb-rNO/strings.xml | 36 +- .../addresources/values-ne-rIN/strings.xml | 2 + .../addresources/values-nl-rNL/strings.xml | 43 +- .../addresources/values-or-rIN/strings.xml | 2 + .../addresources/values-pa-rIN/strings.xml | 2 + .../addresources/values-pl-rPL/strings.xml | 49 +- .../addresources/values-pt-rBR/strings.xml | 52 +- .../addresources/values-pt-rPT/strings.xml | 7 +- .../addresources/values-ro-rRO/strings.xml | 7 +- .../addresources/values-ru-rRU/strings.xml | 51 +- .../addresources/values-si-rLK/strings.xml | 2 + .../addresources/values-sk-rSK/strings.xml | 38 +- .../addresources/values-sl-rSI/strings.xml | 2 + .../addresources/values-sq-rAL/strings.xml | 2 + .../addresources/values-sr-rSP/strings.xml | 315 ++--- .../addresources/values-sv-rSE/strings.xml | 23 +- .../addresources/values-sw-rKE/strings.xml | 2 + .../addresources/values-ta-rIN/strings.xml | 2 + .../addresources/values-te-rIN/strings.xml | 2 + .../addresources/values-th-rTH/strings.xml | 2 + .../addresources/values-tl-rPH/strings.xml | 2 + .../addresources/values-tr-rTR/strings.xml | 13 +- .../addresources/values-uk-rUA/strings.xml | 11 +- .../addresources/values-ur-rIN/strings.xml | 2 + .../addresources/values-uz-rUZ/strings.xml | 2 + .../addresources/values-vi-rVN/strings.xml | 4 +- .../addresources/values-zh-rCN/strings.xml | 7 + .../addresources/values-zh-rHK/strings.xml | 2 + .../addresources/values-zh-rTW/strings.xml | 7 +- .../addresources/values-zu-rZA/strings.xml | 2 + 77 files changed, 1592 insertions(+), 1331 deletions(-) diff --git a/src/main/resources/addresources/values-af-rZA/strings.xml b/src/main/resources/addresources/values-af-rZA/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-af-rZA/strings.xml +++ b/src/main/resources/addresources/values-af-rZA/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-am-rET/strings.xml b/src/main/resources/addresources/values-am-rET/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-am-rET/strings.xml +++ b/src/main/resources/addresources/values-am-rET/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-ar-rSA/strings.xml b/src/main/resources/addresources/values-ar-rSA/strings.xml index bf3889ee7..215433e02 100644 --- a/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t الكلمة المفتاحية غير صالحة. لا يمكن استخدام: \'%s\' كعامل تصفية الكلمة المفتاحية غير صالحة. \'%1$s\' أقل من %2$d حرفًا - الكلمة الرئيسية \'$s\' سوف تخفي جميع الفيديوهات + الكلمة الرئيسية \'%s\' سوف تخفي جميع الفيديوهات إخفاء الإعلانات العامة @@ -990,6 +990,11 @@ This is because Crowdin requires temporarily flattening this file and removing t لون شريط التقدم لون الشريط غير صالح. استخدام القيمة الافتراضية. + + تجاوز قيود منطقة الصورة + استخدام مضيف الصورة yt4.ggpht.com + استخدام مضيف الصور الأصلي\n\nتمكين هذا يمكن إصلاح الصور المفقودة التي يتم حظرها في بعض المناطق + علامة تبويب الصفحة الرئيسية diff --git a/src/main/resources/addresources/values-as-rIN/strings.xml b/src/main/resources/addresources/values-as-rIN/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-as-rIN/strings.xml +++ b/src/main/resources/addresources/values-as-rIN/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-az-rAZ/strings.xml b/src/main/resources/addresources/values-az-rAZ/strings.xml index 1771ff0b3..fa292d34c 100644 --- a/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -34,259 +34,259 @@ This is because Crowdin requires temporarily flattening this file and removing t Davam etmək istəyirsiniz? - Sıfırlayın - Təzələ və yenidən başlat + Sıfırla + Yenilə və yenidən başlat Yenidən başlat - Daxilə köçür - Kopyalayın - ReVanced ayarları ilkin dəyərlərinə sıfırlandı - %d ayar daxilə köçürüldü - Uğursuz daxilə köçürmə: %s + İdxal et + Köçür + ReVanced tənzimləmələr standarta təyin edildi + %d tənzimləmə idxal edildi + Uğursuz idxal prosesi: %s - MicroG GmsCore quraşdırılmayıb. Onu quraşdır. - Əməliyyat lazımdır - MicroG GmsCore üçün arxaplanda işləmə icazəsi yoxdur.\n\nTelefonunuz üçün \"Tətbiqim bağlanılmasın\" bələdçisini izləyin və təlimatları MicroG quraşdırmasına tətbiq edin.\n\nTətbiqin işləməsi üçün bu tələb olunur. + MicroG GmsCore quraşdırılmayıb. Bunu quraşdır. + Fəaliyyət lazımdır + MicroG GmsCore arxa planda işləməyə icazə almayıb.\n\nTelefonunuz üçün \"Tətbiqim bağlanılmasın\" bələdçisin izləyin və təlimatları MicroG quraşdırmasına tətbiq edin.\n\nBu tətbiq işləyən müddətdə tələb olunur. Veb saytı aç - Problemləri önləmək üçün MicroG GmsCore batareya optimallaşdırması sıradan çıxarılmalıdır.\n\nDavam düyməsinə toxunub batareya optimallaşdırmalarını sıradan çıxardın. - Davam + Problemlərin olmaması üçün MicroG GmsCore batareya optimallaşdırması qeyri-aktiv edilməlidir.\n\nDavam düyməsinə toxun və batareya optimallaşdırmasını qeyri-aktiv et. + Davam et ReVanced Patches <i>%s</i> versiyasını istifadə edirsiniz Qeyd - Bu versiya, ön buraxılış olduğu üçün gözlənilməz problemlərlə üzləşə bilərsiniz - Rəsmi keçidlər - Daxilə/Xaricə köçür - ReVanced ayarlarını daxilə/xaricə köçür + Bu versiya ilkin buraxılışdır və gözlənilməz problemlərlə üzləşə bilərsiniz + Rəsmi bağlantılar + İdxal/İxrac et + ReVanced tənzimləmələrin idxal/ixrac et Haqqında Reklamlar - Alternativ kiçik şəkillər - Oruc - Oyunçu - Ümumi tərkibi - Zaman çubuğu - Sürüşdürmə kontrolları + Seçmə miniatürlər + Axın + Oynadıcı + Ümumi tərtibat + Axtarış çubuğu + Sürüşdürmə nəzarətçiləri Müxtəlif Video Sazlama - Sazlama seçimlərini aç/bağla + Sazlama seçimlərini aktiv/qeyri-aktiv et Sazlama jurnalı - Sazlama jurnalı fəaldır - Sazlama jurnalı sıradan çıxarılıb - Bufer protokollarının jurnalı + Sazlama jurnalı işləkdir + Sazlama jurnalı qeyri-aktivdir + Bufer protokol jurnalı Sazlama jurnallarına protokol buferi daxildir Sazlama jurnallarına protokol buferi daxil deyil - Yığın izlərini jurnala yaz + Yığın izləri jurnalı Sazlama jurnalına yığın izləri daxildir Sazlama jurnalına yığın izləri daxil deyil - ReVanced xətasında tost bildiriş göstər - Xəta baş verəndə göstər - Xəta baş verəndə göstərmə - Tost bildirişlərini söndürmək, bütün ReVanced xəta bildirişlərini gizlədir.\n\nGözlənilməz hallardan xəbərdar olmayacaqsınız. + ReVanced xətasında ani bildiriş göstər + Xəta baş verərsə bildiriş göstər + Xəta baş verərsə bildiriş göstərmə + Ani bildirişləri söndürəndə, bütün ReVanced xəta bildirişləri gizlənir.\n\nGözlənilməz hallardan xəbərdar olmayacaqsınız. - Bəyən/abunə ol düymə parıltısını sıradan çıxart - Bu düymələrə toxunduqda parlamayacaq - Bu düymələrə toxunduqda parlayacaq + Bəyən/abunə ol düymə parıltısın söndür + \"Bəyən və abunə ol\" düyməsin klikləyəndə parıldamayacaq + \"Bəyən və abunə ol\" düyməsinə klikləyəndə parlayacaq Boz ayırıcını gizlət Boz ayırıcılar gizlidir Boz ayırıcılar göstərilir Kanal filiqranını gizlət Su nişanı gizlidir - Filiqran göstərilir - Üfüqi rəfləri gizlət - Belə rəflər gizlidir:\n• Son xəbərlər\n• Baxmağa davam et\n• Daha çox kanal kəşf et\n• Alış-veirş\n• Yenidən bax - Rəflər göstərilir + Su nişanı göstərilir + Üfüqi hissələri gizlət + Belə hissələr gizlidir:\n• Son xəbərlər\n• Baxmağa davam et\n• Daha çox kanal kəşf et\n• Bazarlıq\n• Təkrar izlə + Hissələr göstərilir \"Qoşul\" düyməsini gizlət Düymə gizlidir Düymə göstərilir - Kanal səhifəsində \"Sənin üçün\" bölməsini gizlət - Rəf gizlidir - Rəf göstərilir + Kanal yerində \"Sizin üçün\" qismin gizlə + Bölmə gizlidir + Bölmə göstərilir \"Mənə bildir\" düyməsini gizlət Düymə gizlidir Düymə göstərilir - \"İnsanların baxdıqları\" tövsiyələrini gizlət + \'İnsanların baxdıqları\' tövsiyələrin gizlə Tövsiyələr gizlidir Tövsiyələr göstərilir - \"Daha çox göstər\" düyməsini gizlət + \'Daha çox göstər\' düyməsini gizlət Düymə gizlidir Düymə göstərilir Vaxtlı reaksiyaları gizlət Zamanlanmış reaksiyalar gizlədilir - Zamanlı reaksiyalar göstərilir - Axtarış nəticəsi rəf başlığını gizlət - Rəf başlığı gizlidir - Rəf başlığı göstərilir + Zamanlanmış reaksiyalar göstərilir + Axtarış nəticəsi bölmə başlığını gizlət + Bölmə başlığı gizlidir + Bölmə başlığı göstərilir Kanal təlimatlarını gizlət Kanal təlimatları gizlidir Kanal təlimatları göstərilir - Videoların altında genişləndirilə bilən çipi gizlət + Videoların altında genişlənən çipi gizlət Genişlənən çiplər gizlidir Genişlənən çiplər göstərilir - Video keyfiyyət menyusu alt məlumatını gizlət - Video keyfiyyəti menyusu altbilgisi gizlidir - Video keyfiyyət menyusu altbilgisi göstərilir - İcma göndərişlərini gizlət - İcma yazıları gizlədilib - İcma yazıları göstərilir + Video keyfiyyət menyu alt yazısın gizlə + Video keyfiyyəti menyusu alt yazısı gizlidir + Video keyfiyyət menyusu alt yazısı göstərilir + İcma elanların gizlət + İcma elanları gizlədilib + İcma elanları göstərilir Yığcam bannerləri gizlət - Kompakt bannerlər gizlidir - Kompakt bannerlər göstərilir + Yığcam bannerlər gizlidir + Yığcam bannerlər göstərilir Filmlər bölməsini gizlət Filmlər bölməsi gizlidir Filmlər bölməsi göstərilir - Lent anketlərini gizlət - Yem sorğuları gizlidir - Yem sorğuları göstərilir + Axın sorğuların gizlət + Axın sorğuları gizlidir + Axın sorğuları göstərilir İcma təlimatlarını gizlət - İcma qaydaları gizlidir - İcma qaydaları göstərilir - Abunəlik icma qaydalarını gizlət - Abunəçilərin icma qaydaları gizlidir - Abunəçilərin icma qaydaları göstərilir - Kanal üzvləri rəfini gizlət - Kanal üzvü rəfi gizlidir - Kanal üzvü rəfi göstərilir - Fövqəladə hal qutularını gizlət - Təcili yardım qutuları gizlidir - Təcili yardım qutuları göstərilir - Məlumat panellərini gizlət - Məlumat panelləri gizlidir - Məlumat panelləri göstərilir - Tibbi panelləri gizlət - Tibbi panellər gizlidir - Tibbi panellər göstərilir + İcma təlimatları gizlidir + İcma təlimatları göstərilir + Abunəliklərin icma təlimatlarını gizlət + Abunəliklərin icma təlimatları gizlidir + Abunəliklərin icma təlimatları göstərilir + Kanal üzvü bölməsin gizlət + Kanal üzvü bölməsi gizlidir + Kanal üzvü bölməsi göstərilir + Ciddi vəziyyət qutularını gizlət + Ciddi vəziyyət qutuları gizlidir + Ciddi vəziyyət qutuları göstərilir + Məlumat lövhələrini gizlət + Məlumat lövhələri gizlidir + Məlumat lövhələri göstərilir + Tibbi lövhələri gizlət + Tibbi lövhələr gizlidir + Tibbi lövhələr göstərilir Kanal çubuğunu gizlət - Kanal paneli gizlidir - Kanal paneli göstərilir - Oxudula bilən elementləri gizlət - Oynananlar gizlidir - Oynana bilənlər göstərilir + Kanal çubuğu gizlidir + Kanal çubuğu göstərilir + Oynadılan elementləri gizlət + Oynadılanlar gizlidir + Oynadılanlar göstərilir Tam ekranda cəld fəaliyyətləri gizlət - Sürətli hərəkətlər gizlədilir - Sürətli hərəkətlər göstərilir - Cəld fəaliyyətlərdəki əlaqəli videoları gizlət + Sürətli fəaliyyətlər gizlədilir + Sürətli fəaliyyətlər göstərilir + Cəld fəaliyyətlərdə əlaqəli videoları gizlə Əlaqədar videolar gizlədilib Əlaqədar videolar göstərilir - Axtarış nəticələrindəki təsvir rəfini gizlət - Şəkil rəfi gizlidir - Şəkil rəfi göstərilir - Son göndərişləri gizlət - Ən son yazılar gizlədilib - Ən son yazılar göstərilir - Miks pleylistləri gizlət - Mix çalğı siyahıları gizlədilib - Mix çalğı siyahıları göstərilir + Axtarış nəticələrindəki şəkil bölməsin gizlət + Şəkil bölməsi gizlidir + Şəkil bölməsi göstərilir + Son elanları gizlət + Ən son elanlar gizlədilib + Ən son elanlar göstərilir + Qarışıq pleylistləri gizlət + Qarışıq oynatma siyahıları gizlədilir + Qarışıq oynatma siyahıları göstərilir Sənətçi kartlarını gizlət - Rəssam kartları gizlidir - Rəssam kartları göstərilir - Çip rəfini gizlət - Çips rəfi gizlidir - Çips rəfi göstərilir + Sənətçi kartları gizlidir + Sənətçi kartları göstərilir + Çip bölməsin gizlət + Çip bölməsi gizlidir + Çip bölməsi göstərilir Atributlar bölməsini gizlət - \"Önə çıxan məkanlar\", Oyunlar və Musiqi bölmələri gizlidir - \"Önə çıxan məkanlar\", Oyunlar və Musiqi bölmələri göstərilir - Fəsillər bölməsini gizlət - Fəsillər bölməsi gizlidir - Fəsillər bölməsi göstərilir - \"Podkastı kəşf et\" bölməsini gizlət - \"Podkasti araşdırın\" bölməsi gizlədilib - \"Podkasti araşdırın\" bölməsi göstərilir + \"Seçilən məkanlar\", Oyunlar və Musiqi bölmələri gizlidir + \"Seçilən məkanlar\", Oyunlar və Musiqi bölmələri göstərilir + Bölümlər bölməsini gizlət + Bölümlər bölməsi gizlidir + Bölümlər bölməsi göstərilir + \'Podkastı kəşf et\' bölməsini gizlət + \"Podkastı kəşf et\" bölməsi gizlədilir + \"Podkastı kəşf et\" bölməsi göstərilir Məlumat kartları bölməsini gizlət - Məlumat kartları bölməsi gizlidir + Məlumat kartları bölməsi gizlədilir Məlumat kartları bölməsi göstərilir - Transkript bölməsini gizlət + Transkripsiya bölməsini gizlət Transkripsiya bölməsi gizlidir - Transkript bölməsi göstərilir + Transkripsiya bölməsi göstərilir Video açıqlaması - Video açıqlaması komponentlərini gizlət və ya göstər - Özəl filtr - Özəl filtrlər ilə komponentləri gizlət - Özəl filtri fəallaşdır - Özəl filtr fəaldır - Özəl filtr sıradan çıxarılıb - Özəl filtr + Video açıqlaması elementlərini gizlət və ya göstər + Şəxsi filtr + Fərdi filtrlər ilə elementləri gizlət + Fərdi filtri aktivləşdir + Fərdi filtr aktivdir + Fərdi filtr qeyri-aktivdir + Fərdi filtr - Yeni sətirlə ayrılmış filtr üçün komponent yol qurucusu sətirlərinin siyahısı - Yararsız özəl filtr: %s + Yeni sətirlə ayrılmış filtr üçün element yol qurucusu sətirlərinin siyahısı + Etibarsız fərdi filtr: %s Açar söz məzmununu gizlət - Açar söz filtrləri ilə axtarış və lent videolarını gizlət - Əsas ekran videolarını açar sözlərə görə gizlət - Ev vərəqindəki videolar açar sözlərlə filtrlənir - Ev vərəqindəki videolar açar sözlərlə filtrlənmir + Açar söz filtrləri ilə axtarış və axın videolarını gizlət + Ev videolarını açar sözlərə görə gizlət + Ev bölməsindəki videolar açar sözlərlə filtrlənir + Ev bölməsindəki videolar açar sözlərlə filtrlənmir Abunəlik videolarını açar sözlərlə gizlət - Abunəliklər vərəqindəki vərəqindəki açar sözlərlə filtrlənir - Abunəliklər vərəqindəki vərəqindəki açar sözlərlə filtrlənmir + Abunəliklər bölməsindəki videolar açar sözlərlə filtrlənir + Abunəliklər bölməsindəki videolar açar sözlərlə filtrlənmir Axtarış nəticələrini açar sözlərlə gizlət - Filtrlənir - Filtrlənmir + Axtarış nəticələri açar sözlərə görə çeşidlənir + Axtarış nəticələri açar sözlərə görə çeşidlənmir Gizlədiləcək açar sözlər Yeni sətirlərlə ayrılmış gizlədiləcək açar sözlər və ifadələr\n\nOrtada böyük hərf olan sözlər korpusla birlikdə daxil edilməlidir (yəni: iPhone, TikTok, LeBlanc) - Açar sözlə filtrləmə haqqında - Ana səhifə/Abunəlik/Axtarış nəticələri açar söz ifadələrinə uyğun gələn məzmunu gizlətmək üçün filtrlənir\n\nMəhdudiyyətlər\n• Bəzi Qısacalar gizlənə bilməz\n• Bəzi UI komponentləri gizlənə bilməz\n• Açar söz axtarışında heç bir nəticə görünməyə bilər + Açar söz filtrləməsi haqqında + Əsas səhifə/Abunəlik/Axtarış nəticələri açar söz ifadələrinə uyğunlaşan məzmunu gizlətmək üçün filtrlənir\n\nMəhdudiyyətlər\n• Bəzi Shorts gizlənə bilməz\n• Bəzi UI elementləri gizlənə bilməz\n• Açar söz axtarışı heç bir nəticə göstərməyə bilər - Yararsız açar sözü. \"%s\" istifadə edilə bilməz + Etibarsız açar sözü. \'%s\' istifadə edilə bilməz - Yararsız açar sözü. \"%1$s\", %2$d simvoldan azdır - \"$s\" açar sözü, bütün videolardan gizlədiləcək + Etibarsız açar sözü. \'%1$s\', %2$d simvoldan azdır + \"%s\" açar sözü, bütün videolarda gizlədiləcək Ümumi reklamları gizlət - Ümumi elanlar gizlidir - Ümumi elanlar göstərilir + Ümumi reklamlar gizlidir + Ümumi reklamlar göstərilir Tam ekran reklamlarını gizlət - Tam ekran reklamları gizlidir\n\nBu özəllik yalnız köhnə cihazlar üçün əlçatandır + Tam ekran reklamları gizlidir\n\nBu funksiya yalnız köhnə cihazlar üçün əlçatandır Tam ekran reklamları göstərilir Düyməli reklamları gizlət Düyməli reklamlar gizlədilir Düyməli reklamlar göstərilir - Ödənişli tanıtım etiketini gizlət - Ödənişli tanıtım etiketi gizlədilib - Ödənişli tanıtım etiketi göstərilir + Ödənişli reklam etiketini gizlət + Ödənişli reklam etiketi gizlədilib + Ödənişli reklam etiketi göstərilir Öz-sponsorlu kartları gizlət Özünə sponsorluq edilən kartlar gizlidir Özünə sponsorluq edilən kartlar göstərilir - Məhsullara baxma bannerini gizlət - Banner gizlədilib - Banner göstərilir - Video açıqlamasındakı alış-veriş keçidlərini gizlət - Alış-veriş linkləri gizlidir - Alış-veriş linkləri göstərilir + Məhsullara baxma panelin gizlət + Panel gizlədilib + Panel göstərilir + Video açıqlamadakı alış-veriş linklərin gizlə + Alış-veriş bağlantıları gizlədilir + Alış-veriş bağlantıları göstərilir - Kanal səhifəsində \"Mağazanı ziyarət et\" düyməsini gizlət + Kanaldakı \"Mağazanı ziyarət et\" düyməsin gizlə Düymə gizlidir Düymə göstərilir Veb axtarış nəticələrini gizlət Veb axtarış nəticələri gizlədilir Veb axtarış nəticələri göstərilir - Satılıq əşya bannerlərini gizlət - Mal bannerləri gizlədilir - Mal bannerləri göstərilir + Məhsul bannerlərini gizlət + Məhsul bannerləri gizlədilir + Məhsul bannerləri göstərilir Tam ekran reklamları gizlətmə yalnız köhnə cihazlarda işləyir - YouTube Premium tanıtımlarını gizlət - Video pleyer altında YouTube Premium təqdimatları gizlidir - Video pleyerin altındakı YouTube Premium tanıtımları göstərilir + YouTube Premium reklamlarını gizlət + Video oynadıcı altında YouTube Premium elanları gizlidir + Video oynadıcı altındakı YouTube Premium elanları göstərilir Video reklamlarını gizlət @@ -294,14 +294,14 @@ This is because Crowdin requires temporarily flattening this file and removing t Video reklamlar göstərilir - URL lövhəyə kopyalandı - Vaxt möhürlü URL kopyalandı - Video URL-sini kopyalama düyməsini göstər - Düymə göstərilir. Video URL-sini kopyalamaq üçün toxunun. Vaxt möhürlü video URL-sini kopyalamaq üçün basılı tutun - Göstərilmir - Vaxt möhürlü URL-ni kopyalama düyməsini göstər - Düymə göstərilir. Vaxt möhürlü video URL-sini kopyalamaq üçün toxunun. Vaxt möhürü olmadan kopyalamaq üçün basılı tutun - Göstərilmir + URL buferə köçürüldü + Vaxt möhürlü URL köçürüldü + Video URL-i köçürmə düyməsin göstər + Düymə göstərilir. Video URL-sini köçürtmək üçün toxunun. Vaxt möhürlü video URL-sini köçürtmək üçün basılı tutun + Düymə göstərilmir + Vaxt möhürü URL köçür düyməsi göstər + Düymə göstərilir. Vaxt möhürlü video URL-sini köçürtmək üçün toxunun. Vaxt möhürü olmadan köçürtmək üçün basılı tutun + Düymə göstərilmir İzləyici mülahizə dialoqunu sil @@ -310,62 +310,62 @@ This is because Crowdin requires temporarily flattening this file and removing t Bu, yaş məhdudiyyətini ötürmür. Sadəcə avtomatik qəbul edir. - Xarici endirmələr - Xarici endirici üçün istifadə ayarları - Xarici endirmə düyməsini göstər - Endirmə düyməsi pleyerdə göstərilir - Endirmə düyməsi pleyerdə göstərilmir + Xarici yükləmələr + Xarici yükləyici istifadəsi üçün tənzimləmələr + Xarici yükləmə düyməsini göstər + Yükləmə düyməsi oynadıcıda göstərilir + Yükləmə düyməsi oynadıcıda göstərilmir - Endirmə fəaliyyəti düyməsini yararsız et - Endirmə düyməsi, xarici endiricini açır - Endirmə düyməsi daxili endiricini açır - Yükləyici paketinin adı - NewPipe və ya NewPipe kimi quraşdırılmış xarici endirmə tətbiqinizin paket adı - %s quraşdırılmayıb. Lütfən quraşdırın. + Yükləmə fəaliyyəti düyməsini qəbul etmə + Yükləmə düyməsi, xarici yükləyicini açır + Yükləmə düyməsi tətbiqdəki standart yükləyicini açır + Yükləyici paketi adı + NewPipe və ya Seal kimi quraşdırılmış xarici yükləmə tətbiqinizin paket adı + %s quraşdırılmayıb. Lütfən, bunu quraşdır. - Həssas (irəli/geri) çəkmə jestini sıradan çıxart - Jest deaktiv edilib + Dəqiq axtarış jestini qeyri-aktiv edin + Jest qeyri-aktiv edilib Jest aktivləşdirilib - Zaman çubuğuna toxunmanı fəallaşdır + Axtarış çubuğuna toxunmanı aktivləşdir Axtarış çubuğuna toxunma aktivdir - Axtarış çubuğuna toxunma deaktiv edilib + Axtarış çubuğuna toxunma qeyri-aktiv edilib - Parlaqlıq jestini fəallaşdır - Parlaqlıq sürüşməsi aktivləşdirilib - Parlaqlıq sürüşməsi deaktiv edilib - Səs səviyyəsi jestini fəallaşdır - Səs səviyyəsinə sürüşdürmə aktivdir - Səs səviyyəsinin sürüşdürülməsi deaktiv edilib - Basıb sürüşdürmə jestini fəallaşdır - Sürüşmək üçün basın aktivdir - Çaldırmaq üçün basın deaktiv edilib - Toxunuşlu əks-əlaqəni fəallaşdır - Haptik rəy aktivləşdirilib - Haptik rəy deaktiv edilib + Parlaqlıq jestini aktivləşdir + Parlaqlıq sürüşdürməsi aktivləşdirilir + Parlaqlıq sürüşdürmə qeyri-aktivdir + Səs səviyyəsi jestini aktivləşdir + Səs səviyyəsin sürüşdürmə aktivdir + Səs səviyyəsin sürüşdürmə qeyri-aktivdir + Basıb sürüşdürmə jestini aktivləşdir + Sürüşdürmək üçün basma aktivdir + Sürüşdürmək üçün basma qeyri-aktivdir + Toxunuşlu əks-əlaqəni aktivləşdir + Toxunuşlu əks-əlaqə aktivləşdirilib + Toxunuşlu əks-əlaqə qeyri-aktivdir Parlaqlığı saxla və bərpa et - Tam ekrana keçərkən və ya tam ekrandan çıxarkən parlaqlığı saxla və bərpa et - Tam ekrana keçərkən və ya tam ekrandan çıxarkən parlaqlığı saxlama və bərpa etmə - Avto-parlaqlıq jestini fəallaşdır - Parlaqlığı ən aşağı dəyərə sürüşdürəndə avto-parlaqlıq fəallaşır - Parlaqlığı ən aşağı dəyərə sürüşdürəndə avto-parlaqlıq fəallaşmır - Maşın - Sürüşdürmənin üst-üstə düşmə müddəti - Üst qatın göründüyü millisaniyələrin miqdarı - Üstünlük mətn ölçüsünü sürüşdürün - Sürüşdürmə üst-üstə düşməsi üçün mətn ölçüsü - Sürüşdürmə arxaplan şəffaflığı - Sürüşdürmə fonunun görünməsi + Tam ekrana keçərkən və ya çıxarkən parlaqlığı saxla və bərpa et + Tam ekrana keçərkən və ya çıxarkən parlaqlığı saxlama və bərpa etmə + Avto-parlaqlıq jestini aktivləşdir + Parlaqlığı ən aşağı dəyərə sürüşdürəndə avto-parlaqlıq aktivləşir + Parlaqlığı ən aşağı dəyərə sürüşdürəndə avto-parlaqlıq aktivləşmir + Avtomatik + Sürüşdürmə örtüyü müddəti + Örtüyün göründüyü millisaniyələrin sayı + Örtük mətn ölçüsü dəyişdirmə + Sürüşdürmə örtüyü üçün mətn ölçüsü + Sürüşdürmə arxa plan görünməsi + Sürüşdürmə örtüyü arxa fonunun görünməsi Sürüşdürmə böyüklük həddi - \"Sürüşdürmə\"ni icra etmək üçün hədd miqdarı + Sürüşdürmənin icra edilməsi üçün son dəyər - Avtomatik altyazıları sıradan çıxart - Avtomatik subtitrlər deaktiv edilib - Avtomatik subtitrlər aktivləşdirilib + Avtomatik titrləri qeyri-aktiv et + Avtomatik titrlər qeyri-aktivdir + Avtomatik titrlər aktivləşdirilir Fəaliyyət düymələri @@ -379,15 +379,15 @@ This is because Crowdin requires temporarily flattening this file and removing t Paylaş düyməsi göstərilir - \"Bildir\"i gizlət - Hesabat düyməsi gizlidir - Hesabat düyməsi göstərilir + \"Xəbər verin\"i gizlət + Xəbər ver/düyməsi gizlidir + Xəbər ver/düyməsi göstərilir \"Remiks\"i gizlət Remix düyməsi gizlidir Remiks düyməsi göstərilir - \"Endir\"i gizlət + \"Endirin\"i gizlət Yükləmə düyməsi gizlidir Yükləmə düyməsi göstərilir @@ -395,24 +395,24 @@ This is because Crowdin requires temporarily flattening this file and removing t Təşəkkür düyməsi gizlidir Təşəkkür düyməsi göstərilir - Klipi gizlət - Klip düyməsi gizlidir - Klip düyməsi göstərilir + Kəsmə/ gizlət + Kəsmə düyməsi gizlidir + Kəsmə düyməsi göstərilir \"Pleylistdə saxla\"nı gizlət - Pleylistə saxla düyməsi gizlidir - Pleylistə saxla düyməsi göstərilir + Pleylistdə saxla düyməsi gizlidir + Pleylistdə saxla düyməsi göstərilir - Avto-oxut düyməsini gizlət + Avto-oynatma düyməsini gizlət Avtomatik oynatma düyməsi gizlidir Avtomatik oynatma düyməsi göstərilir - Altyazılar düyməsini gizlət - Subtitrlər düyməsi gizlidir - Başlıqlar düyməsi göstərilir + Titrlər düyməsini gizlət + Titrlər düyməsi gizlidir + Titrlər düyməsi göstərilir Yayımla düyməsini gizlət @@ -440,43 +440,43 @@ This is because Crowdin requires temporarily flattening this file and removing t Abunəliklər düyməsi göstərilir \"Yarat\"ı \"Bildirişlər\" ilə dəyişdir - Yarat düyməsi Bildirişlər düyməsi ilə dəyişdirilir\n\nQeyd: Bunu aktivləşdirmək video reklamları da məcburi şəkildə gizlədir - \"Yarat\" düyməsi, \"Bildirişlər\" düyməsi ilə dəyişdirilmədi + Yarat düyməsi Bildirişlər düyməsi ilə dəyişdirilir\n\nQeyd: Bunu aktivləşdirmə video reklamları da məcburən gizlədir + \"Yarat\" düyməsi, \"Bildirişlər\" düyməsi ilə dəyişdirilmir Naviqasiya düymə etiketlərini gizlət Etiketlər gizlidir Etiketlər göstərilir Açılan menyu - Pleyer açılan menyu elementlərini gizlət və ya göstər + Oynadıcı açılan menyu elementlərini gizlət və ya göstər - \"Altyazılar\"ı gizlət - Başlıqlar menyusu gizlidir - Başlıqlar menyusu göstərilir + Titrləri gizlət + Titrlər menyusu gizlidir + Titrlər menyusu göstərilir Əlavə ayarları gizlət - Əlavə parametrlər menyusu gizlidir - Əlavə parametrlər menyusu göstərilir + Əlavə ayarlar menyusu gizlidir + Əlavə ayarlar menyusu göstərilir - \"Videonu dövr etdir\"i gizlət - Döngə video menyusu gizlidir - Döngə video menyusu göstərilir + Videonu təkrarlanı gizlət + Təkrarlama video menyusu gizlidir + Təkrarlama video menyusu göstərilir Ambient rejimini gizlət - Mühit rejimi menyusu gizlidir - Ətraf rejimi menyusu göstərilir + Ambient rejimi menyusu gizlidir + Ambient rejimi menyusu göstərilir - \"Kömək və əks-əlaqə\"ni gizlət + Kömək və əks əlaqəni gizlət Kömək & rəy menyusu gizlidir Kömək & rəy menyusu göstərilir - \"Oxutma sürəti\"ni gizlət - Oxutma sürəti menyusu gizlidir + \"Oynatma sürəti\"ni gizlət + Oynatma sürəti menyusu gizlidir Oynatma sürəti menyusu göstərilir \"Daha çox məlumat\"ı gizlət - Əlavə məlumat menyusu gizlidir + Ətraflı məlumat menyusu gizlidir Ətraflı məlumat menyusu göstərilir Kilid ekranını gizlət @@ -484,15 +484,15 @@ This is because Crowdin requires temporarily flattening this file and removing t Kilid ekranı menyusu göstərilir Səs trekini gizlət - Audio trek menyusu gizlidir - Audio trek menyusu göstərilir + Səs axını menyusu gizlidir + Səs axını menyusu göstərilir - \"VR-da Bax\"ı gizlət - VR menyusunda baxmaq gizlidir - VR menyusunda baxmaq göstərilir + \"VR-da İzləni\" gizlət + VR menyusunda izləmə gizlidir + VR menyusunda izləmə göstərilir - Əvvəlki və növbəti video düymələrini gizlət + Əvvəlki/növbəti video düymələrin gizlə Düymələr gizlidir Düymələr göstərilir @@ -502,31 +502,31 @@ This is because Crowdin requires temporarily flattening this file and removing t Albom kartları göstərilir - Rəylər - Rəylər bölməsi komponentlərini gizlət və ya göstər - \"Üzvlərin rəyləri\" başlığını gizlət + Şərhlər + Şərhlər bölməsi elementlərin gizlət və ya göstər + \'Üzvlərin şərhləri\' başlığını gizlət \"Üzvlərin şərhləri\" başlığı gizlədilib \"Üzvlərin şərhləri\" başlığı göstərilir - Rəy bölməsini gizlət + Şərhlər bölməsini gizlət Şərhlər bölməsi gizlidir Şərhlər bölməsi göstərilir - \"Bir Short yarat\" düyməsini gizlət - \"Short yarat\" düyməsi gizlidir + \"Shorts Yarat\" düyməsini gizlət + \"Shorts yarat\" düyməsi gizlidir \"Shorts yarat\" düyməsi göstərilir - Önizləmə rəyini gizlət - Ön baxış şərhi gizlədilib - Ön baxış şərhi göstərilir + Önbaxış şərhin gizlət + Önbaxış şərhi gizlədilib + Önbaxış şərhi göstərilir Təşəkkürlər düyməsini gizlət Təşəkkür düyməsi gizlidir Təşəkkür düyməsi göstərilir - Vaxt möhürünü və emoji düymələrini gizlət + Vaxt möhürü və emoji düymələrin gizlə Vaxt möhürü və emoji düymələri gizlədilib Vaxt möhürü və emoji düymələri göstərilir İanə qutusunu gizlət - Crowdfunding qutusu gizlidir - Crowdfunding qutusu göstərilir + İanə qutusu gizlidir + İanə qutusu göstərilir Son ekran kartlarını gizlət @@ -535,10 +535,10 @@ This is because Crowdin requires temporarily flattening this file and removing t Filtr çubuğu - Lentdə, axtarışda və əlaqəli videolardakı filtr çubuğunu gizlət və ya göstər - Lentdə gizlət - Lentdə gizlidir - Lentdə görünür + Axında, axtarışda və əlaqəli videolardakı filtr çubuğunu gizlət və ya göstər + Axında gizlət + Axında gizlidir + Axında göstərilir Axtarışda gizlət Axtarışda gizlidir Axtarışda görünür @@ -549,12 +549,12 @@ This is because Crowdin requires temporarily flattening this file and removing t Üzən mikrofon düyməsini gizlət Mikrofon düyməsi gizlidir - Mikrofon düyməsi görünür + Mikrofon düyməsi göstərilir - Tam ekranda ambient rejimini sıradan çıxart - Sıradan çıxarıldı - Ambient rejimi aktivdir + Tam ekranda ambient rejimin bağla + Ambient rejimi qeyri-aktiv edilib + Ambient rejimi aktivləşdirildi Məlumat kartlarını gizlət @@ -562,27 +562,27 @@ This is because Crowdin requires temporarily flattening this file and removing t Məlumat kartları göstərilir - Sürüşən rəqəm animasiyalarını sıradan çıxart + Sürüşən rəqəm animasiyaların söndür Sürüşən say animasiyası bağlıdır Sürüşən say animasiyası açıqdır - Video pleyerdə zaman çubuğunu gizlət - Video pleyer axtarış çubuğu gizlidir - Video pleyer axtarış çubuğu göstərilir - Vide kiçik şəkillərində zaman çubuğunu gizlət + Video oynadıcıda axtarış çubuğunu gizlət + Video oynadıcı axtarış çubuğu gizlidir + Video oynadıcı axtarış çubuğu göstərilir + Video miniatürlərdə vaxt çubuğun gizlə Miniatür axtarış çubuğu gizlədilib Miniatür axtarış çubuğu göstərilir - Ev lentində \"Shorts\"u gizlət - Ev lentindəki Shorts gizlidir - Ev lentində Shorts göstərilir + Ev axınında \"Shorts\"u gizlət + Ev axınındakı Shorts gizlidir + Ev axınında Shorts göstərilir - Abunəlik lentində \"Shorts\"u gizlət - Abunə lentindəki Shorts gizlidir - Abunə lentində Shorts göstərilir + Abunəlik axınında \"Shorts\"u gizlət + Abunəlik axınındakı Shorts gizlidir + Abunəlik axınında Shorts göstərilir Axtarış nəticələrindəki \"Shorts\"u gizlət Axtarış nəticələrində Shorts gizlədilib Axtarış nəticələrində Shorts göstərilir @@ -594,9 +594,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Abunə ol düyməsini gizlət Abunə ol düyməsi gizlidir Abunə ol düyməsi göstərilir - Fasilə vermə qat düymələrini gizlət - Dayandırılmış üst-üstə düşmə düymələri gizlədilir - Dayandırılmış üst-üstə düşmə düymələri göstərilir + Dayandırma örtük düymələrini gizlət + Dayandırma örtük düymələri gizlədilir + Dayandırma örtük düymələri göstərilir Mağaza düyməsini gizlət Mağaza düyməsi gizlidir Mağaza düyməsi göstərilir @@ -610,8 +610,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Məkan etiketi gizlidir Məkan etiketi göstərilir Səsi pleylistdə saxlama düyməsini gizlət - Səsi pleylistdə saxlamaq gizlidir - Səsi pleylistə saxla göstərilir + Səsi pleylistdə saxlama gizlidir + Səsi pleylistdə saxlama göstərilir Axtarış təkliflərini gizlət Axtarış təklifləri gizlədilib Axtarış təklifləri göstərilir @@ -621,13 +621,13 @@ This is because Crowdin requires temporarily flattening this file and removing t \"Bəyənməmə\" düyməsini gizlət Bəyənməmə düyməsi gizlidir Bəyənməmə düyməsi göstərilir - \"Rəylər\" düyməsini gizlət + \"Şərhlər\" düyməsini gizlət Şərhlər düyməsi gizlidir Şərhlər düyməsi göstərilir Remix düyməsini gizlət Remix düyməsi gizlidir - Remiks düyməsi göstərilir + Remix düyməsi göstərilir Paylaş düyməsini gizlət Paylaş düyməsi gizlidir @@ -636,28 +636,28 @@ This is because Crowdin requires temporarily flattening this file and removing t Məlumat paneli gizlidir Məlumat paneli göstərilir Kanal çubuğunu gizlət - Kanal paneli gizlidir - Kanal paneli göstərilir + Kanal çubuğu gizlidir + Kanal çubuğu göstərilir Video başlığını gizlət - Başlıq gizlədilib + Başlıq gizlədilir Başlıq göstərilir - Səs metadata etiketini gizlət - Metadata etiketi gizlidir - Metadata etiketi göstərilir - Tam video keçid etiketini gizlət + Səs üst məlumat etiketini gizlət + Üst məlumat etiketi gizlidir + Üst məlumat etiketi göstərilir + Tam videonun bağlantısı etiketini gizlət Video linki etiketi gizlidir Video link etiketi göstərilir Səs düyməsini gizlət Səs düyməsi gizlidir Səs düyməsi göstərilir Naviqasiya çubuğunu gizlət - Naviqasiya paneli gizlidir - Naviqasiya paneli göstərilir + Naviqasiya çubuğu gizlidir + Naviqasiya çubuğu göstərilir - Təklif edilən video bitiş ekranını sıradan çıxart - Təklif olunan videolar deaktiv ediləcək - Təklif olunan videolar nümayiş olunacaq + Təklif edilən video bitiş ekranın ləğv et + Təklif olunan videolar qeyri-aktiv ediləcək + Təklif olunan videolar göstəriləcək Video vaxt möhürünü gizlət @@ -665,26 +665,26 @@ This is because Crowdin requires temporarily flattening this file and removing t Vaxt möhürü göstərilir - Pleyer açılan pəncərə panellərini gizlət - Oyunçu pop-up panelləri gizlidir - Oyunçu pop-up panelləri göstərilir + Oynadıcı açılan pəncərə panellərini gizlət + Oynadıcı açılan pəncərə panelləri gizlidir + Oynadıcı açılan pəncərə panelləri göstərilir - Oyunçu örtüyünün qeyri-şəffaflığı + Oynadıcı örtüyünün qeyri-şəffaflığı 0-100 arasında qeyri-şəffaflıq dəyəri, burada 0 şəffafdır - Oyunçu örtüyünün qeyri-şəffaflığı 0-100 arasında olmalıdır + Oynadıcı örtüyünün qeyri-şəffaflığı 0-100 arası olmalıdır Gizli - \"Bəyənməmə\" müvəqqəti işləmir (API vaxtı bitdi) - Bəyənməmə mövcud deyil (status %d) - Bəyənməyənlər mövcud deyil (müştəri API limitinə çatdı) - Bəyənməmə mövcud deyil (%s) + \"Bəyənməmə\" müvəqqəti əlçatmazdır(API vaxtı bitdi) + Bəyənməmə əlçatmazdır (status %d) + Bəyənməmələr əlçatmazdır (qəbuledici API limitinə çatdı) + Bəyənməmə əlçatmazdır (%s) - ReturnYouTubeDislike ilə səs vermək üçün yenidən yüklə - Bəyənməyənlər göstərilir - Göstərilmir + Ryd ilə səsvermə üçün videonu yenidən yüklə + Bəyənməmələr göstərilir + Bəyənməmələr göstərilmir \"Shorts\"da bəyənməmə sayını göstər Bəyənməmə sayı \"Shorts\"da göstərilir \"Bəyənməmə\"lər \"Shorts\"da göstərilir\n\nMəhdudiyyət: \"Bəyənməmə\"lər gizli rejimdə görünməyə bilər @@ -694,241 +694,241 @@ This is because Crowdin requires temporarily flattening this file and removing t \"Bəyənməmə\"lər sayla göstərilir Yığcam bəyən düyməsi - Minimum en üçün tərtib edilmiş Bəyən düyməsi + Daha kiçik en üçün hazırlanmış Bəyən düyməsi Ən yaxşı görünüş üçün tərtib edilmiş Bəyən düyməsi - API əlçatan deyilsə bir tost bildirişi göstər - Return YouTube Dislike əlçatan deyilsə bir tost bildirişi göstər - Return YouTube Dislike əlçatan deyilsə bir tost bildirişi göstərmə + API əlçatan deyilsə ani bildiriş göstər + Return YouTube Dislike əlçatan deyilsə ani bildiriş göstər + Return YouTube Dislike əlçatan deyilsə ani bildiriş göstərmə Haqqında - Data, Return YouTube Dislike API tərəfindən təmin edilir. Ətraflı öyrənmək üçün bura toxunun + Məlumat Return YouTube Dislike API vasitəsilə alınır. Ətraflı öyrənmək üçün bura toxun - Bu cihaz üçünYouTubeDislike API statistikasını qaytarın - Ortalama API cavab vaxtı - Minimum API cavab vaxtı - Maksimum API cavab vaxtı - Son video üzrə API cavab vaxtı - \"Bəyənməmə\"lər müvəqqəti olaraq əlçatmazdır - Client API limiti var - API gələn səs, çağırış sayı - Heç bir şəbəkə zəngi edilmədi - %d şəbəkə zəngi edildi + Bu cihazda Return YouTube Dislike API statistikası + Orta hesabla API cavab müddəti + Ən aşağı API cavab müddəti + Ən yüksək API cavab müddəti + Son video üzrə API cavab müddəti + Bəyənməmələr müvəqqəti olaraq əlçatmazdır - Qəbuledici API sürət limiti var + API qəbul edilən səsləri, oyanmaların sayı + Heç bir şəbəkə istəyi olmadı + %d şəbəkə istəyi oldu API gələn səs, vaxt bitmə sayı - Heç bir şəbəkə zəngi üçün vaxt bitmədi - %d şəbəkə zəngi üçün vaxt bitdi - API müştəri dərəcəsi məhdudiyyətləri - Heç bir məhdudiyyət yox idi - Client rate limit, %d dəfə oldu + Heç bir şəbəkə istəyi üçün vaxt bitmədi + %d şəbəkə istəyi üçün vaxt bitdi + API qəbuledici sürət məhdudiyyətləri + Heç bir sürət məhdudiyyəti olmadı + Qəbuledici sürət limiti %d dəfə baş verdi %d millisaniyə - Geniş axtarış çubuğunu fəallaşdır - Geniş axtarış paneli aktivləşdirilib - Geniş axtarış paneli deaktiv edilib + Geniş axtarış çubuğunu aktivləşdir + Geniş axtarış çubuğu aktivləşdirilir + Geniş axtarış çubuğu qeyri-aktivdir - Köhnə zaman çubuğu kiçik şəkillərini bərpa et - Axtarış çubuğunun kiçik şəkilləri axtarış çubuğunun üstündə görünəcək - Axtarış çubuğunun miniatürləri tam ekranda görünəcək + Köhnə axtarış çubuğu miniatürlərini qaytar + Axtarış çubuğu miniatürləri axtarış çubuğu üstündə görünəcək + Axtarış çubuğu miniatürləri tam ekranda görünəcək - \"SponsorBlock\"u fəallaşdır - SponsorBlock, YouTube videolarının zəhlətökən hissələrini ötürmək üçün kütlə mənbəli bir sistemdir + \"SponsorBlock\"u aktivləşdir + SponsorBlock, YouTube videolarının lazımsız hissələrini ötürmək üçün kütlə mənbəli sistemdir Görünüş Səsvermə düyməsini göstər - Seqment səsvermə düyməsi göstərilir - Göstərilmir + Bölümə səsvermə düyməsi göstərilir + Bölümə səsvermə düyməsi göstərilmir Yığcam ötürmə düyməsini istifadə et - Minimum en üçün hazırlanmış ötürmə düyməsi - Ən yaxşı görünüş üçün hazırlanmış ötürmə düyməsi - Ötürmə düyməsini avto-gizlət + Ən kiçik en üçün hazırlanmış ötürmə düyməsi + Ən yaxşı görünüş üçün hazırlanan ötürmə düyməsi + Ötürmə düyməsini avtomatik gizlət Ötürmə düyməsi bir neçə saniyə sonra gizlənir - Bütün seqment üçün göstərilən ötürmə düyməsi - Avto-ötürüləndə bir bildiriş göstər - Seqment avto-ötürüləndə bildiriş göstərilir. Nümunəni görmək üçün bura toxunun - Bildiriş göstərilmir. Nümunəni görmək üçün bura toxunun - Seqment olmadan video uzunluğunu göstər - Video uzunluğu çıxılsın bütün seqmentlər, tam video uzunluğunun yanında mötərizədə göstərilir + Bütöv bölüm üçün göstərilən ötürmə düyməsi + Avtomatik ötürüləndə ani bildiriş göstər + Bölüm avto-ötürüləndə bildiriş göstərilir. Nümunə görmək üçün bura toxun + Bildiriş göstərilmir. Nümunə görmək üçün bura toxun + Bölümsüz video uzunluğun göstər + Video uzunluğu bütün bölümləri silir, tam video uzunluğu yanaşı mötərizədə göstərilir Tam video uzunluğu göstərilir - Yeni seqmentlər yaradılır - Yeni seqment yarat düyməsini göstər - Yeni seqment yarat düyməsi göstərilir - Göstərilmir - Yeni seqment addımını tənzimlə - Yeni seqment yaradarkən vaxt tənzimləmə düymələrinin hərəkət etdiyi milli saniyə sayı - Dəyər, müsbət bir ədəd olmalıdır + Yeni bölümlər yaradılır + Yeni bölüm yarat düyməsini göstər + Yeni bölüm yarat düyməsi göstərilir + Yeni bölüm yarat düyməsi göstərilmir + Yeni bölüm irəliləyişini tənzimlə + Yeni bölüm yaradarkən vaxt tənzimləmə düymələrinin hərəkət etdiyi millisaniyə sayı + Dəyər, müsbət rəqəm olmalıdır Təlimatlara bax - Təlimatlar, yeni seqmentlərin yaradılması üçün qaydalar və məsləhətlər ehtiva edir + Təlimatlar, yeni bölümlərin yaradılması üçün qaydalar və məsləhətlər ehtiva edir Təlimatları izləyin - Yeni seqmentləri yaratmazdan əvvəl SponsorBlock təlimatlarını oxuyun + Yeni bölümlər yaratmazdan əvvəl SponsorBlock təlimatlarını oxuyun Artıq oxudum - Göstәr + Mənə göstər Ümumi - API əlçatan deyilsə bir tost bildirişi göstər - SponsorBlock mövcud olmadıqda tost göstərilir - SponsorBlock mövcud deyilsə, tost göstərilmir - Ötürmə sayının izlənməsini fəallaşdır - SponsorBlock liderlik lövhəsinin nə qədər vaxta qənaət edildiyini bilməsinə icazə verir. Bir seqmenti hər ötürəndə liderlik lövhəsinə bir mesaj göndərilir - Ötürmə sayının izlənməsi fəal deyil - Minimum seqment müddəti - Bu dəyərdən (saniyə olaraq) daha qısa olan seqmentlər göstərilməyəcək və ya ötürülməyəcək + API əlçatan deyilsə ani bildirişi göstər + SponsorBlock əlçatan deyilsə bildiriş göstərilir + SponsorBlock əlçatan deyilsə, bildiriş göstərilmir + Ötürmə sayının izlənməsini aktivləşdir + SponsorBlock liderlik lövhəsinin nə qədər vaxta qənaət edildiyini bilməsinə icazə verir. Hər dəfə bölüm ötürüləndə liderlik lövhəsinə məlumat göndərilir + Ötürmə sayının izlənməsi aktiv deyil + Minimum bölüm müddəti + Bölümlər bu dəyərdən (saniyə olaraq) daha qısadırsa göstərilməyəcək və ya ötürülməyəcək Şəxsi istifadəçi kimliyiniz - Bu gizli saxlanılmalıdır. Bu, parol kimidir və heç kimlə paylaşılmamalıdır. Əgər kimsə buna sahibdirsə, o, sizi təqlid edə bilər - Şəxsi istifadəçi identifikatoru ən azı 30 simvol uzunluğunda olmalıdır + Bu gizli saxlanılmalıdır. Bu, parol kimidir və heç kimlə paylaşılmamalıdır. Kimsə bunu bilsə, onlar sizi təqlid edə bilər + Şəxsi istifadəçi kimliyiniz ən az 30 simvol uzunluğunda olmalıdır API URL-ni dəyişdirin - SponsorBlock serverə zəng etmək üçün istifadə etdiyi ünvan + SponsorBlock\'un serverə bağlanması üçün istifadə etdiyi ünvan API URL sıfırlaması - API URL yararsızdır + API URL etibarsızdır API URL dəyişdirildi - Daxilə/Xaricə köçürmə ayarları - Kopyalayın + İdxal/İxrac etmə tənzimləmələri + Köçür ReVanced və digər SponsorBlock platformalarına idxal/ixrac edilə bilən SponsorBlock JSON konfiqurasiyanız - ReVanced və digər SponsorBlock platformalarına idxal/ixrac edilə bilən SponsorBlock JSON konfiqurasiyanız. Bura şəxsi istifadəçi identifikatorunuz daxildir. Bunu ağıllı şəkildə paylaşdığınızdan əmin olun - Ayarlar uğurla daxilə köçürüldü - %s daxilə köçürülmədi - %s xaricə köçürülmədi - Ayarlarınız şəxsi bir SponsorBlock istifadəçi kimliyi ehtiva edir.\n\nİstifadəçi kimliyiniz sanki bir paroldur və heç kimlə paylaşılmamalıdır.\n + ReVanced və digər SponsorBlock platformalarına idxal/ixrac edilə bilən SponsorBlock JSON konfiqurasiyanız. Bura şəxsi istifadəçi kimliyiniz daxildir. Bunu düzgün şəkildə paylaşdığınıza əmin olun + Tənzimləmələr uğurla idxal edildi + %s idxal uğursuz + %s ixrac uğursuz + Tənzimləmələr şəxsi SponsorBlock istifadəçi kimliyi ehtiva edir.\n\nİstifadəçi kimliyiniz parol kimidir və bu paylaşılmamalıdır.\n Təkrar göstərmə Seqment davranışını dəyişdir Sponsor Ödənişli tanıtım, ödənişli yönləndirmələr və birbaşa reklamlar. Öz-tanıtım və ya bəyəndikləri səbəblərə/yaradıcılara/veb saytlara/məhsullara ödənişsiz çağırışlar etmək üçün deyil - Ödənişsiz/Öz-tanıtım + Ödənişsiz/Öz reklamı Ödənişsiz və ya özünü tanıtmaq istisna olmaqla, \"Sponsor\"a bənzəyir. Mallar, ianələr və ya onların kiminlə əməkdaşlıq etdiyi barədə məlumatlar haqqında bölmələr daxildir Qarşılıqlı əlaqə xatırlatma (Abunə ol) - Məzmunun ortasında onları bəyənməyiniz, izləməyiniz və ya onlara abunə olmağınız üçün qısa bir xatırlatma. Əgər uzundursa və ya konkret bir şey haqqındadırsa, bunun əvəzinə öz-tanıtım altında olmalıdır + Məzmunun ortasında onları bəyənməyiniz, izləməyiniz və ya abunə olmağınız üçün qısa xatırlatma. Əgər uzundursa və ya konkret bir şey haqqındadırsa, bu əvəzində öz reklamı olmalıdır Vurğulama Videonun əksər insanlar tərəfindən axtarılan hissəsi Fasilə/Giriş Animasiyası - Həqiqi bir məzmunu olmayan bir aralıq. Bir fasilə, statik kadr və ya təkrarlanan animasiya ola bilər. Məlumat ehtiva edən keçidlər daxil deyil - Son kartları/Generics + Həqiqi bir məzmunu olmayan bir aralıq. Fasilə, statik kadr və ya təkrarlanan animasiya ola bilər. Məlumat ehtiva edən keçidlər daxil deyil + Son kartlar/Kreditlər Kreditlər və ya YouTube bitiş kartları görünəndə. Məlumat daxil olan nəticələr üçün deyil - Önizləmə/İcmal - Videoda və ya bir serialın digər videolarında nələrin gözləndiyini və ya baş verdiyini göstərən, bütün məlumatların başqa bir yerdə təkrarlandığı kliplər kolleksiyası + Önizləmə/Anons/Qısa + Videoda və ya seriyanın digər videolarında nə gözləndiyini və ya baş verdiyini göstərən, bütün məlumatların başqa yerdə təkrarlandığı bölüm toplusu Əlaqəsiz/Zarafatlar - Videonun əsas məzmununu başa düşmək üçün tələb olunmayan yalnız doldurucu və ya yumor üçün əlavə edilmiş tangensial səhnələr. Kontekst və ya arxaplan detallarını təqdim edən seqmentlər daxil deyil + Videonun əsas məzmununu başa düşmək tələb olunmayan yalnız əlaqəsiz və ya yumor üçün əlavə edilmiş tangensial səhnələr. Məzmun və ya arxa plan detallarını təqdim edən bölümlər daxil deyil Musiqi: Musiqi olmayan bölmə Yalnız musiqi videolarında istifadə üçün. Artıq başqa kateqoriyaya aid edilməyən musiqisiz musiqi videoları bölmələri Ötür Vurğulama Sponsoru ötür Tanıtımı ötür - İnteraksiyanı ötür + Əlaqələndirməni ötür Vurğulanana keç Girişi ötür - Aranı ötür - Aranı ötür + Fasiləni ötür + Fasiləni ötür Bitişi ötür Önizləməni ötür Önizləməni ötür - İcmalı ötür - Doldurucu hissəni ötür + Anonsu ötür + Əlaqəsiz hissəni ötür Musiqi olmayan hissəni ötür - Seqmenti ötür - Sponsorlu - Öz tanıtım ötürüldü + Bölümü ötür + Sponsorlu hissə ötürüldü + Öz reklamı, ötürüldü Cansıxıcı xatırlatma ötürüldü - Vurğulanan hissəyə keçdi + Vurğulanan hissə ötürüldü Giriş ötürüldü - Ara hissə ötürüldü - Ara hissə ötürüldü - Sonluq edildi - Önizləmə ötürüldü - Önizləmə ötürüldü - İcmal ötürüldü - Doldurucu hissə ötürüldü - Musiqi olmayan hissə ötürüldü - Göndərilməmiş seqment ötürüldü - Çoxlu seqmentlər ötürüldü - Avto-ötür - Təksəfərlik avto-ötür + Fasilə ötürüldü + Fasilə ötürüldü + Bitiş ötürüldü + Önbaxış ötürüldü + Önbaxış ötürüldü + Anons ötürüldü + Əlaqəsiz hissə ötürüldü + Musiqi olmayan bölmə ötürüldü + Göndərilməmiş bölüm ötürüldü + Çoxlu bölümlər ötürüldü + Avtomatik ötür + Bir dəfə avtomatik ötür Ötürmə düyməsini göstər - Zaman çubuğunda göstər - Sıradan çıxart - Seqment göndərilə bilmir: %s - SponsorBlock, müvəqqəti olaraq çöküb - Seqment göndərilə bilmir (status: %1$d %2$s) - Seqment göndərilə bilmir.\nRate Limited (eyni istifadəçi və ya IP-dən həddindən çox) - Seqment göndərilə bilmir: %s - Seqment göndərilə bilmir.\nArtıq var - Seqment uğurla göndərildi + Axtarma çubuğunda göstər + Qeyri-aktiv et + Bölüm göndərilmir: %s + SponsorBlock müvəqqəti olaraq cavab vermir + Bölüm göndərilmir (status: %1$d %2$s) + Bölüm göndərilmir.\nSürət məhdudlaşıb (eyni istifadəçi və ya IP-dən pik sayda) + Bölüm göndərilmir: %s + Bölüm göndərilmir.\nArtıq var + Bölüm uğurla göndərildi SponsorBlock müvəqqəti əlçatmazdır (API vaxtı bitdi) SponsorBlock müvəqqəti olaraq əlçatan deyil (status %d) SponsorBlock müvəqqəti olaraq əlçatan deyil - Seqment üçün səs verilə bilmir (API vaxtı bitdi) - Seqment üçün səs verilə bilmir (status: %1$d %2$s) - Seqment üçün səs verilə bilmir: %s + Bölüm üçün səsvermə mümkün olmur (API vaxtı bitdi) + Bölüm üçün səsvermə alınmır (status: %1$d %2$s) + Bölüm üçün səsvermə alınmır: %s Müsbət səs Mənfi səs Kateqoriyanı dəyişdir - Səs veriləcək seqment yoxdur - Seqment kateqoriyasını seçin - Ayarlarda kateqoriya sıradan çıxarıldı. Göndərmək üçün kateqoriyanı fəallaşdırın. - Yeni SponsorBlock seqmenti + Səsvermə üçün bölüm yoxdur + Bölüm kateqoriyasını seçin + Seçimlərdə kateqoriya qeyri-aktivdir. Göndərmək üçün kateqoriyanı aktiv et. + Yeni SponsorBlock bölümü - %1$02d:%2$02d:%3$03d yeni seqmentin başlanğıcı və ya sonu olaraq ayarlansın? + %1$02d:%2$02d:%3$03d yeni bölümün başlanğıcı və ya sonu olaraq tənzimlənsin? başlanğıc - bitir + bitiş indi - Seqmentin başladığı vaxt - Seqmentin bitmə vaxtı + Bölüm başladığı vaxt + Bölümün bitmə vaxtı Vaxtlar düzgündür? - Seqment \n\n%1$s\n\n%2$s\n\n(%3$s)\n\nTəqdim etməyə hazırsınız? - Başlanğıc, bitişdən əvvəl olmalıdır - Əvvəlcə vaxt çubuğunda iki yeri qeyd edin - Seqmenti ön izləyin, rahatlıqla ötürdüyünə əmin olun - Seqmentin vaxtına əllə düzəliş et - Seqmentin başlanğıc və bitiş vaxtlarına düzəliş etmək istəyirsiniz? + Bölüm \n\n%1$s\n\n%2$s\n\n(%3$s)\n\nTəqdim etməyə hazırsınız? + Başlanğıc sondan əvvəl olmalıdır + Əvvəlcə vaxt çubuğunda iki yeri doldur + Bölümü izləyin, rahatlıqla ötürdüyünə əmin olun + Bölüm vaxtına əl ilə düzəliş et + Bölümün başlanğıc və ya bitiş vaxtlarına düzəliş etmək istəyirsiniz? Yanlış vaxt verilmişdir Statistikalar - Statistikalar müvəqqəti olaraq əlçatmazdır (API çökdü) + Statistikalar müvəqqəti olaraq əlçatmazdır (API zəifdir) Yüklənir... - SponsorBlock sıradan çıxarıldı + SponsorBlock qeyri-aktiv edildi İstifadəçi adınız: <b>%s</b> İstifadəçi adınızı dəyişdirmək üçün bura toxunun İstifadəçi adı dəyişdirilə bilmir: Status: %1$d %2$s İstifadəçi adı uğurla dəyişdirildi Nüfuzunuz <b>%.2f</b> - <b>%s</b> seqment yaratdınız + <b>%s</b> bölüm yaratdınız SponsorBlock liderlik lövhəsi - İnsanları <b>%s</b> seqmentən xilas etdiniz + İnsanları <b>%s</b> bölümdən xilas etdiniz Qlobal statistikaları və başlıca töhfəçiləri görmək üçün bura toxunun Bu, həyatlarının <b>%s</b> qədəridir.<br>Liderlik lövhəsinə baxmaq üçün toxunun - <b>%s</b> seqmenti ötürdünüz + <b>%s</b> bölümü ötürdünüz Bu, <b>%s</b> deməkdir - Ötürülən seqment sayğacı sıfırlansın? + Ötürülən bölüm hesablayıcı sıfırlansın? %1$s saat %2$s dəqiqə %1$s dəqiqə %2$s saniyə %s saniyə Rəng: Rəng dəyişdirildi Rəngi sıfırla - Yararsız rəng kodu + Etibarsız rəng kodu Rəngi sıfırla Sıfırlayın Haqqında - Data, SponsorBlock API tərəfindən təqdim edilir. Daha ətraflı öyrənmək və digər platformalar üzrə endirmələrə baxmaq üçün bura toxunun + Məlumat SponsorBlock API tərəfindən təqdim edilir. Daha ətraflı öyrənmək və digər platformalar üzrə yükləmələrə baxmaq üçün bura toxunun - Tətbiq versiyasını təqlid et - Təqlid edilir - Təqlid edilmir - Tətbiq versiyası, YouTube-un daha köhnə bir versiyası olaraq təqlid ediləcək.\n\nBu, tətbiqin görünüşünü və özəlliklərini dəyişdirəcək, ancaq bilinməyən yan təsirləri yarana bilər.\n\nDaha sonra söndürsəniz, interfeys xətalarını önləmək üçün tətbiq datasını təmizləmək tövsiyə olunur. + Tətbiq versiyasını saxtalaşdır + Versiya saxtalaşdırıldı + Versiya saxtalaşdırılmadı + Tətbiq versiyası, YouTube-un daha köhnə versiyası şəklində saxtalaşdırılacaq.\n\nBu, tətbiqin görünüşünü və funksiyalarını dəyişdirəcək, ancaq bilinməyən yan təsirlər ola bilər.\n\nDaha sonra söndürsəniz, UI səhvlərini önləmək üçün tətbiq məlumatını təmizləmək tövsiyə olunur. - Təqlid ediləcək tətbiq versiyası + Saxta tətbiq versiyası hədəfi 18.33.40 - Shorts gizli rejimində RYD-ni bərpa et 18.20.39 - Geniş video sürəti & keyfiyyət menyusunu bərpa et - 18.09.39 - Kitabxana vərəqini bərpa et - 17.41.37 - Köhnə pleylist rəfini bərpa et - 17.33.42 - Köhnə interfeys düzümünü bərpa et + 18.09.39 - Kitabxana panelini bərpa et + 17.41.37 - Köhnə pleylist bölməsin bərpa et + 17.33.42 - Köhnə UI tərtibatını bərpa et - Başlanğıc səhifəsini ayarla + Başlanğıc səhifəsini tənzimlə İlkin Ev @@ -937,27 +937,27 @@ This is because Crowdin requires temporarily flattening this file and removing t Abunəliklər Kəşf et - \"Siz\" vərəqi + \"Siz\" paneli Bəyənilən videolar Tarixçə - Trendlər + Trenddə olan - Shorts pleyerinin davam edilməsini söndür - Tətbiq açılanda Shorts pleyeri davam edilməyəcək - Tətbiq açılanda Shorts pleyeri davam ediləcək + Shorts oynadıcı davam etdirməsini bağla + Tətbiq açılanda Shorts oynadıcı davam etməyəcək + Tətbiq açılanda Shorts oynadıcı davam edəcək - Planşet düzümünü işə sal + Planşet tərtibatını aktiv et Planşet tərtibatı aktiv edilib - Sıradan çıxarıldı - İcma göndərişləri planşet düzümündə göstərilmir + Planşet tərtibatı qeyri-aktivdir + İcma elanları planşet tərtibatında göstərilmir - Mini oyunçu - Tətbiqdə kiçildilmiş pleyerin üslubunu dəyişdirin - Mini pleyer növü + Kiçik oynadıcı + Tətbiqdə kiçildilən oynadıcı üslubunu dəyişdir + Kiçik oynadıcı növü Orijinal Telefon Planşet @@ -965,56 +965,61 @@ This is because Crowdin requires temporarily flattening this file and removing t Müasir 2 Müasir 3 Genişləndir və bağla düymələrini gizlət - Gizlidir\n(genişləndirmə və ya bağlamaq üçün mini pleyeri sürüşdür) + Gizlidir\n(genişləndirmək və ya bağlamaq üçün kiçik oynadıcını sürüşdür) Genişləndirmə və bağlama düymələri göstərilir Alt mətnləri gizlət - Alt mətnlər gizlidir + Alt mətnlər gizlədilir Alt mətnlər göstərilir İrəli və geri ötür düymələrini gizlət - İrəli və geri atlama gizlidir - İrəli və geri atlama göstərilir - Overlay qeyri-şəffaflıq + İrəli və geri ötürücülər gizlidir + İrəli və geri ötürücülər göstərilir + Örtük qeyri-şəffaflığı 0-100 arasında qeyri-şəffaflıq dəyəri, burada 0 şəffafdır - Miniplayer örtüyünün qeyri-şəffaflığı 0-100 arasında olmalıdır + Kiçik Oynadıcı örtük qeyri-şəffaflığı 0-100 arası olmalıdır - Qradiyent yükləmə ekranını fəallaşdır - Yükləmə ekranı, qradiyent bir arxaplana sahib olacaq - Yükləmə ekranı, düz bir arxaplana sahib olacaq + Rəngbərəng yükləmə ekranını aktivləşdir + Yükləmə ekranı, rəngbərəng arxa plana malik olacaq + Yükləmə ekranı, vahid arxa plana malik olacaq - Özəl zaman çubuğu rəngini fəallaşdır - Özəl zaman çubuğu rəngi göstərilir - Orijinal zaman çubuğu rəngi göstərilir - Özəl zaman çubuğu rəngi - Zaman çubuğunun rəngi - Yararsız zaman çubuğu rəng dəyəri. İlkin dəyər istifadə edilir. + Fərdi axtarma çubuğu rəngini aktivləşdir + Fərdi axtarma çubuğu rəngi göstərilir + Orijinal axtarma çubuğu rəngi göstərilir + Fərdi axtarma çubuğu rəngi + Axtarma çubuğu rəngi + Etibarsız axtarış çubuğu rəng dəyəri. İlkin dəyər işlədilir. + + + Təsvir bölgə məhdudiyyətlərini ötür + yt4.ggpht.com təsvir host-u istifadə edilir + Orijinal təsvir host-u istifadə edilir\n\nBunu aktivləşdirmə, bəzi bölgələrdə əngəllənən, ağ təsvirləri düzəldə bilər - Ev vərəqi + Ev paneli - Abunəliklər vərəqi + Abunəliklər paneli - \"Siz\" vərəqi - Pleyer pleylistləri, tövsiyələr + \"Siz\" paneli + Oynadıcı pleylistləri, tövsiyələr Axtarış nəticələri - Orijinal kiçik şəkillər - DeArrow & Orijinal kiçik şəkillər - DeArrow & Videodan kadrlar - Videodan kadrlar - DeArrow YouTube videoları üçün izdiham mənbəyinə malik miniatürlər təqdim edir. Bu miniatürlər tez-tez YouTube tərəfindən təqdim edilənlərdən daha uyğun olur\n\nƏgər aktivləşdirilərsə, video URL-lər API serverinə göndəriləcək və başqa heç bir məlumat göndərilməyəcək. Videoda DeArrow miniatürləri yoxdursa, orijinal və ya hələ də çəkilmişlər göstərilir\n\nDeArrow haqqında ətraflı öyrənmək üçün bura toxunun - API əlçatan deyilsə bir tost bildirişi göstər - DeArrow mövcud olmadıqda tost göstərilir - DeArrow mövcud deyilsə, tost göstərilmir - DeArrow API son nöqtəsi - DeArrow miniatür keşinin son nöqtəsinin URL-i - Hərəkətsiz video kadrları - Hərəkətsiz kadrlar, hər bir videonun başından/ortasında/sonundan götürülür. Bu təsvirlər YouTube-da qurulu gəlir və heç bir xarici API istifadə edilmir - Sürətli hərəkətsiz kadrları istifadə et - Orta keyfiyyətli hərəkətsiz kadrlar istifadə edilir. Kiçik şəkillər, daha sürətli yüklənəcək, ancaq canlı yayımlar, buraxılmayan və ya çox köhnə videolar boş kiçik şəkilləri göstərə bilər - Yüksək keyfiyyətli hərəkətsiz kadrlar istifadə edilir - Hərəkətsiz kadrın götürələcəyi video vaxtı + Orijinal miniatürlər + DeArrow & Orijinal miniatürlər + DeArrow & Kadr çəkilişləri + Kadr çəkilişləri + DeArrow YouTube videoları üçün bölük mənbəli miniatürlər təchiz edir. Bu miniatürlər hər zaman YouTube tərəfindən təmin edilənlərdən daha uyğun olur\n\nƏgər aktivləşdirilərsə, video URL-lər API serverinə göndəriləcək və başqa heç bir məlumat göndərilməyəcək. Videoda DeArrow miniatürləri yoxdursa, orijinal və ya hələ də kadr çəkilişləri göstərilir\n\nDeArrow haqqında ətraflı öyrənmək üçün bura toxun + API əlçatan deyilsə ani bildiriş göstər + DeArrow əlçatan deyilsə bildiriş göstərilir + DeArrow əlçatan deyilsə bildiriş göstərilmir + DeArrow API\'nin sonuncu əlaqəsi + DeArrow miniatür keşinin son əlaqəsinin URL-si + Durğun video kadrları + Durğun kadrlar, hər videonun əvvəlindən/ortasından/sonundan götürülür. Bu təsvirlər YouTube-da qurulu gəlir və heç bir xarici API istifadə edilmir + Sürətli kadr çəkilişləri istifadə et + Orta keyfiyyətli durğun kadrlar istifadə edilir. Miniatürlər, daha sürətli yüklənəcək, ancaq canlı yayımlar, buraxılmayan və ya çox köhnə videolar boş miniatürləri göstərə bilər + Yüksək keyfiyyətli durğun kadrlar istifadə edilir + Durğun kadrın götürələcəyi video vaxtı Videonun başlanğıcı Videonun ortası Videonun sonu @@ -1027,93 +1032,93 @@ This is because Crowdin requires temporarily flattening this file and removing t Elanlar açılışda göstərilir Elanlar açılışda göstərilmir Elanları açılışda göstər - Elan provayderinə bağlana bilmədi - Rədd et + Elan provayderinə bağlanmaq olmadı + Ləğv et - Avto-təkrarı fəallaşdır + Avto-təkrarlamanı aktivləşdir Avtomatik təkrar aktivləşdirilib - Avtomatik təkrarlama deaktiv edilib + Avtomatik təkrarlama qeyri-aktiv edilib - Cihaz ölçülərini təqlid et - Cihaz ölçüləri təqlid edildi\n\nDaha yüksək video keyfiyyətləri açıla bilər, ancaq video oxutma ilişmələri, daha pis batareya ömrü və bilinməyən yan təsirləri görə bilərsiniz - Cihaz ölçüləri təqlid edilmədi\n\nBunu fəallaşdırmaq, daha yüksək video keyfiyyətlərinin kilidini aça bilər - Bunu fəallaşdırmaq, video oxutma ilişmələrinə, daha pis batareya ömrünə və bilinməyən yan təsirlərə səbəb ola bilər. + Cihaz ölçülərini saxtalaşdır + Cihaz ölçüləri saxtalaşdı\n\nDaha yüksək video keyfiyyətləri göstərilə bilər, ancaq video oynatma donmaları, daha pis batareya istismarı və bilinməyən yan təsirləri görə bilərsiniz + Cihaz ölçüləri saxtalaşmır\n\nBunu aktivləşdirmə, daha yüksək video keyfiyyətlərinin olmasın təmin edə bilir + Bunu aktivləşdirmə, video oynatma donmalarına, daha pis batareya istismarına və bilinməyən yan təsirlərə səbəb ola bilər. - GmsCore Parametrləri - GmsCore parametrləri + GmsCore Tənzimləmələri + GmsCore üçün Tənzimləmələr URL yönləndirmələrini ötür - Ötürülür - Ötürülmür + URL yönləndirmələri ötürülür + URL yönləndirmələri ötürülmür - Keçidləri brauzerdə aç - Keçidlər xarici brauzerdə açılır - Keçidlər tətbiqdə açılır + Bağlantıları brauzerdə aç + Bağlantılar xarici brauzerdə açılır + Bağlantılar tətbiqdə açılır İzləmə sorğusu parametrini sil - İzləmə sorğusu parametri keçidlərdən silinir - İzləmə sorğusu parametri keçidlərdən silinmir + İzləmə sorğusu parametri bağlantılardan silinir + İzləmə sorğusu parametri bağlantılardan silinmir - Yaxınlaşdırma toxunuş əks-əlaqəsini söndür - Toxunuş əks-əlaqəsi söndürüldü - Toxunuş əks-əlaqəsi fəaldır + Yaxınlaşdırma əks-əlaqəsini bağla + Toxunuş əks-əlaqəsi bağlandı + Toxunuş əks-əlaqəsi aktivdir Avtomatik keyfiyyət Video keyfiyyəti dəyişikliklərini xatırla - Bütün videolara tətbiq et - Yalnız hazırkı videoya tətbiq et - Wi-Fi-da ilkin video keyfiyyəti + Keyfiyyət dəyişiklikləri bütün videolara tətbiq edilir + Keyfiyyət dəyişiklikləri yalnız cari videoya tətbiq edilir + Wi-Fi şəbəkəsində ilkin video keyfiyyəti Mobil şəbəkədə ilkin video keyfiyyəti mobil - wifi - İlkin %1$s keyfiyyəti %2$s olaraq dəyişdirildi + wi-fi + İlkin %1$s keyfiyyəti %2$s kimi dəyişdi Sürət dialoq düyməsini göstər Düymə göstərilir - Göstərilmir + Düymə göstərilmir - Özəl oxutma sürəti - Oxutma sürəti əlavə et və ya dəyişdir - Özəl oxutma sürəti %s dəyərindən az olmalıdır. İlkin dəyərlər istifadə edilir. - Yararsız özəl oxutma sürətləri. İlkin dəyərlər istifadə edilir. + Fərdi oynatma sürəti + Mövcud oynatma sürəti əlavə et və ya dəyişdir + Fərdi sürətlər %s-dən az olmalıdır. Standart dəyərlər istifadəsi. + Etibarsız oynatma sürətləri. Standartlar istifadədədir. - Oxutma sürəti dəyişikliklərini xatırla - Bütün videolara tətbiq et - Yalnız hazırkı videoya tətbiq et - İlkin oxutma sürəti - İlkin sürət: %s + Oynatma sürəti dəyişikliklərin xatırla + Oynatma sürəti dəyişiklikləri bütün videolara aiddir + Oynatma sürəti dəyişiklikləri yalnız cari videoya aiddir + İlkin oynatma sürəti + İlkin sürət %s kimi dəyişdirildi - Köhnə video keyfiyyəti menyusunu bərpa et - Köhnə menyu göstərilir - Köhnə menyu göstərilmir + Köhnə video keyfiyyət menusun qaytar + Köhnə video keyfiyyət menyusu göstərilir + Köhnə video keyfiyyət menyusu göstərmir - Sürüşdürərək çəkməyi fəallaşdır + Axtarmaq üçün sürüşdürməni aktiv et Axtarmaq üçün sürüşdürmə aktivdir - Fəal deyil + Axtarmaq üçün sürüşdürmə aktiv deyil - Client-i təqlid et - Oxutma problemlərini önləmək client-i təqlid et - Client-i təqlid et - Client təqlid edildi - Client təqlid edilmir\n\nVideo oxutma işləməyə bilər - Bu ayarı söndürmək, video oxutma problemlərinə səbəb ola bilər. - Client-i iOS olaraq təqlid et - Client hazırda iOS olaraq təqlid edilir\n\nYan təsirləri bunlardır:\n• HDR video yoxdur\n• İzləmə tarixçəsi işləməyə bilər\n• Daha yüksək video keyfiyyətləri əskik ola bilər\n• Canlı yayımlar yalnız səs kimi oxudulmaz\n• Canlı yayımlar Android 8.0-da əlçatan deyil - Client hazırda Android VR olaraq təqlid edilir\n\nYan təsirlər bunlardır:\n• HDR video yoxdur\n• Uşaqlara özəl videolar oxudulmur\n• Fasilə verilmiş videolar təsadüfi olaraq davam edə bilər\n• Shorts zaman çubuğu kiçik şəkilləri aşağı keyfiyyətdədir\n• \"Endir\" fəaliyyət düyməsi həmişə gizlidir\n• Bitiş ekran kartları həmişə gizlidir + Qəbuledicini saxtalaşdır + Oynatma problemlərinin olmaması üçün client-i saxtalaşdır + Qəbuledicini saxtalaşdır + Qəbuledici saxtalaşdırıldı + Qəbuledici dəyişməyib\n\nVideo oynatma işləməyə bilər + Bu seçimin bağlanması, video oynatma problemlərinə səbəb ola bilər. + Qəbuledicini iOS olaraq saxtalaşdır + Qəbuledici hazırda iOS olaraq dəyişib\n\nYan təsirlərə daxildir:\n• HDR video yoxdur\n• Baxış tarixçəsi işləməyə bilər\n• Daha yüksək video keyfiyyətləri olmaya bilər\n• Canlı yayımlar fon səsi kimi səsləndirilməz\n• Canlı yayımlar Android 8.0-də əlçatan olmur + Qəbuledici hazırda Android VR olaraq dəyişdirilib\n\nYan təsirlərə daxildir:\n• HDR video yoxdur\n• Uşaqlar üçün videolar oynadılmır\n• Fasilə verilmiş videolar gözlənilmədən davam edə bilər\n• Aşağı keyfiyyətli Shorts axtarma çubuğu miniatürləri\n• \"Yüklə\" fəaliyyət düyməsi həmişə gizlidir\n• Bitiş ekran kartları həmişə gizlidir Client kiçik şəkillərini təqlid etmə əlçatmazdır (API vaxtı bitdi) Client kiçik şəkillərini təqlid etmə müvəqqəti əlçatmazdır: %s @@ -1127,55 +1132,55 @@ This is because Crowdin requires temporarily flattening this file and removing t Səsli reklamları əngəllə - Əngəllənib - Əngəllənməyib + Səsli reklamlar bloklanıb + Səsli reklamlar bloklanmayıb - %s əlçatmazdır. Reklamlar görünə bilər. Ayarlarda başqa bir reklam əngəlləmə xidmətinə keçməyə çalışın. - %s serveri bir xəta qaytardı. Reklamlar görünə bilər. Ayarlarda başqa bir reklam əngəlləmə xidmətinə keçməyə çalışın. - Pərçimlənmiş video reklamlarını əngəllə - Sıradan çıxarıldı - İşıqlı proxy - PurpleAdBlock proxy + %s əlçatmazdır. Reklamlar görünə bilər. Seçimlərdə başqa reklam bloku xidmətinə keçirməyə cəhd et. + %s serveri xəta sorğusu verdi. Reklam görünə bilər. Seçimlərdə başqa reklam bloku xidmətinə keçir. + Yerləşdirilən video reklamlarını əngəllə + Qeyri-aktiv edildi + Dəqiq proksi + PurpleAdBlock proksi Video reklamları əngəllə - Əngəllənib - Əngəllənməyib + Video reklamlar bloklanıb + Video reklamlar bloklanmır mesaj silindi Silinən mesajları göstər Silinən mesajlar göstərilməsin - Silinən mesajları spoiler ilə gizlət - Silinən mesajları üzərindən xətt çəkilmiş kimi göstər + Silinmiş mesajları boz panel arxasında gizlət + Silinən mesajları qaralanmış mətn kimi göstər - Kanal Xallarını avtomatik götür - Götürülür - Götürülmür + Kanal Xallarını avtomatik təsdiqlə + Kanal Xalları avtomatik olaraq təsdiqlənir + Kanal Xalları avtomatik olaraq təsdiqlənmir - Twitch sazlama rejimini fəallaşdır - Fəaldır (tövsiyə edilmir) - Twitch debug rejimi deaktiv edilib + Twitch sazlama rejimini aktivləşdir + Twitch sazlama rejimi aktivdir (tövsiyə edilmir) + Twitch sazlama rejimi qeyri-aktiv edilib - ReVanced Ayarları + ReVanced Tənzimləmələri Reklamlar - Reklam əngəlləmə ayarları + Reklam əngəlləmə tənzimləmələri Söhbət - Söhbət ayarları + Söhbət tənzimləmələri Müxtəlif - Müxtəlif ayarlar - Ümumi ayarlar - Digər ayarlar - Client tərəfli reklamlar - Server tərəfli surestream reklamlar + Müxtəlif tənzimləmələr + Ümumi tənzimləmələr + Digər tənzimləmələr + Qəbuledici dəstəkli reklamlar + Server dəstəkli surestream reklamlar Sazlama jurnalı - Sazlama jurnalı fəaldır - Sazlama jurnalı sıradan çıxarılıb + Sazlama jurnalları aktivləşdirilib + Sazlama jurnalları qeyri-aktiv edilib diff --git a/src/main/resources/addresources/values-be-rBY/strings.xml b/src/main/resources/addresources/values-be-rBY/strings.xml index 21a9fb739..7c52c8434 100644 --- a/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/src/main/resources/addresources/values-be-rBY/strings.xml @@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Няправільнае ключавое слова. Немагчыма выкарыстоўваць: \"%s\" у якасці фільтра Няправільнае ключавое слова. \"%1$s\" змяшчае менш за %2$d сімвалаў - Ключавое слова \"$s\" схавае ўсе відэа + Ключавое слова \"%s\" схавае ўсе відэа Схаваць агульную рэкламу @@ -990,6 +990,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Колер панэлі пошуку Няправільнае значэнне колеру панэлі пошуку. Выкарыстоўваецца значэнне па змаўчанні. + + Галоўная ўкладка @@ -1162,6 +1164,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Рэжым адладкі Twitch адключаны + Налады ReVanced Аб\"явы Налады блакіроўкі рэкламы Чат diff --git a/src/main/resources/addresources/values-bg-rBG/strings.xml b/src/main/resources/addresources/values-bg-rBG/strings.xml index e1868c92e..9eb7944b5 100644 --- a/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -463,6 +463,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-bn-rBD/strings.xml b/src/main/resources/addresources/values-bn-rBD/strings.xml index 639289026..2de9de8c1 100644 --- a/src/main/resources/addresources/values-bn-rBD/strings.xml +++ b/src/main/resources/addresources/values-bn-rBD/strings.xml @@ -850,10 +850,10 @@ This is because Crowdin requires temporarily flattening this file and removing t স্পুফ অ্যাপ সংস্করণ লক্ষ্য 18.33.40 - ছদ্মবেশি মোডে RYD পুনরুদ্ধার করে - ১৮.২০.৩৯ - প্রশ্বস্ত ভিডিও স্পিড এবং গুণমান মেনু পুনরুদ্ধার করে - ১৮.০৯.৩৯ - লাইব্রেরি ট্যাপ পুনরুদ্ধার করে - ১৭.৪১.৩৯ - পুরোনো প্লেলিস্ট শেলফ পুনরুদ্ধার করে - ১৭.৩৩.৪২ - পুরোনো UI লেআউট পুনরুদ্ধার করে + 18.20.39 - প্রশ্বস্ত ভিডিও স্পিড এবং গুণমান মেনু পুনরুদ্ধার করে + 18.09.39 - লাইব্রেরি ট্যাপ পুনরুদ্ধার করে + 17.41.37 - পুরোনো প্লেলিস্ট শেলফ পুনরুদ্ধার করে + 17.33.42 - পুরোনো UI লেআউট পুনরুদ্ধার করে শুরুর পৃষ্ঠা সেট করুন @@ -919,6 +919,8 @@ This is because Crowdin requires temporarily flattening this file and removing t সিকবারের রং সিকবারে ভুল রং দেয়া হয়েছে। মূল রং ব্যবহার করছে। + + হোম ট্যাব diff --git a/src/main/resources/addresources/values-bs-rBA/strings.xml b/src/main/resources/addresources/values-bs-rBA/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-bs-rBA/strings.xml +++ b/src/main/resources/addresources/values-bs-rBA/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-ca-rES/strings.xml b/src/main/resources/addresources/values-ca-rES/strings.xml index 913f8c839..59d82325b 100644 --- a/src/main/resources/addresources/values-ca-rES/strings.xml +++ b/src/main/resources/addresources/values-ca-rES/strings.xml @@ -206,6 +206,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-cs-rCZ/strings.xml b/src/main/resources/addresources/values-cs-rCZ/strings.xml index 5adc87081..ce9e934e3 100644 --- a/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -249,7 +249,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Neplatné klíčové slovo. Nelze použít: \'%s\' jako filtr Neplatné klíčové slovo. \'%1$s\' je menší než %2$d znaků - Klíčové slovo \'$s\' skryje všechna videa + Klíčové slovo \'%s\' skryje všechna videa Skrýt obecné reklamy @@ -994,6 +994,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Barva vyhledávacího panelu Neplatná hodnota barvy vyhledávacího panelu. Použít výchozí hodnotu. + + Obejít omezení oblasti obrázku + Použití hostitele obrázků yt4.gggpht.com + Použití originálního hostitele obrázků\n\nPovolení tohoto nastavení může opravit chybějící obrázky, které jsou blokovány v některých regionech + Záložka Domů diff --git a/src/main/resources/addresources/values-da-rDK/strings.xml b/src/main/resources/addresources/values-da-rDK/strings.xml index 2c816baa9..8f57943e2 100644 --- a/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/src/main/resources/addresources/values-da-rDK/strings.xml @@ -248,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Ugyldigt søgeord. Kan ikke bruge: \'%s\' som et filter Ugyldigt søgeord. \'%1$s\' er mindre end %2$d tegn - Nøgleord \'$s\' vil skjule alle videoer + Nøgleord \'%s\' vil skjule alle videoer Skjul generelle annoncer @@ -579,11 +579,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Skjul Shorts i hjemmefeed Shorts i hjemmet feed er skjult - Korte i hjemmet feed er vist + Shorts i hjemmet feed er vist Skjul Shorts i abonnementsfeed - Korte i abonnementsfeed er skjult - Korte i abonnementsfeed vises + Shorts i abonnementsfeed er skjult + Shorts i abonnementsfeed vises Skjul Shorts i søgeresultater Shorts i søgeresultater er skjult Korte i søgeresultater vises @@ -991,6 +991,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Farven på den søgende bar Ugyldig søgelinje farveværdi. Brug standardværdi. + + Bypass billede region restriktioner + Bruger billedvært yt4.ggpht.com + Brug af original billedvært\n\nAktivering af dette kan rette manglende billeder, der er blokeret i nogle regioner + Hjem fane diff --git a/src/main/resources/addresources/values-de-rDE/strings.xml b/src/main/resources/addresources/values-de-rDE/strings.xml index 2f8066119..065278488 100644 --- a/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/src/main/resources/addresources/values-de-rDE/strings.xml @@ -249,7 +249,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Ungültiges Schlüsselwort. Kann nicht verwenden: \'%s\' als Filter Ungültiges Schlüsselwort. \'%1$s\' ist weniger als %2$d Zeichen - Stichwort \'$s\' wird alle Videos ausblenden + Schlüsselwort \'%s\' wird alle Videos ausblenden Allgemeine Werbung ausblenden @@ -680,6 +680,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Nicht anzeigen + Dislikes vorläufig nicht verfügbar (API Timeout) Dislikes nicht verfügbar (Status %d) Nicht verfügbar (Client-API-Limit erreicht) Dislikes nicht verfügbar (%s) @@ -991,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Die Farbe der Suchleiste Ungültiger Suchleisten-Farbwert. Standardwert wird verwendet. + + Bildgebietsbeschränkungen umgehen + Bild-Host yt4.ggpht.com verwenden + Verwendung des ursprünglichen Bild-Hosts\n\nAktivieren kann fehlende Bilder beheben, die in einigen Regionen blockiert werden + Home-Tab diff --git a/src/main/resources/addresources/values-el-rGR/strings.xml b/src/main/resources/addresources/values-el-rGR/strings.xml index 4149dedea..b8af20d04 100644 --- a/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/src/main/resources/addresources/values-el-rGR/strings.xml @@ -247,7 +247,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Μη έγκυρη λέξη-κλειδί. Αδυναμία χρήσης: \'%s\' ως φίλτρο Μη έγκυρη λέξη-κλειδί. Το \'%1$s\' είναι μικρότερο από %2$d χαρακτήρες - Η λέξη «$s» θα κρύψει όλα τα βίντεο + Η λέξη «%s» θα κρύψει όλα τα βίντεο Γενικές διαφημίσεις @@ -992,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Το χρώμα της γραμμής προόδου Μη έγκυρη τιμή χρώματος. Επαναφορά... + + Παράκαμψη μπλοκαρίσματος φόρτωσης εικόνων + Χρησιμοποιείται το domain yt4.ggpht.com για την φόρτωση εικόνων + Χρησιμοποιείται το αρχικό domain για την φόρτωση εικόνων\n\nΗ ενεργοποίηση αυτής της ρύθμισης μπορεί να διορθώσει την φόρτωση εικόνων που είναι μπλοκαρισμένες σε κάποιες περιοχές + Αρχική σελίδα diff --git a/src/main/resources/addresources/values-es-rES/strings.xml b/src/main/resources/addresources/values-es-rES/strings.xml index ee02be6c8..ee8e7ba5b 100644 --- a/src/main/resources/addresources/values-es-rES/strings.xml +++ b/src/main/resources/addresources/values-es-rES/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - ReVanced ¿Desea continuar? Restablecer Actualizar y reiniciar @@ -248,7 +247,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Palabra clave inválida. No se puede usar: \'%s\' como filtro Palabra clave no válida. \'%1$s\' es menor de %2$d caracteres - La palabra clave \'$s\' oculta todos los vídeos + La palabra clave \'%s\' oculta todos los vídeos Ocultar anuncios generales @@ -993,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t El color de la barra de ajustes Valor de color de la barra de búsqueda inválido. Usando el valor por defecto. + + Restricciones de región de imagen bypass + Usando host de imagen yt4.ggpht.com + Utilizando el host de imágenes original\n\nHabilitar esto puede arreglar las imágenes faltantes que están bloqueadas en algunas regiones + Pestaña diff --git a/src/main/resources/addresources/values-et-rEE/strings.xml b/src/main/resources/addresources/values-et-rEE/strings.xml index 7f793cfe6..451fa26d3 100644 --- a/src/main/resources/addresources/values-et-rEE/strings.xml +++ b/src/main/resources/addresources/values-et-rEE/strings.xml @@ -209,6 +209,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-eu-rES/strings.xml b/src/main/resources/addresources/values-eu-rES/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-eu-rES/strings.xml +++ b/src/main/resources/addresources/values-eu-rES/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-fa-rIR/strings.xml b/src/main/resources/addresources/values-fa-rIR/strings.xml index e86551b57..de5e8a1f1 100644 --- a/src/main/resources/addresources/values-fa-rIR/strings.xml +++ b/src/main/resources/addresources/values-fa-rIR/strings.xml @@ -207,6 +207,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-fi-rFI/strings.xml b/src/main/resources/addresources/values-fi-rFI/strings.xml index 1b31d9234..a4ee981a1 100644 --- a/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -34,23 +34,23 @@ This is because Crowdin requires temporarily flattening this file and removing t ReVanced - Haluatteko te jatkaa sitä? + Haluatko jatkaa? Palauta Päivitä ja käynnistä uudelleen - Käynnistä Uudelleen + Käynnistä uudelleen Tuo Kopioi - Peruutetut asetukset nollattu oletukseksi + Revanced asetukset palautettu oletukseksi Tuotu %d asetukset Tuonti epäonnistui: %s MicroG GmsCore ei ole asennettu. Asenna se. - Tarvittavat toimet - MicroG GmsCorella ei ole oikeutta ajaa taustalla.\n\nNoudata puhelimeesi \"Älä tapa sovellustani\" -opasta ja käytä ohjeita MicroG-asennukseen.\n\nTämä on tarpeen, jotta sovellus toimisi. + Vaatii toimenpiteitä + MicroG GmsCorella ei ole oikeutta olla päällä taustalla.\n\nNoudata puhelimesi \"Don\'t kill my app\" -opasta ja käytä ohjeita MicroG-asennukseen.\n\nTämä on tarpeen, jotta sovellus toimisi. Avaa sivusto - MicroG GmsCore akun optimointi on estettävä ongelmien välttämiseksi.\n\nNapauta jatkonäppäintä ja poista akun optimointi käytöstä. + MicroG GmsCoren akun optimointi on estettävä ongelmien välttämiseksi.\n\nNapauta jatka-näppäintä ja poista akun optimointi käytöstä. Jatka @@ -59,47 +59,47 @@ This is because Crowdin requires temporarily flattening this file and removing t ReVanced Käytät ReVanced Patches versiota <i>%s</i> Huomautus - Tämä versio on pre-release ja voit kokea odottamattomia ongelmia + Tämä versio on ennakkojulkaisuversio, joten voit kokea odottamattomia ongelmia Viralliset linkit Tuo / Vie - Tuo / vie peruutetut asetukset + Tuo / Vie ReVanced asetukset Tietoja Mainokset Vaihtoehtoiset pikkukuvat Syöte - Pelaaja + Soitin Yleinen asettelu - Seekbar + Liukusäädin Pyyhkäisyohjaimet Sekalaiset Video - Vianselvitys + Vianetsintä Ota käyttöön tai poista käytöstä vianetsintäasetukset - Vianetsintä lokiin - Vianjäljityslokit ovat käytössä - Vianjäljityslokit ovat pois päältä + Vianetsintätietojen kirjaaminen + Vianetsintälokit ovat käytössä + Vianetsintälokit ovat poistettu käytöstä Loki protokollan puskuri - Vianjäljityslokit sisältävät proto-puskurin - Virheenkorjauslokit eivät sisällä proto-puskuria + Vianetsintälokit sisältävät proto-puskurin + Vianetsintälokit eivät sisällä proto-puskuria Loki pinojäljet - Debug lokit sisältävät pino jälki - Debug lokit eivät sisällä pino jälki - Näytä paahtoleipä, kun peruutettu virhe - Toast näkyy, jos virhe tapahtuu - Toastia ei näytä, jos tapahtui virhe - Virhe poistamalla paastot piilottaa kaikki peruutetut virheilmoitukset.\n\nSinulle ei ilmoiteta odottamattomista tapahtumista. + Vianetsintälokit sisältävät pinojäljet + Vianetsintälokit eivät sisällä pinojälkiä + Näytä ponnahdusilmoitus kun ReVanced virhe tapahtuu + Ponnahdusilmoitus näkyy, jos tapahtuu virhe + Ponnahdusilmoitusta ei näytetä, jos tapahtuu virhe + Virhe ponnahdusilmoitusten pois päältä laittaminen piilottaa kaikki ReVanced virheilmoitukset.\n\nSinulle ei ilmoiteta odottamattomista tapahtumista. - Poista käytöstä kuten / tilaus-painike hehku - Tykkää- ja tilauspainike ei hehku kun mainittu - Tykkää ja tilaus painike hehkuu kun mainittu + Poista käytöstä tykkäys / tilaus-painikeen hehku + Tykkää- ja tilauspainike ei hehku kun se mainitaan + Tykkää- ja tilauspainike hehkuu kun se mainitaan Piilota harmaa erotin - Harmaa erottimet on piilotettu - Harmaa erottimet näytetään + Harmaat erottimet ovat piilossa + Harmaat erottimet näytetään Piilota kanavan vesileima Vesileima on piilotettu Vesileima näytetään @@ -112,114 +112,114 @@ This is because Crowdin requires temporarily flattening this file and removing t Painike on piilotettu Painike näytetään - Piilota \'Sinulle\' hylly kanavan sivulla + Piilota \'Sinulle\' hylly kanavasivulla Hylly on piilotettu - Kestohylly näytetään + Hylly näytetään Piilota \'Ilmoita minulle\' -painike Painike on piilotettu Painike näytetään - Piilota \'Ihmiset myös katselevat\' suosituksia + Piilota \'Ihmiset myös katselevat\' -suositukset Suositukset on piilotettu - Suositukset esitetään + Suositukset näytetään - Piilota \'Näytä lisää\' painike + Piilota \'Näytä lisää\' -painike Painike on piilotettu Painike näytetään Piilota ajoitetut reaktiot Ajoitetut reaktiot on piilotettu - Ajoitetut reaktiot on esitetty - Piilota hakutuloksen hyllyn otsikko + Ajoitetut reaktiot näytetään + Piilota hakutuloksen hyllyn ylätunniste Hyllyn ylätunniste on piilotettu - Hyllyn otsake näytetään + Hyllyn ylätunniste näytetään Piilota kanavan ohjeet Kanavan ohjeet on piilotettu Kanavan ohjeet näytetään Piilota laajennettava siru videoiden alla - Laajennettavat pelimerkit on piilotettu - Laajennettavat pelimerkit näytetään + Laajennettavat sirut on piilotettu + Laajennettavat sirut näytetään Piilota videon laatuvalikon alatunniste - Videon laatu valikon alatunniste on piilotettu - Videon laatu valikon alatunniste näytetään - Piilota yhteisön viestit - Yhteisön virat on piilotettu - Yhteisön virat näytetään - Piilota pienikokoiset mainospalkit - Kompakti mainospalkit on piilotettu - Kompakti mainospalkit näytetään - Piilota elokuvien osio - Elokuvien osio on piilotettu - Elokuvien osio on esitetty - Piilota rehututkimukset - Syöttötutkimukset ovat piilotettuja - Rehututkimukset on esitetty + Videon laatuvalikon alatunniste on piilotettu + Videon laatuvalikon alatunniste näytetään + Piilota yhteisöpostaukset + Yhteisöpostaukset on piilotettu + Yhteisöpostaukset näytetään + Piilota kompaktit bannerit + Kompaktit bannerit on piilotettu + Kompaktit bannerit näytetään + Piilota elokuvat-osio + Elokuvat-osio on piilotettu + Elokuvat-osio näytetään + Piilota syötteen kyselyt + Syötteen kyselyt ovat piilotettu + Syötteen kyselyt näytetään Piilota yhteisön ohjeet - Yhteisön suuntaviivat on piilotettu - Yhteisön suuntaviivat esitetään + Yhteisön ohjeet on piilotettu + Yhteisön ohjeet näytetään Piilota tilaajien yhteisön ohjeet - Tilaajat yhteisön ohjeet on piilotettu - Tilaajat yhteisön ohjeet näytetään - Piilota kanavan jäsenen hylly - Kanavan jäsen hylly on piilotettu - Kanavan jäsenen hylly näytetään - Piilota hätälaatikot - Hätätilanteet on piilotettu - Hätätilanteet näytetään + Tilaajien yhteisön ohjeet on piilotettu + Tilaajien yhteisön ohjeet näytetään + Piilota kanavan jäsen -hylly + Kanavan jäsen -hylly on piilotettu + Kanavan jäsen -hylly näytetään + Piilota hätätilannelaatikot + Hätätilannelaatikot on piilotettu + Hätätilannelaatikot näytetään Piilota infopaneelit - Tietopaneelit on piilotettu - Tietopaneelit näytetään + Infopaneelit on piilotettu + Infopaneelit näytetään Piilota lääketieteelliset paneelit Lääketieteelliset paneelit on piilotettu - Lääkinnälliset paneelit on esitetty + Lääketieteelliset paneelit näytetään Piilota kanavapalkki Kanavapalkki on piilotettu Kanavapalkki näytetään - Piilota Soittoesineet - Soittovälineet on piilotettu - Soittovälineet näytetään - Piilota pikatoiminnot koko näytössä - Nopeat toiminnot on piilotettu - Nopeat toiminnot näytetään - Piilota liittyvät videot nopeissa toiminnoissa + Piilota Playables + Playables on piilotettu + Playables näytetään + Piilota pikatoiminnot koko näytön tilassa + Pikatoiminnot on piilotettu + Pikatoiminnot näytetään + Piilota liittyvät videot pikatoiminnoissa Liittyvät videot on piilotettu Liittyvät videot näytetään - Piilota kuvan hylly hakutuloksissa - Kuvan hylly on piilotettu - Kuvan hylly näytetään - Piilota uusimmat viestit - Viimeisimmät viestit on piilotettu - Viimeisimmät viestit näytetään - Piilota sekoitussoittolistat - Sekoita soittolistoja piilotettu - Sekoita soittolistoja näytetään - Piilota esittäjän kortit - Artistin kortit on piilotettu - Esittäjän kortit näytetään - Piilota sirut - Chips hylly on piilotettu - Chips hylly on näkyvissä - Piilota attribuuttien osio - \'Esillä olevia paikkoja\', Pelit ja Musiikin osat on piilotettu - \'Suositeltuja paikkoja\', Pelit ja Musiikki osiot näytetään - Piilota luvun osio - Luvun osio on piilotettu - Lukujen jakso näytetään - Piilota \'Tutki podcast\' -osio - \'Tutki podcast\' -osiota on piilotettu - \'Tutki podcast\' -osiota näytetään + Piilota kuvahylly hakutuloksissa + Kuvahylly on piilotettu + Kuvahylly näytetään + Piilota uusimmat postaukset + Uusimmat postaukset on piilotettu + Uusimmat postaukset näytetään + Piilota mix-soittolistat + Mix-soittolistat piilotettu + Mix-soittolistat näytetään + Piilota artistikortit + Artistikortit on piilotettu + Artistikortit näytetään + Piilota siruhylly + Siruhylly on piilotettu + Siruhylly näytetään + Piilota attribuutit osio + \'Paikat\', Pelit ja Musiikki -osiot on piilotettu + \'Paikat\', Pelit ja Musiikki -osiot näytetään + Piilota Osat osio + Osat osio on piilotettu + Osat osio näytetään + Piilota \'Tutki podcastia\' -osio + \'Tutki podcastia\' -osio on piilotettu + \'Tutki podcastia\' -osio näytetään Piilota infokorttien osio - Tietokorttien osio on piilotettu - Tietoa korteista -osio näytetään - Piilota Transkriptiosio - Transkriptiosio on piilotettu - Transkriptiosio näytetään + Infokorttien osio on piilotettu + Infokorttien osio näytetään + Piilota Transkriptio-osio + Transkriptio-osio on piilotettu + Transkriptio-osio näytetään Videon kuvaus - Piilota tai näytä videon kuvauskomponentit + Piilota tai näytä videon kuvauskomponentteja Mukautettu suodatin - Piilota komponentit käyttämällä mukautettuja suodattimia + Piilota komponentteja käyttämällä mukautettuja suodattimia Käytä mukautettua suodatinta Mukautettu suodatin on käytössä Mukautettu suodatin on pois käytöstä @@ -228,27 +228,27 @@ This is because Crowdin requires temporarily flattening this file and removing t Luettelo komponentin polun rakentajan merkkijonoista suodatettavaksi uudella rivillä erotettuna Virheellinen mukautettu suodatin: %s Piilota avainsanan sisältö - Piilota haku- ja syötevideot avainsanasuodattimilla - Piilota kotivideot avainsanojen mukaan + Piilota haku- ja syötevideoita avainsanasuodattimilla + Piilota koti videoita avainsanojen mukaan Koti-välilehdessä olevat videot suodatetaan avainsanojen mukaan - Koti-välilehdessä olevat videot eivät ole avainsanojen mukaan suodatettuja - Piilota tilausvideot avainsanojen mukaan - Tilausten välilehdessä olevat videot suodatetaan avainsanojen avulla - Tilausten välilehdessä olevat videot eivät ole avainsanojen mukaan suodatettuja + Koti-välilehdessä olevat videot ei suodateta avainsanojen mukaan + Piilota tilaukset videot avainsanojen mukaan + Tilaukset-välilehdessä olevat videot suodatetaan avainsanojen avulla + Tilaukset-välilehdessä olevat videot ei suodateta avainsanojen avulla Piilota hakutulokset avainsanojen mukaan Hakutulokset suodatetaan avainsanojen mukaan Hakutuloksia ei suodateta avainsanojen mukaan Piilotetut avainsanat - Piilotettavia avainsanoja ja lauseita, erotettuna uusilla riveillä\n\nKeskellä olevat isot kirjaimet on syötettävä kotelon kanssa (esim. iPhone, TikTok, LeBlanc) + Piilotettavia avainsanoja ja lauseita, erotettuna uusilla riveillä\n\nKeskellä olevat isot kirjaimet on syötettävä niin kuin ne on sanassa (esim. iPhone, TikTok, LeBlanc) Tietoja avainsanan suodatuksesta - Etusivu/Tilaus / Hakutulokset suodatetaan piilottaaksesi sisällön, joka vastaa avainsanalausekkeita\n\nRajoitukset\n• Joitakin Shortteja ei välttämättä ole piilotettu\n• Joitakin käyttöliittymän komponentteja ei välttämättä ole piilotettu\n• Hakusanan haku ei välttämättä näytä tuloksia + Koti/Tilaukset/Hakutulokset suodatetaan ja piilotetaan avainsanalauseita käyttäen\n\nRajoitukset\n• Joitakin Shortteja ei välttämättä piiloteta\n• Joitakin käyttöliittymän komponentteja ei välttämättä piiloteta\n• Avainsanan haku ei välttämättä näytä tuloksia Virheellinen avainsana. Ei voida käyttää: \'%s\' suodattimena Virheellinen avainsana. \'%1$s\' on pienempi kuin %2$d merkkiä - Avainsana \'$s\' piilottaa kaikki videot + Avainsana \'%s\' piilottaa kaikki videot Piilota yleiset mainokset @@ -257,38 +257,38 @@ This is because Crowdin requires temporarily flattening this file and removing t Piilota koko näytön mainokset Koko näytön mainokset on piilotettu\n\nTämä ominaisuus on käytettävissä vain vanhemmille laitteille Koko näytön mainokset näytetään - Piilota painettavat mainokset - Painatut mainokset on piilotettu - Painatut mainokset näytetään - Piilota maksullinen kampanjan etiketti - Maksullinen edistäminen merkki on piilotettu - Maksullinen myynninedistämismerkintä on esitetty - Piilota itse sponsoroidut kortit - Itse sponsoroitu kortit ovat piilotettuja - Itse sponsoroidut kortit näytetään - Piilota mainospalkki nähdäksesi tuotteet + Piilota napilliset mainokset + Napilliset mainokset on piilotettu + Napilliset mainokset näytetään + Piilota maksetun mainostuksen tunniste + Maksetun mainostuksen tunniste on piilotettu + Maksetun mainostuksen tunniste näytetään + Piilota itse-sponsoroidut kortit + Itse-sponsoroidut kortit ovat piilotettu + Itse-sponsoroidut kortit näytetään + Piilota banneri nähdäksesi tuotteet Banneri on piilotettu - Mainospalkki näytetään + Banneri näytetään Piilota ostos-linkit videon kuvauksessa Ostoslinkit on piilotettu Ostoslinkit näytetään - Piilota \'Vieraile kaupassa\' -painike kanavien sivuilla + Piilota \'Vieraile kaupassa\' -painike kanavasivuilla Painike on piilotettu Painike näytetään - Piilota web-hakutulokset - Web-hakutulokset on piilotettu - Web-hakutulokset on esitetty + Piilota verkkohakutulokset + Verkkohakutulokset on piilotettu + Verkkohakutulokset näytetään Piilota mainospalkit - Merkkimainospalkit on piilotettu - Myymälämainospalkit näytetään + Mainospalkit on piilotettu + Mainospalkit näytetään - Piilota koko näytön mainokset toimivat vain vanhempien laitteiden kanssa + Piilota koko näytön mainokset toimii vain vanhemmilla laitteilla - Piilota YouTube Premium-tarjoukset - YouTube Premium -kampanjat videosoittimen alla on piilotettu - YouTube Premium -kampanjat videosoittimen alla näytetään + Piilota YouTube Premium -tarjoukset + YouTube Premium -tarjoukset videosoittimen alla on piilotettu + YouTube Premium -tarjoukset videosoittimen alla näytetään Piilota videomainokset @@ -298,70 +298,70 @@ This is because Crowdin requires temporarily flattening this file and removing t URL kopioitu leikepöydälle URL aikaleimalla kopioitu - Näytä kopio videon URL-osoite painike - Painike on näkyvissä. Paina kopioidaksesi videon URL-osoitteen. Voit kopioida videon URL-osoitetta painamalla aikaleima - Painikkeita ei näytetä - Näytä kopion aikaleima URL painike - Painike on näkyvissä. Paina kopioidaksesi videon URL-osoitteen aikaleimalla. Kopioi video ilman aikaleimaa napauttamalla ja pitämällä pohjassa - Painikkeita ei näytetä + Näytä kopioi videon URL-osoite painike + Painike on näkyvissä. Napauta kopioidaksesi videon URL-osoitteen. Paina ja pidä pohjassa kopioidaksesi URL-osoiteen aikaleimalla + Painiketta ei näytetä + Näytä kopioi aikaleima URL-osoite painike + Painike on näkyvissä. Napauta kopioidaksesi videon URL-osoitteen aikaleimalla. Paina ja pidä pohjassa kopioidaksesi URL-osoiteen ilman aikaleimaa + Painiketta ei näytetä Poista katsojan harkinta-valintaikkuna - Dialogi poistetaan - Dialogi näytetään - Tämä ei ohita ikärajoitusta. Se hyväksyy sen automaattisesti. + Valintaikkuna poistetaan + Valintaikkuna näytetään + Tämä ei ohita ikärajoitusta. Se vain hyväksyy sen automaattisesti. Ulkoiset lataukset Asetukset ulkoisen lataajan käyttämiselle - Näytä ulkoinen latauspainike - Lataa painike näytetään soittimessa - Lataa-painiketta ei näytetä soittimessa + Näytä ulkoinen lataus -painike + Latauspainike näytetään soittimessa + Latauspainiketta ei näytetä soittimessa - Ohita lataustoiminto painike - Lataa-painike avaa ulkoisen lataajan - Lataa-painike avaa natiivin sovelluksen sisäisen lataajan + Korvaa lataustoiminto painike + Latauspainike avaa ulkoisen lataajan + Latauspainike avaa natiivin sovelluksen sisäisen lataajan Lataajan paketin nimi - Paketin nimi asennetulle ulkoiselle lataussovelluksellesi, kuten NewPipe tai Seal + Ulkoisen lataussovelluksesi, kuten NewPipen tai Sealin, paketin nimi %s ei ole asennettu. Asenna se. Poista tarkka haku ele käytöstä - Eleet on poistettu käytöstä + Ele on poistettu käytöstä Ele on käytössä - Ota käyttöön seekbar napautus - Seekbar napautus on käytössä - Seekbarin napauttaminen pois käytöstä + Ota käyttöön liukusäätimen napautus + Liukusäätimen napautus on käytössä + Liukusäätimen napautus on pois käytöstä Ota kirkkauden ele käyttöön Kirkkauden pyyhkäisy on käytössä Kirkkauden pyyhkäisy pois päältä - Ota äänenvoimakkuus käyttöön + Ota äänenvoimakkuuden ele käyttöön Äänenvoimakkuuden pyyhkäisy on käytössä - Äänenvoimakkuuden pyyhkäisy pois päältä - Ota käyttöön painallus-pyyhkäisy ele - Pyyhkäisy painamalla on käytössä - Pyyhkäisy painamalla pois päältä + Äänenvoimakkuuden pyyhkäisy on pois käytöstä + Ota käyttöön pyyhkäisy painamalla ele + Pyyhkäisy painamalla ele on käytössä + Pyyhkäisy painamalla ele on pois käytöstä Ota haptinen palaute käyttöön Haptinen palaute on käytössä - Haptinen palaute on poistettu käytöstä + Haptinen palaute on pois käytöstä Tallenna ja palauta kirkkaus - Tallenna ja palauta kirkkaus kokoruututilaan poistuttaessa tai siirryttäessä - Älä tallenna tai palauta kirkkautta kokoruututilaan poistuttaessa tai siirryttäessä - Ota käyttöön automaattinen kirkkauden ele + Tallenna ja palauta kirkkaus kokoruututilasta poistuttaessa tai siihen siirryttäessä + Älä tallenna tai palauta kirkkautta kokoruututilasta poistuttaessa tai siihen siirryttäessä + Ota käyttöön automaattisen kirkkauden ele Automaattinen kirkkaus otetaan käyttöön pyyhkäisemällä alhaisimpaan arvoon Pienimpään arvoon alas pyyhkäiseminen ei ota käyttöön automaattista kirkkautta Automaattinen - Pyyhkäise peittoalueen aikakatkaisu - Mllisekuntien määrä on näkyvissä - Pyyhkäise peittokuvan tekstin koko - Tekstin koko pyyhkäisemällä peittokuva - Taustan näkyvyys pyyhkäisemällä - Pyyhkäisyn peittoalueen taustan näkyvyys - Pyyhkäise suuruusluokka + Pyyhkäisyikkunan aikakatkaisu + Millisekuntien määrä jolloin ikkuna on näkyvissä + Pyyhkäisyikkunan tekstin koko + Tekstin koko pyyhkäisyikkunassa + Pyyhkäisyn taustan näkyvyys + Pyyhkäisyn ikkunan taustan näkyvyys + Pyyhkäisyn kynnysraja Pyyhkäisyä varten tarvittavan kynnyksen määrä @@ -370,59 +370,59 @@ This is because Crowdin requires temporarily flattening this file and removing t Automaattiset kuvatekstit ovat käytössä - Toiminnon painikkeet + Toimintopainikkeet Piilota tai näytä painikkeet videoiden alla - Piilota Tykkää ja vastenmielistä - Tykkää ja tykkääkää painikkeista on piilotettu - Tykkää ja pidä painikkeista näytetään + Piilota Tykkää ja Älä tykkää + Tykkää ja Älä tykkää -painikkeet on piilotettu + Tykkää ja Älä tykkää -painikkeet näytetään - Piilota Jaa + Piilota jaa Jaa-painike on piilotettu - Jakamispainike näytetään + Jaa-painike näytetään - Piilota Raportti - Raporttipainike on piilotettu - Raporttipainike näytetään + Piilota Tee ilmoitus + Tee ilmoitus -painike on piilotettu + Tee ilmoitus -painike näytetään Piilota Remix Remix-painike on piilotettu Remix-painike näytetään Piilota Lataus - Lataa-painike on piilotettu - Lataa-painike näytetään + Latauspainike on piilotettu + Latauspainike näytetään Piilota Kiitos Kiitos painike on piilotettu Kiitos painike näytetään - Hide Clip - Clip painike on piilotettu - Clip painike näytetään + Piilota Klippi + Klippi painike on piilotettu + Klippi painike näytetään Piilota Tallenna soittolistalle - Tallenna soittolista-painikkeeseen on piilotettu - Tallenna soittolista-painike näytetään + Tallenna soittolistalle -painike on piilotettu + Tallenna soittolistalle-painike näytetään - Piilota automaattinen toisto painike + Piilota automaattisen toiston painike Automaattisen toiston painike on piilotettu Automaattisen toiston painike näytetään - Piilota kuvatekstien painike - Tekstityspainike on piilotettu - Kuvatekstien painike näytetään + Piilota tekstitykset painike + Tekstitykset painike on piilotettu + Tekstitykset painike näytetään - Piilota cast painike - Cast painike on piilotettu - Suora-painiketta näytetään + Piilota striimaus painike + Striimaus painike on piilotettu + Striimaus painike näytetään - Navigation buttons + Navigointipainikkeet Piilota tai vaihda painikkeita navigointipalkissa Piilota Koti @@ -438,120 +438,120 @@ This is because Crowdin requires temporarily flattening this file and removing t Luo painike näytetään Piilota Tilaukset - Tilauksen painike on piilotettu + Tilaukset painike on piilotettu Tilaukset painike näytetään - Vaihda Luo ilmoituksilla - Luo painike on vaihdettu Ilmoituspainikkeella\n\nHuom: Tämän käyttöönotto kätkee myös video-mainokset väkisin - Luo painike ei ole vaihdettu Ilmoituspainikkeella - Piilota navigointipainikkeiden otsikot + Vaihda Luo ja Ilmoitukset + Luo painike on vaihdettu Ilmoituspainikkeen kanssa\n\nHuom: Tämän käyttöönotto kätkee myös video-mainokset väkisin + Luo painike ei ole vaihdettu Ilmoituspainikkeen kanssa + Piilota navigointipainikkeiden tunnisteet Tunnisteet piilotettu Tunnisteet näytetään - Flyout menu - Piilota tai näytä pelaaja lentää valikkonimikkeet + Flyout-valikko + Piilota tai näytä soittimen flyout-valikkovalinnat - Piilota Kuvatekstit - Kuvatekstivalikko on piilotettu - Kuvatekstivalikko näytetään + Piilota Tekstitykset + Tekstitykset-valikko on piilotettu + Tekstitykset-valikko näytetään Piilota lisäasetukset Lisäasetukset-valikko on piilotettu Lisäasetukset-valikko näytetään - Piilota silmukkavideo - Toisen videon valikko on piilotettu - Videovalikko on näkyvissä + Piilota Jatkuva toisto + Jatkuvan toiston valikko on piilotettu + Jatkuvan toiston valikko näytetään - Piilota Ambient-tila - Ambient-tila valikko on piilotettu - Ambient-tila -valikko näytetään + Piilota Tunnelmavalaistus + Tunnelmavalaistus valikko on piilotettu + Tunnelmavalaistus valikko näytetään - Piilota & palaute - Ohje & palautevalikko on piilotettu - Ohje & palautevalikko näytetään + Piilota ohje & palaute + Ohje & palaute -valikko on piilotettu + Ohje & palaute -valikko näytetään - Piilota soiton nopeus - Toiston nopeusvalikko on piilotettu - Toiston nopeusvalikko näytetään + Piilota Toistonopeus + Toistonopeus valikko on piilotettu + Toistonopeus valikko näytetään - Piilota lisätiedot + Piilota Lisätietoja Lisätietoja valikko on piilotettu - Lisätietoja valikko on näkyvissä + Lisätietoja valikko näytetään - Piilota lukitusnäyttö - Lukitusnäytön valikko on piilotettu - Lukitusnäytön valikko näytetään + Piilota Näytön lukitus + Näytön lukitus -valikko on piilotettu + Näytön lukitus -valikko näytetään - Piilota ääniraita + Piilota Ääniraita Ääniraita valikko on piilotettu - Ääniraidan valikko näytetään + Ääniraita valikko näytetään - Piilota Tarkkaileminen VR-tilassa - Kello VR-valikossa on piilotettu - Kello VR-valikossa on näkyvissä + Piilota Katso VR-tilassa + Katso VR-tilassa valikko on piilotettu + Katso VR-tilassa valikko näytetään - Piilota edellinen & seuraavat video-painikkeet + Piilota edellinen & seuraava video -painikkeet Painikkeet on piilotettu Painikkeet näytetään - Piilota albumin kortit - Albumin kortit on piilotettu - Albumin kortit näytetään + Piilota albumikortit + Albumikortit ovat piilossa + Albumikortit näytetään Kommentit - Piilota tai näytä kommenttiosion komponentit - Piilota \'Kommentit jäsenten kohdalta\' + Piilota tai näytä kommenttiosion komponentteja + Piilota \'Jäsenten kommentit\' otsikko \'Jäsenten kommentit\' otsikko on piilotettu - \'Jäsenten otsikon kommentit näytetään + \'Jäsenten kommentit\' otsikko näytetään Piilota kommenttiosio Kommenttiosio on piilotettu - Kommentit osio on esitetty - Piilota \'Luo pikanäppäin - \'Luo pikanäppäin on piilotettu - \'Luo pikanäppäin -painike näytetään - Piilota esikatselun kommentti - Esikatselu kommentti on piilotettu - Esikatsele kommentti näytetään + Kommenttiosio näytetään + Piilota \'Luo Shorts-video\' painike + \'Luo Shorts-video\' painike on piilotettu + \'Luo Shorts-video\' painike näytetään + Piilota esikatseltava kommentti + Esikatseltava kommentti on piilotettu + Esikatseltava kommentti näytetään Piilota kiitos painike Kiitos painike on piilotettu Kiitos painike näytetään Piilota aikaleima ja emoji painikkeet Aikaleima ja emoji painikkeet on piilotettu - Aikaleima ja emoji painikkeet näkyvät + Aikaleima ja emoji painikkeet näytetään Piilota joukkorahoitus laatikko Joukkorahoituslaatikko on piilotettu - Joukkorahoitus laatikko on esitetty + Joukkorahoituslaatikko näytetään - Piilota lopulliset näytöt - Näytön loppu kortit on piilotettu - Näytettävät loppunäytöt näytetään + Piilota loppunäytön kortit + Loppunäytön kortit on piilotettu + Loppunäytön kortit näytetään - Suodata palkki - Piilota tai näytä suodatinpalkki syötteessä, haussa ja siihen liittyvissä videoissa + Suodatuspalkki + Piilota tai näytä suodatinpalkki syötteessä, haussa ja liittyvissä videoissa Piilota syötteessä Piilotettu syötteessä Näytetään syötteessä Piilota haussa Piilotettu haussa Näytetään haussa - Piilota asiaan liittyvissä videoissa - Piilotettu aiheeseen liittyvissä videoissa - Näytetään aiheeseen liittyvissä videoissa + Piilota liittyvissä videoissa + Piilotettu liittyvissä videoissa + Näytetään liittyvissä videoissa Piilota kelluva mikrofoni painike - Mikrofonin painike piilotettu - Mikrofonin painike näytetään + Mikrofonipainike piilotettu + Mikrofonipainike näytetään Poista ympäristötila käytöstä kokoruututilassa @@ -695,16 +695,16 @@ This is because Crowdin requires temporarily flattening this file and removing t Prosentteina näytetyt tykkäät Ei tykkää näytetään numerona - Kompakti kaltainen painike + Kompakti tykkäyspainike Tykkää näppäintä tyyliteltynä minimileveydelle Tykkää painike tyyliteltynä parhaaseen ulkonäköön - Näytä paahtoleipä, jos API ei ole käytettävissä - Ponnahdus näytetään, jos Return YouTube Dislike ei ole käytettävissä - Toastia ei näytetä, jos Return YouTube Dislike ei ole käytettävissä + Näytä ponnahdusilmoitus, jos API ei ole käytettävissä + Ponnahdusilmoitus näytetään, jos Return YouTube Dislike ei ole käytettävissä + Ponnahdusilmoitusta ei näytetä, jos Return YouTube Dislike ei ole käytettävissä Tietoja Tiedot on toimittanut Return YouTube Dislike API. Napauta tästä lukeaksesi lisää - ReturnYouTubeDislike API tilastot tämän laitteen + Tämän laitteen ReturnYouTubeDislike API tilastot API-vasteaika, keskiarvo API:n vasteaika, minimi API vasteaika, maksimi @@ -732,157 +732,157 @@ This is because Crowdin requires temporarily flattening this file and removing t Seekbar pikkukuvat näkyvät koko näytössä - Ota SponsorBlock Käyttöön - SponsorBlock on joukkoon hankittu järjestelmä ärsyttävien YouTube-videoiden osien ohittamiseen + Ota SponsorBlock käyttöön + SponsorBlock on käyttäjälähteinen järjestelmä YouTube-videoiden ärsyttävien osien ohittamiseen Ulkoasu Näytä äänestyspainike - Segmentin äänestyspainike näytetään - Segmentin äänestyspainiketta ei näytetä + Osion äänestyspainike näytetään + Osion äänestyspainiketta ei näytetä - Käytä kompaktista ohituspainiketta - Ohita painike, joka on tyylitelty pienimmän leveyden vuoksi - Ohita painike tyyliteltynä parhaan ulkonäön vuoksi + Käytä kompaktia ohituspainiketta + Ohituspainike tyylitelty mahdollisimman pieneksi + Ohituspainike tyylitelty parhaan näköiseksi Piilota ohituspainike automaattisesti - Ohita painike piilottaa muutaman sekunnin kuluttua - Ohita koko segmentin painike - Näytä paahtoleipä ohitettaessa automaattisesti - Toast näytetään, kun segmentti ohitetaan automaattisesti. Napauta tästä nähdäksesi esimerkin - Toastia ei näytetä. Napauta tästä nähdäksesi esimerkin - Näytä videon pituus ilman segmenttejä - Videon pituus miinus kaikki segmentit, näytetään suluissa koko videon pituuden vieressä - Videon koko pituus näytetty - Uusien segmenttien luominen - Näytä uusi segmenttipainike - Luo uusi segmentti-painike näytetään - Luo uusi segmentti-painike ei näy - Säädä uutta segmenttivaihetta - Mllisekuntien määrä liikkuu ajan säätöpainikkeiden luotaessa uusia segmenttejä + Ohituspainike piiloutuu muutaman sekunnin jälkeen + Ohituspainike näytetään koko osion ajan + Näytä ponnahdusilmoitus automaattisesti ohitettaessa + Ponnahdusilmoitus näytetään, kun osio ohitetaan automaattisesti. Napauta tästä nähdäksesi esimerkin + Ponnahdusilmoitusta ei näytetä. Napauta tästä nähdäksesi esimerkin + Näytä videon pituus ilman osioita + Videon pituus ilman osioita, näytetään suluissa koko videon pituuden vieressä + Videon koko pituus näytetään + Uusien osioiden luominen + Näytä luo uusi osio -painike + Luo uusi osio -painike näytetään + Luo uusi osio -painiketta ei näytetä + Uuden osion ajoituksen säätö + Kuinka monta millisekuntia ajansäätöpainikkeet liikkuvat uusia osioita luotaessa Arvon on oltava positiivinen luku Näytä ohjeet - Ohjeet sisältävät sääntöjä ja vinkkejä uusien segmenttien luomiseen + Ohjeet sisältävät sääntöjä ja vinkkejä uusien osioiden luomiseen Noudata ohjeita - Lue SponsorBlock ohjeet ennen uusien segmenttien luomista + Lue SponsorBlock ohjeet ennen uusien osioiden luomista Luettu jo Näytä minulle Yleiset - Näytä paahtoleipä, jos API ei ole käytettävissä - Ponnahdus näytetään, jos SponsorBlock ei ole käytettävissä - Toastia ei näytetä, jos SponsorBlock ei ole käytettävissä - Ota ohituslukujen seuranta käyttöön - Lets the SponsorBlock leaderboard know how much time is saved. A message is sent to the leaderboard every time a segment is skipped - Ohitusten lukumäärän seuranta ei ole käytössä - Segmentin vähimmäiskesto - Tämän arvon lyhyempiä segmenttejä (sekunteina) ei näytetä tai ohiteta + Näytä ponnahdusilmoitus, jos API ei ole käytettävissä + Ponnahdusilmoitus näytetään, jos SponsorBlock ei ole käytettävissä + Ponnahdusilmoitusta ei näytetä, jos SponsorBlock ei ole käytettävissä + Käytä ohitusten lukumäärän seurantaa + Antaa SponsorBlock-tulostaulukon tietää, kuinka paljon aikaa säästyy. Tulostauluun lähetetään viesti aina, kun osio ohitetaan + Ohitusmäärän seuranta ei ole käytössä + Osion vähimmäiskesto + Tätä arvoa (sekunteina) lyhyempiä osioita ei näytetä tai ohiteta Yksityinen käyttäjätunnuksesi - Tämä pitäisi pitää yksityisenä. Tämä on kuin salasana eikä sitä pitäisi jakaa kenellekään. Jos jollakulla on tämä, hän voi tehdä sinulle tyhjäksi + Tämä pitäisi pitää yksityisenä. Tämä on kuin salasana, eikä sitä pitäisi jakaa kenenkään kanssa. Jos jollakulla on tämä, he voivat esiintyä sinuna Yksityisen käyttäjätunnuksen on oltava vähintään 30 merkkiä pitkä Vaihda API URL-osoite - Osoite SponsorBlock käyttää soittaakseen puheluita palvelimelle - API URL reset - API URL on virheellinen + Osoite, jota SponsorBlock käyttää kutsujen lähettämiseen palvelimelle + API URL-osoitteen palautus + API URL-osoite on virheellinen API URL-osoite muutettu - Tuo/Vienti asetukset + Tuo/Vie asetukset Kopioi - SponsorBlock JSON konfiguraatio, joka voidaan tuoda/viedä peruuttamattomiin ja muihin SponsorBlock alustoihin - SponsorBlock JSON konfiguraatio, joka voidaan tuoda/viedä peruuttamattomiin ja muihin SponsorBlock alustoihin. Tämä sisältää yksityisen käyttäjätunnuksen. Muista jakaa tämä viisaasti + SponsorBlock JSON konfiguraatiosi, joka voidaan tuoda/viedä ReVancediin ja muihin SponsorBlock alustoihin + SponsorBlock JSON konfiguraatiosi, joka voidaan tuoda/viedä ReVancediin ja muihin SponsorBlock alustoihin. Tämä sisältää yksityisen käyttäjätunnuksesi. Jaa tätä harkiten Asetukset tuotu onnistuneesti Tuonti epäonnistui: %s Vienti epäonnistui: %s - Asetuksesi sisältävät yksityisen SponsorBlock käyttäjän.\n\nKäyttäjätunnuksesi on kuin salasana ja sitä ei pitäisi koskaan jakaa.\n + Asetuksesi sisältävät yksityisen SponsorBlock käyttäjätunnuksen.\n\nKäyttäjätunnuksesi on kuin salasana ja sitä ei pitäisi koskaan jakaa.\n Älä näytä uudelleen - Muuta segmentin käyttäytymistä + Muuta osion käyttäytymistä Sponsori - Maksettu myynninedistäminen, maksetut lausuntopyynnöt ja suorat mainokset. Ei itseedistämistä tai ilmaisia huutoja aiheuttajille/luojille/verkkosivustoille/tuotteille, joita he pitävät - Maksamaton/Itsensä Edistäminen - Samankaltainen \'Sponsor\' paitsi maksamaton tai itse ylennys. Sisältää osioita kauppatavaraa, lahjoituksia tai tietoa siitä, kenen kanssa he ovat tehneet yhteistyötä - Vuorovaikutusmuistutus (Tilaus) - Lyhyt muistutus tykkäämään, tilaamaan tai seuraamaan niitä sisällön keskellä. Jos se on pitkä tai jotain erityistä, sen sijaan pitäisi olla itsensä edistäminen - Korostus - Se osa video, että useimmat ihmiset etsivät - Väli/Johdon Animaatio + Maksettu mainostus, maksetut viittaukset ja suorat mainokset. Ei itsensä mainostukselle tai ilmaisille maininnoille kampanjoista/luojista/nettisivuista/tuotteista, joista he pitävät + Maksamaton/Itsensä mainostus + Samankaltainen \"sponsorin\" kanssa, mutta maksamattomalle tai itsensä mainostukselle. Sisältää osioita kauppatavarasta, lahjoituksista tai tietoa siitä, kenen kanssa he ovat tehneet yhteistyötä + Vuorovaikutusmuistutus (tilaaminen) + Lyhyt muistutus tykkäämään, tilaamaan tai seuraamaan heitä sisällön keskellä. Jos se on pitkä tai jostain tietystä asiasta, se pitäisi merkitä itsensä mainostukseksi + Kohokohta + Se osa videota, jota useimmat ihmiset etsivät + Tauko/Introanimaatio Aikaväli ilman varsinaista sisältöä. Voi olla tauko, staattinen kehys tai toistuva animaatio. Ei sisällä siirtymiä, jotka sisältävät tietoa - Loppukortit/Tekijät - Tekijät tai kun YouTube-loppukortit näkyvät. Ei johtopäätöksiä joissa on tietoa - Esikatselu/Recap/Hook - Kokoelma leikkeitä, jotka osoittavat, mitä on tulossa tai mitä tapahtui videossa tai muissa videoita sarja, kun kaikki tiedot toistetaan muualla - Filler Tangent/Jokes - Tangential kohtauksia lisätään vain täyteainetta tai huumoria, joita ei tarvitse ymmärtää pääsisällön video. Ei sisällä segmenttejä, jotka tarjoavat konteksteja tai taustatietoja - Musiikki: Muu Osio - Vain käytettäväksi musiikkivideoissa. Musiikkivideoiden osiot ilman musiikkia, jotka eivät jo kuulu toiseen kategoriaan + Loppukortit/-tekstit + Lopputekstit tai kun YouTuben loppukortit tulevat näkyviin. Ei lopetuksille joissa on tietoa + Esikatselu/Kertaus/Koukku + Kokoelma leikkeitä, jotka osoittavat, mitä on tulossa tai mitä tapahtui videossa tai muissa sarjan videoissa, joiden kaikki informaatio toistuu muualla + Epäolennainen täytesisältö/Vitsit + Täytteeksi tai huumoriksi lisättyjä toissijaisia kohtauksia, joita videon pääsisällön ymmärrys ei edellytä. Ei sisällä aiheeseen liittyviä tai taustatietoja tarjoavia osioita + Musiikki: Musiikiton osa + Vain musiikkivideoille. Musiikkivideoiden osiot ilman musiikkia, jotka eivät jo kuulu toiseen kategoriaan Ohita - Korostus + Kohokohta Ohita sponsori - Ohita kampanja + Ohita mainostus Ohita vuorovaikutus - Ohita korostus + Ohita kohokohtaan Ohita intro - Ohita väliaika - Ohita väliaika - Skip outro + Ohita tauko + Ohita tauko + Ohita outro Ohita esikatselu Ohita esikatselu Ohita kertaus - Ohita täyte + Ohita täytesisältö Ohita ei-musiikki - Ohita segmentti - Ohitettu sponsori - Ohitettu itsensä ylennys - Ohitettu ärsyttävä muistutus - Ohitettu korostettavaksi - Ohitettu johdanto - Ohitettu väliaika - Ohitettu väliaika - Ohitettu ulkoasu - Ohitettu esikatselu - Ohitettu esikatselu - Ohitettu palautus - Ohitettu täyte - Ohitettu ei-musiikki osio - Ohitettu lähettämätön segmentti - Ohitettu useita segmenttejä + Ohita osio + Ohitettiin sponsori + Ohitettiin itsensä mainostus + Ohitettiin ärsyttävä muistutus + Ohitettiin kohokohtaan + Ohitettiin intro + Ohitettiin tauko + Ohitettiin tauko + Ohitettiin outro + Ohitettiin esikatselu + Ohitettiin esikatselu + Ohitettiin kertaus + Ohitettiin täytesisältö + Ohitettiin ei-musiikki osio + Ohitettiin lähettämätön osio + Ohitettiin useita osioita Ohita automaattisesti Ohita automaattisesti kerran Näytä ohituspainike - Näytä hakupalkissa - Poista Käytöstä - Segmenttiä ei voitu lähettää: %s - SponsorBlock on väliaikaisesti alas - Segmenttiä ei voitu lähettää (tila: %1$d %2$s) - Ei voida lähettää segmenttiä.\nRate Limited (liian monta samaa käyttäjää tai IP) - Segmenttiä ei voi lähettää: %s - Segmenttiä ei voi lähettää.\non jo olemassa - Segmentti lähetetty onnistuneesti + Näytä liukusäätimessä + Poista käytöstä + Osiota ei voitu lähettää: %s + SponsorBlock on väliaikaisesti alhaalla + Osiota ei voitu lähettää (tila: %1$d %2$s) + Ei voida lähettää osiota.\nLiian monta pyyntöä samalta käyttäjältä tai samasta IP:stä + Osiota ei voi lähettää: %s + Osiota ei voi lähettää.\nOn jo olemassa + Osio lähetetty onnistuneesti SponsorBlock ei ole tilapäisesti käytettävissä - SponsorBlock ei tilapäisesti ole käytettävissä (tila %d) - SponsorBlock tilapäisesti ei ole käytettävissä - Segmenttiä ei voitu äänestää (API aikakatkaistu) - Segmenttiä ei voitu äänestää (tila: %1$d %2$s) - Segmenttiä ei voitu äänestää: %s - Upvote - Alaäänestys + SponsorBlock ei ole tilapäisesti käytettävissä (tila %d) + SponsorBlock ei ole tilapäisesti käytettävissä + Osiota ei voitu äänestää (API aikakatkaistu) + Osiota ei voitu äänestää (tila: %1$d %2$s) + Osiota ei voitu äänestää: %s + Äänestä ylös + Äänestä alas Vaihda kategoria - Ei ole segmenttejä, joista äänestäisi - Valitse segmentin kategoria - Kategoria ei ole käytössä asetuksissa. Salli kategoria lähettääksesi. - Uusi SponsorBlock segmentti + Ei ole osioita, joita äänestää + Valitse osion kategoria + Kategoria on poistettu käytöstä asetuksissa. Salli kategoria lähettääksesi. + Uusi SponsorBlock osio - Set %1$02d:%2$02d:%3$03d kuin the new segment? - aloita + Aseta %1$02d:%2$02d:%3$03d uuden osion aluksi tai lopuksi? + alku loppu nyt - Aika jolloin segmentti alkaa - Aika kun segmentti päättyy + Aika jolloin osio alkaa + Aika jolloin osio päättyy Ovatko ajat oikein? - Segmentti on\n\n%1$s\n\n%2$s\n\n(%3$s)\n\nValmiina lähettää? - Aloitus on oltava ennen loppua + Osio alkaa\n\n%1$s\nja loppuu\n%2$s\n\n(%3$s)\n\nValmis lähettämään? + Alku on oltava ennen loppua Merkitse ensin kaksi sijaintia aikapalkissa - Esikatsele segmenttiä ja varmista, että se ohitetaan sujuvasti - Muokkaa segmentin ajoitusta manuaalisesti - Haluatko muokata ajoitusta segmentin alkua tai loppua varten? + Esikatsele osio ja varmista, että se ohitetaan sujuvasti + Muokkaa osion ajoitusta manuaalisesti + Haluatko muokata osion alku- vai loppuaikaa? Virheellinen aika Tilastot @@ -891,28 +891,28 @@ This is because Crowdin requires temporarily flattening this file and removing t SponsorBlock on poistettu käytöstä Käyttäjänimesi: <b>%s</b> Vaihda käyttäjänimeä napauttamalla tästä - Käyttäjänimeä ei voitu muuttaa: %1$d %2$s - Käyttäjätunnuksen vaihto onnistui + Käyttäjänimeä ei voitu muuttaa: Tila: %1$d %2$s + Käyttäjänimen vaihto onnistui Maineesi on <b>%.2f</b> - Olet luonut <b>%s</b> segmentit - SponsorBlock leaderboard - Olet tallentanut ihmisiä <b>%s</b> -segmenteistä + Olet luonut <b>%s</b> osiota + SponsorBlock tulostaulu + Olet pelastanut ihmisiä <b>%s</b> segmentiltä Napauta tästä nähdäksesi globaalit tilastot ja ylimmät avustajat - Tuo on <b>%s</b> heidän elämästään.<br>Napauta tästä nähdäksesi leaderboard + Tuo on <b>%s</b> heidän elämästään.<br>Napauta tästä nähdäksesi tulostaulun Olet ohittanut <b>%s</b> osiota - Tuo <b>%s</b> - Palautetaanko ohitettujen segmenttien laskuri? + Tuo on <b>%s</b> + Nollataanko ohitettujen segmenttien laskuri? %1$s tuntia %2$s minuuttia %1$s minuuttia %2$s sekuntia %s sekuntia Väri: Väri vaihdettu - Värin nollaus + Väri nollattu Virheellinen värikoodi Nollaa väri Palauta Tietoja - SponsorBlock API tarjoaa tiedot. Napauta tästä saadaksesi lisää tietoa ja katso lataukset muille alustoille. + Tiedot tarjoaa SponsorBlock API. Napauta tätä saadaksesi lisätietoja ja nähdäksesi lataukset muille alustoille Spoof app versio @@ -958,7 +958,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Yhteisön viestit eivät näy tablet-asetteluissa - Miniplayer + Minisoitin Muuta sovelluksen tyyliä pienennettynä pelaajalla Pienoissoittimen tyyppi Alkuperäinen @@ -993,6 +993,10 @@ This is because Crowdin requires temporarily flattening this file and removing t The color of the seekbar Virheellinen seekbarin väriarvo. Käytetään oletusarvoa. + + Ohita kuvan alueen rajoitukset + Käyttämällä kuvan isäntä yt4.ggpht.com + Etusivu välilehti @@ -1007,9 +1011,9 @@ This is because Crowdin requires temporarily flattening this file and removing t DeArrow- ja Still-kaappaukset Kaappaa edelleen DeArrow tarjoaa joukkoon hankittuja pikkukuvia YouTube-videoille. Nämä pikkukuvat ovat usein merkityksellisempiä kuin YouTube\n\nJos käytössä, videon URL-osoitteet lähetetään API-palvelimelle, eikä muita tietoja ole lähetetty. Jos videossa ei ole DeArrow pikkukuvia, sitten alkuperäiset tai vielä kaappaukset näytetään\n\nNapauta tästä saadaksesi lisätietoja DeArrowista - Näytä paahtoleipä, jos API ei ole käytettävissä - Toast näytetään, jos DeArrow ei ole käytettävissä - Toastia ei näytetä, jos DeArrow ei ole käytettävissä + Näytä ponnahdusilmoitus, jos API ei ole käytettävissä + Ponnahdusilmoitus näytetään, jos DeArrow ei ole käytettävissä + Ponnahdusilmoitusta ei näytetä, jos DeArrow ei ole käytettävissä DeArrow API endpoint DeArrow thumbnail -välimuistin päätepisteen URL Yhä videon kaappaukset @@ -1103,7 +1107,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Vanhaa videon laatuvalikkoa ei näytetä - Ota dia käyttöön etsiäksesi + Ota liu\'uta etsiäksesi käyttöön Liu\'uta etsiäksesi on käytössä Liu\'uta etsiäksesi ei ole käytössä diff --git a/src/main/resources/addresources/values-fil-rPH/strings.xml b/src/main/resources/addresources/values-fil-rPH/strings.xml index e8ce1f790..86d3e04e7 100644 --- a/src/main/resources/addresources/values-fil-rPH/strings.xml +++ b/src/main/resources/addresources/values-fil-rPH/strings.xml @@ -243,7 +243,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Di-wastong keyword. Hindi magagamit ang: \"%s\" bilang filter Di-wastong keyword. Ang \"%1$s\" ay mas mababa sa %2$d character - Itatago ng keyword na \"$s\" ang lahat ng video + Itatago ng keyword na \"%s\" ang lahat ng video Itago ang mga pangkalahatang ad @@ -974,6 +974,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Ang kulay ng seekbar Di-wastong halaga ng kulay ng seekbar. Gamit ang default na halaga. + + Tab ng tahanan diff --git a/src/main/resources/addresources/values-fr-rFR/strings.xml b/src/main/resources/addresources/values-fr-rFR/strings.xml index 448a3c877..866fbebfc 100644 --- a/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -248,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Mot-clé invalide. Impossible d\'utiliser : \'%s\' comme filtre Mot-clé invalide. \'%1$s\' contient moins de %2$d caractères - Le mot-clé \'$s\' masquera toutes les vidéos + Le mot-clé «%s» masquera toutes les vidéos Masquer les pubs générales @@ -992,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t La couleur de la barre de recherche Valeur de couleur de la barre de recherche invalide. + + Ignorer les restrictions de région de l\'image + Utiliser l\'hôte d\'image yt4.ggpht.com + Utiliser l\'hôte d\'image original\n\nActiver ceci peut corriger les images manquantes qui sont bloquées dans certaines régions + Onglet d\'accueil diff --git a/src/main/resources/addresources/values-gl-rES/strings.xml b/src/main/resources/addresources/values-gl-rES/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-gl-rES/strings.xml +++ b/src/main/resources/addresources/values-gl-rES/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-gu-rIN/strings.xml b/src/main/resources/addresources/values-gu-rIN/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-gu-rIN/strings.xml +++ b/src/main/resources/addresources/values-gu-rIN/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-hi-rIN/strings.xml b/src/main/resources/addresources/values-hi-rIN/strings.xml index 15e93d94a..9276d3080 100644 --- a/src/main/resources/addresources/values-hi-rIN/strings.xml +++ b/src/main/resources/addresources/values-hi-rIN/strings.xml @@ -206,6 +206,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-hr-rHR/strings.xml b/src/main/resources/addresources/values-hr-rHR/strings.xml index 40207dfb9..c91542961 100644 --- a/src/main/resources/addresources/values-hr-rHR/strings.xml +++ b/src/main/resources/addresources/values-hr-rHR/strings.xml @@ -210,6 +210,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-hu-rHU/strings.xml b/src/main/resources/addresources/values-hu-rHU/strings.xml index c1d354091..8e553f4d9 100644 --- a/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -93,6 +93,9 @@ This is because Crowdin requires temporarily flattening this file and removing t A hibaüzenetek kikapcsolása elrejti az összes ReVanced hibaértesítést.\n\nNem kap értesítést semmilyen váratlan eseményről. + Like / feliratkozás gomb ragyogásának kikapcsolása + Like / feliratkozás gomb nem fog ragyogni mikor megemlítik + Like / feliratkozás gomb ragyogni fog mikor megemlítik Szürke elválasztó elrejtése A szürke elválasztók el vannak rejtve A szürke elválasztók láthatóak @@ -244,7 +247,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Érvénytelen kulcsszó.\'%s\'nem használható szűrőként Helytelen kulcsszó. \'%1$s\' kevesebb, mint %2$d karakter - \'$s\' kulcsszó elrejti az összes videót + \'%s\' kulcsszó elrejti az összes videót Általános hirdetések elrejtése @@ -989,6 +992,8 @@ This is because Crowdin requires temporarily flattening this file and removing t A keresősáv színe Érvénytelen színérték. Az alap érték használata. + + Kezdőlap @@ -1112,6 +1117,7 @@ This is because Crowdin requires temporarily flattening this file and removing t A beállítás kikapcsolása videolejátszási problémákat okozhat. Hamis kliens iOS-re A kliens jelenleg iOS-re van hamisítva\n\nA mellékhatások a következők:\n• Nincs HDR-videó\n• Előfordulhat, hogy a megtekintési előzmények nem működnek\n• Hiányozhatnak a jobb videóminőségek\n• Az élő közvetítések nem játszhatók le csak hangként\n• Élő a streamek nem érhetők el Android 8.0 rendszeren + A kliens jelenleg az Android VR-t utánozza\n\nMellékhatásokkal együtt:\n• Nincs HDR video\n• Nincs \'Kids\' videólejátszás\n• A pillanatmegállított videók véletlenszerűen elindulhatnak\n• Alacsony minőségű Shorts csűszka bélyegképek\n• A letöltés gomb mindig rejtett\n• Videó végi kártyák mindig rejtett Hamis kliens miniatűrök nem érhetők el (API időtúllépés) A hamis kliens miniatűrök átmenetileg nem érhetők el: %s diff --git a/src/main/resources/addresources/values-hy-rAM/strings.xml b/src/main/resources/addresources/values-hy-rAM/strings.xml index df9280950..a95b0ac5f 100644 --- a/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -202,6 +202,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-in-rID/strings.xml b/src/main/resources/addresources/values-in-rID/strings.xml index d62e17cc1..6d6787911 100644 --- a/src/main/resources/addresources/values-in-rID/strings.xml +++ b/src/main/resources/addresources/values-in-rID/strings.xml @@ -99,14 +99,14 @@ This is because Crowdin requires temporarily flattening this file and removing t Pemisah abu-abu disembunyikan Pemisah abu-abu ditampilkan Sembunyikan watermark saluran - Watermark disembunyikan + Tanda air disembunyikan Watermark ditampilkan Sembunyikan rak mendatar Rak berikut disembunyikan:\n• Berita sela\n• Lanjut menonton\n• Jelajahi saluran lain\n• Belanja\n• Tonton lagi Rak ditampilkan - Sembunyikan tombol \'Gabung\' + Sembunyikan \'Gabung\' Tombol disembunyikan Tombol ditampilkan @@ -115,7 +115,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Rak ditampilkan - Sembunyikan tombol \'Beri tahu saya\' + Sembunyikan \'Beri tahu saya\' Tombol disembunyikan Tombol ditampilkan @@ -124,41 +124,41 @@ This is because Crowdin requires temporarily flattening this file and removing t Anjuran ditampilkan - Sembunyikan tombol \'Tampilkan Lebih\' + Sembunyikan \'Tampilkan Lebih\' Tombol disembunyikan Tombol ditampilkan Sembunyikan waktu reaksi Waktu reaksi disembunyikan Tampilkan Waktu Reaksi - Sembunyikan header rak hasil pencarian + Sembunyikan header rak pencarian Sembunyikan Shelf Header Tampilkan Shelf Header Sembunyikan Panduan Saluran Panduan saluran disembunyikan Panduan saluran ditampilkan - - Chip yang dapat diperluas disembunyikan + Sembunyikan opsi deret di bawah video + Opsi deret disembunyikan Chip yang dapat diperluas ditampilkan - Sembunyikan footer menu kualitas video - Footer menu kualitas video disembunyikan - Footer menu kualitas video ditampilkan - Sembunyikan postingan komunitas - Postingan komunitas disembunyikan + Sembunyikan footer menu mutu video + Footer menu mutu video disembunyikan + Footer menu mutu video ditampilkan + Sembunyikan post. komunitas + Post. komunitas disembunyikan Postingan komunitas ditampilkan - Sembunyikan banner padat - Banner padat disembunyikan + Sembunyikan spanduk ringkas + Spanduk ringkas disembunyikan Banner padat ditampilkan Sembunyikan bagian film - Bagian film sudah disembunyikan + Bagian film disembunyikan Bagian film ditampilkan - Sembunyikan survei umpan balik - Survei umpan balik disembunyikan + Sembunyikan survei + Survei disembunyikan Survei umpan balik ditampilkan Sembunyikan pedoman komunitas Pedoman komunitas disembunyikan Pedoman komunitas ditampilkan - Sembunyikan pedoman komunitas untuk para pelanggan - Pedoman komunitas untuk para pelanggan disembunyikan + Sembunyikan pedoman komunitas pelanggan + Pedoman komunitas pelanggan disembunyikan Pedoman komunitas untuk para pelanggan ditampilkan Sembunyikan rak anggota saluran Rak anggota saluran disembunyikan @@ -166,8 +166,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Sembunyikan kotak darurat Kotak darurat disembunyikan Kotak darurat ditampilkan - Sembunyikan panel informasi - Panel informasi disembunyikan + Sembunyikan panel info + Panel info disembunyikan Panel informasi ditampilkan Sembunyikan panel medis Panel medis disembunyikan @@ -175,8 +175,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Sembunyikan bilah saluran Bilah saluran disembunyikan Bilah saluran ditampilkan - Sembunyikan konten yang dapat diputar - Konten yang dapat diputar disembunyikan + Sembunyikan konten tonton + Konten tonton disembunyikan Yang dapat diputar ditunjukkan Sembunyikan tindakan cepat di layar penuh Tindakan cepat disembunyikan @@ -184,11 +184,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Sembunyikan video terkait dalam tindakan cepat Video terkait disembunyikan Video terkait ditampilkan - Sembunyikan rak gambar dalam hasil pencarian + Sembunyikan rak gambar di pencarian Rak gambar disembunyikan Rak gambar ditampilkan - Sembunyikan kiriman terbaru - Kiriman terbaru disembunyikan + Sembunyikan post. terbaru + Post. terbaru disembunyikan Kiriman terbaru ditampilkan Sembunyikan daftar putar campuran Daftar putar campuran disembunyikan @@ -197,19 +197,19 @@ This is because Crowdin requires temporarily flattening this file and removing t Kartu artis disembunyikan Kartu artis ditampilkan Sembunyikan rak chip - Rak chip disembunyikan + Rak opsi deret disembunyikan Rak chip ditampilkan Sembunyikan bagian atribut - \'Tempat unggulan\', bagian Permainan dan Musik disembunyikan - \'Tempat unggulan\', bagian Permainan dan Musik ditampilkan + \'Tempat menonjol\', \'Permainan\', dan \'Musik\' disembunyikan + \'Tempat menonjol\', \'Permainan\', dan \'Musik\' ditampilkan Sembunyikan bagian Bab Bagian Bab sudah disembunyikan Bagian Bab sudah ditampilkan Sembunyikan bagian \'Jelajahi podcast\' - Bagian \'Jelajahi podcast\' sudah disembunyikan + Bagian \'Jelajahi podcast\' disembunyikan Bagian \'Jelajahi podcast\' ditampilkan - Sembunyikan bagian kartu info - Bagian kartu info sudah disembunyikan + Sembunyikan kartu info + Kartu info sudah disembunyikan Bagian kartu info sudah ditampilkan Sembunyikan bagian transkrip Bagian transkrip sudah disembunyikan @@ -223,7 +223,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Penyaring khusus dimatikan Penyaring khusus - Serangkaian daftar pembangun jalur komponen yang disaring dipisahkan dengan baris baru + Daftar untaian karakter untuk disaring, dipisah dengan baris baru Penyaring khusus tidak valid: %s Sembunyikan kata kunci konten Sembunyikan pencarian dan umpan video menggunakan penyaring kata kunci @@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Kata kunci tidak sah: \'%s\' Kata kunci tidak sah. \'%1$s\' kurang dari %2$d karakter - Kata kunci \'$s\' akan menyembunyikan semua video + Kata kunci \'%s\' akan menyembunyikan semua video Sembunyikan iklan umum @@ -271,7 +271,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Tautan belanja disembunyikan Tautan belanja ditampilkan - Sembunyikan tombol \'Lihat toko\' di laman saluran + Sembunyikan \'Lihat toko\' di laman saluran Tombol disembunyikan Tombol ditampilkan Sembunyikan hasil pencarian web @@ -307,7 +307,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Hapus dialog peringatan untuk penonton Dialog akan dihapus Dialog akan ditampilkan - Ini tidak mengabaikan batasan usia. Hanya menerimanya secara otomatis. + Ini tidak mengabaikan batasan usia. Hanya otomatis menerimanya. Unduhan eksternal @@ -454,9 +454,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Menu caption disembunyikan Menu caption ditampilkan - Sembunyikan Setelan tambahan - Menu Setelan tambahan disembunyikan - Menu setelan tambahan ditampilkan + Sembunyikan P\'aturan tambahan + Menu p\'aturan tambahan disembunyikan + Menu p\'aturan tambahan ditampilkan Sembunyikan Ulangi video Menu ulangi video disembunyikan @@ -516,7 +516,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Sembunyikan komentar pratinjau Komentar pratinjau disembunyikan Komentar pratinjau ditampilkan - Sembunyikan tombol terima kasih + Sembunyikan \'terima kasih\' Tmbl terima kasih disembunyikan Tmbl terima kasih ditampilkan Sembunyikan timestamp dan tombol emoji @@ -754,10 +754,21 @@ This is because Crowdin requires temporarily flattening this file and removing t Tombol buat segmen baru ditampilkan Tombol buat segmen baru tidak ditampilkan Sesuaikan langkah segmen baru + Jumlah milidetik tombol penyesuaian waktu bergerak saat membuat segmen baru + Nilainya harus berupa angka positif Lihat pedoman + Pedoman berisi aturan dan tips untuk membuat segmen baru + Ikuti pedoman + Bacalah panduan SponsorBlock sebelum membuat segmen baru Sudah dibaca Tunjukkan Umum + Tampilkan pesan toast jika API tidak tersedia + Toast ditampilkan jika SponsorBlock tidak tersedia + Toast tidak ditampilkan jika SponsorBlock tidak tersedia + Nyalakan pelacakan melewati hitungan + Mengizinkan leaderboard SponsorBlock mengetahui berapa banyak waktu yang diselamatkan. Sebuah pesan dikirim ke leaderboard setiap kali sebuah segmen dilewati + Pelacakan melewati hitungan tidak dinyalakan Durasi minimum segmen Ini harus dijaga kerahasiaannya. Seperti kata sandi dan tidak disarankan untuk dibagikan dengan siapa pun. Jika seseorang mendapatkan ini, mereka dapat menyamar sebagai Anda Ubah URL API @@ -830,7 +841,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Tentang - Versi aplikasi akan dipalsukan ke versi YouTube yang lebih lama.\n\nIni akan mengubah tampilan dan fitur aplikasi, namun efek samping yang tidak diketahui mungkin terjadi.\n\nJika nanti dinonaktifkan, disarankan untuk menghapus data aplikasi untuk mencegah kesalahan UI. + Versi aplikasi akan dipalsukan ke versi lama YouTube.\n\nIni akan mengubah tampilan dan fitur aplikasi, tapi mungkin terjadi efek samping tidak diketahui.\n\nJika nanti dinonaktifkan, disarankan menghapus data aplikasi agar UI tidak kacau. @@ -861,6 +872,11 @@ This is because Crowdin requires temporarily flattening this file and removing t + + Abaikan batasan daerah gambar + Menggunakan sumber yt4.ggpht.com + Menggunakan sumber gambar asli\n\nMengaktifkan ini akan memperbaiki gambar hilang di daerah tertentu + @@ -880,6 +896,9 @@ This is because Crowdin requires temporarily flattening this file and removing t + Abaikan pengalihan URL + Pengalihan URL diabaikan + Pengalihan URL tidak diabaikan @@ -888,6 +907,15 @@ This is because Crowdin requires temporarily flattening this file and removing t + Mutu video otomatis + Ingat perubahan mutu video + Perubahan mutu diatur ke semua video + Perubahan mutu hanya diatur di video saat ini + Mutu video ke bawaan di jejaring Wi-Fi + Mutu video ke bawaan di jejaring seluler + seluler + wifi + Mutu bawaan %1$s diubah ke: %2$s Tombol ditampilkan @@ -898,6 +926,9 @@ This is because Crowdin requires temporarily flattening this file and removing t + Pulihkan menu lawas mutu video + Menu lawas mutu video ditampilkan + Menu lawas mutu video tidak ditampilkan diff --git a/src/main/resources/addresources/values-is-rIS/strings.xml b/src/main/resources/addresources/values-is-rIS/strings.xml index 8b6dc6225..dd25becd2 100644 --- a/src/main/resources/addresources/values-is-rIS/strings.xml +++ b/src/main/resources/addresources/values-is-rIS/strings.xml @@ -207,6 +207,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-it-rIT/strings.xml b/src/main/resources/addresources/values-it-rIT/strings.xml index b9f15f9c0..7a7361365 100644 --- a/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/src/main/resources/addresources/values-it-rIT/strings.xml @@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Parola chiave non valida. Impossibile utilizzare: \'%s\' come filtro Parola chiave non valida. \'%1$s\' è minore di %2$d caratteri - Parola chiave \'$s\' nasconderà tutti i video + La parola chiave \'%s\' nasconderà tutti i video Nascondi gli annunci generali @@ -576,7 +576,7 @@ This is because Crowdin requires temporarily flattening this file and removing t - Nascondi Pantaloncini nel feed home + Nascondi Shorts nella scheda Home Pantaloncini nel feed domestico sono nascosti Vengono mostrati i pantaloncini in home feed @@ -990,6 +990,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Il colore della barra di ricerca Valore colore seekbar non valido. Usare il valore predefinito. + + Bypass restrizioni regione immagine + Uso host immagine yt4.ggpht.com + Usando l\'host immagine originale\n\nAbilitando questo si possono correggere le immagini mancanti bloccate in alcune regioni + Scheda home @@ -1113,7 +1118,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Disattivare questa impostazione potrebbe causare problemi di riproduzione video. Spoof client per iOS Il client è attualmente spoofed per iOS\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• La cronologia dell\'orologio potrebbe non funzionare\n• Potrebbero mancare qualità video più elevate\n• I flussi dal vivo non possono riprodurre solo l\'audio\n• I flussi dal vivo non sono disponibili su Android 8.0 - Il client è attualmente spoofed per Android VR\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Pantaloncini seekbar miniature\n• Il pulsante di azione del download è sempre nascosto\n• Le schede dello schermo finale sono sempre nascoste + Il client è attualmente spoofed per Android VR\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Shorts seekbar miniature\n• Il pulsante di azione del download è sempre nascosto\n• Le schede dello schermo finale sono sempre nascoste Le miniature del client non sono disponibili (timeout API) Miniature del client Spoof temporaneamente non disponibili: %s diff --git a/src/main/resources/addresources/values-iw-rIL/strings.xml b/src/main/resources/addresources/values-iw-rIL/strings.xml index 1df1e2113..d0979363f 100644 --- a/src/main/resources/addresources/values-iw-rIL/strings.xml +++ b/src/main/resources/addresources/values-iw-rIL/strings.xml @@ -260,6 +260,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-ja-rJP/strings.xml b/src/main/resources/addresources/values-ja-rJP/strings.xml index ac1245a62..e4b087ae0 100644 --- a/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -247,7 +247,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 無効なキーワードです。フィルタとして使用できません: \'%s\' 無効なキーワードです。\'%1$s\' は %2$d 文字未満です - キーワード \'$s\' はすべてのビデオを非表示にします + キーワード \'%s\' はすべての動画を非表示にします 一般的な広告を非表示 @@ -989,6 +989,10 @@ This is because Crowdin requires temporarily flattening this file and removing t シークバーの色 シークバーの色の値が無効です。デフォルト値を使用してください。 + + 画像領域の制限をバイパスする + イメージホストの使用 yt4.ggpht.com + ホームタブ diff --git a/src/main/resources/addresources/values-ka-rGE/strings.xml b/src/main/resources/addresources/values-ka-rGE/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-ka-rGE/strings.xml +++ b/src/main/resources/addresources/values-ka-rGE/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-kk-rKZ/strings.xml b/src/main/resources/addresources/values-kk-rKZ/strings.xml index 129124860..9ae16aa08 100644 --- a/src/main/resources/addresources/values-kk-rKZ/strings.xml +++ b/src/main/resources/addresources/values-kk-rKZ/strings.xml @@ -205,6 +205,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-km-rKH/strings.xml b/src/main/resources/addresources/values-km-rKH/strings.xml index 60d4843a2..7612d20ac 100644 --- a/src/main/resources/addresources/values-km-rKH/strings.xml +++ b/src/main/resources/addresources/values-km-rKH/strings.xml @@ -203,6 +203,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-kn-rIN/strings.xml b/src/main/resources/addresources/values-kn-rIN/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-kn-rIN/strings.xml +++ b/src/main/resources/addresources/values-kn-rIN/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-ko-rKR/strings.xml b/src/main/resources/addresources/values-ko-rKR/strings.xml index 858fd7a1b..5590125de 100644 --- a/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -46,9 +46,9 @@ This is because Crowdin requires temporarily flattening this file and removing t - GmsCore가 설치되어 있지 않습니다. 설치하세요 + MicroG GmsCore가 설치되어 있지 않습니다. 설치하세요 필수 조치 - MicroG GmsCore에 백그라운드에서 실행할 수 있는 권한이 없습니다\n\n휴대폰에 대한 \"Don\'t kill my app\" 가이드를 읽어보고, MicroG 설치 지침을 적용하세요\n\n앱이 실행하려면 이 과정이 필요합니다 + MicroG GmsCore에 백그라운드에서 실행할 수 있는 권한이 없습니다\n\n이 기기에 대한 \"Don\'t kill my app\" 가이드를 읽어보고, MicroG 설치 지침을 적용하세요\n\n앱이 실행하려면 이 과정이 필요합니다 웹사이트 열기 MicroG GmsCore를 배터리 최적화 목록에서 제외하여 앱 문제를 방지할 수 있습니다\n\n배터리 최적화 목록에서 제외하려면 \'계속하기\' 버튼을 누르세요 계속하기 @@ -244,12 +244,12 @@ This is because Crowdin requires temporarily flattening this file and removing t This is because keywords can be in any language, and showing an example in the localized script helps convey this. --> 필터링할 키워드 및 구문을 줄바꿈으로 구분하여 설정합니다\n\n영어 키워드는 대소문자를 구분하여 입력해야 합니다 (예: iPhone, TikTok, LeBlanc) 키워드 필터링 정보 - 홈 피드 / 구독 피드 / 검색 결과에서 키워드와 일치하는 콘텐츠가 숨겨집니다\n\n알려진 문제점:\n• 일부 Shorts는 숨겨지지 않을 수 있습니다\n• 일부 화면 구성요소가 숨겨지지 않을 수 있습니다\n• 키워드를 검색하면 결과가 표시되지 않을 수 있습니다 + 홈 피드 / 구독 피드 / 검색 결과에서 키워드와 일치하는 콘텐츠가 숨겨집니다\n\n알려진 문제점:\n• 일부 Shorts는 숨겨지지 않을 수 있습니다\n• 일부 화면 구성요소가 숨겨지지 않을 수 있습니다\n• 필터링 키워드를 검색하면 결과가 표시되지 않을 수 있습니다 잘못된 키워드입니다. \'%s\'를 필터로 사용할 수 없습니다 \'%1$s\'는 잘못된 키워드입니다. 필터링 키워드는 %2$d 글자 이상이어야 합니다. - 키워드 \'$s\'를 사용하면 모든 동영상이 숨겨집니다 + 키워드 \'%s\'를 사용하면 모든 동영상이 숨겨집니다 일반 레이아웃 광고 숨기기 @@ -258,9 +258,9 @@ This is because Crowdin requires temporarily flattening this file and removing t 전체 화면 광고 숨기기 전체 화면 광고가 숨겨집니다\n\n알림: 이 설정은 구형 기기에서만 사용할 수 있습니다 전체 화면 광고가 노출됩니다 - 일반 레이아웃 광고 숨기기 - 일반 레이아웃 광고가 숨겨집니다 - 일반 레이아웃 광고가 노출됩니다 + 버튼형 광고 숨기기 + 버튼형 광고가 숨겨집니다 + 버튼형 광고가 노출됩니다 유료 광고 포함 라벨 숨기기 유료 광고 포함 라벨이 숨겨집니다 유료 광고 포함 라벨이 노출됩니다 @@ -300,12 +300,10 @@ This is because Crowdin requires temporarily flattening this file and removing t URL을 클립보드에 복사하였습니다 타임스탬프를 표기한 URL을 클립보드에 복사하였습니다 동영상 URL 복사 버튼 표시하기 - 버튼을 표시합니다. -버튼을 눌러서 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기한 동영상 URL이 복사됩니다 + 버튼을 표시합니다. \n버튼을 눌러서 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기한 동영상 URL이 복사됩니다 버튼을 표시하지 않습니다 타임스탬프를 표기한 URL 복사 버튼 표시하기 - 버튼을 표시합니다. -버튼을 눌러서 타임스탬프를 표기한 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기하지 않은 동영상 URL이 복사됩니다 + 버튼을 표시합니다. \n버튼을 눌러서 타임스탬프를 표기한 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기하지 않은 동영상 URL이 복사됩니다 버튼을 표시하지 않습니다 @@ -326,12 +324,12 @@ This is because Crowdin requires temporarily flattening this file and removing t 오프라인 저장 버튼으로 기본 다운로더를 실행할 수 있습니다 (YouTube Premium 기능) 외부 다운로더 패키지명 NewPipe 또는 Seal와 같은 설치된 외부 다운로더 패키지명입니다 - %s은(는) 설치되어 있지 않습니다. 설치하세요 + %s 는 설치되어 있지 않습니다. 설치하세요 - 세밀하게 탐색 제스처 비활성화하기 - 세밀하게 탐색 제스처를 비활성화합니다\n• 필름 스트립 오버레이 - 세밀하게 탐색 제스처를 활성화합니다\n• 필름 스트립 오버레이 + 세밀하게 보면서 탐색 제스처 비활성화하기 + 세밀하게 보면서 탐색 제스처를 비활성화합니다\n• 필름 스트립 오버레이 + 세밀하게 보면서 탐색 제스처를 활성화합니다\n• 필름 스트립 오버레이 재생바 터치 조작 활성화하기 @@ -352,8 +350,8 @@ This is because Crowdin requires temporarily flattening this file and removing t 진동 피드백을 활성화합니다 진동 피드백을 비활성화합니다 화면 밝기 저장 및 복원 활성화하기 - 전체 화면에서 나가거나 들어갈 때마다 밝기 값을 저장 및 복원합니다 - 전체 화면에서 나가거나 들어갈 때마다 밝기 값을 저장 및 복원하지 않습니다 + 전체 화면에서 나가거나 들어갈 때마다 화면 밝기 값을 저장 및 복원합니다 + 전체 화면에서 나가거나 들어갈 때마다 화면 밝기 값을 저장 및 복원하지 않습니다 스와이프 제스처로 자동 밝기 활성화하기 스와이프 제스처로 밝기가 0이 되면 자동 밝기를 활성화합니다 스와이프 제스처로 밝기가 0이 되더라도 자동 밝기를 활성화하지 않습니다 @@ -568,8 +566,8 @@ This is because Crowdin requires temporarily flattening this file and removing t 롤링 넘버 애니메이션 비활성화하기 - 다음 롤링 넘버 애니메이션을 비활성화합니다\n• 실시간 조회수, 시청자 수 롤링 애니메이션 (플레이어 하단)\n• 좋아요 개수, 조회수 롤링 애니메이션 (동영상 설명) - 다음 롤링 넘버 애니메이션을 활성화합니다\n• 실시간 조회수, 시청자 수 롤링 애니메이션 (플레이어 하단)\n• 좋아요 개수, 조회수 롤링 애니메이션 (동영상 설명) + 다음 롤링 넘버 애니메이션을 비활성화합니다\n• 조회수, 시청자 수 롤링 애니메이션 (플레이어 하단)\n• 좋아요 개수, 조회수 롤링 애니메이션 (동영상 설명) + 다음 롤링 넘버 애니메이션을 활성화합니다\n• 조회수, 시청자 수 롤링 애니메이션 (플레이어 하단)\n• 좋아요 개수, 조회수 롤링 애니메이션 (동영상 설명) 동영상 플레이어 재생바 숨기기 @@ -649,7 +647,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 사운드 메타데이터 라벨 숨기기 메타데이터 라벨이 숨겨집니다 메타데이터 라벨이 노출됩니다 - 관련 동영상 링크 라벨 숨기기 + FULL 또는 관련 동영상 링크 라벨 숨기기 동영상 링크 라벨이 숨겨집니다 동영상 링크 라벨이 노출됩니다 사운드 버튼 숨기기 @@ -866,12 +864,12 @@ This is because Crowdin requires temporarily flattening this file and removing t 싫어요 카테고리 변경 투표할 구간이 없습니다 - 구간 카테고리를 선택해주세요 + 구간 카테고리를 선택하세요 이 카테고리는 비활성화되어 있습니다. 제출하려면 설정에서 활성화해야 합니다 새 SponsorBlock 구간 - %1$02d:%2$02d:%3$03d을 구간의 시작 또는 끝으로 설정할까요? + %1$02d:%2$02d:%3$03d을 구간의 시작 또는 끝으로 설정하겠습니까? 시작 현재 @@ -882,8 +880,8 @@ This is because Crowdin requires temporarily flattening this file and removing t YT shows the same seekbar time format for all languages, and this string is confirming the segment time as it appears in the seekbar. --> 선택한 구간이\n\n%1$s\n부터\n%2$s\n\n(%3$s) 까지 입니다\n\n이렇게 제출하겠습니까? 구간의 시작 또는 끝을 잘못 설정하였습니다 - 먼저 재생바에서 시작 지점과 끝 지점을 표시해주세요 - 구간 미리 보기 버튼을 눌러서 설정한 구간이 정상적으로 건너뛰기가 되는지 확인해주세요 + 먼저 재생바에서 시작 지점과 끝 지점을 표시하세요 + 구간 미리 보기 버튼을 눌러서 설정한 구간이 정상적으로 건너뛰기가 되는지 확인하세요 직접 시간 구간 편집하기 구간의 시작이나 끝을 편집하겠습니까? 잘못된 시간 형식입니다 @@ -934,7 +932,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 앱 시작 페이지 변경하기 - 기본 + 기본값 검색 @@ -996,6 +994,11 @@ This is because Crowdin requires temporarily flattening this file and removing t 재생바 색상 잘못된 재생바 색상 값이므로 기본값으로 초기화합니다 + + 이미지 표시 국가 제한 우회하기 + 이미지 호스트로 yt4.ggpht.com를 사용합니다 + 기본 이미지 호스트를 사용합니다\n\n이 설정을 활성화하면 일부 국가에서 차단된 이미지를 수신할 수 있습니다 (채널 프로필 사진, 커뮤니티 게시물 이미지, etc.) + 홈 탭 @@ -1084,7 +1087,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 동영상 재생 속도 다이얼로그 버튼 표시하기 - 버튼이 노출됩니다 + 버튼을 표시합니다 버튼을 표시하지 않습니다 @@ -1119,7 +1122,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 이 설정을 비활성화하면 동영상 재생 문제가 발생할 수 있습니다 iOS 클라이언트로 변경하기 클라이언트를 iOS 클라이언트로 변경합니다\n\n알려진 문제점:\n• HDR 동영상을 재생할 수 없습니다\n• 브랜드 계정 사용자는 시청 기록을 사용할 수 없습니다\n• 동영상이 초고화질 동영상 값으로 재생되지 않을 수 있습니다 (1440p, 2160p)\n• 실시간 스트림에서 \'백그라운드 재생\'을 사용할 수 없습니다\n• Android 8.0 사용자는 실시간 스트림을 재생할 수 없습니다 - 클라이언트를 Android VR 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상을 재생할 수 없습니다\n- Kids 동영상을 재생할 수 없습니다\n• 일시 정지된 동영상이 갑자기 다시 시작될 수 있습니다\n• 저화질 Shorts 재생바 썸네일이 표시됩니다\n• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다\n• 최종 화면 카드가 표지되지 않습니다 + 클라이언트를 Android VR 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상을 재생할 수 없습니다\n- Kids 동영상을 재생할 수 없습니다\n• 일시 정지된 동영상이 갑자기 다시 시작될 수 있습니다\n• 저화질 Shorts 재생바 썸네일이 표시됩니다\n• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다\n• 최종 화면 카드가 표시되지 않습니다 클라이언트 썸네일을 사용할 수 없습니다 (응답 시간 초과) 클라이언트 썸네일을 일시적으로 사용할 수 없습니다: %s @@ -1148,8 +1151,8 @@ This is because Crowdin requires temporarily flattening this file and removing t %s 서버에서 오류가 발생했기 때문에 광고가 표시될 것입니다. 설정에서 다른 광고 차단 서비스로 전환해 보세요 광고 차단 Proxy 서버 사용하기 사용하지 않기 - Luminous proxy - PurpleAdBlock proxy + Luminous Proxy + PurpleAdBlock Proxy 동영상 광고 차단하기 @@ -1157,11 +1160,11 @@ This is because Crowdin requires temporarily flattening this file and removing t 동영상 광고를 차단하지 않습니다 - 메시지를 삭제합니다 - 삭제된 메시지 표시하기 - 삭제된 메시지 표시하지 않기 - 스포일러 뒤에 삭제된 메시지 숨기기 - 삭제된 메시지를 줄이 그어진 텍스트로 표시하기 + 메시지를 제거합니다 + 제거된 메시지 표시하기 + 제거된 메시지 표시하지 않기 + 스포일러 뒤에 제거된 메시지 숨기기 + 제거된 메시지를 줄이 그어진 텍스트로 표시하기 채널 포인트 자동 적립하기 diff --git a/src/main/resources/addresources/values-ky-rKG/strings.xml b/src/main/resources/addresources/values-ky-rKG/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-ky-rKG/strings.xml +++ b/src/main/resources/addresources/values-ky-rKG/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-lo-rLA/strings.xml b/src/main/resources/addresources/values-lo-rLA/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-lo-rLA/strings.xml +++ b/src/main/resources/addresources/values-lo-rLA/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-lt-rLT/strings.xml b/src/main/resources/addresources/values-lt-rLT/strings.xml index 69d9c0e75..d11d685d4 100644 --- a/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -207,6 +207,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-lv-rLV/strings.xml b/src/main/resources/addresources/values-lv-rLV/strings.xml index 85a6c49b9..1de88018d 100644 --- a/src/main/resources/addresources/values-lv-rLV/strings.xml +++ b/src/main/resources/addresources/values-lv-rLV/strings.xml @@ -206,6 +206,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-mk-rMK/strings.xml b/src/main/resources/addresources/values-mk-rMK/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-mk-rMK/strings.xml +++ b/src/main/resources/addresources/values-mk-rMK/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-ml-rIN/strings.xml b/src/main/resources/addresources/values-ml-rIN/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-ml-rIN/strings.xml +++ b/src/main/resources/addresources/values-ml-rIN/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-mn-rMN/strings.xml b/src/main/resources/addresources/values-mn-rMN/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-mn-rMN/strings.xml +++ b/src/main/resources/addresources/values-mn-rMN/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-mr-rIN/strings.xml b/src/main/resources/addresources/values-mr-rIN/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-mr-rIN/strings.xml +++ b/src/main/resources/addresources/values-mr-rIN/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-ms-rMY/strings.xml b/src/main/resources/addresources/values-ms-rMY/strings.xml index cd3ca961b..dbfb3edcc 100644 --- a/src/main/resources/addresources/values-ms-rMY/strings.xml +++ b/src/main/resources/addresources/values-ms-rMY/strings.xml @@ -205,6 +205,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-my-rMM/strings.xml b/src/main/resources/addresources/values-my-rMM/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-my-rMM/strings.xml +++ b/src/main/resources/addresources/values-my-rMM/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-nb-rNO/strings.xml b/src/main/resources/addresources/values-nb-rNO/strings.xml index 3f3f5a75c..8b0988060 100644 --- a/src/main/resources/addresources/values-nb-rNO/strings.xml +++ b/src/main/resources/addresources/values-nb-rNO/strings.xml @@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Ugyldig søkeord. Kan ikke bruke: \'%s\' som et filter Ugyldig nøkkelord. \'%1$s\' er mindre enn %2$d tegn - Nøkkelord \'$s\' vil skjule alle videoer + Nøkkelord \'%s\' vil skjule alle videoer Skjul generelle annonser @@ -426,9 +426,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Hjem-knappen er skjult Hjem knappen vises - Skjul kort - Kortstokk-knappen er skjult - Kortstokk-knappen vises + Skjul Shorts + Shorts-knappen er skjult + Shorts-knappen vises Skjul Lag Lage knappen er skjult @@ -575,16 +575,16 @@ This is because Crowdin requires temporarily flattening this file and removing t - Skjul kort i hjemmeskjermen - Korter i hjemmelagningen er skjult - Korter i hjemmeskjermen vises + Skjul Shorts i hjemmefeeden + Shorts i hjemmefeed er skjult + Shorts i hjemmefeed vises - Skjul kort i abonnementsfeed - Korter i abonnements-feed er skjult - Koraller i abonnementsfeed vises - Skjul kort i søkeresultater - Kortere i søkeresultatene er skjult - Kortere i søkeresultatene vises + Skjul Shoets i abonnementsfeed + Shorts i abonnementsfeed er skjult + Shorts i abonnementsfeed vises + Skjul Shorts i søkeresultatene + Shorts i søkeresultatene er skjult + Shorts i søkeresultatene vises Skjul join knapp Bli-med knappen er skjult @@ -684,7 +684,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Vis mislykte på Shorts Misliker vist på shorts Misliker som vises på Shorts\n\nLimitasjon: Misdannelser kan hende i inkognito-modus ikke vises i inkognito-modus - Misliker skjult på shorts + Misliker skjult på Shorts Misliker som prosent Misliker vises som prosent Misliker som vist som tall @@ -937,8 +937,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Deaktiver gjenopptakelse av Shorts spiller - Kort spiller vil ikke gjenoppta ved oppstart av app - Kortere spiller vil gjenoppta ved oppstart av app + Shorts spiller vil ikke gjenoppta ved oppstart av app + Shorts spiller vil gjenoppta ved oppstart av app Aktiver oppsett for nettbrett @@ -982,6 +982,10 @@ This is because Crowdin requires temporarily flattening this file and removing t Farge på søkefeltet Ugyldig farge på søkelinjen. Bruker standardverdien. + + Forbigå bilde-restriksjoner + Bruk bildesvertyt4.ggpht.com + Hjem fane diff --git a/src/main/resources/addresources/values-ne-rIN/strings.xml b/src/main/resources/addresources/values-ne-rIN/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-ne-rIN/strings.xml +++ b/src/main/resources/addresources/values-ne-rIN/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-nl-rNL/strings.xml b/src/main/resources/addresources/values-nl-rNL/strings.xml index c8f1425b6..f8936dde9 100644 --- a/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -243,12 +243,12 @@ This is because Crowdin requires temporarily flattening this file and removing t This is because keywords can be in any language, and showing an example in the localized script helps convey this. --> Trefwoorden en zinnen te verbergen, gescheiden door nieuwe regels\n\nWoorden met hoofdletters in het midden moeten worden ingevoerd met de behuizing (bv: iPhone, TikTok, LeBlanc) Over trefwoord filteren - Thuis/Abonnement/Zoekresultaten worden gefilterd om de inhoud te verbergen die overeenkomt met trefwoordzinnen\n\nBeperkingen\n• Sommige Kortingen kunnen niet verborgen zijn\n• Sommige UI-componenten kunnen niet verborgen zijn\n• Zoeken naar een trefwoord kan geen resultaten laten zien + Home/Abonnement/Zoekresultaten worden gefilterd om inhoud te verbergen die overeenkomt met trefwoordzinnen\n\nBeperkingen\n• Sommige Shorts zijn mogelijk niet verborgen\n• Sommige UI-componenten zijn mogelijk niet verborgen\n• Zoeken naar een trefwoord levert mogelijk geen resultaten op Ongeldig sleutelwoord. Kan niet gebruiken: \'%s\' als filter Ongeldig sleutelwoord. \'%1$s\' is minder dan %2$d tekens - $szal alle video\'s verbergen + Trefwoord \'%s\' verbergt alle video\'s Algemene advertenties verbergen @@ -428,7 +428,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Thuisknop is verborgen Home-knop wordt weergegeven - Verberg verkorten + Verberg Shorts Shorts knop is verborgen Shorts knop wordt weergegeven @@ -577,16 +577,16 @@ This is because Crowdin requires temporarily flattening this file and removing t - Verberg verkorten in home feed - Kortingen in de thuisfeed zijn verborgen - Kortingen in de home feed worden weergegeven + Shorts verbergen in de homefeed + Shorts in de thuisfeed zijn verborgen + Shorts in de thuisfeed worden getoond - Verberg verkorten in de abonnementsfeed - Schorten in de abonnementsfeed zijn verborgen - Schorten in de abonnementsfeed worden weergegeven - Verberg verkorten in zoekresultaten - Schorten in zoekresultaten zijn verborgen - Korte zoekresultaten worden weergegeven + Verberg Shorts in de abonnementsfeed + Shorts in de abonnementsfeed zijn verborgen + Shorts in de abonnementsfeed worden weergegeven + Verberg Shorts in zoekresultaten + Shorts in zoekresultaten zijn verborgen + Shorts zoekresultaten worden weergegeven Toetredingsknop verbergen Join knop is verborgen @@ -686,10 +686,10 @@ This is because Crowdin requires temporarily flattening this file and removing t Herlaad video om te stemmen met behulp van Return YouTube Dislike Dislikes worden weergegeven Dislikes worden niet weergegeven - Toon onlikes op korten - Niet leuk weergegeven op Korting + Toon onlikes op Shorts + Vind ik niet leuk getoond op Shorts Niet leuk weergegeven op Shorts\n\nLimitatie: Niet leuk vinden mag niet verschijnen in incognito modus - Vindt het niet leuk verborgen op Korte + Vindt het niet leuk verborgen op Shorts Niet leuk als percentage Niet leuk weergegeven als percentage Niet leuk weergegeven als nummer @@ -945,9 +945,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Populair - Deactiveer speler om te hervatten - Kortende speler zal bij het opstarten van de app niet hervatten - Verkort speler zal bij het opstarten van de app hervatten + Schakel het hervatten van Shorts-speler uit + Shorts-speler wordt niet hervat bij het opstarten van de app + Shorts-speler wordt hervat bij het opstarten van de app Tablet lay-out inschakelen @@ -991,6 +991,11 @@ This is because Crowdin requires temporarily flattening this file and removing t De kleur van de zoekbalk Ongeldige zoekbalk kleurwaarde. Standaardwaarde wordt gebruikt. + + Bypass afbeelding regio beperkingen + Gebruik yt4.ggpht.com voor afbeeldingen + Het gebruik van de originele afbeeldingshost\n\nDit kan ontbrekende afbeeldingen die geblokkeerd zijn in sommige regio\'s herstellen + Tabblad Home @@ -1114,7 +1119,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Het uitschakelen van deze instelling kan problemen met het afspelen van video veroorzaken. Klant naar iOS vervalsen De klant is momenteel gespoofd naar iOS\n\nSide effecten zoals:\n• Geen HDR video\n• Bekijk geschiedenis kan mogelijk niet werken\n• Hogere videokwaliteiten ontbreken\n• Live streams kunnen niet worden afgespeeld als alleen audio\n• Live streams die niet beschikbaar zijn op Android 8.0 - De client is momenteel ondergesneeuwd naar Android VR\n\nSide effecten inclusief:\n• Geen HDR video\n• Kinderen video\'s spelen niet af\n• Gepauzeerde video\'s kunnen willekeurig hervatten\n• Kleine kwaliteit zoekbalkminiaturen\n• Download actieknop is altijd verborgen\n• Eindscherm kaarten zijn altijd verborgen + Client wordt momenteel vervalst naar Android VR\n\nBijwerkingen zijn onder meer:\n• Geen HDR-video\n• Kindervideo\'s worden niet afgespeeld\n• Gepauzeerde video\'s kunnen willekeurig worden hervat\n• Shorts-zoekbalkthumbnails van lage kwaliteit\n• Actieknop downloaden is altijd verborgen\n• Eindschermkaarten zijn altijd verborgen Klant miniaturen niet beschikbaar (API timed out) Klant miniaturen tijdelijk niet beschikbaar: %s diff --git a/src/main/resources/addresources/values-or-rIN/strings.xml b/src/main/resources/addresources/values-or-rIN/strings.xml index e3d178619..c5fcd999b 100644 --- a/src/main/resources/addresources/values-or-rIN/strings.xml +++ b/src/main/resources/addresources/values-or-rIN/strings.xml @@ -206,6 +206,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-pa-rIN/strings.xml b/src/main/resources/addresources/values-pa-rIN/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-pa-rIN/strings.xml +++ b/src/main/resources/addresources/values-pa-rIN/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-pl-rPL/strings.xml b/src/main/resources/addresources/values-pl-rPL/strings.xml index a85296c5f..96255af31 100644 --- a/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -72,7 +72,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Odtwarzacz Ogólny układ Pasek wyszukiwania - Sterowanie przesuwaniem + Sterowanie gestami Pozostałe Wideo @@ -243,12 +243,12 @@ This is because Crowdin requires temporarily flattening this file and removing t This is because keywords can be in any language, and showing an example in the localized script helps convey this. --> Słowa kluczowe i frazy do ukrycia, oddzielone nowymi wierszami\n\nSłowa z wielkimi literami w środku muszą być wpisane z obudową (np. iPhone, TikTok, LeBlanc) O filtrowaniu słów kluczowych - Wyniki strony głównej/Subskrypcji/Wyszukiwarki są filtrowane w celu ukrycia treści pasującej do słów kluczowych\n\nOgraniczenia\n• Niektóre skróty mogą nie być ukryte\n• Niektóre komponenty interfejsu użytkownika nie mogą być ukryte\n• Wyszukiwanie słowa kluczowego może nie pokazywać wyników + Wyniki strony głównej/Subskrypcji/Wyszukiwarki są filtrowane w celu ukrycia treści pasującej do słów kluczowych\n\nOgraniczenia\n• Niektóre Shorts mogą nie być ukryte\n• Niektóre komponenty interfejsu użytkownika nie mogą być ukryte\n• Wyszukiwanie słowa kluczowego może nie pokazywać wyników Nieprawidłowe słowo kluczowe. Nie można użyć: \'%s\' jako filtr Nieprawidłowe słowo kluczowe. \'%1$s\' jest mniejsze niż %2$d znaków - Słowo kluczowe$s\' ukryje wszystkie filmy + Słowo kluczowe \'%s\' ukryje wszystkie filmy Ukryj reklamy ogólne @@ -429,9 +429,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Przycisk Home jest ukryty Przycisk Home jest pokazany - Ukryj Spodnie - Przycisk shorts jest ukryty - Przycisk shorts jest widoczny + Ukryj Shorts + Przycisk Shorts jest ukryty + Przycisk Shorts jest widoczny Ukryj Utwórz Przycisk Utwórz jest ukryty @@ -578,16 +578,16 @@ This is because Crowdin requires temporarily flattening this file and removing t - Ukryj Skróty w kanale głównym - Skróty w kanale głównym są ukryte - Skróty w kanale głównym są wyświetlane + Ukryj Shorts w kanale głównym + Shorts w kanale głównym są ukryte + Shorts w kanale głównym są wyświetlane - Ukryj Skróty w kanale subskrypcji - Skróty w kanale subskrypcji są ukryte - Skróty w kanale subskrypcji są wyświetlane - Ukryj Skróty w wynikach wyszukiwania - Skróty w wynikach wyszukiwania są ukryte - Skróty w wynikach wyszukiwania są wyświetlane + Ukryj Shorts w kanale subskrypcji + Shorts w kanale subskrypcji są ukryte + Shorts w kanale subskrypcji są wyświetlane + Ukryj Shorts w wynikach wyszukiwania + Shorts w wynikach wyszukiwania są ukryte + Shorts w wynikach wyszukiwania są wyświetlane Ukryj przycisk dołączenia Przycisk dołączenia jest ukryty @@ -687,10 +687,10 @@ This is because Crowdin requires temporarily flattening this file and removing t Odśwież wideo, aby głosować używając zwróć YouTube Dislike Nie polubiono Nie pokazano polubień - Pokaż nielubienie na Skrótach - Nie lubi wyświetlane na Skrótach - Brak polubień wyświetlanych na skrótach\n\nOgraniczenie: brak polubień w trybie incognito - Nie lubię ukryć na Skrótach + Pokaż nielubienie na Shorts + Nie lubi wyświetlane na Shorts + Brak polubień wyświetlanych na Shorts\n\nOgraniczenie: brak polubień w trybie incognito + Nie lubię ukryć na Shorts Nie lubi jako procent Nie lubi wyświetlane jako procent Nie lubi wyświetlane jako liczba @@ -948,8 +948,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Wyłącz wznawianie odtwarzacza Shorts - Odtwarzacz skrótów nie będzie wznawiany przy starcie aplikacji - Odtwarzacz skrótów zostanie wznowiony przy starcie aplikacji + Odtwarzacz Shorts nie będzie wznawiany przy starcie aplikacji + Odtwarzacz Shorts zostanie wznowiony przy starcie aplikacji Włącz układ tabletu @@ -993,6 +993,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Kolor paska wyszukiwania Nieprawidłowa wartość koloru paska szukania. Używana wartość domyślna. + + Pomiń ograniczenia regionu obrazu + Używanie hosta obrazu yt4.ggpht.com + Używanie oryginalnego hosta obrazu\n\nWłączenie tego może naprawić brakujące obrazy, które są zablokowane w niektórych regionach + Zakładka domowa @@ -1116,7 +1121,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Wyłączenie tego ustawienia może spowodować problemy z odtwarzaniem wideo. Spośród klientów na iOS Klient jest obecnie spoofed to iOS\n\nEfekty niepożądane obejmują:\n• Żaden film HDR\n• Historia zegarków może nie działać\n• Wyższe jakość wideo może brakować\n• Strumienie na żywo nie mogą odtwarzać jako tylko audio\n• Strumienie na żywo niedostępne na Androidzie 8.0 - Klient jest obecnie spoofowany na Androida VR\n\nEfekty uboczne obejmują:\n• Bez filmu HDR\n• Filmy dziecięce nie odtwarza\n• Wstrzymaj filmy można losowo wznowić\n• Niska jakość miniatur paska wyszukiwania skrótów\n• Przycisk pobierania jest zawsze ukryty\n• Karty ekranu końcowego są zawsze ukryte + Klient jest obecnie spoofowany na Androida VR\n\nEfekty uboczne obejmują:\n• Bez filmu HDR\n• Filmy dziecięce nie odtwarza\n• Wstrzymaj filmy można losowo wznowić\n• Niska jakość miniatur paska wyszukiwania Shorts\n• Przycisk pobierania jest zawsze ukryty\n• Karty ekranu końcowego są zawsze ukryte Miniatury klienta nie są dostępne (limit czasu API) Miniaturki klienta tymczasowo nie są dostępne: %s diff --git a/src/main/resources/addresources/values-pt-rBR/strings.xml b/src/main/resources/addresources/values-pt-rBR/strings.xml index f17988603..f3a2cfac4 100644 --- a/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -46,7 +46,7 @@ This is because Crowdin requires temporarily flattening this file and removing t - MicroG GmsCore não está instalado. Instale-o. + O MicroG GmsCore não está instalado. Instale-o. Ação necessária MicroG GmsCore não tem permissão para ser executado em segundo plano.\n\nVá até a aba \"Não mate meu aplicativo\", e aplique as instruções para a instalação do MicroG.\n\nIsso é necessário para que o aplicativo funcione. Abrir site @@ -94,9 +94,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Desativar ocultar todas as notificações flutuantes de erro do ReVanced.\n\nVocê não será notificado de nenhum evento inesperado. - Desativar brilho do botão de inscrição / Curtir - O botão de curtir e assinar não brilhará quando mencionado - O botão de curtir e subscrever brilhará quando mencionado + Desativar brilho do botão de Inscrever-se / Curtir + O botão de curtir e de inscrever-se não brilhará quando mencionado + O botão de curtir e de inscrever-se brilhará quando mencionado Ocultar separador cinza Separador cinza está oculto Separador cinza não está oculto @@ -104,11 +104,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Marca d\'água está oculta Marca d\'água não está oculta Ocultar prateleiras horizontais - Prateleiras estão ocultas, tais como:\n• Quebrar notícias\n• Continuar assistindo\n• Explore mais canais\n• Compras\n• Assista novamente + Prateleiras estão ocultas, tais como:\n• Ultimas notícias\n• Continuar assistindo\n• Canais para você\n• Compras\n• Assista novamente Prateleiras não estão ocultos - Ocultar botão \'Juntar-se\' + Ocultar botão \'Seja membro\' Botão está oculto Botão não está oculto @@ -121,7 +121,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Botão está oculto Botão não está oculto - Ocultar as recomendações \"Pessoas também assistidas\" + Ocultar as recomendações \"As pessoas também assistiram\" Recomendações estão ocultas Recomendações não estão ocultas Palavras-chave e frases para ocultar, separados por novas linhas\n\nPalavras com letras maiúsculas no meio devem ser inseridas com letras maiúsculas (ex: iPhone, TikTok, LeBlanc) Sobre a filtragem com palavra-chave - Início/Inscrições/Busca resultados são filtrados para ocultar conteúdo que corresponde às frases chave\n\nLimitações\n• Alguns abreviados podem não ser ocultados\n• Alguns componentes da UI podem não ser ocultados\n• Procurar por uma palavra-chave pode não mostrar resultados + Início/Inscrições/Busca resultados são filtrados para ocultar conteúdo que corresponde às frases chave\n\nLimitações\n• Alguns Shorts podem não ser ocultados\n• Alguns componentes da UI podem não ser ocultados\n• Procurar por uma palavra-chave pode não mostrar resultados Palavra-chave inválida. Não pode usar: \'%s\' como um filtro Palavra-chave inválida. \'%1$s\' é menor que %2$d caracteres - Palavra-chave \'$s\' irá ocultar todos os vídeos + Palavra-chave \'%s\' irá ocultar todos os vídeos Ocultar anúncios gerais @@ -257,9 +257,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Ocultar anúncios em tela cheia Os anúncios de tela cheia são ocultos\n\nEste recurso está disponível apenas para dispositivos mais antigos Anúncios em tela cheia não estão ocultos - Ocultar anúncio com botão - Anúncios com botão estão ocultos - Anúncios com botão não estão ocultos + Ocultar anúncios com botões + Os anúncios com botões estão ocultos + Anúncios com botões não estão ocultos Ocultar rótulo de promoção paga O rótulo de promoção pago está oculto Rótulo de promoção pago é mostrado @@ -273,20 +273,20 @@ This is because Crowdin requires temporarily flattening this file and removing t Links de compras estão ocultos Links de compras não estão ocultos - Ocultar o botão \'Visitar loja\' nas páginas do canal + Ocultar o botão \'Visitar loja\' nas páginas dos canais Botão está oculto Botão não esta oculto Ocultar resultados de busca web Resultados de busca web estão ocultos Resultados de busca web não estão ocultos Ocultar banners de mercadoria - Banner de mercadoria está oculto - Banner de mercadoria não está oculto + Os banners de mercadoria estão ocultos + Os banners de mercadoria não estão ocultos Ocultar anúncios em tela cheia só funciona com dispositivos antigos - Ocultar promoção do YouTube Premium + Ocultar promoções do YouTube Premium Promoções do YouTube Premium sob o reprodutor de vídeo estão ocultas Promoções do YouTube Premium sob o reprodutor de vídeo não estão ocultas @@ -356,7 +356,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Deslizando para baixo até o menor valor não habilita o brilho automático Automático Tempo limite da sobreposição no gesto - Quantidade em milissegundos que a sobreposição é visível + A quantidade de milissegundos em que a sobreposição é visível Tamanho do texto de gesto de sobreposição Tamanho do texto para o gesto de sobreposição Visibilidade do fundo no gesto @@ -927,7 +927,6 @@ This is because Crowdin requires temporarily flattening this file and removing t 18.20.39 - Restaurar a velocidade de vídeo ampla & menu de qualidade 18.09.39 - Restaurar aba biblioteca 17.41.37 - Restaurar prateleira de lista de reprodução antiga - 17.08.35 - Restaura UI antigo da interface Definir página inicial @@ -993,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Cor da barra de busca Valor de cor inválido da barra. Usando o valor padrão. + + Ignorar restrições de região de imagem + Usando imagem host yt4.ggpht.com + Usando a imagem original host\n\nHabilitando isso pode corrigir imagens ausentes que estão bloqueadas em algumas regiões + Início diff --git a/src/main/resources/addresources/values-pt-rPT/strings.xml b/src/main/resources/addresources/values-pt-rPT/strings.xml index 2621db2e6..2e3f6b99a 100644 --- a/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Chave inválida. Não pode usar: \'%s\' como filtro Chave inválida. \'%1$s\' é menor que %2$d caracteres - Palavra-chave \'$s\' irá ocultar todos os vídeos + Palavra-chave \'%s\' irá ocultar todos os vídeos Esconder anúncios gerais @@ -989,6 +989,11 @@ This is because Crowdin requires temporarily flattening this file and removing t A cor da barra de busca Valor de cor inválido da barra. Usando o valor padrão. + + Ignorar restrições de região de imagem + Usando imagem host yt4.ggpht.com + Usando a imagem original host\n\nHabilitando isso pode corrigir imagens ausentes que estão bloqueadas em algumas regiões + Aba principal diff --git a/src/main/resources/addresources/values-ro-rRO/strings.xml b/src/main/resources/addresources/values-ro-rRO/strings.xml index 6393b0261..10fe94694 100644 --- a/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -248,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Cuvânt cheie nevalid. Nu se poate folosi: \'%s\' ca filtru Cuvânt cheie nevalid. \'%1$s\' este mai puțin de %2$d caractere - Cuvântul cheie \'$s\' va ascunde toate videoclipurile + Cuvântul cheie%sva ascunde toate videoclipurile Ascunde reclamele generale @@ -993,6 +993,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Culoarea barei de căutare Valoare nevalidă a culorii barei de căutare. Utilizarea valorii implicite. + + Ignoră restricțiile regiunii imaginii + Utilizarea imaginii host yt4.ggpht.com + Folosind gazda originală a imaginii\n\nActivarea acesteia poate rezolva imaginile lipsă care sunt blocate în unele regiuni + Fila principală diff --git a/src/main/resources/addresources/values-ru-rRU/strings.xml b/src/main/resources/addresources/values-ru-rRU/strings.xml index 5623823c2..0dca24f65 100644 --- a/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -142,14 +142,14 @@ This is because Crowdin requires temporarily flattening this file and removing t Расширяемые фрагменты под видео скрыты Расширяемые фрагменты под видео отображены Меню качества видео - Меню качества видео скрыто - Меню качества видео отображено + Меню качества видео в выдвижном меню плеера скрыто + Меню качества видео в выдвижном меню плеера отображено Публикации сообщества Публикации сообщества в ленте скрыты Публикации сообщества в ленте отображены Компактные баннеры - Компактные баннеры скрыты - Компактные баннеры отображены + Компактные баннеры в ленте скрыты + Компактные баннеры в ленте отображены Раздел фильмов Раздел фильмов в описании видео скрыт Раздел фильмов в описании видео отображен @@ -248,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Недопустимое ключевое слово. Невозможно использовать: \'%s\' в качестве фильтра Недопустимое ключевое слово. \'%1$s\' содержит менее %2$d символов - Ключевое слово \'$s\' скроет все видео + Ключевое слово \'%s\' скроет все видео Реклама общего формата @@ -572,7 +572,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Прогресс воспроизведения Прогресс воспроизведения в плеере скрыт Прогресс воспроизведения в плеере отображен - Миниатюры прогресса воспроизведения + Миниатюры Миниатюры прогресса воспроизведения скрыты Миниатюры прогресса воспроизведения отображены @@ -679,21 +679,21 @@ This is because Crowdin requires temporarily flattening this file and removing t Скрыты - \"Дизлайки\" временно недоступны (таймаут API) - \"Дизлайки\" недоступны (статус %d) - \"Дизлайки\" недоступны (лимит клиентов API) - \"Дизлайки\" недоступны (%s) + Дизлайки временно недоступны (таймаут API) + Дизлайки недоступны (статус %d) + Дизлайки недоступны (лимит клиентов API) + Дизлайки недоступны (%s) Обновите видео для голосования с Return YouTube Dislike - \"Дизлайки\" отображены - \"Дизлайки\" скрыты - \"Дизлайки\" в Shorts - \"Дизлайки\" в Shorts отображены - \"Дизлайки\" в Shorts отображены\n\nОграничение: \"Дизлайки\" могут не отображаться в режиме инкогнито - \"Дизлайки\" в Shorts скрыты - Варианты отображения \"Дизлайков\" - \"Дизлайки\" отображаются как проценты - \"Дизлайки\" отображаются как число + Дизлайки отображены + Дизлайки скрыты + Дизлайки в Shorts + Дизлайки в Shorts отображены + Дизлайки в Shorts отображены\n\nОграничение: Дизлайки могут не отображаться в режиме инкогнито + Дизлайки в Shorts скрыты + Варианты отображения дизлайков + Дизлайки отображаются как проценты + Дизлайки отображаются как число Стиль кнопки \"Лайк\" Кнопка \"Лайк\" стилизована для минимальной ширины @@ -709,7 +709,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Время ответа API, минимальное Время ответа API, максимальное Время ответа API, последнее видео - \"Дизлайки\" временно недоступны – действует ограничение скорости клиентского API + Дизлайки временно недоступны – действует ограничение скорости клиентского API API получает голоса, количество запросов Сетевые запросы не выполнены Выполнено %d сетевых запросов @@ -975,7 +975,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Кнопки перемотки Кнопки перемотки вперед и назад скрыты Кнопки перемотки вперед и назад отображены - Непразрачность оверлея мини-плеера + Непрозрачность оверлея мини-плеера Значение непрозрачности в пределах 0-100, где 0 - это прозрачно Непрозрачность оверлея мини-плеера должна быть от 0 до 100 @@ -992,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Редактировать цвет прогресса воспроизведения Недопустимое значение цвета + + Обход ограничений региона + Использование хоста изображений yt4.ggpht.com + Использование оригинального хоста изображений\n\nВключение этой опции может исправить недостающие изображения, которые заблокированы в некоторых регионах + Вкладка \"Главная\" @@ -999,13 +1004,13 @@ This is because Crowdin requires temporarily flattening this file and removing t Вкладка \"Подписки\" Вкладка \"Вы\" - Плейлисты плеера, рекомендации + Плейлисты плеера и рекомендации Результаты поиска Оригинальные миниатюры DeArrow и оригинальные миниатюры DeArrow и захват кадра Захват кадра - DeArrow предоставляет краудсорсинговые миниатюры для видео YouTube. Эти миниатюры часто более актуальны относительно предоставляемых YouTube\n\nПри активации URL-адреса видео будут отправлены на сервер API, при этом никакие другие данные отправлены не будут. Если видео не содержит миниатюр DeArrow, то будут отображены оригинальные миниатюры или миниатюры захвата кадра\n\nНажмите для получения дополнительной информации о DeArrow + DeArrow предоставляет краудсорсинговые миниатюры (часто более релевантные) для видео YouTube\n\nПри активации URL-адреса видео (и никакие другие данные) будут отправлены на сервер API. При отсутствии миниатюр DeArrow в видео отображаются оригинальные или миниатюры захвата кадра\n\nНажмите для получения дополнительной информации о DeArrow Уведомление при недоступности API Всплывающее уведомление при недоступности DeArrow отображено Всплывающее уведомление при недоступности DeArrow скрыто diff --git a/src/main/resources/addresources/values-si-rLK/strings.xml b/src/main/resources/addresources/values-si-rLK/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-si-rLK/strings.xml +++ b/src/main/resources/addresources/values-si-rLK/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-sk-rSK/strings.xml b/src/main/resources/addresources/values-sk-rSK/strings.xml index 02b999b31..466011cc5 100644 --- a/src/main/resources/addresources/values-sk-rSK/strings.xml +++ b/src/main/resources/addresources/values-sk-rSK/strings.xml @@ -242,7 +242,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Neplatné kľúčové slovo. Nemožno použiť: \"%s\" ako filter Neplatné kľúčové slovo. \"%1$s\" má menej ako %2$d znakov - Kľúčové slovo \"$s\" skryje všetky videá + Kľúčové slovo \"%s\" skryje všetky videá Skryť všeobecné reklamy @@ -422,9 +422,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Tlačidlo Domov je skryté Zobrazí sa tlačidlo Domov - Skryť šortky - Tlačidlo shorts je skryté - Tlačidlo shorts je zobrazené + Skryť Shorts + Tlačidlo Shorts je skryté + Tlačidlo Shorts je zobrazené Skryť Vytvoriť Tlačidlo Vytvoriť je skryté @@ -571,16 +571,16 @@ This is because Crowdin requires temporarily flattening this file and removing t - Skryť šortky v domácom informačnom kanáli - Šortky v domácom feede sú skryté - Zobrazujú sa krátke videá v domácom informačnom kanáli + Skryť Shorts v domácom informačnom kanáli + Shorts v domácom feede sú skryté + Zobrazujú sa Shorts videá v domácom informačnom kanáli - Skryť krátke videá vo feede odberov - Krátke videá v informačnom kanáli odberov sú skryté - Vo feede odberov sa zobrazujú krátke videá - Skryť krátke videá vo výsledkoch vyhľadávania + Skryť Shorts videá vo feede odberov + Shorts videá v informačnom kanáli odberov sú skryté + Vo feede odberov sa zobrazujú Shorts videá + Skryť Shorts videá vo výsledkoch vyhľadávania Shorts vo výsledkoch vyhľadávania sú skryté - Vo výsledkoch vyhľadávania sa zobrazujú krátke videá + Vo výsledkoch vyhľadávania sa zobrazujú Shorts videá Skryť tlačidlo pripojenia Tlačidlo Pripojiť sa je skryté @@ -680,10 +680,10 @@ This is because Crowdin requires temporarily flattening this file and removing t Znova načítajte video a hlasujte pomocou funkcie Vrátiť Nepáči sa mi na YouTube Nepáči sa mi Nepáči sa mi nie sú zobrazené - Zobrazovať, že sa mi nepáči v krátkych videách - Nepáči sa mi zobrazené v krátkych videách - Nepáči sa mi v krátkych videách\n\nObmedzenie: Nepáči sa mi v režime inkognito - Nepáči sa skryté v krátkych videách + Zobrazovať, že sa mi nepáči v Shorts videách + Nepáči sa mi zobrazené v Shorts videách + Nepáči sa mi v Shorts videách\n\nObmedzenie: Nepáči sa mi v režime inkognito + Nepáči sa skryté v Shorts videách Nepáči sa v percentách Nepáči sa zobrazujú v percentách Nepáči sa zobrazené ako číslo @@ -940,8 +940,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Zakázať obnovenie prehrávača Shorts - Prehrávač krátkych videí sa pri spustení aplikácie neobnoví - Prehrávač krátkych videí sa obnoví pri spustení aplikácie + Prehrávač Shorts videí sa pri spustení aplikácie neobnoví + Prehrávač Shorts videí sa obnoví pri spustení aplikácie Povoliť rozloženie tabletu @@ -984,6 +984,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Farba vyhľadávacieho panela Neplatná hodnota farby panela vyhľadávania. Použitie predvolenej hodnoty. + + Karta Domov diff --git a/src/main/resources/addresources/values-sl-rSI/strings.xml b/src/main/resources/addresources/values-sl-rSI/strings.xml index 5bf40abc8..953bd725f 100644 --- a/src/main/resources/addresources/values-sl-rSI/strings.xml +++ b/src/main/resources/addresources/values-sl-rSI/strings.xml @@ -211,6 +211,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-sq-rAL/strings.xml b/src/main/resources/addresources/values-sq-rAL/strings.xml index 384da35e4..7f6cabb18 100644 --- a/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -206,6 +206,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-sr-rSP/strings.xml b/src/main/resources/addresources/values-sr-rSP/strings.xml index 9c2cd2095..109e75397 100644 --- a/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -31,8 +31,8 @@ This is because Crowdin requires temporarily flattening this file and removing t You're not correct. This is not the "correct" way and this text will not appear as expected the in app --> - - + + ReVanced Желите ли да наставите? Ресетуј @@ -43,8 +43,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Подешавања ReVanced-а су враћена на подразумеване вредности Увезено %d подешавања Неуспешан увоз: %s - - + + MicroG GmsCore није инсталиран. Инсталирајте га. Неопходна радња @@ -52,10 +52,10 @@ This is because Crowdin requires temporarily flattening this file and removing t Отвори веб-сајт Оптимизација батерије за MicroG GmsCore мора бити онемогућена да би се спречили проблеми.\n\nДодирните дугме „Настави” и онемогућите оптимизацију батерије. Настави - - - - + + + + ReVanced Користите верзију <i>%s</i> ReVanced печева Напомена @@ -63,8 +63,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Званични линкови Увоз / Извоз Увоз / Извоз подешавања ReVanced-а - - + + О програму Огласи Алтернативне сличице @@ -76,8 +76,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Контроле превлачења Разно Видео - - + + Отклањање грешака Омогућите или онемогућите опције за отклањање грешака Евидентирање отклањања грешака @@ -93,8 +93,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Искачуће обавештење се приказује ако дође до грешке Искачуће обавештење се не приказује ако дође до грешке Искључивање искачућих обавештења о грешци сакрива сва обавештења о грешкама у ReVanced-у.\n\nНећете бити обавештени ни о каквим неочекиваним догађајима. - - + + Онемогући сјај дугмади „Свиђа ми се” / „Запрати” Дугмад „Свиђа ми се” и „Запрати” неће светлети када се притисну Дугмад „Свиђа ми се” и „Запрати” ће светлети када се притисну @@ -249,9 +249,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Неважећа кључна реч. Није могуће користити „%s” Неважећа кључна реч. „%1$s” је краће од %2$d знакова - Кључна реч „$s” ће сакрити све видее - - + Кључна реч „%s” ће сакрити све видее + + Сакриј опште огласе Општи огласи су скривени Општи огласи су приказани @@ -285,18 +285,18 @@ This is because Crowdin requires temporarily flattening this file and removing t Банери с робом су приказани Сакривање огласа преко целог екрана ради само са старијим уређајима - - + + Сакриј промоције за YouTube Premium Промоције за YouTube Premium испод видео плејера су скривене Промоције за YouTube Premium испод видео плејера су приказане - - + + Сакриј огласе у видеу Огласи у видеу су скривени Огласи у видеу су приказани - - + + Линк је копиран у привремену меморију Линк са временском ознаком је копиран Прикажи дугме за копирање линка видеа @@ -305,14 +305,14 @@ This is because Crowdin requires temporarily flattening this file and removing t Прикажи дугме за копирање линка видеа са временском ознаком Дугме је приказано. Додирните да бисте копирали линк видеа с временском ознаком. Додирните и задржите да бисте копирали линк видеа без временске ознаке Дугме није приказано - - + + Уклони дијалог о дискрецији гледаоца Дијалог ће бити уклоњен Дијалог ће бити приказан Ово не заобилази старосно ограничење. Само га аутоматски прихвата. - - + + Спољна преузимања Подешавања за коришћење спољног програма за преузимање Прикажи дугме за спољно преузимање @@ -325,18 +325,18 @@ This is because Crowdin requires temporarily flattening this file and removing t Назив пакета програма за преузимање Назив пакета инсталираног спољног програма за преузимање, као што је NewPipe или Seal %s није инсталиран. Инсталирајте га. - - + + Онемогући покрет прецизног премотавања Покрет прецизног премотавања је онемогућен Покрет прецизног премотавања је омогућен - - + + Омогући додиривање траке за премотавање Додиривање траке за премотавање је омогућено Додиривање траке за премотавање је онемогућено - - + + Омогући покрет за осветљеност Превлачење за подешавање осветљености је омогућено Превлачење за подешавање осветљености је онемогућено @@ -364,13 +364,13 @@ This is because Crowdin requires temporarily flattening this file and removing t Видљивост позадине покрета превлачења Праг трајања превлачења Износ прага трајања превлачења - - + + Онемогући аутоматске титлове Аутоматски титлови су онемогућени Аутоматски титлови су омогућени - - + + Дугмад радњи Сакријте или прикажите дугмад испод видеа Сакриј дугмад „Свиђа ми се” и „Не свиђа ми се” @@ -405,24 +405,24 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј дугме „Сачувај на плејлисту” Дугме „Сачувај на плејлисту” је скривено Дугме „Сачувај на плејлисту” је приказано - - + + Сакриј дугме „Аутоплеј” Дугме „Аутоплеј” је скривено Дугме „Аутоплеј” је приказано - - + + Сакриј дугме „Титл” Дугме „Титл” је скривено Дугме „Титл” је приказано - - + + Сакриј дугме „Пребацуј” Дугме „Пребацуј” је скривено Дугме „Пребацуј” је приказано - - + + Дугмад навигације Сакријте или промените дугмад на траци за навигацију @@ -448,8 +448,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј ознаке дугмади за навигацију Ознаке дугмади за навигацију су скривене Ознаке дугмади за навигацију су приказане - - + + Падајући мени Сакријте или прикажите предмете у падајућем менију плејера @@ -493,18 +493,18 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј дугме „Гледај у ВР” Дугме „Гледај у ВР” је скривено Дугме „Гледај у ВР” је приказано - - + + Сакриј дугмад за претходни и следећи видео Дугмад су скривена Дугмад су приказана - - + + Сакриј картице албума Картице албума су скривене Картице албума су приказане - - + + Коментари Сакријте или прикажите компоненте одељка за коментаре Сакриј заглавље „Коментари од чланова” @@ -525,18 +525,18 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј дугмад за временску ознаку и емоџије Дугмад за временску ознаку и емоџије су скривена Дугмад за временску ознаку и емоџије су приказана - - + + Сакриј кутију за колективно финансирање Кутија за колективно финансирање је скривена Кутија за колективно финансирање је приказана - - + + Сакриј картице завршног екрана Картице завршног екрана су скривене Картице завршног екрана су приказане - - + + Трака филтера Сакријте или прикажите траку филтера у фиду, претрази или сродним видеима Сакриј у фиду @@ -548,36 +548,36 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј у сродним видеима Скривено у сродним видеима Приказано у сродним видеима - - + + Сакриј плутајуће дугме микрофона Плутајуће дугме микрофона је скривено Плутајуће дугме микрофона је приказано - - + + Онемогући амбијентални режим у режиму целог екрана Амбијентални режим у режиму целог екрана је онемогућен Амбијентални режим у режиму целог екрана је омогућен - - + + Сакриј инфо картице Инфо картице су скривене Инфо картице су приказане - - + + Онемогући анимације бројева Бројеви нису анимирани Бројеви су анимирани - - + + Сакриј траку за премотавање у видео плејеру Трака за премотавање у видео плејеру је скривена Трака за премотавање у видео плејеру је приказана Сакриј траку за премотавање на сличици видеа Трака за премотавање на сличици видеа је скривена Трака за премотавање на сличици видеа је приказана - - + + Сакриј Shorts видее у фиду „Почетна” Shorts видеи у фиду „Почетна” су скривени @@ -656,28 +656,28 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј траку за навигацију Трака за навигацију је скривена Трака за навигацију је приказана - - + + Онемогући предложени видео на завршном екрану Предложени видеи на завршном екрану ће бити скривени Предложени видеи на завршном екрану ће бити приказани - - + + Сакриј временску ознаку видеа Временска ознака видеа је скривена Временска ознака видеа је приказана - - + + Сакриј искачуће панеле плејера Искачући панели плејера су скривени Искачући панели плејера су приказани - - + + Непрозирност слоја плејера Вредност непрозирности између 0-100, где је 0 прозирно Прозирност преклопа плејера мора бити између 0-100 - - + + Скривено Несвиђања привремено нису доступна (API истекао) @@ -721,18 +721,18 @@ This is because Crowdin requires temporarily flattening this file and removing t Није остварено ниједно ограничење стопе клијента Број остварених ограничења стопе клијента: %d %d милисекунди - - + + Омогући широку траку за претрагу Широка трака за претрагу је омогућена Широка трака за претрагу је онемогућена - - + + Врати старе сличице на траци за премотавање Сличице траке за премотавање ће се појавити изнад ње Сличице траке за премотавање ће се појавити у режиму целог екрана - - + + Омогући SponsorBlock SponsorBlock је систем направљен од заједнице корисника и служи за прескакање досадних делова YouTube видеа Изглед @@ -914,8 +914,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Ресетуј О програму Податке обезбеђује SponsorBlock API. Додирните овде да бисте сазнали више и видели преузимања за друге платформе - - + + Лажирана верзија апликације Верзија је лажирана Верзија није лажирана @@ -929,8 +929,8 @@ This is because Crowdin requires temporarily flattening this file and removing t 18.09.39 - Враћа картицу збирке 17.41.37 - Враћа стару полицу плејлисте 17.33.42 - Враћа стари изглед корисничког интерфејса - - + + Подешавање почетне странице Подразумевана @@ -946,19 +946,19 @@ This is because Crowdin requires temporarily flattening this file and removing t Историја У тренду - - + + Онемогући наставак репродукције Shorts плејера Shorts плејер неће наставити репродукцију при покретању апликације Shorts плејер ће наставити репродукцију при покретању апликације - - + + Омогући кориснички интерфејс таблета Кориснички интерфејс таблета је омогућен Кориснички интерфејс таблета је онемогућен Објаве заједнице се не приказују у корисничком интерфејсу таблета - - + + Мини-плејер Промените стил минимизираног плејера у апликацији Тип мини-плејера @@ -980,21 +980,26 @@ This is because Crowdin requires temporarily flattening this file and removing t Прозирност преклопа Вредност непрозирности између 0-100, где је 0 прозирно Прозирност преклопа мини-плејера мора бити између 0-100 - - + + Омогући екран учитавања с градијентом Екран учитавања ће имати позадину с градијентом Екран учитавања ће имати обичну позадину - - + + Омогући прилагођену боју траке за премотавање Прилагођена боја траке за премотавање је приказана Оригинална боја траке за премотавање је приказана Прилагођена боја траке за премотавање Боја траке за премотавање Неважећа вредност боје траке за премотавање. Коришћење подразумеване вредности. - - + + + Заобиђи ограничења региона слике + Коришћење хоста слике yt4.ggpht.com + Коришћење оригиналног хоста слике\n\nОмогућавањем овога можете да поправите недостајуће слике које су блокиране у неким регионима + + Картица „Почетна” @@ -1025,51 +1030,51 @@ This is because Crowdin requires temporarily flattening this file and removing t DeArrow привремено није доступан (кôд статуса: %s) DeArrow привремено није доступан - - + + Прикажи саопштења ReVanced-а Саопштења су приказана при покретању Саопштења нису приказана при покретању Приказивање саопштења при покретању Неуспешно повезивање са пружаоцем саопштења Одбаци - - + + Омогући аутоматско понављање видеа Аутоматско понављање видеа је омогућено Аутоматско понављање видеа је онемогућено - - + + Лажиране димензије уређаја Димензије уређаја су лажиране\n\nВиши квалитети видеа ће можда бити откључан, али ћете можда имати застој при репродукцији видеа, краће трајање батерије и непознате нежељене ефекте Димензије уређаја нису лажиране\n\nАко ово омогућите, виши квалитети видеа ће се можда откључати Ако ово омогућите, можда ће доћи до застоја при репродукцији видеа, краћег трајања батерије и непознатих нежељених ефеката. - - + + Подешавања GmsCore-а Подешавања за GmsCore - - + + Заобиђи URL преусмеравања URL преусмеравања се заобилазе URL преусмеравања се не заобилазе - - + + Отвори линкове у прегледачу Отварање линкова ван апликације Отварање линкова у апликацији - - + + Уклони параметар упита за праћење Параметар упита за праћење је уклоњен из линкова Параметар упита за праћење није уклоњен из линкова - - + + Онемогући вибрацију при увеличавању Вибрација при увеличавању је онемогућена Вибрација при увеличавању је омогућена - - + + Аутоматски квалитет Запамти промене квалитета видеа Промене квалитета се примењују на све видее @@ -1079,36 +1084,36 @@ This is because Crowdin requires temporarily flattening this file and removing t на мобилним подацима на Wi-Fi мрежи Промењен подразумевани квалитет %1$s на: %2$s - - + + Прикажи дугме дијалога за брзину Дугме је приказано Дугме није приказано - - + + Прилагођене брзине репродукције Додајте или промените доступне брзине репродукције Прилагођене брзине репродукције морају бити мање од %s. Коришћење подразумеваних вредности. Неважеће прилагођене брзине репродукције. Коришћење подразумеваних вредности. - - + + Запамти промене брзине репродукције Промене брзине репродукције се примењују на све видее Промене брзине репродукције се примењују само на тренутни видео Подразумевана брзина репродукције Брзина репродукције промењена на: %s - - + + Врати стари мени квалитета видеа Стари мени квалитета видеа је приказан Стари мени квалитета видеа није приказан - - + + Омогући превлачење за премотавање Превлачење за премотавање је омогућено Превлачење за премотавање није омогућено - - + + Лажиран клијент Лажирање клијента да би се спречили проблеми са репродукцијом Лажиран клијент @@ -1120,9 +1125,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Клијент је тренутно лажиран на Android VR\n\nНежељени ефекти обухватају:\н• Нема HDR видеа\n• Дечји видео снимци се не репродукују\n• Паузирани видео снимци могу насумично да се настављају\n• Сличице на траци за премотавање Shorts видеа лошег квалитета\n• Дугме за радњу „Преузми“ је увек скривено\n• Картице завршног екрана су увек скривене Сличице у лажираном клијенту нису доступне (API истекао) Сличице у лажираном клијенту привремено нису доступне: %s - + - + Лажирани потпис апликације Лажирање потписа апликације да би се спречили проблеми с репродукцијом Лажирани потпис апликације @@ -1137,52 +1142,52 @@ This is because Crowdin requires temporarily flattening this file and removing t Сториборд није лажиран\n\nНежељени ефекти укључују:\n• Нема амбијенталног режима\n• Сличице на траци за премотавање су скривене Лажирање сториборда привремено није доступно (API је истекао) Лажирање сториборда привремено није доступно: %s - + - + Омогући аутоматску осветљеност HDR режима Аутоматска осветљеност HDR режима је омогућена Аутоматска осветљеност HDR режима је онемогућена - - - - + + + + Блокирај аудио огласе Аудио огласи су блокирани Аудио огласи су одблокирани - - + + %s недоступан. Огласи ће се можда приказивати. Покушајте да пређете на другу услугу за блокирање огласа у подешавањима. %s сервер је вратио грешку. Огласи ће се можда приказивати. Покушајте да пређете на другу услугу за блокирање огласа у подешавањима. Блокирање уграђених видео огласа Онемогућено Luminous прокси PurpleAdBlock прокси - - + + Блокирај видео огласе Видео огласи су блокирани Видео огласи су одблокирани - - + + порука избрисана Приказ избрисаних порука Не приказуј избрисане поруке Сакриј избрисане поруке иза спојлера Прикажи избрисане поруке као прецртан текст - - + + Аутоматски преузми бодове канала Бодови канала су аутоматски преузети Бодови канала нису аутоматски преузети - - + + Омогући Twitch режим отклањања грешака Twitch режим отклањања грешака је омогућен (није препоручено) Twitch режим отклањања грешака је онемогућен - - + + Подешавања ReVanced-а Огласи Подешавања блокирања огласа @@ -1197,6 +1202,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Евидентирање отклањања грешака Евиденције отклањања грешака су омогућене Евиденције отклањања грешака су онемогућене - - + + diff --git a/src/main/resources/addresources/values-sv-rSE/strings.xml b/src/main/resources/addresources/values-sv-rSE/strings.xml index f53e6d4b5..418fa54a0 100644 --- a/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -94,7 +94,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Att stänga av felmeddelanden döljer alla felaviseringar från ReVanced.\n\nDu kommer inte att meddelas om några oväntade händelser. - Inaktivera glow som / prenumerationsknapp + Inaktivera gilla- / prenumerationsknapp glow Gilla och prenumerera knappen kommer inte att lysa när det nämns Gilla och prenumerera knappen lyser när det nämns Dölj den gråa avgränsaren @@ -104,6 +104,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Vattenstämpeln är dold Vattenstämpeln är synlig Dölj horisontella hyllor + Hyllor är dolda som:\n• Nyheter\n• Fortsätt titta på\n• Utforska fler kanaler\n• Handla\n• Titta på det igen Hyllorna är synliga @@ -247,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Ogiltigt sökord. Kan inte använda \'%s\' som filter Ogiltigt sökord. \'%1$s\' är mindre än %2$d tecken - Nyckelord \'$s\' kommer att dölja alla videor + Nyckelord \'%s\' kommer att dölja alla videor Dölj allmänna annonser @@ -311,7 +312,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Detta kringgår inte åldersbegränsningen. Det accepterar bara det automatiskt. - Externa nedladdningar + Externa nerladdningar Inställningar för att använda en extern nerladdare Visa extern nerladdningsknapp Nerladdningsknappen visas i spelaren @@ -396,6 +397,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Tack-knappen är dold Tackknappen är synlig + Dölj klipp Klipp knappen är dold Klippknappen är synlig @@ -420,7 +422,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Cast-knappen är synlig - Navigation buttons + Navigeringsknappar Dölj eller ändra knappar i navigeringsfältet Dölj hem @@ -428,8 +430,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Hemknappen är synlig Dölj shorts - Knappen shorts är dold - Knappen shorts är synlig + Knappen Shorts är dold + Knappen Shorts är synlig Dölj skapa Knappen skapa är dold @@ -447,7 +449,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Etiketter visas - Flyout menu + Flyout-meny Dölj eller visa spelarflyout menyobjekt Dölj textningar @@ -990,9 +992,14 @@ This is because Crowdin requires temporarily flattening this file and removing t Färgen på sökfältet Ogiltigt sökfältets färgvärde. Använder standardvärde. + + Begränsningar för förbipassering av bildregionen + Använder bildvärd yt4.ggpht.com + Använda ursprungliga bildvärden\n\nAktivering av detta kan åtgärda saknade bilder som är blockerade i vissa regioner + - Hem flik + Hemflik Flik för prenumeration diff --git a/src/main/resources/addresources/values-sw-rKE/strings.xml b/src/main/resources/addresources/values-sw-rKE/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-sw-rKE/strings.xml +++ b/src/main/resources/addresources/values-sw-rKE/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-ta-rIN/strings.xml b/src/main/resources/addresources/values-ta-rIN/strings.xml index 14522cf36..f70f13557 100644 --- a/src/main/resources/addresources/values-ta-rIN/strings.xml +++ b/src/main/resources/addresources/values-ta-rIN/strings.xml @@ -211,6 +211,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-te-rIN/strings.xml b/src/main/resources/addresources/values-te-rIN/strings.xml index 3c7c2bba2..b769e5a52 100644 --- a/src/main/resources/addresources/values-te-rIN/strings.xml +++ b/src/main/resources/addresources/values-te-rIN/strings.xml @@ -203,6 +203,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-th-rTH/strings.xml b/src/main/resources/addresources/values-th-rTH/strings.xml index c9a58e1a6..2bdb6d042 100644 --- a/src/main/resources/addresources/values-th-rTH/strings.xml +++ b/src/main/resources/addresources/values-th-rTH/strings.xml @@ -271,6 +271,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-tl-rPH/strings.xml b/src/main/resources/addresources/values-tl-rPH/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-tl-rPH/strings.xml +++ b/src/main/resources/addresources/values-tl-rPH/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-tr-rTR/strings.xml b/src/main/resources/addresources/values-tr-rTR/strings.xml index 6636f75da..b0cbb79ab 100644 --- a/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -89,10 +89,10 @@ This is because Crowdin requires temporarily flattening this file and removing t ReVanced hatasında tost bildirimi göster Hata oluştuğunda tost bildirimi gösteriliyor Hata oluştuğunda tost bildirimi gösterilmiyor - Hata tost bildirimlerini gizlemek bütün ReVanced hata bildirimlerini gizler.\n\nBeklenmeyen playlar hakkında bilgilendirilmeyeceksiniz. + Hata tost bildirimlerini gizlemek bütün ReVanced hata bildirimlerini gizler.\n\nBeklenmeyen olaylar hakkında bilgilendirilmeyeceksiniz. - Beğen / abone ol düğmesi parlamasını devre dışı bırak + Beğen / Abone ol düğmesi parlamasını devre dışı bırak Beğen ve abone ol düğmesi bahsedildiğinde parlamayacak Beğen ve abone ol düğmesi bahsedildiğinde parlayacak Gri ayırıcıları gizle @@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Geçersiz anahtar kelime. \'%s\' kullanılamaz Geçersiz anahtar kelime. \'%1$s\' %2$d karakterden az - \'$s\' anahtar kelimesi bütün videoları gizleyecektir + \'%s\' anahtar kelimesi bütün videoları gizleyecektir Genel reklamları gizle @@ -440,7 +440,7 @@ This is because Crowdin requires temporarily flattening this file and removing t \"Abonelikler\" butonu gösteriliyor \"Oluştur\" butonunun ve \"Bildirimler\" butonunun yerlerini değiştir - Oluştur düğmesi, Bildirimler düğmesiyle değiştirilir\n\nNot: Bu etkinleştirildiğinde video reklamlar da zorla gizlenir + Oluştur düğmesi, Bildirimler düğmesiyle değiştirilir\n\nNot: Bunu etkinleştirmek video reklamlarını da zorla gizler \"Oluştur\" butonunun ve \"Bildirimler\" butonunun yerleri değiştirilmiyor Gezinme düğmeleri etiketlerini gizle Etiketler gizli @@ -990,6 +990,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Zaman çubuğunun rengi Geçersiz renk değeri. Varsayılana sıfırlanıyor. + + Resimlerin bölge kısıtlamalarını atla + yt4.ggpht.com resim sunucusu kullanılıyor + Orijinal resim sunucusu kullanılıyor\n\nBunu etkinleştirmek bazı bölgelerde engellenen eksik resimleri düzeltebilir + \"Ana Sayfa\" sekmesinde diff --git a/src/main/resources/addresources/values-uk-rUA/strings.xml b/src/main/resources/addresources/values-uk-rUA/strings.xml index c153efad3..3c2d5e4bc 100644 --- a/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Ключове слово \'%s\' не можна використовувати Ключове слово \'%1$s\' менше %2$d-х символів - Ключове слово \'$s\' приховає всі відео + Ключове слово \'%s\' приховає всі відео Приховати загальну рекламу @@ -666,8 +666,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Приховати спливаючі панелі плеєра - Спливаючі панелі плеєра приховано - Спливаючі панелі плеєра показуються + Автоматичні спливаючі панелі плеєра приховано, такі як список відтворення чи чат + Автоматичні спливаючі панелі плеєра показуються Затемнення плеєра при натисканні @@ -990,6 +990,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Редагувати колір панелі прогресу відтворення Недійсне значення кольору панелі прогресу відтворення. Скинуто до значення за умовчанням. + + Змінити хост зображень + Використовується хост зображень yt4.ggpht.com + Використовується оригінальний хост зображень\n\nУвімкнення цього параметра може виправити відсутні зображення, які заблоковано в деяких регіонах + Вкладка \"Головна\" diff --git a/src/main/resources/addresources/values-ur-rIN/strings.xml b/src/main/resources/addresources/values-ur-rIN/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-ur-rIN/strings.xml +++ b/src/main/resources/addresources/values-ur-rIN/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-uz-rUZ/strings.xml b/src/main/resources/addresources/values-uz-rUZ/strings.xml index ba6b08c88..11cfdb81a 100644 --- a/src/main/resources/addresources/values-uz-rUZ/strings.xml +++ b/src/main/resources/addresources/values-uz-rUZ/strings.xml @@ -204,6 +204,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-vi-rVN/strings.xml b/src/main/resources/addresources/values-vi-rVN/strings.xml index ddbe5bf7a..db3eb36d3 100644 --- a/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Từ khóa không hợp lệ. Không thể dùng \'%s\' Từ khóa không hợp lệ. \'%1$s\' nhỏ hơn %2$d ký tự - Từ khóa \'$s\' sẽ ẩn toàn bộ video + Từ khóa \'%s\' sẽ ẩn toàn bộ video Ẩn quảng cáo chung @@ -990,6 +990,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Màu của thanh tiến trình Màu thanh tiến trình không hợp lệ. + + Thẻ trang chủ diff --git a/src/main/resources/addresources/values-zh-rCN/strings.xml b/src/main/resources/addresources/values-zh-rCN/strings.xml index d8b2f672e..d3e1c8bcc 100644 --- a/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -246,6 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 无效关键字。不能使用: \'%s\' 作为过滤器 无效的关键字。\'%1$s\' 小于 %2$d 个字符 + 关键词 \'%s\' 将隐藏所有视频 隐藏一般广告 @@ -394,6 +395,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 感谢按钮已隐藏 已显示感谢按钮 + 隐藏剪辑 片段按钮隐藏 片段按钮显示 @@ -987,6 +989,11 @@ This is because Crowdin requires temporarily flattening this file and removing t 搜索栏的颜色 无效的搜索栏颜色值。使用默认值。 + + 旁路图像区域限制 + 使用图像主机 yt4.ggpht.com + 使用原始图像主机\n\n启用此功能可以修复在某些区域被阻止的缺失图像 + 主页标签 diff --git a/src/main/resources/addresources/values-zh-rHK/strings.xml b/src/main/resources/addresources/values-zh-rHK/strings.xml index e991e7968..89b0983bd 100644 --- a/src/main/resources/addresources/values-zh-rHK/strings.xml +++ b/src/main/resources/addresources/values-zh-rHK/strings.xml @@ -234,6 +234,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + diff --git a/src/main/resources/addresources/values-zh-rTW/strings.xml b/src/main/resources/addresources/values-zh-rTW/strings.xml index 320c845d0..3ee29ad9a 100644 --- a/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 無效的關鍵字。無法使用:「%s」來過濾 無效的關鍵字。「%1$s」小於 %2$d 字元 - 關鍵字「$s」將隱藏所有影片 + 關鍵字「%s」將隱藏所有影片 隱藏一般廣告 @@ -990,6 +990,11 @@ This is because Crowdin requires temporarily flattening this file and removing t 進度條顏色 無效的進度條顏色。已重設為預設值。 + + 繞過圖片區域限制 + 使用圖片主機 yt4.ggpht.com + 使用原始圖片主機\n\n啟用此功能可以修復在某些區域被封鎖的缺失圖片 + 首頁標籤 diff --git a/src/main/resources/addresources/values-zu-rZA/strings.xml b/src/main/resources/addresources/values-zu-rZA/strings.xml index bbb9bd4d3..a4fa31ad5 100644 --- a/src/main/resources/addresources/values-zu-rZA/strings.xml +++ b/src/main/resources/addresources/values-zu-rZA/strings.xml @@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t + + From 4505fa4138bb55c8957790239c01b8dda63d6cdd Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 19 Jul 2024 01:50:03 +0200 Subject: [PATCH 10/50] fix(Instagram - Hide ads): Restore compatibility with latest version by fixing fingerprint (#3455) --- .../patches/ad/fingerprints/AdInjectorFingerprint.kt | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/instagram/patches/ad/fingerprints/AdInjectorFingerprint.kt b/src/main/kotlin/app/revanced/patches/instagram/patches/ad/fingerprints/AdInjectorFingerprint.kt index 1e250d7d6..d136042f8 100644 --- a/src/main/kotlin/app/revanced/patches/instagram/patches/ad/fingerprints/AdInjectorFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/instagram/patches/ad/fingerprints/AdInjectorFingerprint.kt @@ -2,16 +2,13 @@ package app.revanced.patches.instagram.patches.ad.fingerprints import app.revanced.patcher.fingerprint.MethodFingerprint import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode internal object AdInjectorFingerprint : MethodFingerprint( returnType = "Z", accessFlags = AccessFlags.PRIVATE.value, parameters = listOf("L", "L"), - opcodes = listOf( - Opcode.IGET, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT_OBJECT, + strings = listOf( + "SponsoredContentController.insertItem", + "SponsoredContentController::Delivery", ), - strings = listOf("SponsoredContentController::Delivery"), ) From 5bc925107f9b41b75f3d379f7b9cc51210f41d88 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 18 Jul 2024 23:52:11 +0000 Subject: [PATCH 11/50] chore(release): 4.12.0-dev.3 [skip ci] # [4.12.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.2...v4.12.0-dev.3) (2024-07-18) ### Bug Fixes * **Instagram - Hide ads:** Restore compatibility with latest version by fixing fingerprint ([#3455](https://github.com/ReVanced/revanced-patches/issues/3455)) ([4505fa4](https://github.com/ReVanced/revanced-patches/commit/4505fa4138bb55c8957790239c01b8dda63d6cdd)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 297a31943..708cb94e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.2...v4.12.0-dev.3) (2024-07-18) + + +### Bug Fixes + +* **Instagram - Hide ads:** Restore compatibility with latest version by fixing fingerprint ([#3455](https://github.com/ReVanced/revanced-patches/issues/3455)) ([4505fa4](https://github.com/ReVanced/revanced-patches/commit/4505fa4138bb55c8957790239c01b8dda63d6cdd)) + # [4.12.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.1...v4.12.0-dev.2) (2024-07-15) diff --git a/gradle.properties b/gradle.properties index 50c96b995..06620eb99 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.2 +version = 4.12.0-dev.3 From ad590962275f888b335252ad5bed0f34e959d3c7 Mon Sep 17 00:00:00 2001 From: benjy3gg Date: Sat, 20 Jul 2024 04:55:08 +0200 Subject: [PATCH 12/50] feat(Google News): Add `Enable CustomTabs` and `GmsCore support` patch (#3111) Co-authored-by: benjy3gg Co-authored-by: oSumAtrIX --- api/revanced-patches.api | 22 +++++++++ .../googlenews/customtabs/EnableCustomTabs.kt | 32 +++++++++++++ .../LaunchCustomTabFingerprint.kt | 18 +++++++ .../patches/googlenews/misc/gms/Constants.kt | 6 +++ .../misc/gms/GmsCoreSupportPatch.kt | 26 ++++++++++ .../misc/gms/GmsCoreSupportResourcePatch.kt | 11 +++++ .../MagazinesActivityOnCreateFingerprint.kt | 9 ++++ .../fingerprints/PrimeMethodFingerprint.kt | 7 +++ .../fingerprints/ServiceCheckFingerprint.kt | 12 +++++ .../misc/integrations/IntegrationsPatch.kt | 10 ++++ .../StartActivityInitFingerprint.kt | 41 ++++++++++++++++ .../detection/root/RootDetectionPatch.kt | 8 ++-- .../music/misc/gms/GmsCoreSupportPatch.kt | 6 +-- .../GooglePlayUtilityFingerprint.kt | 18 ------- .../customclients/ads/BaseDisableAdsPatch.kt | 2 +- .../subscription/UnlockSubscriptionPatch.kt | 2 +- .../misc/gms/BaseGmsCoreSupportPatch.kt | 14 ++++-- .../GooglePlayUtilityFingerprint.kt | 6 +-- .../youtube/misc/gms/GmsCoreSupportPatch.kt | 7 +-- .../kotlin/app/revanced/util/BytecodeUtils.kt | 47 ++++++++++++------- 20 files changed, 249 insertions(+), 55 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/customtabs/EnableCustomTabs.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/customtabs/fingerprints/LaunchCustomTabFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Constants.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/MagazinesActivityOnCreateFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/PrimeMethodFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/IntegrationsPatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt rename src/main/kotlin/app/revanced/patches/{youtube => shared}/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt (80%) diff --git a/api/revanced-patches.api b/api/revanced-patches.api index 35e283213..e71ae0017 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -217,6 +217,24 @@ public final class app/revanced/patches/finanzonline/detection/root/RootDetectio public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } +public final class app/revanced/patches/googlenews/customtabs/EnableCustomTabs : app/revanced/patcher/patch/BytecodePatch { + public static final field INSTANCE Lapp/revanced/patches/googlenews/customtabs/EnableCustomTabs; + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V +} + +public final class app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch : app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch { + public static final field INSTANCE Lapp/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch; +} + +public final class app/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch : app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch { + public static final field INSTANCE Lapp/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch; +} + +public final class app/revanced/patches/googlenews/misc/integrations/IntegrationsPatch : app/revanced/patches/shared/misc/integrations/BaseIntegrationsPatch { + public static final field INSTANCE Lapp/revanced/patches/googlenews/misc/integrations/IntegrationsPatch; +} + public final class app/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions : app/revanced/patcher/patch/BytecodePatch { public static final field INSTANCE Lapp/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V @@ -2033,7 +2051,11 @@ public final class app/revanced/util/BytecodeUtilsKt { public static final fun indexOfIdResourceOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I public static final fun injectHideViewCall (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;IILjava/lang/String;Ljava/lang/String;)V public static final fun resultOrThrow (Lapp/revanced/patcher/fingerprint/MethodFingerprint;)Lapp/revanced/patcher/fingerprint/MethodFingerprintResult; + public static final fun returnEarly (Lapp/revanced/patcher/fingerprint/MethodFingerprint;Z)V + public static final fun returnEarly (Ljava/lang/Iterable;Z)V public static final fun returnEarly (Ljava/util/List;Z)V + public static synthetic fun returnEarly$default (Lapp/revanced/patcher/fingerprint/MethodFingerprint;ZILjava/lang/Object;)V + public static synthetic fun returnEarly$default (Ljava/lang/Iterable;ZILjava/lang/Object;)V public static synthetic fun returnEarly$default (Ljava/util/List;ZILjava/lang/Object;)V public static final fun transformMethods (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lkotlin/jvm/functions/Function1;)V public static final fun traverseClassHierarchy (Lapp/revanced/patcher/data/BytecodeContext;Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lkotlin/jvm/functions/Function1;)V diff --git a/src/main/kotlin/app/revanced/patches/googlenews/customtabs/EnableCustomTabs.kt b/src/main/kotlin/app/revanced/patches/googlenews/customtabs/EnableCustomTabs.kt new file mode 100644 index 000000000..9e520c41e --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlenews/customtabs/EnableCustomTabs.kt @@ -0,0 +1,32 @@ +package app.revanced.patches.googlenews.customtabs + +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotation.CompatiblePackage +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patches.googlenews.customtabs.fingerprints.LaunchCustomTabFingerprint +import app.revanced.util.resultOrThrow +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction + +@Patch( + name = "Enable CustomTabs", + description = "Enables CustomTabs to open articles in your default browser.", + compatiblePackages = [CompatiblePackage("com.google.android.apps.magazines")], +) +@Suppress("unused") +object EnableCustomTabs : BytecodePatch( + setOf(LaunchCustomTabFingerprint) +) { + override fun execute(context: BytecodeContext) { + LaunchCustomTabFingerprint.resultOrThrow().let { result -> + result.mutableMethod.apply { + val checkIndex = result.scanResult.patternScanResult!!.endIndex + 1 + val register = getInstruction(checkIndex).registerA + + replaceInstruction(checkIndex, "const/4 v$register, 0x1") + } + } + } +} diff --git a/src/main/kotlin/app/revanced/patches/googlenews/customtabs/fingerprints/LaunchCustomTabFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/customtabs/fingerprints/LaunchCustomTabFingerprint.kt new file mode 100644 index 000000000..fcb39ba1d --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlenews/customtabs/fingerprints/LaunchCustomTabFingerprint.kt @@ -0,0 +1,18 @@ +package app.revanced.patches.googlenews.customtabs.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +internal object LaunchCustomTabFingerprint : MethodFingerprint( + accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, + opcodes = listOf( + Opcode.IPUT_OBJECT, + Opcode.CONST_4, + Opcode.IPUT, + Opcode.CONST_4, + Opcode.IPUT_BOOLEAN, + ), + customFingerprint = { _, classDef -> classDef.endsWith("CustomTabsArticleLauncher;") }, +) diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Constants.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Constants.kt new file mode 100644 index 000000000..fb5606248 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Constants.kt @@ -0,0 +1,6 @@ +package app.revanced.patches.googlenews.misc.gms + +internal object Constants { + const val MAGAZINES_PACKAGE_NAME = "com.google.android.apps.magazines" + const val REVANCED_MAGAZINES_PACKAGE_NAME = "app.revanced.android.magazines" +} diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt new file mode 100644 index 000000000..e0e239d6a --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt @@ -0,0 +1,26 @@ +package app.revanced.patches.googlenews.misc.gms + +import app.revanced.patches.googlenews.misc.gms.Constants.MAGAZINES_PACKAGE_NAME +import app.revanced.patches.googlenews.misc.gms.Constants.REVANCED_MAGAZINES_PACKAGE_NAME +import app.revanced.patches.googlenews.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption +import app.revanced.patches.googlenews.misc.gms.fingerprints.MagazinesActivityOnCreateFingerprint +import app.revanced.patches.googlenews.misc.gms.fingerprints.ServiceCheckFingerprint +import app.revanced.patches.googlenews.misc.integrations.IntegrationsPatch +import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch + +@Suppress("unused") +object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( + fromPackageName = MAGAZINES_PACKAGE_NAME, + toPackageName = REVANCED_MAGAZINES_PACKAGE_NAME, + primeMethodFingerprint = null, + earlyReturnFingerprints = setOf(ServiceCheckFingerprint), + mainActivityOnCreateFingerprint = MagazinesActivityOnCreateFingerprint, + integrationsPatchDependency = IntegrationsPatch::class, + gmsCoreSupportResourcePatch = GmsCoreSupportResourcePatch, + // Remove version constraint, + // once https://github.com/ReVanced/revanced-patches/pull/3111#issuecomment-2240877277 is resolved. + compatiblePackages = setOf(CompatiblePackage(MAGAZINES_PACKAGE_NAME, setOf("5.108.0.644447823"))), + fingerprints = setOf(ServiceCheckFingerprint), +) { + override val gmsCoreVendorGroupId by gmsCoreVendorGroupIdOption +} diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch.kt new file mode 100644 index 000000000..fd8bc9e03 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch.kt @@ -0,0 +1,11 @@ +package app.revanced.patches.googlenews.misc.gms + +import app.revanced.patches.googlenews.misc.gms.Constants.MAGAZINES_PACKAGE_NAME +import app.revanced.patches.googlenews.misc.gms.Constants.REVANCED_MAGAZINES_PACKAGE_NAME +import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportResourcePatch + +object GmsCoreSupportResourcePatch : BaseGmsCoreSupportResourcePatch( + fromPackageName = MAGAZINES_PACKAGE_NAME, + toPackageName = REVANCED_MAGAZINES_PACKAGE_NAME, + spoofedPackageSignature = "24bb24c05e47e0aefa68a58a766179d9b613a666", +) diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/MagazinesActivityOnCreateFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/MagazinesActivityOnCreateFingerprint.kt new file mode 100644 index 000000000..aa7834f86 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/MagazinesActivityOnCreateFingerprint.kt @@ -0,0 +1,9 @@ +package app.revanced.patches.googlenews.misc.gms.fingerprints + +import app.revanced.patcher.fingerprint.MethodFingerprint + +internal object MagazinesActivityOnCreateFingerprint : MethodFingerprint( + customFingerprint = { methodDef, classDef -> + methodDef.name == "onCreate" && classDef.endsWith("/StartActivity;") + }, +) diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/PrimeMethodFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/PrimeMethodFingerprint.kt new file mode 100644 index 000000000..6ec214bbf --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/PrimeMethodFingerprint.kt @@ -0,0 +1,7 @@ +package app.revanced.patches.googlenews.misc.gms.fingerprints + +import app.revanced.patcher.fingerprint.MethodFingerprint + +internal object PrimeMethodFingerprint : MethodFingerprint( + strings = listOf("com.google.android.GoogleCamera", "com.android.vending"), +) diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt new file mode 100644 index 000000000..b8228f7ef --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt @@ -0,0 +1,12 @@ +package app.revanced.patches.googlenews.misc.gms.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +internal object ServiceCheckFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, + parameters = listOf("L", "I"), + strings = listOf("Google Play Services not available", "GooglePlayServices not available due to error "), +) diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/IntegrationsPatch.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/IntegrationsPatch.kt new file mode 100644 index 000000000..40e7d880f --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/IntegrationsPatch.kt @@ -0,0 +1,10 @@ +package app.revanced.patches.googlenews.misc.integrations + +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patches.googlenews.misc.integrations.fingerprints.StartActivityInitFingerprint +import app.revanced.patches.shared.misc.integrations.BaseIntegrationsPatch + +@Patch(requiresIntegrations = true) +object IntegrationsPatch : BaseIntegrationsPatch( + setOf(StartActivityInitFingerprint), +) diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt new file mode 100644 index 000000000..d69070665 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt @@ -0,0 +1,41 @@ +package app.revanced.patches.googlenews.misc.integrations.fingerprints + +import app.revanced.patches.googlenews.misc.integrations.fingerprints.StartActivityInitFingerprint.getApplicationContextIndex +import app.revanced.patches.shared.misc.integrations.BaseIntegrationsPatch.IntegrationsFingerprint +import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstructionOrThrow +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +import com.android.tools.smali.dexlib2.iface.reference.MethodReference + +internal object StartActivityInitFingerprint : IntegrationsFingerprint( + opcodes = listOf( + Opcode.INVOKE_STATIC, + Opcode.MOVE_RESULT, + Opcode.CONST_4, + Opcode.IF_EQZ, + Opcode.CONST, + Opcode.INVOKE_VIRTUAL, + Opcode.IPUT_OBJECT, + Opcode.IPUT_BOOLEAN, + Opcode.INVOKE_VIRTUAL, // Calls startActivity.getApplicationContext(). + Opcode.MOVE_RESULT_OBJECT, + ), + insertIndexResolver = { method -> + getApplicationContextIndex = method.indexOfFirstInstructionOrThrow { + getReference()?.name == "getApplicationContext" + } + + getApplicationContextIndex + 2 // Below the move-result-object instruction + }, + contextRegisterResolver = { method -> + val moveResultInstruction = method.implementation!!.instructions.elementAt(getApplicationContextIndex + 1) + as OneRegisterInstruction + moveResultInstruction.registerA + }, + customFingerprint = { methodDef, classDef -> + methodDef.name == "onCreate" && classDef.endsWith("/StartActivity;") + }, +) { + private var getApplicationContextIndex = -1 +} diff --git a/src/main/kotlin/app/revanced/patches/idaustria/detection/root/RootDetectionPatch.kt b/src/main/kotlin/app/revanced/patches/idaustria/detection/root/RootDetectionPatch.kt index 2b720d3b2..16e5c7e7b 100644 --- a/src/main/kotlin/app/revanced/patches/idaustria/detection/root/RootDetectionPatch.kt +++ b/src/main/kotlin/app/revanced/patches/idaustria/detection/root/RootDetectionPatch.kt @@ -12,15 +12,15 @@ import app.revanced.util.returnEarly @Patch( name = "Remove root detection", description = "Removes the check for root permissions and unlocked bootloader.", - compatiblePackages = [CompatiblePackage("at.gv.oe.app")] + compatiblePackages = [CompatiblePackage("at.gv.oe.app")], ) @Suppress("unused") object RootDetectionPatch : BytecodePatch( - setOf(AttestationSupportedCheckFingerprint, BootloaderCheckFingerprint, RootCheckFingerprint) + setOf(AttestationSupportedCheckFingerprint, BootloaderCheckFingerprint, RootCheckFingerprint), ) { - override fun execute(context: BytecodeContext) = listOf( + override fun execute(context: BytecodeContext) = setOf( AttestationSupportedCheckFingerprint, BootloaderCheckFingerprint, - RootCheckFingerprint + RootCheckFingerprint, ).returnEarly(true) } diff --git a/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt index 311aeb11f..db41381bb 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt @@ -15,7 +15,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( primeMethodFingerprint = PrimeMethodFingerprint, earlyReturnFingerprints = setOf( ServiceCheckFingerprint, - GooglePlayUtilityFingerprint, CastDynamiteModuleFingerprint, CastDynamiteModuleV2Fingerprint, CastContextFetchFingerprint, @@ -32,12 +31,11 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( "7.01.53", "7.02.52", "7.03.52", - ) - ) + ), + ), ), fingerprints = setOf( ServiceCheckFingerprint, - GooglePlayUtilityFingerprint, CastDynamiteModuleFingerprint, CastDynamiteModuleV2Fingerprint, CastContextFetchFingerprint, diff --git a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt deleted file mode 100644 index 45b49b345..000000000 --- a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt +++ /dev/null @@ -1,18 +0,0 @@ -package app.revanced.patches.music.misc.gms.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags - -internal object GooglePlayUtilityFingerprint : MethodFingerprint( - "I", - AccessFlags.PUBLIC or AccessFlags.STATIC, - listOf("L", "I"), - strings = listOf( - "This should never happen.", - "MetadataValueReader", - "GooglePlayServicesUtil", - "com.android.vending", - "android.hardware.type.embedded" - ) -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt index c8697180b..d412f84fc 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt @@ -15,5 +15,5 @@ abstract class BaseDisableAdsPatch( compatiblePackages = compatiblePackages, fingerprints = setOf(IsAdsEnabledFingerprint), ) { - override fun execute(context: BytecodeContext) = listOf(IsAdsEnabledFingerprint).returnEarly() + override fun execute(context: BytecodeContext) = IsAdsEnabledFingerprint.returnEarly() } diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/UnlockSubscriptionPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/UnlockSubscriptionPatch.kt index a80adb154..02a274549 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/UnlockSubscriptionPatch.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/UnlockSubscriptionPatch.kt @@ -22,5 +22,5 @@ object UnlockSubscriptionPatch : BytecodePatch( setOf(StartSubscriptionActivityFingerprint, BillingClientOnServiceConnected), ) { override fun execute(context: BytecodeContext) = - listOf(StartSubscriptionActivityFingerprint, BillingClientOnServiceConnected).returnEarly() + setOf(StartSubscriptionActivityFingerprint, BillingClientOnServiceConnected).returnEarly() } diff --git a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt index dd3fa0b59..9eb35018a 100644 --- a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt @@ -13,6 +13,7 @@ import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.AU import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.PERMISSIONS import app.revanced.patches.shared.misc.gms.fingerprints.GmsCoreSupportFingerprint import app.revanced.patches.shared.misc.gms.fingerprints.GmsCoreSupportFingerprint.GET_GMS_CORE_VENDOR_GROUP_ID_METHOD_NAME +import app.revanced.patches.shared.misc.gms.fingerprints.GooglePlayUtilityFingerprint import app.revanced.util.exception import app.revanced.util.getReference import app.revanced.util.returnEarly @@ -42,7 +43,7 @@ import com.android.tools.smali.dexlib2.util.MethodUtil abstract class BaseGmsCoreSupportPatch( private val fromPackageName: String, private val toPackageName: String, - private val primeMethodFingerprint: MethodFingerprint, + private val primeMethodFingerprint: MethodFingerprint?, private val earlyReturnFingerprints: Set, private val mainActivityOnCreateFingerprint: MethodFingerprint, private val integrationsPatchDependency: PatchClass, @@ -62,6 +63,7 @@ abstract class BaseGmsCoreSupportPatch( compatiblePackages = compatiblePackages, fingerprints = setOf( GmsCoreSupportFingerprint, + GooglePlayUtilityFingerprint, mainActivityOnCreateFingerprint, ) + fingerprints, requiresIntegrations = true, @@ -91,10 +93,13 @@ abstract class BaseGmsCoreSupportPatch( } // Specific method that needs to be patched. - transformPrimeMethod(packageName) + primeMethodFingerprint?.let { transformPrimeMethod(packageName) } // Return these methods early to prevent the app from crashing. - earlyReturnFingerprints.toList().returnEarly() + earlyReturnFingerprints.returnEarly() + if (GooglePlayUtilityFingerprint.result != null) { + GooglePlayUtilityFingerprint.returnEarly() + } // Verify GmsCore is installed and whitelisted for power optimizations and background usage. mainActivityOnCreateFingerprint.result?.mutableMethod?.addInstructions( @@ -192,7 +197,7 @@ abstract class BaseGmsCoreSupportPatch( } private fun transformPrimeMethod(packageName: String) { - primeMethodFingerprint.result?.mutableMethod?.apply { + primeMethodFingerprint!!.result?.mutableMethod?.apply { var register = 2 val index = getInstructions().indexOfFirst { @@ -305,6 +310,7 @@ abstract class BaseGmsCoreSupportPatch( "com.google.android.gms.languageprofile.service.START", "com.google.android.gms.clearcut.service.START", "com.google.android.gms.icing.LIGHTWEIGHT_INDEX_SERVICE", + "com.google.android.gms.accountsettings.action.VIEW_SETTINGS", // potoken "com.google.android.gms.potokens.service.START", diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt similarity index 80% rename from src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt rename to src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt index 219602aa4..be3fc0455 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.misc.gms.fingerprints +package app.revanced.patches.shared.misc.gms.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint @@ -8,5 +8,5 @@ internal object GooglePlayUtilityFingerprint : MethodFingerprint( returnType = "I", accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, parameters = listOf("L", "I"), - strings = listOf("This should never happen.", "MetadataValueReader", "com.google.android.gms") -) \ No newline at end of file + strings = listOf("This should never happen.", "MetadataValueReader", "com.google.android.gms"), +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt index 3ce5a8676..c2255025f 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt @@ -7,7 +7,10 @@ import app.revanced.patches.youtube.misc.fix.playback.SpoofClientPatch import app.revanced.patches.youtube.misc.gms.Constants.REVANCED_YOUTUBE_PACKAGE_NAME import app.revanced.patches.youtube.misc.gms.Constants.YOUTUBE_PACKAGE_NAME import app.revanced.patches.youtube.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption -import app.revanced.patches.youtube.misc.gms.fingerprints.* +import app.revanced.patches.youtube.misc.gms.fingerprints.CastDynamiteModuleFingerprint +import app.revanced.patches.youtube.misc.gms.fingerprints.CastDynamiteModuleV2Fingerprint +import app.revanced.patches.youtube.misc.gms.fingerprints.PrimeMethodFingerprint +import app.revanced.patches.youtube.misc.gms.fingerprints.ServiceCheckFingerprint import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch import app.revanced.patches.youtube.shared.fingerprints.MainActivityOnCreateFingerprint @@ -18,7 +21,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( primeMethodFingerprint = PrimeMethodFingerprint, earlyReturnFingerprints = setOf( ServiceCheckFingerprint, - GooglePlayUtilityFingerprint, CastDynamiteModuleFingerprint, CastDynamiteModuleV2Fingerprint, CastContextFetchFingerprint, @@ -62,7 +64,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( ), fingerprints = setOf( ServiceCheckFingerprint, - GooglePlayUtilityFingerprint, CastDynamiteModuleFingerprint, CastDynamiteModuleV2Fingerprint, CastContextFetchFingerprint, diff --git a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt index 7e5388d3f..f0ac585cc 100644 --- a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt +++ b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt @@ -114,7 +114,7 @@ fun Method.indexOfFirstWideLiteralInstructionValue(literal: Long) = implementati * * @return the first literal instruction with the value, or throws [PatchException] if not found. */ -fun Method.indexOfFirstWideLiteralInstructionValueOrThrow(literal: Long) : Int { +fun Method.indexOfFirstWideLiteralInstructionValueOrThrow(literal: Long): Int { val index = indexOfFirstWideLiteralInstructionValue(literal) if (index < 0) throw PatchException("Could not find literal value: $literal") return index @@ -160,7 +160,7 @@ inline fun Instruction.getReference() = (this as? Refere // TODO: delete this on next major release, the overloaded method with an optional start index serves the same purposes. // Method is deprecated, but annotation is commented out otherwise during compilation usage of the replacement is // incorrectly flagged as deprecated. -//@Deprecated("Use the overloaded method with an optional start index.", ReplaceWith("indexOfFirstInstruction(predicate)")) +// @Deprecated("Use the overloaded method with an optional start index.", ReplaceWith("indexOfFirstInstruction(predicate)")) fun Method.indexOfFirstInstruction(predicate: Instruction.() -> Boolean) = indexOfFirstInstruction(0, predicate) /** @@ -211,28 +211,41 @@ fun Method.findOpcodeIndicesReversed(opcode: Opcode): List { } /** - * Return the resolved methods of [MethodFingerprint]s early. + * Return the resolved method early. */ -fun List.returnEarly(bool: Boolean = false) { +fun MethodFingerprint.returnEarly(bool: Boolean = false) { val const = if (bool) "0x1" else "0x0" - this.forEach { fingerprint -> - fingerprint.result?.let { result -> - val stringInstructions = when (result.method.returnType.first()) { - 'L' -> - """ + result?.let { result -> + val stringInstructions = when (result.method.returnType.first()) { + 'L' -> + """ const/4 v0, $const return-object v0 """ - 'V' -> "return-void" - 'I', 'Z' -> - """ + 'V' -> "return-void" + 'I', 'Z' -> + """ const/4 v0, $const return v0 """ - else -> throw Exception("This case should never happen.") - } + else -> throw Exception("This case should never happen.") + } - result.mutableMethod.addInstructions(0, stringInstructions) - } ?: throw fingerprint.exception - } + result.mutableMethod.addInstructions(0, stringInstructions) + } ?: throw exception +} + +/** + * Return the resolved methods early. + */ +fun Iterable.returnEarly(bool: Boolean = false) = forEach { fingerprint -> + fingerprint.returnEarly(bool) +} + +/** + * Return the resolved methods early. + */ +@Deprecated("Use the Iterable version") +fun List.returnEarly(bool: Boolean = false) = forEach { fingerprint -> + fingerprint.returnEarly(bool) } From cece0fefb30341fb42be238d3fb5a3113125b970 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 20 Jul 2024 02:57:11 +0000 Subject: [PATCH 13/50] chore(release): 4.12.0-dev.4 [skip ci] # [4.12.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.3...v4.12.0-dev.4) (2024-07-20) ### Features * **Google News:** Add `Enable CustomTabs` and `GmsCore support` patch ([#3111](https://github.com/ReVanced/revanced-patches/issues/3111)) ([ad59096](https://github.com/ReVanced/revanced-patches/commit/ad590962275f888b335252ad5bed0f34e959d3c7)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 708cb94e5..7817fd652 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.3...v4.12.0-dev.4) (2024-07-20) + + +### Features + +* **Google News:** Add `Enable CustomTabs` and `GmsCore support` patch ([#3111](https://github.com/ReVanced/revanced-patches/issues/3111)) ([ad59096](https://github.com/ReVanced/revanced-patches/commit/ad590962275f888b335252ad5bed0f34e959d3c7)) + # [4.12.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.2...v4.12.0-dev.3) (2024-07-18) diff --git a/gradle.properties b/gradle.properties index 06620eb99..d028b66ce 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.3 +version = 4.12.0-dev.4 From 24528e0a6eec17ce0a3c52f8862585933615ad28 Mon Sep 17 00:00:00 2001 From: xob0t <32616886+xob0t@users.noreply.github.com> Date: Sat, 20 Jul 2024 06:58:47 +0300 Subject: [PATCH 14/50] feat(Google Photos): Add `GmsCore support` patch (#3414) Co-authored-by: benjy3gg Co-authored-by: oSumAtrIX --- api/revanced-patches.api | 12 ++++++ .../all/misc/resources/AddResourcesPatch.kt | 5 ++- .../misc/gms/GmsCoreSupportPatch.kt | 3 -- .../fingerprints/ServiceCheckFingerprint.kt | 12 ------ .../StartActivityInitFingerprint.kt | 2 +- .../googlephotos/misc/gms/Constants.kt | 6 +++ .../misc/gms/GmsCoreSupportPatch.kt | 21 ++++++++++ .../misc/gms/GmsCoreSupportResourcePatch.kt | 11 ++++++ .../PhotosActivityOnCreateFingerprint.kt | 9 +++++ .../misc/integrations/IntegrationsPatch.kt | 10 +++++ .../HomeActivityInitFingerprint.kt | 37 ++++++++++++++++++ .../music/misc/gms/GmsCoreSupportPatch.kt | 8 ++-- .../fingerprints/ServiceCheckFingerprint.kt | 12 ------ .../misc/gms/BaseGmsCoreSupportPatch.kt | 12 ++++-- .../gms/BaseGmsCoreSupportResourcePatch.kt | 38 +++++++++---------- .../CastDynamiteModuleFingerprint.kt | 2 +- .../fingerprints/ServiceCheckFingerprint.kt | 6 +-- .../youtube/misc/gms/GmsCoreSupportPatch.kt | 6 --- .../CastDynamiteModuleFingerprint.kt | 8 ---- 19 files changed, 143 insertions(+), 77 deletions(-) delete mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Constants.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/fingerprints/PhotosActivityOnCreateFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/fingerprints/HomeActivityInitFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/ServiceCheckFingerprint.kt rename src/main/kotlin/app/revanced/patches/{music => shared}/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt (79%) rename src/main/kotlin/app/revanced/patches/{youtube => shared}/misc/gms/fingerprints/ServiceCheckFingerprint.kt (66%) delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt diff --git a/api/revanced-patches.api b/api/revanced-patches.api index e71ae0017..a93bca3da 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -235,6 +235,18 @@ public final class app/revanced/patches/googlenews/misc/integrations/Integration public static final field INSTANCE Lapp/revanced/patches/googlenews/misc/integrations/IntegrationsPatch; } +public final class app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch : app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch { + public static final field INSTANCE Lapp/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch; +} + +public final class app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch : app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch { + public static final field INSTANCE Lapp/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch; +} + +public final class app/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch : app/revanced/patches/shared/misc/integrations/BaseIntegrationsPatch { + public static final field INSTANCE Lapp/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch; +} + public final class app/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions : app/revanced/patcher/patch/BytecodePatch { public static final field INSTANCE Lapp/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V diff --git a/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt b/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt index 09707c727..38c479b30 100644 --- a/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt +++ b/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt @@ -347,7 +347,10 @@ object AddResourcesPatch : ResourcePatch(), MutableMap\n\n") + } } context.xmlEditor[targetFile.path].let { editor -> diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt index e0e239d6a..c2a81ab9b 100644 --- a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt @@ -4,7 +4,6 @@ import app.revanced.patches.googlenews.misc.gms.Constants.MAGAZINES_PACKAGE_NAME import app.revanced.patches.googlenews.misc.gms.Constants.REVANCED_MAGAZINES_PACKAGE_NAME import app.revanced.patches.googlenews.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption import app.revanced.patches.googlenews.misc.gms.fingerprints.MagazinesActivityOnCreateFingerprint -import app.revanced.patches.googlenews.misc.gms.fingerprints.ServiceCheckFingerprint import app.revanced.patches.googlenews.misc.integrations.IntegrationsPatch import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch @@ -13,14 +12,12 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( fromPackageName = MAGAZINES_PACKAGE_NAME, toPackageName = REVANCED_MAGAZINES_PACKAGE_NAME, primeMethodFingerprint = null, - earlyReturnFingerprints = setOf(ServiceCheckFingerprint), mainActivityOnCreateFingerprint = MagazinesActivityOnCreateFingerprint, integrationsPatchDependency = IntegrationsPatch::class, gmsCoreSupportResourcePatch = GmsCoreSupportResourcePatch, // Remove version constraint, // once https://github.com/ReVanced/revanced-patches/pull/3111#issuecomment-2240877277 is resolved. compatiblePackages = setOf(CompatiblePackage(MAGAZINES_PACKAGE_NAME, setOf("5.108.0.644447823"))), - fingerprints = setOf(ServiceCheckFingerprint), ) { override val gmsCoreVendorGroupId by gmsCoreVendorGroupIdOption } diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt deleted file mode 100644 index b8228f7ef..000000000 --- a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt +++ /dev/null @@ -1,12 +0,0 @@ -package app.revanced.patches.googlenews.misc.gms.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags - -internal object ServiceCheckFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, - parameters = listOf("L", "I"), - strings = listOf("Google Play Services not available", "GooglePlayServices not available due to error "), -) diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt index d69070665..b71636793 100644 --- a/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt @@ -26,7 +26,7 @@ internal object StartActivityInitFingerprint : IntegrationsFingerprint( getReference()?.name == "getApplicationContext" } - getApplicationContextIndex + 2 // Below the move-result-object instruction + getApplicationContextIndex + 2 // Below the move-result-object instruction. }, contextRegisterResolver = { method -> val moveResultInstruction = method.implementation!!.instructions.elementAt(getApplicationContextIndex + 1) diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Constants.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Constants.kt new file mode 100644 index 000000000..f0311bcde --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Constants.kt @@ -0,0 +1,6 @@ +package app.revanced.patches.googlephotos.misc.gms + +internal object Constants { + const val PHOTOS_PACKAGE_NAME = "com.google.android.apps.photos" + const val REVANCED_PHOTOS_PACKAGE_NAME = "app.revanced.android.photos" +} diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch.kt new file mode 100644 index 000000000..8aa775853 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch.kt @@ -0,0 +1,21 @@ +package app.revanced.patches.googlephotos.misc.gms + +import app.revanced.patches.googlephotos.misc.gms.Constants.PHOTOS_PACKAGE_NAME +import app.revanced.patches.googlephotos.misc.gms.Constants.REVANCED_PHOTOS_PACKAGE_NAME +import app.revanced.patches.googlephotos.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption +import app.revanced.patches.googlephotos.misc.gms.fingerprints.PhotosActivityOnCreateFingerprint +import app.revanced.patches.googlephotos.misc.integrations.IntegrationsPatch +import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch + +@Suppress("unused") +object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( + fromPackageName = PHOTOS_PACKAGE_NAME, + toPackageName = REVANCED_PHOTOS_PACKAGE_NAME, + primeMethodFingerprint = null, + mainActivityOnCreateFingerprint = PhotosActivityOnCreateFingerprint, + integrationsPatchDependency = IntegrationsPatch::class, + gmsCoreSupportResourcePatch = GmsCoreSupportResourcePatch, + compatiblePackages = setOf(CompatiblePackage(PHOTOS_PACKAGE_NAME)), +) { + override val gmsCoreVendorGroupId by gmsCoreVendorGroupIdOption +} diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch.kt new file mode 100644 index 000000000..bd7f1d115 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch.kt @@ -0,0 +1,11 @@ +package app.revanced.patches.googlephotos.misc.gms + +import app.revanced.patches.googlephotos.misc.gms.Constants.PHOTOS_PACKAGE_NAME +import app.revanced.patches.googlephotos.misc.gms.Constants.REVANCED_PHOTOS_PACKAGE_NAME +import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportResourcePatch + +object GmsCoreSupportResourcePatch : BaseGmsCoreSupportResourcePatch( + fromPackageName = PHOTOS_PACKAGE_NAME, + toPackageName = REVANCED_PHOTOS_PACKAGE_NAME, + spoofedPackageSignature = "24bb24c05e47e0aefa68a58a766179d9b613a600", +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/fingerprints/PhotosActivityOnCreateFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/fingerprints/PhotosActivityOnCreateFingerprint.kt new file mode 100644 index 000000000..b5f306166 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/fingerprints/PhotosActivityOnCreateFingerprint.kt @@ -0,0 +1,9 @@ +package app.revanced.patches.googlephotos.misc.gms.fingerprints + +import app.revanced.patcher.fingerprint.MethodFingerprint + +internal object PhotosActivityOnCreateFingerprint : MethodFingerprint( + customFingerprint = { methodDef, classDef -> + methodDef.name == "onCreate" && classDef.endsWith("/HomeActivity;") + }, +) diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch.kt new file mode 100644 index 000000000..35d0d241d --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch.kt @@ -0,0 +1,10 @@ +package app.revanced.patches.googlephotos.misc.integrations + +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patches.googlephotos.misc.integrations.fingerprints.HomeActivityInitFingerprint +import app.revanced.patches.shared.misc.integrations.BaseIntegrationsPatch + +@Patch(requiresIntegrations = true) +object IntegrationsPatch : BaseIntegrationsPatch( + setOf(HomeActivityInitFingerprint), +) diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/fingerprints/HomeActivityInitFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/fingerprints/HomeActivityInitFingerprint.kt new file mode 100644 index 000000000..1fb7bf440 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/fingerprints/HomeActivityInitFingerprint.kt @@ -0,0 +1,37 @@ +package app.revanced.patches.googlephotos.misc.integrations.fingerprints + +import app.revanced.patches.googlephotos.misc.integrations.fingerprints.HomeActivityInitFingerprint.getApplicationContextIndex +import app.revanced.patches.shared.misc.integrations.BaseIntegrationsPatch.IntegrationsFingerprint +import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstructionOrThrow +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +import com.android.tools.smali.dexlib2.iface.reference.MethodReference + +internal object HomeActivityInitFingerprint : IntegrationsFingerprint( + opcodes = listOf( + Opcode.CONST_STRING, + Opcode.INVOKE_STATIC, + Opcode.MOVE_RESULT_OBJECT, + Opcode.IF_NEZ, + Opcode.INVOKE_VIRTUAL, // Calls getApplicationContext(). + Opcode.MOVE_RESULT_OBJECT, + ), + insertIndexResolver = { method -> + getApplicationContextIndex = method.indexOfFirstInstructionOrThrow { + getReference()?.name == "getApplicationContext" + } + + getApplicationContextIndex + 2 // Below the move-result-object instruction. + }, + contextRegisterResolver = { method -> + val moveResultInstruction = method.implementation!!.instructions.elementAt(getApplicationContextIndex + 1) + as OneRegisterInstruction + moveResultInstruction.registerA + }, + customFingerprint = { methodDef, classDef -> + methodDef.name == "onCreate" && classDef.endsWith("/HomeActivity;") + }, +) { + private var getApplicationContextIndex = -1 +} diff --git a/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt index db41381bb..035d069c5 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt @@ -3,7 +3,9 @@ package app.revanced.patches.music.misc.gms import app.revanced.patches.music.misc.gms.Constants.MUSIC_PACKAGE_NAME import app.revanced.patches.music.misc.gms.Constants.REVANCED_MUSIC_PACKAGE_NAME import app.revanced.patches.music.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption -import app.revanced.patches.music.misc.gms.fingerprints.* +import app.revanced.patches.music.misc.gms.fingerprints.CastDynamiteModuleV2Fingerprint +import app.revanced.patches.music.misc.gms.fingerprints.MusicActivityOnCreateFingerprint +import app.revanced.patches.music.misc.gms.fingerprints.PrimeMethodFingerprint import app.revanced.patches.music.misc.integrations.IntegrationsPatch import app.revanced.patches.shared.fingerprints.CastContextFetchFingerprint import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch @@ -14,8 +16,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( toPackageName = REVANCED_MUSIC_PACKAGE_NAME, primeMethodFingerprint = PrimeMethodFingerprint, earlyReturnFingerprints = setOf( - ServiceCheckFingerprint, - CastDynamiteModuleFingerprint, CastDynamiteModuleV2Fingerprint, CastContextFetchFingerprint, ), @@ -35,8 +35,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( ), ), fingerprints = setOf( - ServiceCheckFingerprint, - CastDynamiteModuleFingerprint, CastDynamiteModuleV2Fingerprint, CastContextFetchFingerprint, PrimeMethodFingerprint, diff --git a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/ServiceCheckFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/ServiceCheckFingerprint.kt deleted file mode 100644 index 536048502..000000000 --- a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/ServiceCheckFingerprint.kt +++ /dev/null @@ -1,12 +0,0 @@ -package app.revanced.patches.music.misc.gms.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags - -internal object ServiceCheckFingerprint : MethodFingerprint( - "V", - AccessFlags.PUBLIC or AccessFlags.STATIC, - listOf("L", "I"), - strings = listOf("Google Play Services not available"), -) diff --git a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt index 9eb35018a..9f773b03a 100644 --- a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt @@ -11,9 +11,11 @@ import app.revanced.patches.all.misc.packagename.ChangePackageNamePatch import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.ACTIONS import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.AUTHORITIES import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.PERMISSIONS +import app.revanced.patches.shared.misc.gms.fingerprints.CastDynamiteModuleFingerprint import app.revanced.patches.shared.misc.gms.fingerprints.GmsCoreSupportFingerprint import app.revanced.patches.shared.misc.gms.fingerprints.GmsCoreSupportFingerprint.GET_GMS_CORE_VENDOR_GROUP_ID_METHOD_NAME import app.revanced.patches.shared.misc.gms.fingerprints.GooglePlayUtilityFingerprint +import app.revanced.patches.shared.misc.gms.fingerprints.ServiceCheckFingerprint import app.revanced.util.exception import app.revanced.util.getReference import app.revanced.util.returnEarly @@ -44,7 +46,7 @@ abstract class BaseGmsCoreSupportPatch( private val fromPackageName: String, private val toPackageName: String, private val primeMethodFingerprint: MethodFingerprint?, - private val earlyReturnFingerprints: Set, + private val earlyReturnFingerprints: Set = setOf(), private val mainActivityOnCreateFingerprint: MethodFingerprint, private val integrationsPatchDependency: PatchClass, gmsCoreSupportResourcePatch: BaseGmsCoreSupportResourcePatch, @@ -54,7 +56,7 @@ abstract class BaseGmsCoreSupportPatch( ) : BytecodePatch( name = "GmsCore support", description = "Allows patched Google apps to run without root and under a different package name " + - "by using GmsCore instead of Google Play Services.", + "by using GmsCore instead of Google Play Services.", dependencies = setOf( ChangePackageNamePatch::class, gmsCoreSupportResourcePatch::class, @@ -64,6 +66,8 @@ abstract class BaseGmsCoreSupportPatch( fingerprints = setOf( GmsCoreSupportFingerprint, GooglePlayUtilityFingerprint, + ServiceCheckFingerprint, + CastDynamiteModuleFingerprint, mainActivityOnCreateFingerprint, ) + fingerprints, requiresIntegrations = true, @@ -96,7 +100,7 @@ abstract class BaseGmsCoreSupportPatch( primeMethodFingerprint?.let { transformPrimeMethod(packageName) } // Return these methods early to prevent the app from crashing. - earlyReturnFingerprints.returnEarly() + (earlyReturnFingerprints + ServiceCheckFingerprint + CastDynamiteModuleFingerprint).returnEarly() if (GooglePlayUtilityFingerprint.result != null) { GooglePlayUtilityFingerprint.returnEarly() } @@ -105,7 +109,7 @@ abstract class BaseGmsCoreSupportPatch( mainActivityOnCreateFingerprint.result?.mutableMethod?.addInstructions( 0, "invoke-static/range { p0 .. p0 }, Lapp/revanced/integrations/shared/GmsCoreSupport;->" + - "checkGmsCore(Landroid/app/Activity;)V", + "checkGmsCore(Landroid/app/Activity;)V", ) ?: throw mainActivityOnCreateFingerprint.exception // Change the vendor of GmsCore in ReVanced Integrations. diff --git a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch.kt index f77a6d361..d36c1b1e5 100644 --- a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch.kt +++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch.kt @@ -96,27 +96,23 @@ abstract class BaseGmsCoreSupportResourcePatch( private fun ResourceContext.patchManifest() { val packageName = ChangePackageNamePatch.setOrGetFallbackPackageName(toPackageName) - val manifest = this.get("AndroidManifest.xml").readText() - this.get("AndroidManifest.xml").writeText( - manifest.replace( - "package=\"$fromPackageName", - "package=\"$packageName", - ).replace( - "android:authorities=\"$fromPackageName", - "android:authorities=\"$packageName", - ).replace( - "$fromPackageName.permission.C2D_MESSAGE", - "$packageName.permission.C2D_MESSAGE", - ).replace( - "$fromPackageName.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION", - "$packageName.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION", - ).replace( - "com.google.android.c2dm", - "$gmsCoreVendorGroupId.android.c2dm", - ).replace( - "", - "", - ), + val transformations = mapOf( + "package=\"$fromPackageName" to "package=\"$packageName", + "android:authorities=\"$fromPackageName" to "android:authorities=\"$packageName", + "$fromPackageName.permission.C2D_MESSAGE" to "$packageName.permission.C2D_MESSAGE", + "$fromPackageName.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" to "$packageName.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION", + "com.google.android.c2dm" to "$packageName.android.c2dm", + "com.google.android.libraries.photos.api.mars" to "$packageName.android.apps.photos.api.mars", + "" to "", + ) + + get("AndroidManifest.xml", false).writeText( + transformations.entries.fold(get("AndroidManifest.xml", false).readText()) { acc, (from, to) -> + acc.replace( + from, + to + ) + } ) } diff --git a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt similarity index 79% rename from src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt rename to src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt index c1c8ec8cc..7773e378d 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.music.misc.gms.fingerprints +package app.revanced.patches.shared.misc.gms.fingerprints import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/ServiceCheckFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/ServiceCheckFingerprint.kt similarity index 66% rename from src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/ServiceCheckFingerprint.kt rename to src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/ServiceCheckFingerprint.kt index f48de5b41..49f187162 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/ServiceCheckFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/ServiceCheckFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.misc.gms.fingerprints +package app.revanced.patches.shared.misc.gms.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint @@ -8,5 +8,5 @@ internal object ServiceCheckFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, parameters = listOf("L", "I"), - strings = listOf("Google Play Services not available", "GooglePlayServices not available due to error ") -) \ No newline at end of file + strings = listOf("Google Play Services not available") +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt index c2255025f..e74a3d11e 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt @@ -7,10 +7,8 @@ import app.revanced.patches.youtube.misc.fix.playback.SpoofClientPatch import app.revanced.patches.youtube.misc.gms.Constants.REVANCED_YOUTUBE_PACKAGE_NAME import app.revanced.patches.youtube.misc.gms.Constants.YOUTUBE_PACKAGE_NAME import app.revanced.patches.youtube.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption -import app.revanced.patches.youtube.misc.gms.fingerprints.CastDynamiteModuleFingerprint import app.revanced.patches.youtube.misc.gms.fingerprints.CastDynamiteModuleV2Fingerprint import app.revanced.patches.youtube.misc.gms.fingerprints.PrimeMethodFingerprint -import app.revanced.patches.youtube.misc.gms.fingerprints.ServiceCheckFingerprint import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch import app.revanced.patches.youtube.shared.fingerprints.MainActivityOnCreateFingerprint @@ -20,8 +18,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( toPackageName = REVANCED_YOUTUBE_PACKAGE_NAME, primeMethodFingerprint = PrimeMethodFingerprint, earlyReturnFingerprints = setOf( - ServiceCheckFingerprint, - CastDynamiteModuleFingerprint, CastDynamiteModuleV2Fingerprint, CastContextFetchFingerprint, ), @@ -63,8 +59,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( ), ), fingerprints = setOf( - ServiceCheckFingerprint, - CastDynamiteModuleFingerprint, CastDynamiteModuleV2Fingerprint, CastContextFetchFingerprint, PrimeMethodFingerprint, diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt deleted file mode 100644 index 783c093c6..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt +++ /dev/null @@ -1,8 +0,0 @@ -package app.revanced.patches.youtube.misc.gms.fingerprints - - -import app.revanced.patcher.fingerprint.MethodFingerprint - -internal object CastDynamiteModuleFingerprint : MethodFingerprint( - strings = listOf("com.google.android.gms.cast.framework.internal.CastDynamiteModuleImpl") -) \ No newline at end of file From 5f81b40e7d5567fb5689d08ccc9caeaa267c3143 Mon Sep 17 00:00:00 2001 From: epireyn <48213068+epireyn@users.noreply.github.com> Date: Sat, 20 Jul 2024 06:00:19 +0200 Subject: [PATCH 15/50] feat: Add `Hide mock location` patch (#3417) Co-authored-by: oSumAtrIX --- api/revanced-patches.api | 8 +++ .../location/hide/HideMockLocationPatch.kt | 56 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 src/main/kotlin/app/revanced/patches/all/location/hide/HideMockLocationPatch.kt diff --git a/api/revanced-patches.api b/api/revanced-patches.api index a93bca3da..a602a5b4c 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -22,6 +22,14 @@ public final class app/revanced/patches/all/interaction/gestures/PredictiveBackG public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V } +public final class app/revanced/patches/all/location/hide/HideMockLocationPatch : app/revanced/patches/all/misc/transformation/BaseTransformInstructionsPatch { + public static final field INSTANCE Lapp/revanced/patches/all/location/hide/HideMockLocationPatch; + public synthetic fun filterMap (Lcom/android/tools/smali/dexlib2/iface/ClassDef;Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/iface/instruction/Instruction;I)Ljava/lang/Object; + public fun filterMap (Lcom/android/tools/smali/dexlib2/iface/ClassDef;Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/iface/instruction/Instruction;I)Lkotlin/Pair; + public synthetic fun transform (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Ljava/lang/Object;)V + public fun transform (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Lkotlin/Pair;)V +} + public final class app/revanced/patches/all/misc/debugging/EnableAndroidDebuggingPatch : app/revanced/patcher/patch/ResourcePatch { public static final field INSTANCE Lapp/revanced/patches/all/misc/debugging/EnableAndroidDebuggingPatch; public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V diff --git a/src/main/kotlin/app/revanced/patches/all/location/hide/HideMockLocationPatch.kt b/src/main/kotlin/app/revanced/patches/all/location/hide/HideMockLocationPatch.kt new file mode 100644 index 000000000..235a3f7bf --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/all/location/hide/HideMockLocationPatch.kt @@ -0,0 +1,56 @@ +@file:Suppress("unused") + +package app.revanced.patches.all.location.hide + +import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod +import app.revanced.patches.all.misc.transformation.BaseTransformInstructionsPatch +import app.revanced.patches.all.misc.transformation.IMethodCall +import app.revanced.patches.all.misc.transformation.fromMethodReference +import app.revanced.util.getReference +import com.android.tools.smali.dexlib2.iface.ClassDef +import com.android.tools.smali.dexlib2.iface.Method +import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction +import com.android.tools.smali.dexlib2.iface.instruction.Instruction +import com.android.tools.smali.dexlib2.iface.reference.MethodReference + +@Patch( + name = "Hide mock location", + description = "Prevents the app from knowing the device location is being mocked by a third party app.", + use = false +) +object HideMockLocationPatch : BaseTransformInstructionsPatch>() { + override fun filterMap( + classDef: ClassDef, + method: Method, + instruction: Instruction, + instructionIndex: Int + ): Pair? { + val reference = instruction.getReference() ?: return null + if (fromMethodReference(reference) == null) return null + + return instruction to instructionIndex + } + + override fun transform(mutableMethod: MutableMethod, entry: Pair) { + val (instruction, index) = entry + instruction as FiveRegisterInstruction + + // Replace return value with a constant `false` boolean. + mutableMethod.replaceInstruction( + index + 1, + "const/4 v${instruction.registerC}, 0x0" + ) + } +} + +private enum class MethodCall( + override val definedClassName: String, + override val methodName: String, + override val methodParams: Array, + override val returnType: String +) : IMethodCall { + IsMock("Landroid/location/Location;", "isMock", emptyArray(), "Z"), + IsFromMockProvider("Landroid/location/Location;", "isFromMockProvider", emptyArray(), "Z") +} From d1dbd2ccff56649be0c2854db1bfa04d0d6ddaae Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 20 Jul 2024 04:02:23 +0000 Subject: [PATCH 16/50] chore(release): 4.12.0-dev.5 [skip ci] # [4.12.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.4...v4.12.0-dev.5) (2024-07-20) ### Features * Add `Hide mock location` patch ([#3417](https://github.com/ReVanced/revanced-patches/issues/3417)) ([5f81b40](https://github.com/ReVanced/revanced-patches/commit/5f81b40e7d5567fb5689d08ccc9caeaa267c3143)) * **Google Photos:** Add `GmsCore support` patch ([#3414](https://github.com/ReVanced/revanced-patches/issues/3414)) ([24528e0](https://github.com/ReVanced/revanced-patches/commit/24528e0a6eec17ce0a3c52f8862585933615ad28)) --- CHANGELOG.md | 8 ++++++++ gradle.properties | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7817fd652..a692f00d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# [4.12.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.4...v4.12.0-dev.5) (2024-07-20) + + +### Features + +* Add `Hide mock location` patch ([#3417](https://github.com/ReVanced/revanced-patches/issues/3417)) ([5f81b40](https://github.com/ReVanced/revanced-patches/commit/5f81b40e7d5567fb5689d08ccc9caeaa267c3143)) +* **Google Photos:** Add `GmsCore support` patch ([#3414](https://github.com/ReVanced/revanced-patches/issues/3414)) ([24528e0](https://github.com/ReVanced/revanced-patches/commit/24528e0a6eec17ce0a3c52f8862585933615ad28)) + # [4.12.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.3...v4.12.0-dev.4) (2024-07-20) diff --git a/gradle.properties b/gradle.properties index d028b66ce..45082e922 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.4 +version = 4.12.0-dev.5 From 371c52e2770eda1a6172abde7c86c0f3f102d05b Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sat, 20 Jul 2024 06:14:19 +0200 Subject: [PATCH 17/50] build: Bump dependencies --- .github/workflows/pull_strings.yml | 2 +- .github/workflows/push_strings.yml | 2 +- gradle/libs.versions.toml | 6 +- gradle/wrapper/gradle-wrapper.properties | 4 +- package-lock.json | 2152 ++++++++-------------- package.json | 4 +- 6 files changed, 787 insertions(+), 1383 deletions(-) diff --git a/.github/workflows/pull_strings.yml b/.github/workflows/pull_strings.yml index e30bc10e7..e1d931932 100644 --- a/.github/workflows/pull_strings.yml +++ b/.github/workflows/pull_strings.yml @@ -17,7 +17,7 @@ jobs: ref: dev - name: Pull strings - uses: crowdin/github-action@v1 + uses: crowdin/github-action@v2 with: config: crowdin.yml download_translations: true diff --git a/.github/workflows/push_strings.yml b/.github/workflows/push_strings.yml index e78140251..27c294cf7 100644 --- a/.github/workflows/push_strings.yml +++ b/.github/workflows/push_strings.yml @@ -19,7 +19,7 @@ jobs: fetch-depth: 0 - name: Push strings - uses: crowdin/github-action@v1 + uses: crowdin/github-action@v2 with: config: crowdin.yml upload_sources: true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 323dbd6b2..3a4060085 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,9 +2,9 @@ revanced-patcher = "19.3.1" #noinspection GradleDependency smali = "3.0.5" # 3.0.7 breaks binary compatibility. Tracking https://github.com/google/smali/issues/58. -guava = "33.1.0-jre" -gson = "2.10.1" -binary-compatibility-validator = "0.14.0" +guava = "33.2.1-jre" +gson = "2.11.0" +binary-compatibility-validator = "0.15.1" kotlin = "2.0.0" [libraries] diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 381baa9ce..68e8816d7 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionSha256Sum=d725d707bfabd4dfdc958c624003b3c80accc03f7037b5122c4b1d0ef15cecab +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/package-lock.json b/package-lock.json index bbfda1da6..1a7023e55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,17 +8,18 @@ "@saithodev/semantic-release-backmerge": "^4.0.1", "@semantic-release/changelog": "^6.0.3", "@semantic-release/git": "^10.0.1", - "gradle-semantic-release-plugin": "^1.9.1", - "semantic-release": "^23.0.8" + "gradle-semantic-release-plugin": "^1.9.2", + "semantic-release": "^24.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", - "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.6", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -26,21 +27,23 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", - "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", - "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -54,6 +57,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -66,6 +70,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -80,6 +85,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -88,13 +94,15 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -104,6 +112,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -116,6 +125,7 @@ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" @@ -126,6 +136,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -139,6 +150,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -148,6 +160,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -161,6 +174,7 @@ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" } @@ -170,6 +184,7 @@ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.0.0", @@ -188,6 +203,7 @@ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz", "integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^13.0.0", "universal-user-agent": "^7.0.2" @@ -201,6 +217,7 @@ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request": "^9.0.0", "@octokit/types": "^13.0.0", @@ -214,13 +231,15 @@ "version": "22.2.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.0.tgz", - "integrity": "sha512-n4znWfRinnUQF6TPyxs7EctSAA3yVSP4qlJP2YgI3g9d4Ae2n5F3XDOjbUluKRxPU3rfsgpOboI4O4VtPc6Ilg==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.3.tgz", + "integrity": "sha512-o4WRoOJZlKqEEgj+i9CpcmnByvtzoUYC6I8PD2SA95M+BJ2x8h7oLcVOg9qcowWXBOdcTRsMZiwvM3EyLm9AfA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^13.5.0" }, @@ -236,6 +255,7 @@ "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.1.tgz", "integrity": "sha512-G9Ue+x2odcb8E1XIPhaFBnTTIrrUDfXN05iFXiqhR+SeeeDMMILcAnysOsxUpEWcQp2e5Ft397FCXTcPkiPkLw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request-error": "^6.0.0", "@octokit/types": "^13.0.0", @@ -249,10 +269,11 @@ } }, "node_modules/@octokit/plugin-throttling": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.0.tgz", - "integrity": "sha512-B5YTToSRTzNSeEyssnrT7WwGhpIdbpV9NKIs3KyTWHX6PhpYn7gqF/+lL3BvsASBM3Sg5BAUYk7KZx5p/Ec77w==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.1.tgz", + "integrity": "sha512-Qd91H4liUBhwLB2h6jZ99bsxoQdhgPk6TdwnClPyTBSDAdviGPceViEgUwj+pcQDmB/rfAXAXK7MTochpHM3yQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^13.0.0", "bottleneck": "^2.15.3" @@ -265,10 +286,11 @@ } }, "node_modules/@octokit/request": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.1.tgz", - "integrity": "sha512-pyAguc0p+f+GbQho0uNetNQMmLG1e80WjkIaqqgUkihqUp0boRU6nKItXO4VWnr+nbZiLGEyy4TeKRwqaLvYgw==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.3.tgz", + "integrity": "sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/endpoint": "^10.0.0", "@octokit/request-error": "^6.0.1", @@ -280,10 +302,11 @@ } }, "node_modules/@octokit/request-error": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.1.tgz", - "integrity": "sha512-1mw1gqT3fR/WFvnoVpY/zUM2o/XkMs/2AszUUG9I69xn0JFLv6PGkPhNk5lbfvROs79wiS0bqiJNxfCZcRJJdg==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.4.tgz", + "integrity": "sha512-VpAhIUxwhWZQImo/dWAN/NpPqqojR6PSLgLYAituLM6U+ddx9hCioFGwBr5Mi+oi5CLeJkcAs3gJ0PYYzU6wUg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^13.0.0" }, @@ -296,6 +319,7 @@ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^22.2.0" } @@ -305,6 +329,7 @@ "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.22.0" } @@ -314,6 +339,7 @@ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" }, @@ -325,13 +351,15 @@ "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@pnpm/npm-conf": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", "dev": true, + "license": "MIT", "dependencies": { "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", @@ -346,6 +374,7 @@ "resolved": "https://registry.npmjs.org/@saithodev/semantic-release-backmerge/-/semantic-release-backmerge-4.0.1.tgz", "integrity": "sha512-WDsU28YrXSLx0xny7FgFlEk8DCKGcj6OOhA+4Q9k3te1jJD1GZuqY8sbIkVQaw9cqJ7CT+fCZUN6QDad8JW4Dg==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", "aggregate-error": "^3.1.0", @@ -360,6 +389,7 @@ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" } @@ -369,6 +399,7 @@ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", @@ -387,6 +418,7 @@ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" @@ -400,6 +432,7 @@ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request": "^8.3.0", "@octokit/types": "^13.0.0", @@ -413,13 +446,15 @@ "version": "20.0.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-paginate-rest": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^12.6.0" }, @@ -435,6 +470,7 @@ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^20.0.0" } @@ -444,6 +480,7 @@ "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request-error": "^5.0.0", "@octokit/types": "^12.0.0", @@ -461,6 +498,7 @@ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^20.0.0" } @@ -470,6 +508,7 @@ "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.2.0.tgz", "integrity": "sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^12.2.0", "bottleneck": "^2.15.3" @@ -486,6 +525,7 @@ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^20.0.0" } @@ -495,6 +535,7 @@ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/endpoint": "^9.0.1", "@octokit/request-error": "^5.1.0", @@ -510,6 +551,7 @@ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^13.1.0", "deprecation": "^2.0.0", @@ -524,6 +566,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", "dev": true, + "license": "MIT", "dependencies": { "conventional-changelog-angular": "^7.0.0", "conventional-commits-filter": "^4.0.0", @@ -545,6 +588,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.6.tgz", "integrity": "sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/core": "^5.0.0", "@octokit/plugin-paginate-rest": "^9.0.0", @@ -575,6 +619,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -584,6 +629,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" @@ -600,6 +646,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.3.tgz", "integrity": "sha512-KUsozQGhRBAnoVg4UMZj9ep436VEGwT536/jwSqB7vcEfA6oncCUU7UIYTRdLx7GvTtqn0kBjnkfLVkcnBa2YQ==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^4.0.0", "aggregate-error": "^5.0.0", @@ -627,6 +674,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -636,6 +684,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" @@ -652,6 +701,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", @@ -675,6 +725,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -687,6 +738,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", "dev": true, + "license": "MIT", "dependencies": { "conventional-changelog-angular": "^7.0.0", "conventional-changelog-writer": "^7.0.0", @@ -711,6 +763,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -718,17 +771,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/ansi-escapes": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@saithodev/semantic-release-backmerge/node_modules/before-after-hook": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@saithodev/semantic-release-backmerge/node_modules/clean-stack": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" }, @@ -739,11 +807,75 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-changelog-writer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", + "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-commits-filter": "^4.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^12.0.1", + "semver": "^7.5.2", + "split2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-commits-filter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@saithodev/semantic-release-backmerge/node_modules/cosmiconfig": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, + "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", @@ -770,6 +902,7 @@ "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-10.0.0.tgz", "integrity": "sha512-U4xcd/utDYFgMh0yWj07R1H6L5fwhVbmxBCpnL0DbVSDZVnsC82HONw0wxtxNkIAcua3KtbomQvIk5xFZGAQJw==", "dev": true, + "license": "MIT", "dependencies": { "execa": "^8.0.0", "java-properties": "^1.0.2" @@ -783,6 +916,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", @@ -806,6 +940,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -818,6 +953,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -830,6 +966,7 @@ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", "dev": true, + "license": "MIT", "dependencies": { "semver-regex": "^4.0.5" }, @@ -845,6 +982,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=16.17.0" } @@ -854,6 +992,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -866,6 +1005,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -878,6 +1018,7 @@ "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", "dev": true, + "license": "MIT", "dependencies": { "lodash.capitalize": "^4.2.1", "lodash.escaperegexp": "^4.1.2", @@ -894,6 +1035,7 @@ "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz", "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", "dev": true, + "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -906,6 +1048,7 @@ "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.2.0.tgz", "integrity": "sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^6.2.0", "cardinal": "^2.1.1", @@ -921,11 +1064,25 @@ "marked": ">=1 <12" } }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@saithodev/semantic-release-backmerge/node_modules/mimic-fn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -938,6 +1095,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -953,6 +1111,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" }, @@ -968,6 +1127,7 @@ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -980,6 +1140,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -992,6 +1153,7 @@ "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-22.0.12.tgz", "integrity": "sha512-0mhiCR/4sZb00RVFJIUlMuiBkW3NMpVIW2Gse7noqEMoFGkvfPPAImEQbkBV8xga4KOPP4FdTRYuLLy32R1fPw==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/commit-analyzer": "^11.0.0", "@semantic-release/error": "^4.0.0", @@ -1035,6 +1197,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -1044,6 +1207,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" @@ -1060,6 +1224,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", @@ -1083,6 +1248,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -1095,6 +1261,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -1107,6 +1274,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1118,19 +1286,22 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@semantic-release/changelog": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", "aggregate-error": "^3.0.0", @@ -1145,14 +1316,16 @@ } }, "node_modules/@semantic-release/commit-analyzer": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-12.0.0.tgz", - "integrity": "sha512-qG+md5gdes+xa8zP7lIo1fWE17zRdO8yMCaxh9lyL65TQleoSv8WHHOqRURfghTytUh+NpkSyBprQ5hrkxOKVQ==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.0.tgz", + "integrity": "sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==", "dev": true, + "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", "debug": "^4.0.0", "import-from-esm": "^1.0.3", "lodash-es": "^4.17.21", @@ -1170,6 +1343,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.17" } @@ -1179,6 +1353,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", "aggregate-error": "^3.0.0", @@ -1197,10 +1372,11 @@ } }, "node_modules/@semantic-release/github": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.0.5.tgz", - "integrity": "sha512-hmuCDkfru/Uc9+ZBNOSremAupu6BCslvOVDiG0wYcL8TQodCycp6uvwDyeym1H0M4l3ob9c0s0xMBiZjjXQ2yA==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.1.1.tgz", + "integrity": "sha512-sSmsBKGpAlTtXf9rUJf/si16p+FwPEsvsJRjl3KCwFP0WywaSpynvUhlYvE18n5rzkQNbGJnObAKIoo3xFMSjA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/core": "^6.0.0", "@octokit/plugin-paginate-rest": "^11.0.0", @@ -1231,6 +1407,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -1240,6 +1417,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" @@ -1256,6 +1434,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" }, @@ -1271,6 +1450,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1283,6 +1463,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1295,6 +1476,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz", "integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^4.0.0", "aggregate-error": "^5.0.0", @@ -1322,6 +1504,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -1331,6 +1514,7 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -1343,6 +1527,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" @@ -1359,6 +1544,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" }, @@ -1374,6 +1560,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1382,10 +1569,11 @@ } }, "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.1.0.tgz", - "integrity": "sha512-lSgHc4Elo2m6bUDhc3Hl/VxvUDJdQWI40RZ4KMY9bKRc+hgMOT7II/JjbNDhI8VnMtrCb7U/fhpJIkLORZozWw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.3.0.tgz", + "integrity": "sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==", "dev": true, + "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", @@ -1401,7 +1589,7 @@ "yoctocolors": "^2.0.0" }, "engines": { - "node": ">=18" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" @@ -1412,6 +1600,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, + "license": "MIT", "dependencies": { "@sec-ant/readable-stream": "^0.4.1", "is-stream": "^4.0.1" @@ -1428,6 +1617,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-7.0.0.tgz", "integrity": "sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18.0" } @@ -1437,6 +1627,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1449,6 +1640,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -1461,6 +1653,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -1476,6 +1669,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1488,6 +1682,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -1500,6 +1695,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -1508,21 +1704,22 @@ } }, "node_modules/@semantic-release/release-notes-generator": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-13.0.0.tgz", - "integrity": "sha512-LEeZWb340keMYuREMyxrODPXJJ0JOL8D/mCl74B4LdzbxhtXV2LrPN2QBEcGJrlQhoqLO0RhxQb6masHytKw+A==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.1.tgz", + "integrity": "sha512-K0w+5220TM4HZTthE5dDpIuFrnkN1NfTGPidJFm04ULT1DEZ9WG89VNXN7F0c+6nMEpWgqmPvb7vY7JkB2jyyA==", "dev": true, + "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-changelog-writer": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", "debug": "^4.0.0", "get-stream": "^7.0.0", "import-from-esm": "^1.0.3", "into-stream": "^7.0.0", "lodash-es": "^4.17.21", - "read-pkg-up": "^11.0.0" + "read-package-up": "^11.0.0" }, "engines": { "node": ">=20.8.1" @@ -1536,6 +1733,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -1548,6 +1746,7 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1560,6 +1759,7 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -1571,13 +1771,22 @@ "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true, + "license": "MIT" }, "node_modules/agent-base": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -1590,6 +1799,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -1599,12 +1809,16 @@ } }, "node_modules/ansi-escapes": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", - "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1615,6 +1829,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1624,6 +1839,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1638,102 +1854,57 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/argv-formatter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", - "dev": true - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, "node_modules/before-after-hook": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -1741,30 +1912,12 @@ "node": ">=8" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1774,6 +1927,7 @@ "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", "dev": true, + "license": "MIT", "dependencies": { "ansicolors": "~0.3.2", "redeyed": "~2.1.0" @@ -1787,6 +1941,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -1799,6 +1954,7 @@ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -1808,6 +1964,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1817,6 +1974,7 @@ "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", "dev": true, + "license": "ISC", "dependencies": { "chalk": "^4.0.0", "highlight.js": "^10.7.1", @@ -1838,6 +1996,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1854,6 +2013,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -1865,6 +2025,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -1883,6 +2044,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -1892,6 +2054,7 @@ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, + "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -1907,6 +2070,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -1921,6 +2085,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1932,13 +2097,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, + "license": "MIT", "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" @@ -1949,68 +2116,69 @@ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", + "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", "dev": true, + "license": "ISC", "dependencies": { "compare-func": "^2.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-changelog-writer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", - "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz", + "integrity": "sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==", "dev": true, + "license": "MIT", "dependencies": { - "conventional-commits-filter": "^4.0.0", + "@types/semver": "^7.5.5", + "conventional-commits-filter": "^5.0.0", "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^12.0.1", - "semver": "^7.5.2", - "split2": "^4.0.0" + "meow": "^13.0.0", + "semver": "^7.5.2" }, "bin": { - "conventional-changelog-writer": "cli.mjs" + "conventional-changelog-writer": "dist/cli/index.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-commits-filter": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", - "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", + "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz", + "integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==", "dev": true, + "license": "MIT", "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" + "meow": "^13.0.0" }, "bin": { - "conventional-commits-parser": "cli.mjs" + "conventional-commits-parser": "dist/cli/index.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/convert-hrtime": { @@ -2018,6 +2186,7 @@ "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2029,13 +2198,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -2062,6 +2233,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2076,6 +2248,7 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^1.0.1" }, @@ -2091,6 +2264,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2098,62 +2272,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -2171,55 +2295,24 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -2232,6 +2325,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, + "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -2244,6 +2338,7 @@ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "readable-stream": "^2.0.2" } @@ -2252,19 +2347,22 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emojilib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/env-ci": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.0.0.tgz", "integrity": "sha512-apikxMgkipkgTvMdRT9MNqWx5VLOci79F4VBd7Op/7OPjjoanjdAvn6fglMCCEf/1bAh8eOiuEVCUs4V3qP3nQ==", "dev": true, + "license": "MIT", "dependencies": { "execa": "^8.0.0", "java-properties": "^1.0.2" @@ -2278,6 +2376,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", @@ -2301,6 +2400,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -2313,6 +2413,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=16.17.0" } @@ -2322,6 +2423,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -2334,6 +2436,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2346,6 +2449,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -2361,6 +2465,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" }, @@ -2376,6 +2481,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2388,6 +2494,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -2400,6 +2507,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2412,148 +2520,40 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2563,6 +2563,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -2572,6 +2573,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -2585,6 +2587,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -2608,6 +2611,7 @@ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -2624,6 +2628,7 @@ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -2633,6 +2638,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, + "license": "MIT", "dependencies": { "is-unicode-supported": "^2.0.0" }, @@ -2648,6 +2654,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2660,6 +2667,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^2.0.0" }, @@ -2672,6 +2680,7 @@ "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -2684,6 +2693,7 @@ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", "dev": true, + "license": "MIT", "dependencies": { "semver-regex": "^4.0.5", "super-regex": "^1.0.0" @@ -2695,20 +2705,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" @@ -2719,6 +2721,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -2728,20 +2731,12 @@ "node": ">=14.14" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/function-timeout": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -2749,66 +2744,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2816,35 +2767,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/git-log-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", - "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", + "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", "dev": true, + "license": "MIT", "dependencies": { "argv-formatter": "~1.0.0", "spawn-error-forwarder": "~1.0.0", "split2": "~1.0.0", "stream-combiner2": "~1.1.1", "through2": "~2.0.0", - "traverse": "~0.6.6" + "traverse": "0.6.8" } }, "node_modules/git-log-parser/node_modules/split2": { @@ -2852,6 +2787,7 @@ "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", "dev": true, + "license": "ISC", "dependencies": { "through2": "~2.0.0" } @@ -2861,6 +2797,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -2868,27 +2805,12 @@ "node": ">= 6" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/globby": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", - "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, + "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", "fast-glob": "^3.3.2", @@ -2909,6 +2831,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2916,28 +2839,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/gradle-semantic-release-plugin": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/gradle-semantic-release-plugin/-/gradle-semantic-release-plugin-1.9.1.tgz", - "integrity": "sha512-lCrw22itszP/FLSL3N61E40vH1+CU95/4LG9ZF+Fxr8tcx7EPthh2eqVPAq67udFlM8ZgO2LETnn8LSDRq1J2w==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/gradle-semantic-release-plugin/-/gradle-semantic-release-plugin-1.9.2.tgz", + "integrity": "sha512-8qpf4GYFPQ+UMUymYBy/VchOOwLILAWzZMrZX1R0RR3JMgJBMN2R0tJn92R/3rXmxx4OAqwUFH6Np51eFoxr3w==", "dev": true, "funding": [ { @@ -2945,6 +2857,7 @@ "url": "https://github.com/sponsors/KengoTODA" } ], + "license": "MIT", "dependencies": { "promisified-properties": "^3.0.0", "split2": "^4.1.0" @@ -2953,7 +2866,7 @@ "node": ">=18" }, "peerDependencies": { - "semantic-release": "^23.0.0" + "semantic-release": "^24.0.0" } }, "node_modules/handlebars": { @@ -2961,6 +2874,7 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -2977,92 +2891,22 @@ "uglify-js": "^3.1.4" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": "*" } @@ -3072,6 +2916,7 @@ "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -3084,6 +2929,7 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" }, @@ -3096,6 +2942,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -3105,10 +2952,11 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -3122,6 +2970,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -3131,6 +2980,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -3140,6 +2990,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3156,6 +3007,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -3165,6 +3017,7 @@ "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz", "integrity": "sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4", "import-meta-resolve": "^4.0.0" @@ -3178,6 +3031,7 @@ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3188,6 +3042,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3197,6 +3052,7 @@ "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -3208,33 +3064,22 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } + "license": "ISC" }, "node_modules/into-stream": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", "dev": true, + "license": "MIT", "dependencies": { "from2": "^2.3.0", "p-is-promise": "^3.0.0" @@ -3246,115 +3091,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3364,6 +3113,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3373,6 +3123,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -3380,47 +3131,22 @@ "node": ">=0.10.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3430,6 +3156,7 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -3437,42 +3164,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -3480,41 +3177,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-text-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", "dev": true, + "license": "MIT", "dependencies": { "text-extensions": "^2.0.0" }, @@ -3522,26 +3190,12 @@ "node": ">=8" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-unicode-supported": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -3549,35 +3203,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/issue-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.0.tgz", - "integrity": "sha512-jgAw78HO3gs9UrKqJNQvfDj9Ouy8Mhu40fbEJ8yXff4MW8+/Fcn9iFjyWUQ6SKbX8ipPk3X5A3AyfYHRu6uVLw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", + "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", "dev": true, + "license": "MIT", "dependencies": { "lodash.capitalize": "^4.2.1", "lodash.escaperegexp": "^4.1.2", @@ -3594,6 +3239,7 @@ "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -3602,13 +3248,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -3620,25 +3268,29 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -3653,13 +3305,15 @@ "dev": true, "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, + "license": "(MIT OR Apache-2.0)", "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -3675,13 +3329,15 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -3697,6 +3353,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, + "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -3710,6 +3367,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -3722,58 +3380,64 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.capitalize": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.escaperegexp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.uniqby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "license": "ISC" }, "node_modules/marked": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", "dev": true, + "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -3782,15 +3446,16 @@ } }, "node_modules/marked-terminal": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.0.0.tgz", - "integrity": "sha512-sNEx8nn9Ktcm6pL0TnRz8tnXq/mSS0Q1FRSwJOAqw4lAB4l49UeDf85Gm1n9RPFm5qurCPjwi1StAQT2XExhZw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.1.0.tgz", + "integrity": "sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^6.2.0", + "ansi-escapes": "^7.0.0", "chalk": "^5.3.0", "cli-highlight": "^2.1.11", - "cli-table3": "^0.6.3", + "cli-table3": "^0.6.5", "node-emoji": "^2.1.3", "supports-hyperlinks": "^3.0.0" }, @@ -3798,16 +3463,17 @@ "node": ">=16.0.0" }, "peerDependencies": { - "marked": ">=1 <13" + "marked": ">=1 <14" } }, "node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16.10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3817,13 +3483,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -3833,6 +3501,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -3842,13 +3511,14 @@ } }, "node_modules/mime": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.3.tgz", - "integrity": "sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz", + "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==", "dev": true, "funding": [ "https://github.com/sponsors/broofa" ], + "license": "MIT", "bin": { "mime": "bin/cli.js" }, @@ -3861,6 +3531,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -3870,6 +3541,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3878,13 +3550,15 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, + "license": "MIT", "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -3895,19 +3569,22 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nerf-dart": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-emoji": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", "dev": true, + "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.6.0", "char-regex": "^1.0.2", @@ -3919,13 +3596,13 @@ } }, "node_modules/normalize-package-data": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz", - "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, @@ -3938,6 +3615,7 @@ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -3946,9 +3624,9 @@ } }, "node_modules/npm": { - "version": "10.8.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.0.tgz", - "integrity": "sha512-wh93uRczgp7HDnPMiLXcCkv2hagdJS0zJ9KT/31d0FoXP02+qgN2AOwpaW85fxRWkinl2rELfPw+CjBXW48/jQ==", + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.2.tgz", + "integrity": "sha512-x/AIjFIKRllrhcb48dqUNAAZl0ig9+qMuN91RpZo3Cb2+zuibfh+KISl6+kVVyktDz230JKc208UkQwwMqyB+w==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -4020,6 +3698,7 @@ "write-file-atomic" ], "dev": true, + "license": "Artistic-2.0", "workspaces": [ "docs", "smoke-tests", @@ -4029,15 +3708,15 @@ ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.5.2", - "@npmcli/config": "^8.3.2", + "@npmcli/arborist": "^7.5.4", + "@npmcli/config": "^8.3.4", "@npmcli/fs": "^3.1.1", "@npmcli/map-workspaces": "^3.0.6", - "@npmcli/package-json": "^5.1.0", + "@npmcli/package-json": "^5.2.0", "@npmcli/promise-spawn": "^7.0.2", - "@npmcli/redact": "^2.0.0", + "@npmcli/redact": "^2.0.1", "@npmcli/run-script": "^8.1.0", - "@sigstore/tuf": "^2.3.3", + "@sigstore/tuf": "^2.3.4", "abbrev": "^2.0.0", "archy": "~1.0.0", "cacache": "^18.0.3", @@ -4046,38 +3725,38 @@ "cli-columns": "^4.0.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.3.15", + "glob": "^10.4.2", "graceful-fs": "^4.2.11", "hosted-git-info": "^7.0.2", - "ini": "^4.1.2", + "ini": "^4.1.3", "init-package-json": "^6.0.3", - "is-cidr": "^5.0.5", + "is-cidr": "^5.1.0", "json-parse-even-better-errors": "^3.0.2", "libnpmaccess": "^8.0.6", - "libnpmdiff": "^6.1.2", - "libnpmexec": "^8.1.1", - "libnpmfund": "^5.0.10", + "libnpmdiff": "^6.1.4", + "libnpmexec": "^8.1.3", + "libnpmfund": "^5.0.12", "libnpmhook": "^10.0.5", "libnpmorg": "^6.0.6", - "libnpmpack": "^7.0.2", - "libnpmpublish": "^9.0.8", - "libnpmsearch": "^7.0.5", + "libnpmpack": "^7.0.4", + "libnpmpublish": "^9.0.9", + "libnpmsearch": "^7.0.6", "libnpmteam": "^6.0.5", - "libnpmversion": "^6.0.2", + "libnpmversion": "^6.0.3", "make-fetch-happen": "^13.0.1", - "minimatch": "^9.0.4", + "minimatch": "^9.0.5", "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", "node-gyp": "^10.1.0", "nopt": "^7.2.1", - "normalize-package-data": "^6.0.1", + "normalize-package-data": "^6.0.2", "npm-audit-report": "^5.0.0", "npm-install-checks": "^6.3.0", "npm-package-arg": "^11.0.2", - "npm-pick-manifest": "^9.0.1", + "npm-pick-manifest": "^9.1.0", "npm-profile": "^10.0.0", - "npm-registry-fetch": "^17.0.1", + "npm-registry-fetch": "^17.1.0", "npm-user-validate": "^2.0.1", "p-map": "^4.0.0", "pacote": "^18.0.6", @@ -4110,6 +3789,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -4207,7 +3887,7 @@ } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.5.2", + "version": "7.5.4", "dev": true, "inBundle": true, "license": "ISC", @@ -4256,17 +3936,17 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "8.3.2", + "version": "8.3.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/package-json": "^5.1.1", "ci-info": "^4.0.0", "ini": "^4.1.2", "nopt": "^7.2.1", "proc-log": "^4.2.0", - "read-package-json-fast": "^3.0.2", "semver": "^7.3.5", "walk-up-path": "^3.0.1" }, @@ -4287,12 +3967,13 @@ } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.7", + "version": "5.0.8", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", "proc-log": "^4.0.0", @@ -4371,7 +4052,7 @@ } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "5.1.0", + "version": "5.2.0", "dev": true, "inBundle": true, "license": "ISC", @@ -4413,7 +4094,7 @@ } }, "node_modules/npm/node_modules/@npmcli/redact": { - "version": "2.0.0", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -4449,12 +4130,12 @@ } }, "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.3.1", + "version": "2.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.1" + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -4479,14 +4160,14 @@ } }, "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.3.1", + "version": "2.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.0", + "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/protobuf-specs": "^0.3.2", "make-fetch-happen": "^13.0.1", "proc-log": "^4.2.0", "promise-retry": "^2.0.1" @@ -4496,12 +4177,12 @@ } }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.3.3", + "version": "2.3.4", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.0", + "@sigstore/protobuf-specs": "^0.3.2", "tuf-js": "^2.2.1" }, "engines": { @@ -4509,14 +4190,14 @@ } }, "node_modules/npm/node_modules/@sigstore/verify": { - "version": "1.2.0", + "version": "1.2.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.1", + "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.1.0", - "@sigstore/protobuf-specs": "^0.3.1" + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -4713,7 +4394,7 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "4.0.5", + "version": "4.1.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -4821,7 +4502,7 @@ } }, "node_modules/npm/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.5", "dev": true, "inBundle": true, "license": "MIT", @@ -4905,7 +4586,7 @@ } }, "node_modules/npm/node_modules/foreground-child": { - "version": "3.1.1", + "version": "3.2.1", "dev": true, "inBundle": true, "license": "ISC", @@ -4932,26 +4613,18 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/npm/node_modules/glob": { - "version": "10.3.15", + "version": "10.4.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" @@ -4969,18 +4642,6 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/hasown": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/npm/node_modules/hosted-git-info": { "version": "7.0.2", "dev": true, @@ -5013,7 +4674,7 @@ } }, "node_modules/npm/node_modules/https-proxy-agent": { - "version": "7.0.4", + "version": "7.0.5", "dev": true, "inBundle": true, "license": "MIT", @@ -5069,7 +4730,7 @@ } }, "node_modules/npm/node_modules/ini": { - "version": "4.1.2", + "version": "4.1.3", "dev": true, "inBundle": true, "license": "ISC", @@ -5121,29 +4782,17 @@ } }, "node_modules/npm/node_modules/is-cidr": { - "version": "5.0.5", + "version": "5.1.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "cidr-regex": "^4.0.4" + "cidr-regex": "^4.1.1" }, "engines": { "node": ">=14" } }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.13.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "dev": true, @@ -5166,7 +4815,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/jackspeak": { - "version": "2.3.6", + "version": "3.4.0", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -5242,12 +4891,12 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.1.2", + "version": "6.1.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.2", + "@npmcli/arborist": "^7.5.4", "@npmcli/installed-package-contents": "^2.1.0", "binary-extensions": "^2.3.0", "diff": "^5.1.0", @@ -5261,12 +4910,12 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "8.1.1", + "version": "8.1.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.2", + "@npmcli/arborist": "^7.5.4", "@npmcli/run-script": "^8.1.0", "ci-info": "^4.0.0", "npm-package-arg": "^11.0.2", @@ -5282,12 +4931,12 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.10", + "version": "5.0.12", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.2" + "@npmcli/arborist": "^7.5.4" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -5320,12 +4969,12 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "7.0.2", + "version": "7.0.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.2", + "@npmcli/arborist": "^7.5.4", "@npmcli/run-script": "^8.1.0", "npm-package-arg": "^11.0.2", "pacote": "^18.0.6" @@ -5335,7 +4984,7 @@ } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.8", + "version": "9.0.9", "dev": true, "inBundle": true, "license": "ISC", @@ -5354,7 +5003,7 @@ } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.5", + "version": "7.0.6", "dev": true, "inBundle": true, "license": "ISC", @@ -5379,7 +5028,7 @@ } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "6.0.2", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -5427,7 +5076,7 @@ } }, "node_modules/npm/node_modules/minimatch": { - "version": "9.0.4", + "version": "9.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -5442,7 +5091,7 @@ } }, "node_modules/npm/node_modules/minipass": { - "version": "7.1.1", + "version": "7.1.2", "dev": true, "inBundle": true, "license": "ISC", @@ -5503,28 +5152,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", "dev": true, @@ -5683,13 +5310,12 @@ } }, "node_modules/npm/node_modules/normalize-package-data": { - "version": "6.0.1", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, @@ -5767,7 +5393,7 @@ } }, "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "9.0.1", + "version": "9.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -5795,16 +5421,16 @@ } }, "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "17.0.1", + "version": "17.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", "make-fetch-happen": "^13.0.0", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", "npm-package-arg": "^11.0.0", "proc-log": "^4.0.0" @@ -5837,6 +5463,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm/node_modules/package-json-from-dist": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0" + }, "node_modules/npm/node_modules/pacote": { "version": "18.0.6", "dev": true, @@ -5908,7 +5540,7 @@ } }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.16", + "version": "6.1.0", "dev": true, "inBundle": true, "license": "MIT", @@ -6091,17 +5723,17 @@ } }, "node_modules/npm/node_modules/sigstore": { - "version": "2.3.0", + "version": "2.3.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.1", + "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "@sigstore/sign": "^2.3.0", - "@sigstore/tuf": "^2.3.1", - "@sigstore/verify": "^1.2.0" + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -6132,14 +5764,14 @@ } }, "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "8.0.3", + "version": "8.0.4", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.1", "debug": "^4.3.4", - "socks": "^2.7.1" + "socks": "^2.8.3" }, "engines": { "node": ">= 14" @@ -6182,7 +5814,7 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.17", + "version": "3.0.18", "dev": true, "inBundle": true, "license": "CC0-1.0" @@ -6569,51 +6201,17 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -6623,6 +6221,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -6638,6 +6237,7 @@ "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6650,6 +6250,7 @@ "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", "dev": true, + "license": "MIT", "dependencies": { "p-map": "^7.0.1" }, @@ -6665,6 +6266,7 @@ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6674,6 +6276,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^1.0.0" }, @@ -6686,6 +6289,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^1.1.0" }, @@ -6698,6 +6302,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -6710,6 +6315,7 @@ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6719,6 +6325,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6728,6 +6335,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -6740,6 +6348,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -6758,6 +6367,7 @@ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -6769,13 +6379,15 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, + "license": "MIT", "dependencies": { "parse5": "^6.0.1" } @@ -6784,19 +6396,22 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/parsimmon": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.18.1.tgz", "integrity": "sha512-u7p959wLfGAhJpSDJVYXoyMCXWYwHia78HhRBWqk7AIbxdmlrfdp5wX0l3xv/iTSH5HvhN9K7o26hwwpgS5Nmw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6806,6 +6421,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6815,6 +6431,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6823,13 +6440,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -6842,6 +6461,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6851,6 +6471,7 @@ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^2.0.0", "load-json-file": "^4.0.0" @@ -6859,20 +6480,12 @@ "node": ">=4" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/pretty-ms": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.0.0.tgz", "integrity": "sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==", "dev": true, + "license": "MIT", "dependencies": { "parse-ms": "^4.0.0" }, @@ -6887,13 +6500,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/promisified-properties": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/promisified-properties/-/promisified-properties-3.0.0.tgz", "integrity": "sha512-ARteuBuUpPg/+spsMhcKHvdtOW/q8btyyVYYxxegGgx+7u9ix9at8DjP2KM2t8+4SuI8wBLt+3X876FMQx91yQ==", "dev": true, + "license": "MIT", "dependencies": { "parsimmon": "^1.13.0" }, @@ -6906,7 +6521,8 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -6926,13 +6542,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -6948,6 +6566,7 @@ "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up-simple": "^1.0.0", "read-pkg": "^9.0.0", @@ -6965,6 +6584,7 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dev": true, + "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", @@ -6985,6 +6605,7 @@ "integrity": "sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==", "deprecated": "Renamed to read-package-up", "dev": true, + "license": "MIT", "dependencies": { "find-up-simple": "^1.0.0", "read-pkg": "^9.0.0", @@ -7002,6 +6623,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.13", "index-to-position": "^0.1.2", @@ -7019,6 +6641,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -7034,33 +6657,17 @@ "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", "dev": true, + "license": "MIT", "dependencies": { "esprima": "~4.0.0" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/registry-auth-token": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", "dev": true, + "license": "MIT", "dependencies": { "@pnpm/npm-conf": "^2.1.0" }, @@ -7073,6 +6680,7 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7082,6 +6690,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7091,6 +6700,7 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -7115,68 +6725,30 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, "node_modules/semantic-release": { - "version": "23.1.1", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.1.1.tgz", - "integrity": "sha512-qqJDBhbtHsjUEMsojWKGuL5lQFCJuPtiXKEIlFKyTzDDGTAE/oyvznaP8GeOr5PvcqBJ6LQz4JCENWPLeehSpA==", + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.0.0.tgz", + "integrity": "sha512-v46CRPw+9eI3ZuYGF2oAjqPqsfbnfFTwLBgQsv/lch4goD09ytwOTESMN4QIrx/wPLxUGey60/NMx+ANQtWRsA==", "dev": true, + "license": "MIT", "dependencies": { - "@semantic-release/commit-analyzer": "^12.0.0", + "@semantic-release/commit-analyzer": "^13.0.0-beta.1", "@semantic-release/error": "^4.0.0", "@semantic-release/github": "^10.0.0", "@semantic-release/npm": "^12.0.0", - "@semantic-release/release-notes-generator": "^13.0.0", + "@semantic-release/release-notes-generator": "^14.0.0-beta.1", "aggregate-error": "^5.0.0", "cosmiconfig": "^9.0.0", "debug": "^4.0.0", @@ -7214,6 +6786,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -7223,6 +6796,7 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -7235,6 +6809,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" @@ -7251,6 +6826,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" }, @@ -7266,6 +6842,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -7274,10 +6851,11 @@ } }, "node_modules/semantic-release/node_modules/execa": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.1.0.tgz", - "integrity": "sha512-lSgHc4Elo2m6bUDhc3Hl/VxvUDJdQWI40RZ4KMY9bKRc+hgMOT7II/JjbNDhI8VnMtrCb7U/fhpJIkLORZozWw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.3.0.tgz", + "integrity": "sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==", "dev": true, + "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", @@ -7293,7 +6871,7 @@ "yoctocolors": "^2.0.0" }, "engines": { - "node": ">=18" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" @@ -7304,6 +6882,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, + "license": "MIT", "dependencies": { "@sec-ant/readable-stream": "^0.4.1", "is-stream": "^4.0.1" @@ -7320,6 +6899,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-7.0.0.tgz", "integrity": "sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18.0" } @@ -7329,6 +6909,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -7341,6 +6922,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -7353,6 +6935,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -7368,6 +6951,7 @@ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -7380,6 +6964,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -7392,6 +6977,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -7404,6 +6990,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -7412,10 +6999,11 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -7428,6 +7016,7 @@ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.3.5" }, @@ -7443,6 +7032,7 @@ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -7450,43 +7040,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -7499,39 +7058,24 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/signale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^2.3.2", "figures": "^2.0.0", @@ -7546,6 +7090,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -7558,6 +7103,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -7572,6 +7118,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -7580,13 +7127,15 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/signale/node_modules/figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -7599,6 +7148,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7608,6 +7158,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -7620,6 +7171,7 @@ "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", "dev": true, + "license": "MIT", "dependencies": { "unicode-emoji-modifier-base": "^1.0.0" }, @@ -7632,6 +7184,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -7644,6 +7197,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7652,13 +7206,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -7668,13 +7224,15 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -7684,13 +7242,15 @@ "version": "3.0.18", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/split2": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 10.x" } @@ -7700,6 +7260,7 @@ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", "dev": true, + "license": "MIT", "dependencies": { "duplexer2": "~0.1.0", "readable-stream": "^2.0.2" @@ -7710,6 +7271,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -7719,6 +7281,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7728,60 +7291,12 @@ "node": ">=8" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7794,6 +7309,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7803,6 +7319,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -7812,6 +7329,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7821,6 +7339,7 @@ "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", "dev": true, + "license": "MIT", "dependencies": { "function-timeout": "^1.0.1", "time-span": "^5.1.0" @@ -7837,6 +7356,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7849,6 +7369,7 @@ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -7862,6 +7383,7 @@ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" } @@ -7871,6 +7393,7 @@ "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", "dev": true, + "license": "MIT", "dependencies": { "is-stream": "^3.0.0", "temp-dir": "^3.0.0", @@ -7889,6 +7412,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -7901,6 +7425,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -7913,6 +7438,7 @@ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7925,6 +7451,7 @@ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, + "license": "MIT", "dependencies": { "any-promise": "^1.0.0" } @@ -7934,6 +7461,7 @@ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, + "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -7945,13 +7473,15 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, + "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -7962,6 +7492,7 @@ "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", "dev": true, + "license": "MIT", "dependencies": { "convert-hrtime": "^5.0.0" }, @@ -7977,6 +7508,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -7985,15 +7517,11 @@ } }, "node_modules/traverse": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", - "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", "dev": true, - "dependencies": { - "gopd": "^1.0.1", - "typedarray.prototype.slice": "^1.0.3", - "which-typed-array": "^1.1.15" - }, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8002,10 +7530,11 @@ } }, "node_modules/type-fest": { - "version": "4.18.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.3.tgz", - "integrity": "sha512-Q08/0IrpvM+NMY9PA2rti9Jb+JejTddwmwmVQGskAlhtcrw1wsRzoR6ode6mR+OAabNa75w/dxedSUY2mlphaQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.22.1.tgz", + "integrity": "sha512-9tHNEa0Ov81YOopiVkcCJVz5TM6AEQ+CHHjFIktqPnE3NV0AHIkx+gh9tiCl58m/66wWxkOC9eltpa75J4lQPA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -8013,104 +7542,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", - "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-errors": "^1.3.0", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-offset": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.0.tgz", + "integrity": "sha512-wNKHUY2hYYkf6oSFfhwwiHo4WCHzHmzcXsqXYTN9ja3iApYIFbb2U6ics9hBcYLHcYGQoAlwnZlTrf3oF+BL/Q==", "dev": true, + "license": "BSD-2-Clause", "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -8119,26 +7556,12 @@ "node": ">=0.8.0" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -8148,6 +7571,7 @@ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -8160,6 +7584,7 @@ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, + "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" }, @@ -8174,13 +7599,15 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -8190,6 +7617,7 @@ "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -8198,13 +7626,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -8215,6 +7645,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -8225,52 +7656,19 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8287,13 +7685,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4" } @@ -8303,6 +7703,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -8312,6 +7713,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -8330,15 +7732,17 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yoctocolors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.0.2.tgz", - "integrity": "sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, diff --git a/package.json b/package.json index 887341493..597726965 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "@saithodev/semantic-release-backmerge": "^4.0.1", "@semantic-release/changelog": "^6.0.3", "@semantic-release/git": "^10.0.1", - "gradle-semantic-release-plugin": "^1.9.1", - "semantic-release": "^23.0.8" + "gradle-semantic-release-plugin": "^1.9.2", + "semantic-release": "^24.0.0" } } From e7829b41e782c9feda23b9d6acf48bae277d24d9 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sat, 20 Jul 2024 18:06:27 +0200 Subject: [PATCH 18/50] feat: Add `Spoof build info` patch --- api/revanced-patches.api | 36 ++++ .../all/misc/build/BaseSpoofBuildInfoPatch.kt | 120 ++++++++++++ .../all/misc/build/SpoofBuildInfoPatch.kt | 183 ++++++++++++++++++ 3 files changed, 339 insertions(+) create mode 100644 src/main/kotlin/app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/all/misc/build/SpoofBuildInfoPatch.kt diff --git a/api/revanced-patches.api b/api/revanced-patches.api index a602a5b4c..cba63bcab 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -30,6 +30,42 @@ public final class app/revanced/patches/all/location/hide/HideMockLocationPatch public fun transform (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Lkotlin/Pair;)V } +public abstract class app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch : app/revanced/patches/all/misc/transformation/BaseTransformInstructionsPatch { + public fun ()V + public synthetic fun filterMap (Lcom/android/tools/smali/dexlib2/iface/ClassDef;Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/iface/instruction/Instruction;I)Ljava/lang/Object; + public fun filterMap (Lcom/android/tools/smali/dexlib2/iface/ClassDef;Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/iface/instruction/Instruction;I)Lkotlin/Pair; + protected fun getBoard ()Ljava/lang/String; + protected fun getBootloader ()Ljava/lang/String; + protected fun getBrand ()Ljava/lang/String; + protected fun getCpuAbi ()Ljava/lang/String; + protected fun getCpuAbi2 ()Ljava/lang/String; + protected fun getDevice ()Ljava/lang/String; + protected fun getDisplay ()Ljava/lang/String; + protected fun getFingerprint ()Ljava/lang/String; + protected fun getHardware ()Ljava/lang/String; + protected fun getHost ()Ljava/lang/String; + protected fun getId ()Ljava/lang/String; + protected fun getManufacturer ()Ljava/lang/String; + protected fun getModel ()Ljava/lang/String; + protected fun getOdmSku ()Ljava/lang/String; + protected fun getProduct ()Ljava/lang/String; + protected fun getRadio ()Ljava/lang/String; + protected fun getSerial ()Ljava/lang/String; + protected fun getSku ()Ljava/lang/String; + protected fun getSocManufacturer ()Ljava/lang/String; + protected fun getSocModel ()Ljava/lang/String; + protected fun getTags ()Ljava/lang/String; + protected fun getTime ()Ljava/lang/Long; + protected fun getType ()Ljava/lang/String; + protected fun getUser ()Ljava/lang/String; + public synthetic fun transform (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Ljava/lang/Object;)V + public fun transform (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Lkotlin/Pair;)V +} + +public final class app/revanced/patches/all/misc/build/SpoofBuildInfoPatch : app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch { + public fun ()V +} + public final class app/revanced/patches/all/misc/debugging/EnableAndroidDebuggingPatch : app/revanced/patcher/patch/ResourcePatch { public static final field INSTANCE Lapp/revanced/patches/all/misc/debugging/EnableAndroidDebuggingPatch; public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V diff --git a/src/main/kotlin/app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch.kt b/src/main/kotlin/app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch.kt new file mode 100644 index 000000000..15ef20e08 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch.kt @@ -0,0 +1,120 @@ +package app.revanced.patches.all.misc.build + +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction +import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod +import app.revanced.patches.all.misc.transformation.BaseTransformInstructionsPatch +import app.revanced.util.getReference +import com.android.tools.smali.dexlib2.iface.ClassDef +import com.android.tools.smali.dexlib2.iface.Method +import com.android.tools.smali.dexlib2.iface.instruction.Instruction +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +import com.android.tools.smali.dexlib2.iface.reference.FieldReference + +abstract class BaseSpoofBuildInfoPatch : BaseTransformInstructionsPatch>>() { + // The build information supported32BitAbis, supported64BitAbis, and supportedAbis are not supported for now, + // because initializing an array in transform is a bit more complex. + + protected open val board: String? = null + + protected open val bootloader: String? = null + + protected open val brand: String? = null + + protected open val cpuAbi: String? = null + + protected open val cpuAbi2: String? = null + + protected open val device: String? = null + + protected open val display: String? = null + + protected open val fingerprint: String? = null + + protected open val hardware: String? = null + + protected open val host: String? = null + + protected open val id: String? = null + + protected open val manufacturer: String? = null + + protected open val model: String? = null + + protected open val odmSku: String? = null + + protected open val product: String? = null + + protected open val radio: String? = null + + protected open val serial: String? = null + + protected open val sku: String? = null + + protected open val socManufacturer: String? = null + + protected open val socModel: String? = null + + protected open val tags: String? = null + + protected open val time: Long? = null + + protected open val type: String? = null + + protected open val user: String? = null + + + // Lazy, so that patch options above are initialized before they are accessed. + private val replacements: Map> by lazy { + buildMap { + if (board != null) put("BOARD", "const-string" to "\"$board\"") + if (bootloader != null) put("BOOTLOADER", "const-string" to "\"$bootloader\"") + if (brand != null) put("BRAND", "const-string" to "\"$brand\"") + if (cpuAbi != null) put("CPU_ABI", "const-string" to "\"$cpuAbi\"") + if (cpuAbi2 != null) put("CPU_ABI2", "const-string" to "\"$cpuAbi2\"") + if (device != null) put("DEVICE", "const-string" to "\"$device\"") + if (display != null) put("DISPLAY", "const-string" to "\"$display\"") + if (fingerprint != null) put("FINGERPRINT", "const-string" to "\"$fingerprint\"") + if (hardware != null) put("HARDWARE", "const-string" to "\"$hardware\"") + if (host != null) put("HOST", "const-string" to "\"$host\"") + if (id != null) put("ID", "const-string" to "\"$id\"") + if (manufacturer != null) put("MANUFACTURER", "const-string" to "\"$manufacturer\"") + if (model != null) put("MODEL", "const-string" to "\"$model\"") + if (odmSku != null) put("ODM_SKU", "const-string" to "\"$odmSku\"") + if (product != null) put("PRODUCT", "const-string" to "\"$product\"") + if (radio != null) put("RADIO", "const-string" to "\"$radio\"") + if (serial != null) put("SERIAL", "const-string" to "\"$serial\"") + if (sku != null) put("SKU", "const-string" to "\"$sku\"") + if (socManufacturer != null) put("SOC_MANUFACTURER", "const-string" to "\"$socManufacturer\"") + if (socModel != null) put("SOC_MODEL", "const-string" to "\"$socModel\"") + if (tags != null) put("TAGS", "const-string" to "\"$tags\"") + if (time != null) put("TIME", "const-wide" to "$time") + if (type != null) put("TYPE", "const-string" to "\"$type\"") + if (user != null) put("USER", "const-string" to "\"$user\"") + } + } + + override fun filterMap( + classDef: ClassDef, + method: Method, + instruction: Instruction, + instructionIndex: Int + ): Pair>? { + val reference = instruction.getReference() ?: return null + if (reference.definingClass != BUILD_CLASS_DESCRIPTOR) return null + + return replacements[reference.name]?.let { instructionIndex to it } + } + + override fun transform(mutableMethod: MutableMethod, entry: Pair>) { + val (index, replacement) = entry + val (opcode, operand) = replacement + val register = mutableMethod.getInstruction(index).registerA + + mutableMethod.replaceInstruction(index, "$opcode v$register, $operand") + } + + private companion object { + private const val BUILD_CLASS_DESCRIPTOR = "Landroid/os/Build;" + } +} \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/all/misc/build/SpoofBuildInfoPatch.kt b/src/main/kotlin/app/revanced/patches/all/misc/build/SpoofBuildInfoPatch.kt new file mode 100644 index 000000000..994ddd455 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/all/misc/build/SpoofBuildInfoPatch.kt @@ -0,0 +1,183 @@ +package app.revanced.patches.all.misc.build + +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patcher.patch.options.PatchOption.PatchExtensions.longPatchOption +import app.revanced.patcher.patch.options.PatchOption.PatchExtensions.stringPatchOption + +@Patch( + name = "Spoof build info", + description = "Spoof the information about the current build.", + use = false +) +@Suppress("unused") +class SpoofBuildInfoPatch : BaseSpoofBuildInfoPatch() { + override val board by stringPatchOption( + key = "board", + default = null, + title = "Board", + description = "The name of the underlying board, like \"goldfish\"." + ) + + override val bootloader by stringPatchOption( + key = "bootloader", + default = null, + title = "Bootloader", + description = "The system bootloader version number." + ) + + override val brand by stringPatchOption( + key = "brand", + default = null, + title = "Brand", + description = "The consumer-visible brand with which the product/hardware will be associated, if any." + ) + + override val cpuAbi by stringPatchOption( + key = "cpu-abi", + default = null, + title = "CPU ABI", + description = "This field was deprecated in API level 21. Use SUPPORTED_ABIS instead." + ) + + override val cpuAbi2 by stringPatchOption( + key = "cpu-abi-2", + default = null, + title = "CPU ABI 2", + description = "This field was deprecated in API level 21. Use SUPPORTED_ABIS instead." + ) + + override val device by stringPatchOption( + key = "device", + default = null, + title = "Device", + description = "The name of the industrial design." + ) + + override val display by stringPatchOption( + key = "display", + default = null, + title = "Display", + description = "A build ID string meant for displaying to the user." + ) + + override val fingerprint by stringPatchOption( + key = "fingerprint", + default = null, + title = "Fingerprint", + description = "A string that uniquely identifies this build." + ) + + override val hardware by stringPatchOption( + key = "hardware", + default = null, + title = "Hardware", + description = "The name of the hardware (from the kernel command line or /proc)." + ) + + override val host by stringPatchOption( + key = "host", + default = null, + title = "Host", + description = "The host." + ) + + override val id by stringPatchOption( + key = "id", + default = null, + title = "ID", + description = "Either a changelist number, or a label like \"M4-rc20\"." + ) + + override val manufacturer by stringPatchOption( + key = "manufacturer", + default = null, + title = "Manufacturer", + description = "The manufacturer of the product/hardware." + ) + + override val model by stringPatchOption( + key = "model", + default = null, + title = "Model", + description = "The end-user-visible name for the end product." + ) + + override val odmSku by stringPatchOption( + key = "odm-sku", + default = null, + title = "ODM SKU", + description = "The SKU of the device as set by the original design manufacturer (ODM)." + ) + + override val product by stringPatchOption( + key = "product", + default = null, + title = "Product", + description = "The name of the overall product." + ) + + override val radio by stringPatchOption( + key = "radio", + default = null, + title = "Radio", + description = "This field was deprecated in API level 15. " + + "The radio firmware version is frequently not available when this class is initialized, " + + "leading to a blank or \"unknown\" value for this string. Use getRadioVersion() instead." + ) + + override val serial by stringPatchOption( + key = "serial", + default = null, + title = "Serial", + description = "This field was deprecated in API level 26. Use getSerial() instead." + ) + + override val sku by stringPatchOption( + key = "sku", + default = null, + title = "SKU", + description = "The SKU of the hardware (from the kernel command line)." + ) + + override val socManufacturer by stringPatchOption( + key = "soc-manufacturer", + default = null, + title = "SOC Manufacturer", + description = "The manufacturer of the device's primary system-on-chip." + ) + + override val socModel by stringPatchOption( + key = "soc-model", + default = null, + title = "SOC Model", + description = "The model name of the device's primary system-on-chip." + ) + + override val tags by stringPatchOption( + key = "tags", + default = null, + title = "Tags", + description = "Comma-separated tags describing the build, like \"unsigned,debug\"." + ) + + override val time by longPatchOption( + key = "time", + default = null, + title = "Time", + description = "The time at which the build was produced, given in milliseconds since the UNIX epoch." + ) + + override val type by stringPatchOption( + key = "type", + default = null, + title = "Type", + description = "The type of build, like \"user\" or \"eng\"." + ) + + override val user by stringPatchOption( + key = "user", + default = null, + title = "User", + description = "The user." + ) +} \ No newline at end of file From 1fa4d3f4e9ba9afcf1477cc6a597a559144a2033 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 20 Jul 2024 16:08:40 +0000 Subject: [PATCH 19/50] chore(release): 4.12.0-dev.6 [skip ci] # [4.12.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.5...v4.12.0-dev.6) (2024-07-20) ### Features * Add `Spoof build info` patch ([e7829b4](https://github.com/ReVanced/revanced-patches/commit/e7829b41e782c9feda23b9d6acf48bae277d24d9)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a692f00d1..d21a4a0e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.5...v4.12.0-dev.6) (2024-07-20) + + +### Features + +* Add `Spoof build info` patch ([e7829b4](https://github.com/ReVanced/revanced-patches/commit/e7829b41e782c9feda23b9d6acf48bae277d24d9)) + # [4.12.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.4...v4.12.0-dev.5) (2024-07-20) diff --git a/gradle.properties b/gradle.properties index 45082e922..b5d995c58 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.5 +version = 4.12.0-dev.6 From 63b6cede5fa5bcf377ced422da4e861996a41f0d Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Wed, 24 Jul 2024 20:00:35 +0200 Subject: [PATCH 20/50] fix(SoundCloud - Enable offline sync): Stop crashing by reversing order of patching instructions from last to first to retain indices --- .../patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt index b6795e4a8..08446f986 100644 --- a/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt +++ b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt @@ -73,7 +73,7 @@ object EnableOfflineSyncPatch : BytecodePatch( // The first three null checks need to be patched. getInstructions().asSequence().filter { it.opcode == Opcode.IF_EQZ - }.take(3).map { it.location.index }.forEach { nullCheckIndex -> + }.take(3).toList().map { it.location.index }.asReversed().forEach { nullCheckIndex -> val headerStringRegister = getInstruction(nullCheckIndex).registerA addInstruction(nullCheckIndex, "const-string v$headerStringRegister, \"\"") From 549731fc6fe283058a44229061421f6cb2a665e3 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 24 Jul 2024 18:03:03 +0000 Subject: [PATCH 21/50] chore(release): 4.12.0-dev.7 [skip ci] # [4.12.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.6...v4.12.0-dev.7) (2024-07-24) ### Bug Fixes * **SoundCloud - Enable offline sync:** Stop crashing by reversing order of patching instructions from last to first to retain indices ([63b6ced](https://github.com/ReVanced/revanced-patches/commit/63b6cede5fa5bcf377ced422da4e861996a41f0d)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d21a4a0e8..d1c0f55fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.6...v4.12.0-dev.7) (2024-07-24) + + +### Bug Fixes + +* **SoundCloud - Enable offline sync:** Stop crashing by reversing order of patching instructions from last to first to retain indices ([63b6ced](https://github.com/ReVanced/revanced-patches/commit/63b6cede5fa5bcf377ced422da4e861996a41f0d)) + # [4.12.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.5...v4.12.0-dev.6) (2024-07-20) diff --git a/gradle.properties b/gradle.properties index b5d995c58..87f609bec 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.6 +version = 4.12.0-dev.7 From d74c366dbf5f25c20fbfc5a0157c3c15dda82a16 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Fri, 26 Jul 2024 10:30:14 -0400 Subject: [PATCH 22/50] fix(YouTube - SponsorBlock): Correctly show minute timestamp when creating a new segment --- src/main/resources/addresources/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml index 85588efc1..f6a841e9f 100644 --- a/src/main/resources/addresources/values/strings.xml +++ b/src/main/resources/addresources/values/strings.xml @@ -872,7 +872,7 @@ This is because Crowdin requires temporarily flattening this file and removing t New SponsorBlock segment - Set %1$02d:%2$02d:%3$03d as the start or end of a new segment? + Set %s as the start or end of a new segment? start end now From 59364d235d1fdfbf2130c0e3ce8899ce913ffb37 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 26 Jul 2024 14:38:36 +0000 Subject: [PATCH 23/50] chore(release): 4.12.0-dev.8 [skip ci] # [4.12.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.7...v4.12.0-dev.8) (2024-07-26) ### Bug Fixes * **YouTube - SponsorBlock:** Correctly show minute timestamp when creating a new segment ([d74c366](https://github.com/ReVanced/revanced-patches/commit/d74c366dbf5f25c20fbfc5a0157c3c15dda82a16)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1c0f55fb..35b7fd92f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.7...v4.12.0-dev.8) (2024-07-26) + + +### Bug Fixes + +* **YouTube - SponsorBlock:** Correctly show minute timestamp when creating a new segment ([d74c366](https://github.com/ReVanced/revanced-patches/commit/d74c366dbf5f25c20fbfc5a0157c3c15dda82a16)) + # [4.12.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.6...v4.12.0-dev.7) (2024-07-24) diff --git a/gradle.properties b/gradle.properties index 87f609bec..f36a8380d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.7 +version = 4.12.0-dev.8 From 7572e31a31a05f22cebcdcc5dd6e6acd9bceaa4a Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Fri, 26 Jul 2024 10:45:24 -0400 Subject: [PATCH 24/50] chore(YouTube): Comments --- src/main/resources/addresources/values/strings.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml index f6a841e9f..1ffd5736f 100644 --- a/src/main/resources/addresources/values/strings.xml +++ b/src/main/resources/addresources/values/strings.xml @@ -870,8 +870,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Choose the segment category Category is disabled in settings. Enable category to submit. New SponsorBlock segment - Set %s as the start or end of a new segment? start end From 69c1f16f7eb0d5759a44f7f7a09b1757ce8f61dd Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sun, 28 Jul 2024 15:53:48 +0200 Subject: [PATCH 25/50] fix(YouTube - Spoof client): Fix tracking history on brand accounts (#3480) --- .../misc/fix/playback/SpoofClientPatch.kt | 35 ++++++++++++++++--- .../fingerprints/GetTrackingUriFingerprint.kt | 21 +++++++++++ .../resources/addresources/values/strings.xml | 2 +- 3 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt index de6994840..f188a0a43 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt @@ -83,6 +83,9 @@ object SpoofClientPatch : BytecodePatch( // Player speed menu item. CreatePlaybackSpeedMenuItemFingerprint, + + // Watch history. + GetTrackingUriFingerprint, ), ) { private const val INTEGRATIONS_CLASS_DESCRIPTOR = @@ -153,7 +156,7 @@ object SpoofClientPatch : BytecodePatch( .getInstructions().find { instruction -> // requestMessage.clientInfo = clientInfoBuilder.build(); instruction.opcode == Opcode.IPUT_OBJECT && - instruction.getReference()?.type == CLIENT_INFO_CLASS_DESCRIPTOR + instruction.getReference()?.type == CLIENT_INFO_CLASS_DESCRIPTOR }?.getReference() ?: throw PatchException("Could not find clientInfoField") // Client info object's client type field. @@ -164,13 +167,15 @@ object SpoofClientPatch : BytecodePatch( // Client info object's client version field. val clientInfoClientVersionField = result.mutableMethod .getInstruction(result.scanResult.stringsScanResult!!.matches.first().index + 1) - .getReference() ?: throw PatchException("Could not find clientInfoClientVersionField") + .getReference() + ?: throw PatchException("Could not find clientInfoClientVersionField") Triple(clientInfoField, clientInfoClientTypeField, clientInfoClientVersionField) } val clientInfoClientModelField = CreatePlayerRequestBodyWithModelFingerprint.resultOrThrow().let { - val getClientModelIndex = CreatePlayerRequestBodyWithModelFingerprint.indexOfBuildModelInstruction(it.method) + val getClientModelIndex = + CreatePlayerRequestBodyWithModelFingerprint.indexOfBuildModelInstruction(it.method) // The next IPUT_OBJECT instruction after getting the client model is setting the client model field. val index = it.mutableMethod.indexOfFirstInstructionOrThrow(getClientModelIndex) { @@ -198,7 +203,7 @@ object SpoofClientPatch : BytecodePatch( addInstruction( checkCastIndex + 1, "invoke-static { v$requestMessageInstanceRegister }," + - " ${result.classDef.type}->$setClientInfoMethodName($clientInfoContainerClassName)V", + " ${result.classDef.type}->$setClientInfoMethodName($clientInfoContainerClassName)V", ) } @@ -291,7 +296,8 @@ object SpoofClientPatch : BytecodePatch( it.mutableMethod.apply { // Find the conditional check if the playback speed menu item is not created. - val shouldCreateMenuIndex = indexOfFirstInstructionOrThrow(scanResult.endIndex) { opcode == Opcode.IF_EQZ } + val shouldCreateMenuIndex = + indexOfFirstInstructionOrThrow(scanResult.endIndex) { opcode == Opcode.IF_EQZ } val shouldCreateMenuRegister = getInstruction(shouldCreateMenuIndex).registerA addInstructions( @@ -305,5 +311,24 @@ object SpoofClientPatch : BytecodePatch( } // endregion + + // Fix watch history if spoofing to iOS. + + GetTrackingUriFingerprint.resultOrThrow().let { + it.mutableMethod.apply { + val returnUrlIndex = it.scanResult.patternScanResult!!.endIndex + val urlRegister = getInstruction(returnUrlIndex).registerA + + addInstructions( + returnUrlIndex, + """ + invoke-static { v$urlRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->overrideTrackingUrl(Landroid/net/Uri;)Landroid/net/Uri; + move-result-object v$urlRegister + """ + ) + } + } + + // endregion } } diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt new file mode 100644 index 000000000..328fb026f --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt @@ -0,0 +1,21 @@ +package app.revanced.patches.youtube.misc.fix.playback.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +internal object GetTrackingUriFingerprint : MethodFingerprint( + returnType = "Landroid/net/Uri;", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = emptyList(), + opcodes = listOf( + Opcode.IGET_OBJECT, + Opcode.INVOKE_STATIC, + Opcode.MOVE_RESULT_OBJECT, + Opcode.RETURN_OBJECT + ), + customFingerprint = { _, classDef -> + classDef.endsWith("TrackingUrlModel;") + } +) diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml index 1ffd5736f..fc2924bdc 100644 --- a/src/main/resources/addresources/values/strings.xml +++ b/src/main/resources/addresources/values/strings.xml @@ -1132,7 +1132,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Client is not spoofed\n\nVideo playback may not work Turning off this setting may cause video playback issues. Spoof client to iOS - Client is currently spoofed to iOS\n\nSide effects include:\n• No HDR video\n• Watch history may not work\n• Higher video qualities may be missing\n• Live streams cannot play as audio only\n• Live streams not available on Android 8.0 + Client is currently spoofed to iOS\n\nSide effects include:\n• No HDR video\n• Higher video qualities may be missing\n• Live streams cannot play as audio only\n• Live streams not available on Android 8.0 Client is currently spoofed to Android VR\n\nSide effects include:\n• No HDR video\n• Kids videos do not playback\n• Paused videos can randomly resume\n• Low quality Shorts seekbar thumbnails\n• Download action button is always hidden\n• End screen cards are always hidden Spoof client thumbnails not available (API timed out) Spoof client thumbnails temporarily not available: %s From cf9f49b4222f12927aa789630f31c85c48c90451 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 28 Jul 2024 13:56:03 +0000 Subject: [PATCH 26/50] chore(release): 4.12.0-dev.9 [skip ci] # [4.12.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.8...v4.12.0-dev.9) (2024-07-28) ### Bug Fixes * **YouTube - Spoof client:** Fix tracking history on brand accounts ([#3480](https://github.com/ReVanced/revanced-patches/issues/3480)) ([69c1f16](https://github.com/ReVanced/revanced-patches/commit/69c1f16f7eb0d5759a44f7f7a09b1757ce8f61dd)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35b7fd92f..88d0796d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.8...v4.12.0-dev.9) (2024-07-28) + + +### Bug Fixes + +* **YouTube - Spoof client:** Fix tracking history on brand accounts ([#3480](https://github.com/ReVanced/revanced-patches/issues/3480)) ([69c1f16](https://github.com/ReVanced/revanced-patches/commit/69c1f16f7eb0d5759a44f7f7a09b1757ce8f61dd)) + # [4.12.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.7...v4.12.0-dev.8) (2024-07-26) diff --git a/gradle.properties b/gradle.properties index f36a8380d..2662866e4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.8 +version = 4.12.0-dev.9 From 0e6ae5fee752a76604cf9b95f9a76c0cbe5f7dae Mon Sep 17 00:00:00 2001 From: Zain Arbani Date: Sun, 28 Jul 2024 21:50:30 +0700 Subject: [PATCH 27/50] fix(YouTube - Client Spoof): Restore missing high qualities by spoofing the iOS client user agent (#3468) Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Co-authored-by: oSumAtrIX --- .../misc/fix/playback/SpoofClientPatch.kt | 51 +++++++++++++++++++ .../fingerprints/BuildRequestFingerprint.kt | 15 ++++++ ...equestBodyWithVersionReleaseFingerprint.kt | 31 +++++++++++ .../resources/addresources/values/strings.xml | 4 +- 4 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/BuildRequestFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt index f188a0a43..4a9a1724c 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt @@ -5,6 +5,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.extensions.InstructionExtensions.getInstructions +import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction import app.revanced.patcher.extensions.or import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchException @@ -77,6 +78,7 @@ object SpoofClientPatch : BytecodePatch( SetPlayerRequestClientTypeFingerprint, CreatePlayerRequestBodyFingerprint, CreatePlayerRequestBodyWithModelFingerprint, + CreatePlayerRequestBodyWithVersionReleaseFingerprint, // Player gesture config. PlayerGestureConfigSyntheticFingerprint, @@ -84,6 +86,9 @@ object SpoofClientPatch : BytecodePatch( // Player speed menu item. CreatePlaybackSpeedMenuItemFingerprint, + // Video qualities missing. + BuildRequestFingerprint, + // Watch history. GetTrackingUriFingerprint, ), @@ -92,6 +97,10 @@ object SpoofClientPatch : BytecodePatch( "Lapp/revanced/integrations/youtube/patches/spoof/SpoofClientPatch;" private const val CLIENT_INFO_CLASS_DESCRIPTOR = "Lcom/google/protos/youtube/api/innertube/InnertubeContext\$ClientInfo;" + private const val REQUEST_CLASS_DESCRIPTOR = + "Lorg/chromium/net/ExperimentalUrlRequest;" + private const val REQUEST_BUILDER_CLASS_DESCRIPTOR = + "Lorg/chromium/net/ExperimentalUrlRequest\$Builder;" override fun execute(context: BytecodeContext) { AddResourcesPatch(this::class) @@ -186,6 +195,19 @@ object SpoofClientPatch : BytecodePatch( ?: throw PatchException("Could not find clientInfoClientModelField") } + val clientInfoOsVersionField = CreatePlayerRequestBodyWithVersionReleaseFingerprint.resultOrThrow().let { + val getOsVersionIndex = + CreatePlayerRequestBodyWithVersionReleaseFingerprint.indexOfBuildVersionReleaseInstruction(it.method) + + // The next IPUT_OBJECT instruction after getting the client os version is setting the client os version field. + val index = it.mutableMethod.indexOfFirstInstructionOrThrow(getOsVersionIndex) { + opcode == Opcode.IPUT_OBJECT + } + + it.mutableMethod.getInstruction(index).getReference() + ?: throw PatchException("Could not find clientInfoOsVersionField") + } + // endregion // region Spoof client type for /player requests. @@ -245,6 +267,12 @@ object SpoofClientPatch : BytecodePatch( invoke-static { v1 }, $INTEGRATIONS_CLASS_DESCRIPTOR->getClientVersion(Ljava/lang/String;)Ljava/lang/String; move-result-object v1 iput-object v1, v0, $clientInfoClientVersionField + + # Set client os version to the spoofed value. + iget-object v1, v0, $clientInfoOsVersionField + invoke-static { v1 }, $INTEGRATIONS_CLASS_DESCRIPTOR->getOsVersion(Ljava/lang/String;)Ljava/lang/String; + move-result-object v1 + iput-object v1, v0, $clientInfoOsVersionField :disabled return-void @@ -330,5 +358,28 @@ object SpoofClientPatch : BytecodePatch( } // endregion + + // region Fix video qualities missing, if spoofing to iOS by overriding the user agent. + + BuildRequestFingerprint.resultOrThrow().let { result -> + result.mutableMethod.apply { + val buildRequestIndex = getInstructions().lastIndex - 2 + val requestBuilderRegister = getInstruction(buildRequestIndex).registerC + + val newRequestBuilderIndex = result.scanResult.patternScanResult!!.endIndex + val urlRegister = getInstruction(newRequestBuilderIndex).registerD + + // Replace "requestBuilder.build(): Request" with "overrideUserAgent(requestBuilder, url): Request". + replaceInstruction( + buildRequestIndex, + "invoke-static { v$requestBuilderRegister, v$urlRegister }, " + + "$INTEGRATIONS_CLASS_DESCRIPTOR->" + + "overrideUserAgent(${REQUEST_BUILDER_CLASS_DESCRIPTOR}Ljava/lang/String;)" + + REQUEST_CLASS_DESCRIPTOR + ) + } + } + + // endregion } } diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/BuildRequestFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/BuildRequestFingerprint.kt new file mode 100644 index 000000000..49c4a76ee --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/BuildRequestFingerprint.kt @@ -0,0 +1,15 @@ +package app.revanced.patches.youtube.misc.fix.playback.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +internal object BuildRequestFingerprint : MethodFingerprint( + accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, + returnType = "Lorg/chromium/net/UrlRequest;", + opcodes = listOf( + Opcode.INVOKE_DIRECT, + Opcode.INVOKE_VIRTUAL + ) +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt new file mode 100644 index 000000000..1fba488be --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt @@ -0,0 +1,31 @@ +package app.revanced.patches.youtube.misc.fix.playback.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import app.revanced.patches.youtube.misc.fix.playback.fingerprints.CreatePlayerRequestBodyWithVersionReleaseFingerprint.indexOfBuildVersionReleaseInstruction +import app.revanced.util.containsWideLiteralInstructionValue +import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstruction +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.iface.Method +import com.android.tools.smali.dexlib2.iface.reference.FieldReference + +internal object CreatePlayerRequestBodyWithVersionReleaseFingerprint : MethodFingerprint( + returnType = "L", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = listOf(), + customFingerprint = { methodDef, _ -> + methodDef.containsWideLiteralInstructionValue(1073741824) && + indexOfBuildVersionReleaseInstruction(methodDef) >= 0 + }, +) { + fun indexOfBuildVersionReleaseInstruction(methodDef: Method) = + methodDef.indexOfFirstInstruction { + val reference = getReference() + reference?.definingClass == "Landroid/os/Build\$VERSION;" && + reference.name == "RELEASE" && + reference.type == "Ljava/lang/String;" + } +} + + diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml index fc2924bdc..7f5ab9d0d 100644 --- a/src/main/resources/addresources/values/strings.xml +++ b/src/main/resources/addresources/values/strings.xml @@ -1132,8 +1132,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Client is not spoofed\n\nVideo playback may not work Turning off this setting may cause video playback issues. Spoof client to iOS - Client is currently spoofed to iOS\n\nSide effects include:\n• No HDR video\n• Higher video qualities may be missing\n• Live streams cannot play as audio only\n• Live streams not available on Android 8.0 - Client is currently spoofed to Android VR\n\nSide effects include:\n• No HDR video\n• Kids videos do not playback\n• Paused videos can randomly resume\n• Low quality Shorts seekbar thumbnails\n• Download action button is always hidden\n• End screen cards are always hidden + Client is currently spoofed to iOS\n\nSide effects include:\n• No HDR video\n• Higher video qualities may be missing\n• Live streams cannot play as audio only + Client is currently spoofed to Android VR\n\nSide effects include:\n• No HDR video\n• Kids videos do not playback\n• Paused videos can randomly resume\n• Low quality Shorts seekbar thumbnails\n• Download action button is hidden\n• End screen cards are hidden Spoof client thumbnails not available (API timed out) Spoof client thumbnails temporarily not available: %s From 328ce031b596157eec834a00ac7447007464a1e6 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 28 Jul 2024 14:52:33 +0000 Subject: [PATCH 28/50] chore(release): 4.12.0-dev.10 [skip ci] # [4.12.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.9...v4.12.0-dev.10) (2024-07-28) ### Bug Fixes * **YouTube - Client Spoof:** Restore missing high qualities by spoofing the iOS client user agent ([#3468](https://github.com/ReVanced/revanced-patches/issues/3468)) ([0e6ae5f](https://github.com/ReVanced/revanced-patches/commit/0e6ae5fee752a76604cf9b95f9a76c0cbe5f7dae)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88d0796d4..a720610fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.9...v4.12.0-dev.10) (2024-07-28) + + +### Bug Fixes + +* **YouTube - Client Spoof:** Restore missing high qualities by spoofing the iOS client user agent ([#3468](https://github.com/ReVanced/revanced-patches/issues/3468)) ([0e6ae5f](https://github.com/ReVanced/revanced-patches/commit/0e6ae5fee752a76604cf9b95f9a76c0cbe5f7dae)) + # [4.12.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.8...v4.12.0-dev.9) (2024-07-28) diff --git a/gradle.properties b/gradle.properties index 2662866e4..4a2aef756 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.9 +version = 4.12.0-dev.10 From 094ae59fc92663fff6c5d6f5cbece41822a326f9 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sun, 28 Jul 2024 14:16:19 -0400 Subject: [PATCH 29/50] fix(YouTube - Bypass image region restrictions): Move setting to `Misc` menu The setting is closer in nature to the other settings in Misc than the settings in the General menu. --- .../youtube/layout/thumbnails/BypassImageRegionRestrictions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt index 132f5c96a..faf77ddab 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt @@ -60,7 +60,7 @@ object BypassImageRegionRestrictions : BytecodePatch(emptySet()) { override fun execute(context: BytecodeContext) { AddResourcesPatch(this::class) - SettingsPatch.PreferenceScreen.GENERAL_LAYOUT.addPreferences( + SettingsPatch.PreferenceScreen.MISC.addPreferences( SwitchPreference("revanced_bypass_image_region_restrictions") ) From d8b7b7edf81bcaa2e953ecd03d9a26f95ae9211b Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 28 Jul 2024 18:18:31 +0000 Subject: [PATCH 30/50] chore(release): 4.12.0-dev.11 [skip ci] # [4.12.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.10...v4.12.0-dev.11) (2024-07-28) ### Bug Fixes * **YouTube - Bypass image region restrictions:** Move setting to `Misc` menu ([094ae59](https://github.com/ReVanced/revanced-patches/commit/094ae59fc92663fff6c5d6f5cbece41822a326f9)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a720610fb..7c2c26ab5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.10...v4.12.0-dev.11) (2024-07-28) + + +### Bug Fixes + +* **YouTube - Bypass image region restrictions:** Move setting to `Misc` menu ([094ae59](https://github.com/ReVanced/revanced-patches/commit/094ae59fc92663fff6c5d6f5cbece41822a326f9)) + # [4.12.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.9...v4.12.0-dev.10) (2024-07-28) diff --git a/gradle.properties b/gradle.properties index 4a2aef756..0d9793657 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.10 +version = 4.12.0-dev.11 From 60492aea7863e07d8bf1af9380ae9295ca161f3c Mon Sep 17 00:00:00 2001 From: Cedric Date: Sun, 28 Jul 2024 15:56:12 -0600 Subject: [PATCH 31/50] feat(SwissID): Add `Remove Google Play Integrity Integrity check` patch (#3478) Co-authored-by: oSumAtrIX --- api/revanced-patches.api | 6 +++ .../RemoveGooglePlayIntegrityCheck.kt | 37 +++++++++++++++++++ .../fingerprints/CheckIntegrityFingerprint.kt | 11 ++++++ 3 files changed, 54 insertions(+) create mode 100644 src/main/kotlin/app/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck.kt create mode 100644 src/main/kotlin/app/revanced/patches/swissid/integritycheck/fingerprints/CheckIntegrityFingerprint.kt diff --git a/api/revanced-patches.api b/api/revanced-patches.api index cba63bcab..e8eba4ec4 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -1178,6 +1178,12 @@ public final class app/revanced/patches/strava/upselling/DisableSubscriptionSugg public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } +public final class app/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck : app/revanced/patcher/patch/BytecodePatch { + public static final field INSTANCE Lapp/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck; + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V +} + public final class app/revanced/patches/ticktick/misc/themeunlock/UnlockProPatch : app/revanced/patcher/patch/BytecodePatch { public static final field INSTANCE Lapp/revanced/patches/ticktick/misc/themeunlock/UnlockProPatch; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V diff --git a/src/main/kotlin/app/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck.kt b/src/main/kotlin/app/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck.kt new file mode 100644 index 000000000..e65105cc3 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck.kt @@ -0,0 +1,37 @@ +package app.revanced.patches.swissid.integritycheck + +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotation.CompatiblePackage +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patches.swissid.integritycheck.fingerprints.CheckIntegrityFingerprint +import app.revanced.util.resultOrThrow + +@Patch( + name = "Remove Google Play Integrity Integrity check", + description = "Removes the Google Play Integrity check. With this it's possible to use SwissID on custom ROMS." + + "If the device is rooted, root permissions must be hidden from the app.", + compatiblePackages = [CompatiblePackage("com.swisssign.swissid.mobile")], +) +@Suppress("unused") +object RemoveGooglePlayIntegrityCheck : BytecodePatch( + setOf(CheckIntegrityFingerprint), +) { + private const val RESULT_METHOD_REFERENCE = " Lcom/swisssign/deviceintegrity/" + + "DeviceintegrityPlugin\$onMethodCall\$1;->\$result:" + + "Lio/flutter/plugin/common/MethodChannel\$Result;" + private const val SUCCESS_METHOD_REFERENCE = + "Lio/flutter/plugin/common/MethodChannel\$Result;->success(Ljava/lang/Object;)V" + + override fun execute(context: BytecodeContext) = + CheckIntegrityFingerprint.resultOrThrow().mutableMethod.addInstructions( + 0, + """ + iget-object p1, p0, $RESULT_METHOD_REFERENCE + const-string v0, "VALID" + invoke-interface {p1, v0}, $SUCCESS_METHOD_REFERENCE + return-void + """, + ) +} diff --git a/src/main/kotlin/app/revanced/patches/swissid/integritycheck/fingerprints/CheckIntegrityFingerprint.kt b/src/main/kotlin/app/revanced/patches/swissid/integritycheck/fingerprints/CheckIntegrityFingerprint.kt new file mode 100644 index 000000000..ad1fe4fe6 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/swissid/integritycheck/fingerprints/CheckIntegrityFingerprint.kt @@ -0,0 +1,11 @@ +package app.revanced.patches.swissid.integritycheck.fingerprints + +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +internal object CheckIntegrityFingerprint : MethodFingerprint( + returnType = "V", + parameters = listOf("Lcom/swisssign/deviceintegrity/model/DeviceIntegrityResult;"), + strings = listOf("it", "result") +) From 217d209844fde68b5bb87e6f598bc326236bd2b1 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 28 Jul 2024 21:58:12 +0000 Subject: [PATCH 32/50] chore(release): 4.12.0-dev.12 [skip ci] # [4.12.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.11...v4.12.0-dev.12) (2024-07-28) ### Features * **SwissID:** Add `Remove Google Play Integrity Integrity check` patch ([#3478](https://github.com/ReVanced/revanced-patches/issues/3478)) ([60492ae](https://github.com/ReVanced/revanced-patches/commit/60492aea7863e07d8bf1af9380ae9295ca161f3c)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c2c26ab5..a54076765 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.11...v4.12.0-dev.12) (2024-07-28) + + +### Features + +* **SwissID:** Add `Remove Google Play Integrity Integrity check` patch ([#3478](https://github.com/ReVanced/revanced-patches/issues/3478)) ([60492ae](https://github.com/ReVanced/revanced-patches/commit/60492aea7863e07d8bf1af9380ae9295ca161f3c)) + # [4.12.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.10...v4.12.0-dev.11) (2024-07-28) diff --git a/gradle.properties b/gradle.properties index 0d9793657..761e41b62 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.11 +version = 4.12.0-dev.12 From fd220337f4a4d9ce24667293edc7ffb553ad8926 Mon Sep 17 00:00:00 2001 From: ReVanced Bot Date: Mon, 29 Jul 2024 07:04:13 +0200 Subject: [PATCH 33/50] chore: Sync translations (#3482) --- .../addresources/values-af-rZA/strings.xml | 2 - .../addresources/values-am-rET/strings.xml | 2 - .../addresources/values-ar-rSA/strings.xml | 8 +- .../addresources/values-as-rIN/strings.xml | 2 - .../addresources/values-az-rAZ/strings.xml | 8 +- .../addresources/values-be-rBY/strings.xml | 5 - .../addresources/values-bg-rBG/strings.xml | 2 - .../addresources/values-bn-rBD/strings.xml | 5 - .../addresources/values-bs-rBA/strings.xml | 2 - .../addresources/values-ca-rES/strings.xml | 2 - .../addresources/values-cs-rCZ/strings.xml | 8 +- .../addresources/values-da-rDK/strings.xml | 8 +- .../addresources/values-de-rDE/strings.xml | 8 +- .../addresources/values-el-rGR/strings.xml | 6 +- .../addresources/values-es-rES/strings.xml | 10 +- .../addresources/values-et-rEE/strings.xml | 16 - .../addresources/values-eu-rES/strings.xml | 2 - .../addresources/values-fa-rIR/strings.xml | 12 - .../addresources/values-fi-rFI/strings.xml | 7 +- .../addresources/values-fil-rPH/strings.xml | 5 - .../addresources/values-fr-rFR/strings.xml | 86 +++-- .../addresources/values-gl-rES/strings.xml | 2 - .../addresources/values-gu-rIN/strings.xml | 2 - .../addresources/values-hi-rIN/strings.xml | 2 - .../addresources/values-hr-rHR/strings.xml | 15 - .../addresources/values-hu-rHU/strings.xml | 11 +- .../addresources/values-hy-rAM/strings.xml | 7 - .../addresources/values-in-rID/strings.xml | 80 ++++- .../addresources/values-is-rIS/strings.xml | 13 - .../addresources/values-it-rIT/strings.xml | 8 +- .../addresources/values-iw-rIL/strings.xml | 2 - .../addresources/values-ja-rJP/strings.xml | 12 +- .../addresources/values-ka-rGE/strings.xml | 2 - .../addresources/values-kk-rKZ/strings.xml | 11 - .../addresources/values-km-rKH/strings.xml | 9 - .../addresources/values-kn-rIN/strings.xml | 2 - .../addresources/values-ko-rKR/strings.xml | 30 +- .../addresources/values-ky-rKG/strings.xml | 2 - .../addresources/values-lo-rLA/strings.xml | 2 - .../addresources/values-lt-rLT/strings.xml | 13 - .../addresources/values-lv-rLV/strings.xml | 11 - .../addresources/values-mk-rMK/strings.xml | 2 - .../addresources/values-ml-rIN/strings.xml | 2 - .../addresources/values-mn-rMN/strings.xml | 2 - .../addresources/values-mr-rIN/strings.xml | 2 - .../addresources/values-ms-rMY/strings.xml | 10 - .../addresources/values-my-rMM/strings.xml | 2 - .../addresources/values-nb-rNO/strings.xml | 11 +- .../addresources/values-ne-rIN/strings.xml | 2 - .../addresources/values-nl-rNL/strings.xml | 8 +- .../addresources/values-or-rIN/strings.xml | 11 - .../addresources/values-pa-rIN/strings.xml | 2 - .../addresources/values-pl-rPL/strings.xml | 37 +- .../addresources/values-pt-rBR/strings.xml | 6 +- .../addresources/values-pt-rPT/strings.xml | 8 +- .../addresources/values-ro-rRO/strings.xml | 10 +- .../addresources/values-ru-rRU/strings.xml | 60 ++-- .../addresources/values-si-rLK/strings.xml | 2 - .../addresources/values-sk-rSK/strings.xml | 5 - .../addresources/values-sl-rSI/strings.xml | 2 - .../addresources/values-sq-rAL/strings.xml | 12 - .../addresources/values-sr-rSP/strings.xml | 318 +++++++++--------- .../addresources/values-sv-rSE/strings.xml | 8 +- .../addresources/values-sw-rKE/strings.xml | 2 - .../addresources/values-ta-rIN/strings.xml | 2 - .../addresources/values-te-rIN/strings.xml | 8 - .../addresources/values-th-rTH/strings.xml | 3 - .../addresources/values-tl-rPH/strings.xml | 2 - .../addresources/values-tr-rTR/strings.xml | 8 +- .../addresources/values-uk-rUA/strings.xml | 8 +- .../addresources/values-ur-rIN/strings.xml | 2 - .../addresources/values-uz-rUZ/strings.xml | 10 - .../addresources/values-vi-rVN/strings.xml | 15 +- .../addresources/values-zh-rCN/strings.xml | 6 +- .../addresources/values-zh-rHK/strings.xml | 2 - .../addresources/values-zh-rTW/strings.xml | 8 +- .../addresources/values-zu-rZA/strings.xml | 2 - 77 files changed, 411 insertions(+), 631 deletions(-) diff --git a/src/main/resources/addresources/values-af-rZA/strings.xml b/src/main/resources/addresources/values-af-rZA/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-af-rZA/strings.xml +++ b/src/main/resources/addresources/values-af-rZA/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-am-rET/strings.xml b/src/main/resources/addresources/values-am-rET/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-am-rET/strings.xml +++ b/src/main/resources/addresources/values-am-rET/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-ar-rSA/strings.xml b/src/main/resources/addresources/values-ar-rSA/strings.xml index 215433e02..c6ccfa3f4 100644 --- a/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -864,9 +864,7 @@ This is because Crowdin requires temporarily flattening this file and removing t اختيار فئة المقطع الفئة معطلة في الإعدادات. تمكين الفئة للإرسال. مقطع مانِع رُعَاة جديد - - تعيين %1$02d:%2$02d:%3$03d كبداية أم نهاية لمقطع جديد؟ + تعيين %s كبداية أو نهاية لمقطع جديد؟ البداية النهاية الآن @@ -1117,8 +1115,8 @@ This is because Crowdin requires temporarily flattening this file and removing t لا يتم محاكاة العميل\n\nقد لا يعمل تشغيل الفيديو إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو. Spoof Client to iOS - تتم حاليًا محاكاة العميل إلى iOS\n\nالآثار الجانبية تشمل:\n• لا يوجد فيديو HDR\n• قد لا يعمل سجل المشاهدة\n• قد تكون جودة الفيديو الأعلى مفقودة\n• لا يمكن تشغيل البث المباشر كصوت فقط\n• البث المباشر غير متوفر على Android 8.0 - تتم محاكاة العميل حاليًا إلى Android VR\n\nالآثار الجانبية تشمل:\n• لا يوجد فيديو HDR\n• فيديوهات الأطفال لا يتم تشغيلهم\n• مقاطع الفيديو المتوقفة يمكن أن تستأنف عشوائيا\n• جودة منخفضة لمصغرات شريط التقدم\n• زر التنزيل مخفي بشكل دائم\n• بطاقات نهاية الشاشة مخفية بشكل دائم + العميل مرسل حالياً إلى iOS\n\nالآثار الجانبية تشمل:\n• لا يوجد HDR فيديو\n• قد تكون جودة فيديو أعلى مفقودة\n• لا يمكن تشغيل البث المباشر للصوت فقط + العميل معطوب حالياً إلى أندرويد VR\n\nالآثار الجانبية تشمل:\n• لا يوجد فيديو HDR\n• فيديوهات الأطفال لا يتم تشغيلهم\n• مقاطع الفيديو الموقوفة يمكن أن تستأنف عشوائياً\n• جودة منخفضة لصور مصغرة شريط البحث\n• زر التحميل مخفي\n• بطاقات إنهاء الشاشة مخفية محاكاة مصغرات العميل غير متوفرة (انتهت مهلة API) محاكاة مصغرات العميل غير متوفرة مؤقتًا: %s diff --git a/src/main/resources/addresources/values-as-rIN/strings.xml b/src/main/resources/addresources/values-as-rIN/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-as-rIN/strings.xml +++ b/src/main/resources/addresources/values-as-rIN/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-az-rAZ/strings.xml b/src/main/resources/addresources/values-az-rAZ/strings.xml index fa292d34c..8a0bc527b 100644 --- a/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -864,9 +864,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Bölüm kateqoriyasını seçin Seçimlərdə kateqoriya qeyri-aktivdir. Göndərmək üçün kateqoriyanı aktiv et. Yeni SponsorBlock bölümü - - %1$02d:%2$02d:%3$03d yeni bölümün başlanğıcı və ya sonu olaraq tənzimlənsin? + %s, yeni bölümün başlanğıcı və ya sonu kimi təyin edilsin? başlanğıc bitiş indi @@ -1117,8 +1115,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Qəbuledici dəyişməyib\n\nVideo oynatma işləməyə bilər Bu seçimin bağlanması, video oynatma problemlərinə səbəb ola bilər. Qəbuledicini iOS olaraq saxtalaşdır - Qəbuledici hazırda iOS olaraq dəyişib\n\nYan təsirlərə daxildir:\n• HDR video yoxdur\n• Baxış tarixçəsi işləməyə bilər\n• Daha yüksək video keyfiyyətləri olmaya bilər\n• Canlı yayımlar fon səsi kimi səsləndirilməz\n• Canlı yayımlar Android 8.0-də əlçatan olmur - Qəbuledici hazırda Android VR olaraq dəyişdirilib\n\nYan təsirlərə daxildir:\n• HDR video yoxdur\n• Uşaqlar üçün videolar oynadılmır\n• Fasilə verilmiş videolar gözlənilmədən davam edə bilər\n• Aşağı keyfiyyətli Shorts axtarma çubuğu miniatürləri\n• \"Yüklə\" fəaliyyət düyməsi həmişə gizlidir\n• Bitiş ekran kartları həmişə gizlidir + Qəbuledici hazırda iOS-a saxtalaşdırılıb\n\nYan təsirlərə daxildir:\n• HDR video yoxdur\n• Daha yüksək video keyfiyyətlər olmaya bilər\n• Canlı yayımlar yalnız səs kimi oynadıla bilməz + Qəbuledici hazırda Android VR\'ə saxtalaşdırılıb \n\nYan təsirlərə daxildir:\n• HDR video yoxdur\n• Uşaq videoları oynadılmır\n• Fasilə verilmiş videolar gözlənilmədən davam edə bilər\n• Aşağı keyfiyyətli Shorts axtarma çubuğu miniatürləri\n• \"Yüklə\" fəaliyyət düyməsi gizlidir\n• Bitiş ekran kartları gizlidir Client kiçik şəkillərini təqlid etmə əlçatmazdır (API vaxtı bitdi) Client kiçik şəkillərini təqlid etmə müvəqqəti əlçatmazdır: %s diff --git a/src/main/resources/addresources/values-be-rBY/strings.xml b/src/main/resources/addresources/values-be-rBY/strings.xml index 7c52c8434..c0714f9e2 100644 --- a/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/src/main/resources/addresources/values-be-rBY/strings.xml @@ -864,9 +864,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Выберыце катэгорыю сегмента Катэгорыя адключана ў наладах. Уключыце катэгорыю для адпраўкі. Новы сегмент SponsorBlock - - Усталяваць %1$02d:%2$02d:%3$03d у якасці пачатку або канца новага сегмента? пачаць канец зараз @@ -1114,8 +1111,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Кліент не падроблены\n\nПрайграванне відэа можа не працаваць Адключэнне гэтай налады можа выклікаць праблемы з прайграваннем відэа. Падробка кліента для iOS - Кліент зараз падроблены на iOS\n\nПабочныя эфекты ўключаюць:\n• Няма HDR-відэа\n• Гісторыя праглядаў можа не працаваць\n• Можа адсутнічаць больш высокая якасць відэа\n• Жывыя трансляцыі не могуць прайгравацца толькі як аўдыя\n• Жывая трансляцыя патокі недаступныя на Android 8.0 - Кліент у цяперашні час падроблены для Android VR\n\nПабочныя эфекты ўключаюць:\n• Няма HDR-відэа\n• Дзіцячыя відэа не прайграваюцца\n• Прыпыненыя відэа могуць аднаўляцца выпадковым чынам\n• Нізкая якасць мініяцюр на панэлі пошуку Shorts\n• Кнопка дзеяння Спампаваць заўсёды схавана\n• Карткі канцавога экрана заўсёды схаваны Мініяцюры кліента Spoof недаступныя (час чакання API скончыўся) Мініяцюры кліента Spoof часова недаступныя: %s diff --git a/src/main/resources/addresources/values-bg-rBG/strings.xml b/src/main/resources/addresources/values-bg-rBG/strings.xml index 9eb7944b5..1e0ca1b8d 100644 --- a/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -423,8 +423,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Положителен вот Отрицателен вот Промяна на категорията - начало край сега diff --git a/src/main/resources/addresources/values-bn-rBD/strings.xml b/src/main/resources/addresources/values-bn-rBD/strings.xml index 2de9de8c1..e604b63a4 100644 --- a/src/main/resources/addresources/values-bn-rBD/strings.xml +++ b/src/main/resources/addresources/values-bn-rBD/strings.xml @@ -792,9 +792,6 @@ This is because Crowdin requires temporarily flattening this file and removing t সেগমেন্টের বিভাগ নির্বাচন করুন সেটিং থেকে বিভাগ নিস্ক্রিয় করা হয়েছে। জমা দিতে বিভাগ সক্রিয় করুন। নতুন স্পন্সরব্লক সেগমেন্ট - - একটি নতুন সেগমেন্টের শুরু বা শেষ হিসাবে %1$02d:%2$02d:%3$03d সেট করবেন? শুরু শেষ এখন @@ -1043,8 +1040,6 @@ This is because Crowdin requires temporarily flattening this file and removing t ক্লায়েন্ট স্পুফ করা হয়নি\n\nভিডিও প্লেব্যাক ঠিকমতো কাজ নাও করতে পারে এই সেটিংটি বন্ধ করার ফলে ভিডিও প্লেব্যাক ত্রুটি হতে পারে। ক্লায়েন্ট iOS এ স্পুফ করুন - ক্লায়েন্ট এখন iOS এ স্পুফ করা হয়েছে\n\nপার্শ্বপ্রতিক্রিয়া রয়েছে:\n• কোন এইচিডিআর ভিডিও নেই\n• ভিডিও ইতিহাস কাজ নাও করতে পারে\n• উচ্চ ভিডিও গুণমান অনুপস্থিত থাকতে পারে\n•শুধুমাত্র অডিওতে লাইভ স্ট্রিম চলবে না\n• অ্যান্ড্রয়েট ৮ সংস্করণে লাইভ স্ট্রিম উপলভ্য নয় - ক্লায়েন্টকে বর্তমানে Android VR-এর সাথে প্রতারণা করা হয়েছে\n\nসাইড এফেক্টগুলির মধ্যে রয়েছে:\n• কোনও HDR ভিডিও নেই\n• বাচ্চাদের ভিডিও প্লেব্যাক হয় না\n• বিরতি দেওয়া ভিডিওগুলি এলোমেলোভাবে আবার শুরু হতে পারে\n• নিম্নমানের শর্টস সিকবার থাম্বনেল\n• ডাউনলোড অ্যাকশন বোতাম সবসময় লুকানো থাকে\n• শেষ স্ক্রিন কার্ড সবসময় লুকানো থাকে ক্লায়েন্ট স্পুফ থাম্বনেইল সাময়িকভাবে উপলভ্য নয় (API সময় শেষ হয়েছে) স্পুফ ক্লায়েন্ট থাম্বনেইল সাময়িকভাবে উপলভ্য নয়: %s diff --git a/src/main/resources/addresources/values-bs-rBA/strings.xml b/src/main/resources/addresources/values-bs-rBA/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-bs-rBA/strings.xml +++ b/src/main/resources/addresources/values-bs-rBA/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-ca-rES/strings.xml b/src/main/resources/addresources/values-ca-rES/strings.xml index 59d82325b..b76228916 100644 --- a/src/main/resources/addresources/values-ca-rES/strings.xml +++ b/src/main/resources/addresources/values-ca-rES/strings.xml @@ -175,8 +175,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Aparença - diff --git a/src/main/resources/addresources/values-cs-rCZ/strings.xml b/src/main/resources/addresources/values-cs-rCZ/strings.xml index ce9e934e3..4c3962b20 100644 --- a/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -867,9 +867,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Vyberte kategorii segmentu Kategorie je v nastavení zakázána. Povolte odeslat kategorii. Nový segment SponsorBlock - - Nastavit %1$02d:%2$02d:%3$03d jako začátek nebo konec nového segmentu? + Nastavit %s jako začátek nebo konec nového segmentu? Začít konec nyní @@ -1121,8 +1119,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Klient není spoofed\n\nPřehrávání videa nemusí fungovat Vypnutí tohoto nastavení může způsobit problémy při přehrávání videa. Spořič do iOS - Klient je v současné době spokojen s iOS\n\nBoční efekty zahrnují:\n• No HDR video\n• Historie sledování nemusí fungovat\n• Vyšší vlastnosti videa mohou chybět\n• Živé streamy nemohou přehrát pouze\n• Živé streamy nejsou k dispozici na Android 8.0 - Klient je v současné době spout s Androidem VR\n\nBoční efekty zahrnují:\n• No HDR video\n• Dětská videa nepřehrávají\n• Pozastavená videa mohou náhodně pokračovat\n• Nízká kvalita krátkých náhledů ve vyhledávacím panelu\n• Tlačítko stahování akce je vždy skryté\n• Karty s ukončenou obrazovkou jsou vždy skryté + Klient je v současné době spokojen s iOS\n\nBoční efekty zahrnují:\n• Žádné HDR video\n• Vyšší vlastnosti videa mohou chybět\n• Živé streamy nemohou přehrávat pouze zvuk + Klient je v současné době spout s Androidem VR\n\nBoční efekty zahrnují:\n• No HDR video\n• Dětská videa nepřehrávají\n• Pozastavená videa mohou náhodně pokračovat\n• Nízká kvalita krátkých náhledů ve vyhledávacím panelu\n• Tlačítko pro stažení akce je skryté\n• Karty s ukončenou obrazovkou jsou skryté Náhledy klientů nejsou k dispozici (vypršel časový limit API) Spouštění náhledů klientů dočasně není k dispozici: %s diff --git a/src/main/resources/addresources/values-da-rDK/strings.xml b/src/main/resources/addresources/values-da-rDK/strings.xml index 8f57943e2..8f338bbb1 100644 --- a/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/src/main/resources/addresources/values-da-rDK/strings.xml @@ -865,9 +865,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Vælg segmentkategori Kategori er deaktiveret i indstillinger. Aktivér kategori for at indsende. Nyt SponsorBlock segment - - Sæt %1$02d:%2$02d:%3$03d som start eller afslutning af et nyt segment? + Sæt %s som start eller afslutning af et nyt segment? start slut nu @@ -1118,8 +1116,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Klienten er ikke forfalsket\n\nVideoafspilning fungerer muligvis ikke At slå denne indstilling fra kan forårsage problemer med videoafspilning. Spoof klient til iOS - Klienten er i øjeblikket spoofed til iOS\n\nBivirkninger omfatter:\n• Ingen HDR-video\n• Se historie fungerer muligvis ikke\n• Højere video kvaliteter mangler muligvis\n• Live streams kan ikke afspilles som lyd kun\n• Live streams ikke tilgængelig på Android 8.0 - Klienten er i øjeblikket spoofed til Android VR\n\nBivirkninger omfatter:\n• Ingen HDR-video\n• Kids videoer ikke afspilning\n• Pause videoer kan tilfældigt genoptage\n• Lav kvalitet Shorts søgelinje miniaturer\n• Download handling knap er altid skjult\n• End screen cards are always hidden + Klienten er i øjeblikket spoofed til iOS\n\nBivirkninger omfatter:\n• Ingen HDR-video\n• Højere videokvaliteter mangler muligvis\n• Live streams kan ikke kun afspilles som lyd + Klienten er i øjeblikket spoofed til Android VR\n\nBivirkninger omfatter:\n• Ingen HDR-video\n• Kids videoer ikke afspilning\n• Pause videoer kan tilfældigt genoptage\n• Lav kvalitet Shorts søgelinje miniaturer\n• Download handling knap er skjult\n• End screen cards are hidden Spoof klient miniaturer ikke tilgængelige (API timemed out) Spoof klient miniaturer midlertidigt ikke tilgængelige: %s diff --git a/src/main/resources/addresources/values-de-rDE/strings.xml b/src/main/resources/addresources/values-de-rDE/strings.xml index 065278488..28fc51edb 100644 --- a/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/src/main/resources/addresources/values-de-rDE/strings.xml @@ -865,9 +865,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Wählen sie die Segmentkategorie Kategorie ist in den Einstellungen deaktiviert. Aktivieren Sie die Kategorie zum Abschicken. Neues SponsorBlock Segment - - %1$02d:%2$02d:%3$03d als Start oder Ende eines neuen Segments festlegen? + %s als Start oder Ende eines neuen Segments festlegen? Start Ende Jetzt @@ -1119,8 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Client ist nicht gefälscht\n\nVideo-Wiedergabe funktioniert möglicherweise nicht Das Deaktivieren dieser Einstellung kann zu Videowiedergabeproblemen führen. Spoof-Client zu iOS - Der Client ist derzeit auf iOS\n\nseitliche Effekte gefälscht:\n• Kein HDR-Video\n• Verlauf kann nicht funktionieren\n• Höhere Video-Qualitäten fehlen möglicherweise\n• Live-Streams können nicht nur als Audio abspielen\n• Live-Streams auf Android 8.0 nicht verfügbar - Der Client ist derzeit auf Android VR\n\nSeiteneffekte gefälscht:\n• Kein HDR Video\n• Kindervideos spielen nicht\n• Pausierte Videos können zufällig wieder aufgenommen werden\n• Niedrige Shorts Suchleisten-Thumbnails\n• Download-Button ist immer versteckt\n• Endbildschirm-Karten werden immer versteckt + Der Client ist derzeit zu iOS\n\nSeiteneffekten gefälscht:\n• Kein HDR-Video\n• Höhere Video-Qualitäten fehlen möglicherweise\n• Live-Streams können nicht nur als Audio abspielen + Der Client ist derzeit auf Android VR\n\nSeiteneffekte gefälscht:\n• Kein HDR Video\n• Kindervideos spielen nicht\n• Pausierte Videos können zufällig wieder aufgenommen werden\n• Niedrige Shorts Suchleisten-Thumbnails\n• Download-Button ist ausgeblendet\n• Endbildschirm-Karten werden versteckt Spoof-Thumbnails nicht verfügbar (API-Zeitüberschreitung) Spoof-Client-Thumbnails vorübergehend nicht verfügbar: %s diff --git a/src/main/resources/addresources/values-el-rGR/strings.xml b/src/main/resources/addresources/values-el-rGR/strings.xml index b8af20d04..90613508c 100644 --- a/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/src/main/resources/addresources/values-el-rGR/strings.xml @@ -865,9 +865,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Επιλέξτε την κατηγορία του τμήματος Η κατηγορία είναι απενεργοποιημένη στις ρυθμίσεις. Ενεργοποιήστε την κατηγορία για υποβολή. Νέο τμήμα SponsorBlock - - Ορισμός %1$02d:%2$02d:%3$03d ως αρχή ή τέλος ενός νέου τμήματος; + Ορισμός %s ως αρχή ή τέλος ενός νέου τμήματος; αρχή τέλος τώρα @@ -1119,7 +1117,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Το πρόγραμμα πελάτη δεν παραποιείται\n\nΗ αναπαραγωγή βίντεο ενδέχεται να μη λειτουργεί Η απενεργοποίηση αυτής της ρύθμισης ενδέχεται να προκαλέσει προβλήματα αναπαραγωγής βίντεο. Παραποίηση σε iOS - Ο πελάτης αυτή τη στιγμή παραποιείται ως iOS\n\nΟι παρενέργειες περιλαμβάνουν:\n• Δεν υπάρχει η ποιότητα HDR στα βίντεο\n• Το ιστορικό παρακολούθησης μπορεί να μην λειτουργεί\n• Μπορεί να λείπουν επιλογές για υψηλές αναλύσεις βίντεο\n• Δε γίνεται στις ζωντανές ροές η αναπαραγωγή μόνο του ήχου\n• Οι ζωντανές ροές δεν είναι διαθέσιμες σε παλαιότερες συσκευές με Android 8.0 + Ο πελάτης αυτή τη στιγμή παραποιείται ως iOS\n\nΟι παρενέργειες περιλαμβάνουν:\n• Δεν υπάρχει η ποιότητα HDR στα βίντεο\n• Μπορεί να λείπουν επιλογές για υψηλές αναλύσεις βίντεο\n• Δε γίνεται στις ζωντανές ροές η αναπαραγωγή μόνο του ήχου Ο πελάτης αυτή τη στιγμή παραποιείται ως Android VR\n\nΟι παρενέργειες περιλαμβάνουν:\n• Δεν υπάρχει η ποιότητα HDR στα βίντεο\n• Δεν λειτουργεί η αναπαραγωγή στα βίντεο για παιδιά\n• Βίντεο που έχετε θέσει σε παύση μπορεί να συνεχίσουν να παίζουν τυχαία\n• Χαμηλή ποιότητα μικρογραφιών μπάρας αναζήτησης στα shorts\n• Το κουμπί λήψης είναι πάντα κρυμμένο\n• Οι κάρτες τελικής οθόνης είναι πάντα κρυμμένες Μικρογραφίες προεπισκόπησης μη διαθέσιμες (καθυστέρηση API) Μικρογραφίες προεπισκόπησης προσωρινά μη διαθέσιμες: %s diff --git a/src/main/resources/addresources/values-es-rES/strings.xml b/src/main/resources/addresources/values-es-rES/strings.xml index ee8e7ba5b..914d3b635 100644 --- a/src/main/resources/addresources/values-es-rES/strings.xml +++ b/src/main/resources/addresources/values-es-rES/strings.xml @@ -93,7 +93,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Desactivar los errores toasts oculta todas las notificaciones de error ReVanced\n\nNo se le notificará de ningún evento inesperado. - Desactivar como / botón de suscripción brillo + Desactivar el brillo del botón de like / suscripción El botón de \"Me gusta\" y \"suscribir\" no brillará cuando se mencione El botón de \"Me gusta\" y \"Suscribir\" brillará cuando se mencione Ocultar separador gris @@ -865,9 +865,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Elige la categoría del segmento Categoría está desactivada en la configuración. Habilitar la categoría para enviar. Nuevo segmento de SponsorBlock - - ¿Establecer %1$02d:%2$02d:%3$03d como inicio o final de un nuevo segmento? + ¿Establecer %s como inicio o fin de un nuevo segmento? comienzo final ahora @@ -1119,8 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t El cliente no está falsificado\n\nEs posible que la reproducción de vídeo no funcione Desactivar esta configuración puede causar problemas de reproducción de vídeo. Spoof cliente a iOS - El cliente está actualmente falseado a iOS\n\nLos efectos laterales incluyen:\n• No hay vídeo HDR\n• Es posible que el historial del reloj no funcione\n• Puede que falten más calidad de vídeo\n• Los streams en vivo no pueden reproducirse como audio solo\n• streams en vivo no disponibles en Android 8.0 - El cliente está actualmente falseado a Android VR\n\nLos efectos laterales incluyen:\n• No hay vídeo HDR\n• Los vídeos para niños no se reproducirán\n• Los vídeos en pausa pueden reanudarse aleatoriamente\n• Las miniaturas de barras cortas de baja calidad\n• El botón de descarga siempre está oculto\n• Las tarjetas de la pantalla final siempre están ocultas + El cliente está actualmente falseado a iOS\n\nLos efectos laterales incluyen:\n• No hay vídeo HDR\n• Pueden faltar más calidades de vídeo\n• Las transmisiones en vivo no pueden reproducirse como audio solo + El cliente está actualmente falseado a Android VR\n\nLos efectos laterales incluyen:\n• No hay vídeo HDR\n• Los niños vídeos no se reproducirán\n• Los vídeos en pausa pueden reanudarse aleatoriamente\n• Las miniaturas de barras cortas de baja calidad\n• El botón de acción está oculto\n• Las tarjetas de pantalla final están ocultas Las miniaturas del cliente de Spoof no están disponibles (API) Las miniaturas del cliente Spoof temporalmente no están disponibles: %s diff --git a/src/main/resources/addresources/values-et-rEE/strings.xml b/src/main/resources/addresources/values-et-rEE/strings.xml index 451fa26d3..d7e6ed299 100644 --- a/src/main/resources/addresources/values-et-rEE/strings.xml +++ b/src/main/resources/addresources/values-et-rEE/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Lähtesta @@ -43,8 +42,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Teave - Muud @@ -140,8 +137,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Infokaardid on peidetud - Infokaardid on nähtaval @@ -167,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Teave @@ -175,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t - Välimus - - Laen... - Lähtesta - Teave - Vaikimisi @@ -218,7 +205,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Loobu @@ -259,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Väljas @@ -271,7 +256,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Muud diff --git a/src/main/resources/addresources/values-eu-rES/strings.xml b/src/main/resources/addresources/values-eu-rES/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-eu-rES/strings.xml +++ b/src/main/resources/addresources/values-eu-rES/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-fa-rIR/strings.xml b/src/main/resources/addresources/values-fa-rIR/strings.xml index de5e8a1f1..d7e6ed299 100644 --- a/src/main/resources/addresources/values-fa-rIR/strings.xml +++ b/src/main/resources/addresources/values-fa-rIR/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - تنظیم مجدد @@ -41,10 +40,8 @@ This is because Crowdin requires temporarily flattening this file and removing t - لینک های رسمی - درباره ما @@ -165,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - درباره ما @@ -173,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t - ظاهر - - درحال بارگذاری... - تنظیم مجدد - درباره ما - پیشفرض @@ -256,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - غیرفعال شده diff --git a/src/main/resources/addresources/values-fi-rFI/strings.xml b/src/main/resources/addresources/values-fi-rFI/strings.xml index a4ee981a1..80a0956d2 100644 --- a/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -866,9 +866,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Valitse osion kategoria Kategoria on poistettu käytöstä asetuksissa. Salli kategoria lähettääksesi. Uusi SponsorBlock osio - - Aseta %1$02d:%2$02d:%3$03d uuden osion aluksi tai lopuksi? + Aseta %s uuden segmentin alkuun tai loppuun? alku loppu nyt @@ -1119,7 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Asiakas ei ole spoofed\n\nVideon toisto ei ehkä toimi Tämän asetuksen poistaminen käytöstä voi aiheuttaa videon toiston ongelmia. Spoof asiakas iOS - Asiakas on tällä hetkellä hemmoteltu Android VR\n\nSivuefektejä ovat:\n• Ei HDR video\n• Lapset videot eivät toista\n• Keskeytetty videot voivat jatkaa satunnaisesti\n• Huonolaatuiset Shorts seekbar pikkukuvat\n• Lataa toimintapainike on aina piilotettu\n• Päätä näytöt ovat aina piilossa + Asiakas on tällä hetkellä pilaantunut iOS\n\nSivuvaikutukset ovat:\n• Ei HDR video\n• Korkeampi videon ominaisuuksia voi puuttua,\n• Live streams ei voi toistaa vain ääntä + Asiakas on tällä hetkellä hemmoteltu Android VR\n\nSivuefektejä ovat:\n• Ei HDR video\n• Lasten videot eivät toista\n• Keskeytetty videot voivat toistua satunnaisesti\n• Huonolaatuiset shortsit seekbar pikkukuvat\n• Lataa toimintapainike on piilotettu\n• Päätä näytöt ovat piilotettuja Spoof asiakkaan pikkukuvat ei ole käytettävissä (API ajastettu) Spoof asiakkaan pikkukuvat tilapäisesti ei käytettävissä: %s diff --git a/src/main/resources/addresources/values-fil-rPH/strings.xml b/src/main/resources/addresources/values-fil-rPH/strings.xml index 86d3e04e7..4bac83106 100644 --- a/src/main/resources/addresources/values-fil-rPH/strings.xml +++ b/src/main/resources/addresources/values-fil-rPH/strings.xml @@ -854,9 +854,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Piliin ang kategorya ng segment Naka-disable ang kategorya sa mga setting. Paganahin ang kategoryang isumite. Bagong segment ng SponsorBlock - - Itakda ang %1$02d:%2$02d:%3$03d bilang simula o pagtatapos ng isang bagong segment? simulan wakas ngayon @@ -1093,8 +1090,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Hindi na-spoof ang kliyente\n\nMaaaring hindi gumana ang pag-playback ng video Ang pag-off sa setting na ito ay maaaring magdulot ng mga isyu sa pag-playback ng video. Spoof client sa iOS - Kasalukuyang na-spoof ang kliyente sa iOS\n\nKabilang sa mga side effect ang:\n• Walang HDR video\n• Maaaring hindi gumana ang history ng panonood\n• Maaaring nawawala ang mas matataas na katangian ng video\n• Hindi puwedeng mag-play bilang audio lang ang mga live stream\n• Live hindi available ang mga stream sa Android 8.0 - Kasalukuyang na-spoof ang kliyente sa Android VR\n\nKabilang sa mga side effect ang:\n• Walang HDR na video\n• Hindi nagpe-playback ang mga pambata na video\n• Ang mga naka-pause na video ay maaaring random na ipagpatuloy\n• Mga thumbnail ng shorts seekbar na may mababang kalidad\n• I-download ang action button ay laging nakatago\n• Palaging nakatago ang mga end screen card Hindi available ang mga thumbnail ng spoof client (nag-time out ang API) Pansamantalang hindi available ang mga thumbnail ng spoof client: %s diff --git a/src/main/resources/addresources/values-fr-rFR/strings.xml b/src/main/resources/addresources/values-fr-rFR/strings.xml index 866fbebfc..7fabccf2c 100644 --- a/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -72,7 +72,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Lecteur Disposition générale Barre de progression - Commandes de balayage + Contrôle par gestes Divers Vidéo @@ -121,7 +121,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Le bouton est masqué Le bouton est affiché - Cacher les recommandations \"Personnes également suivies\" + Masquer les recommandations \'Les gens ont aussi regardé\' Les recommandations sont masquées Les recommandations sont affichées - Masquer le bouton \'Visiter la boutique\' sur les pages des canaux + Masquer le bouton \'Visiter la boutique\' sur la page de la chaîne Le bouton est masqué Le bouton est affiché Masquer les résultats de la recherche web @@ -306,9 +306,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Le bouton n\'est pas affiché - Supprimer la boîte de dialogue de discrétion de la visionneuse - La boîte de dialogue sera supprimée - La boîte de dialogue sera affichée + Supprimer la confirmation pour les vidéos avec limite d\'âge + Le dialogue de confirmation sera supprimé + Le dialogue de confirmation sera affiché Cela ne contourne pas la restriction d\'âge. Il l\'accepte tout simplement automatiquement. @@ -321,8 +321,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Remplacer l\'action du bouton téléchargement Le bouton de téléchargement ouvre votre téléchargeur externe Le bouton de téléchargement ouvre le téléchargeur natif dans l\'application - Nom du paquet du téléchargeur - Nom du paquet de votre application de téléchargement externe installée, comme NewPipe ou Seal + Nom du package du téléchargeur + Nom du package de votre application de téléchargement externe installée, comme NewPipe ou Seal %s n\'est pas installé. Veuillez l\'installer. @@ -331,23 +331,23 @@ This is because Crowdin requires temporarily flattening this file and removing t Le geste est activé - Activer le tapping de la barre de recherche - Le tapping de la barre de recherche est activé - Le tapotage de la barre de recherche est désactivé + Activer l\'appui dans la barre de lecture + L\'appui dans la barre de lecture est activé + L\'appui dans la barre de lecture est désactivé - Activer le geste de luminosité - Le balayage de la luminosité est activé - Le balayage de la luminosité est désactivé - Activer le mouvement de volume - Le balayage du volume est activé - Le balayage du volume est désactivé + Activer les gestes pour la luminosité + Les gestes de contrôle de la luminosité sont activés + Les gestes de contrôle de la luminosité sont désactivés + Activer les gestes pour le volume + Les gestes de contrôle du volume sont activés + Les gestes de contrôle du volume sont désactivés Activer le geste d\'appui pour glisser Appui pour glisser est activé Appui pour glisser est désactivé Activer le retour haptique - Le retour tactile est activé - Le retour tactile est désactivé + Le retour haptique est activé + Le retour haptique est désactivé Enregistrer et restaurer la luminosité Enregistrer et restaurer la luminosité en quittant ou en entrant en plein écran Ne pas enregistrer et restaurer la luminosité en quittant ou en entrant en plein écran @@ -355,12 +355,12 @@ This is because Crowdin requires temporarily flattening this file and removing t Glisser vers le bas vers la valeur la plus basse du geste de luminosité active la luminosité automatique Glisser vers le bas vers la valeur la plus basse n\'active pas la luminosité automatique Automatique - Délai d\'overlay du balayage - La quantité de millisecondes que la superposition est visible - Glisser la taille du texte de la superposition - La taille du texte pour la superposition de balayage + Délai de l\'overlay des gestes + Le temps en millisecondes où l\'overlay est visible + Taille du texte de l\'overlay des gestes + La taille du texte pour l\'overlay des gestes Visibilité de l\'arrière-plan en glissant - La visibilité de l\'arrière-plan de la superposition de balayage + La visibilité de l\'arrière-plan de l\'overlay des gestes Seuil de magnitude de balayage La quantité de seuil pour que le balayage se produise @@ -866,9 +866,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Choisissez la catégorie du segment La catégorie est désactivée dans les paramètres. Activez la catégorie pour soumettre. Nouveau segment SponsorBlock - - Utiliser %1$02d:%2$02d:%3$03d comme début ou fin d\'un nouveau segment ? + Définir %s comme début ou fin d\'un nouveau segment ? démarrer fin maintenant @@ -957,25 +955,25 @@ This is because Crowdin requires temporarily flattening this file and removing t Les messages de la communauté n\'apparaissent pas sur la disposition de la tablette - Minijoueur + Lecteur réduit Changer le style du lecteur réduit dans l\'application Type de Miniplayer - Originale + Original Téléphone Tablette Moderne 1 Moderne 2 Moderne 3 - Masquer les boutons d\'extension et de fermeture - Les boutons sont cachés\n(glisser le minijoueur pour l\'expansion ou la fermeture) - Développer et fermer les boutons sont affichés + Masquer les boutons d\'agrandissement et de fermeture + Les boutons sont cachés\n(glisser le lecteur réduit pour l\'agrandir ou le fermer) + Les boutons agrandir et fermer sont affichés Masquer les sous-textes Les sous-textes sont cachés Les sous-textes sont affichés - Masquer les boutons avant et retour - Sauter en avant et en arrière sont masqués - Sauter en avant et en arrière sont affichés - Overlay opacity + Masquer les boutons avancer et reculer + Les boutons avancer et reculer sont masqués + Les boutons avancer et reculer sont affichés + Opacité de l\'overlay Valeur d\'opacité entre 0 et 100, où 0 est transparent L\'opacité de l\'overlay du Miniplayer doit être comprise entre 0 et 100 @@ -1119,8 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Le client n\'est pas trompé\n\nLa lecture de la vidéo peut ne pas fonctionner Désactiver ce paramètre peut causer des problèmes de lecture vidéo. Falsifier le client vers iOS - Le client simule actuellement iOS\n\nLes effets secondaires incluent :\n• Aucune vidéo HDR\n• L\'historique de lecture peut ne pas fonctionner\n• Des qualités vidéo plus élevées peuvent manquer\n• Les vidéos en direct ne peuvent pas être lancées uniquement en tant que audio\n• Les vidéos en direct ne sont pas disponibles sur Android 8.0 - Le client est actuellement usurpé à Android VR\n\nEffets secondaires incluant:\n• Aucune vidéo HDR\n• Les vidéos des enfants ne lisent pas\n• Les vidéos en pause peuvent reprendre aléatoirement\n• Les Shorts de basse qualité sur les vignettes de la barre de recherche\n• Le bouton d\'action de téléchargement est toujours caché\n• Les cartes d\'écran de fin sont toujours cachées + Le client est actuellement usurpé à iOS\n\nLes effets secondaires comprennent :\n• Aucune vidéo HDR\n• Des qualités vidéo plus élevées peuvent manquer\n• Les flux en direct ne peuvent pas jouer uniquement en tant qu\'audio + Le client est actuellement falsifié vers Android VR\n\nEffets secondaires incluant:\n• Aucune vidéo HDR\n• Les vidéos des enfants ne lisent pas\n• Les vidéos en pause peuvent reprendre aléatoirement\n• Les Shorts de basse qualité sur les vignettes de la barre de recherche\n• Le bouton d\'action de téléchargement est caché\n• Les cartes d\'écran de fin sont cachées Tromper les vignettes du client non disponibles (API expirée) Tromper les vignettes du client temporairement indisponibles : %s diff --git a/src/main/resources/addresources/values-gl-rES/strings.xml b/src/main/resources/addresources/values-gl-rES/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-gl-rES/strings.xml +++ b/src/main/resources/addresources/values-gl-rES/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-gu-rIN/strings.xml b/src/main/resources/addresources/values-gu-rIN/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-gu-rIN/strings.xml +++ b/src/main/resources/addresources/values-gu-rIN/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-hi-rIN/strings.xml b/src/main/resources/addresources/values-hi-rIN/strings.xml index 9276d3080..b5dfd930e 100644 --- a/src/main/resources/addresources/values-hi-rIN/strings.xml +++ b/src/main/resources/addresources/values-hi-rIN/strings.xml @@ -175,8 +175,6 @@ This is because Crowdin requires temporarily flattening this file and removing t स्वरूप - diff --git a/src/main/resources/addresources/values-hr-rHR/strings.xml b/src/main/resources/addresources/values-hr-rHR/strings.xml index c91542961..d7e6ed299 100644 --- a/src/main/resources/addresources/values-hr-rHR/strings.xml +++ b/src/main/resources/addresources/values-hr-rHR/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Ponovno postavljanje @@ -43,7 +42,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - O aplikaciji @@ -101,8 +99,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Gumb za emitiranje je skriven - Gumb za emitiranje je prikazan @@ -141,8 +137,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Kartice informacija su skrivene - Kartice informacija su prikazane @@ -168,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - O aplikaciji @@ -176,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t - Izgled - - Učitavanje... - Ponovno postavljanje - O aplikaciji - Zadano @@ -259,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Onemogućeno diff --git a/src/main/resources/addresources/values-hu-rHU/strings.xml b/src/main/resources/addresources/values-hu-rHU/strings.xml index 8e553f4d9..b4d16b134 100644 --- a/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -865,9 +865,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Válassza ki a szakasz kategóriáját A kategória letiltva a beállításokban. Engedélyezze a beküldéshez. Új SponsorBlock szakasz - - Beállítja a(z) %1$02d:%2$02d:%3$03d -t az új szakasz kezdetének vagy végének? + Beállítja a %s-t egy új szegmens kezdeteként vagy végeként? kezdőpont végpont most @@ -993,6 +991,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Érvénytelen színérték. Az alap érték használata. + Területi kép-korlátozások megkerülése + A yt4.ggpht.com képtár használata + Az eredeti képgazda használata\n\nEnnek engedélyezése javíthatja a hiányzó képeket, amelyek bizonyos régiókban le vannak tiltva @@ -1116,8 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t A kliens nincs hamisítva\n\nLehet, hogy a videólejátszás nem működik A beállítás kikapcsolása videolejátszási problémákat okozhat. Hamis kliens iOS-re - A kliens jelenleg iOS-re van hamisítva\n\nA mellékhatások a következők:\n• Nincs HDR-videó\n• Előfordulhat, hogy a megtekintési előzmények nem működnek\n• Hiányozhatnak a jobb videóminőségek\n• Az élő közvetítések nem játszhatók le csak hangként\n• Élő a streamek nem érhetők el Android 8.0 rendszeren - A kliens jelenleg az Android VR-t utánozza\n\nMellékhatásokkal együtt:\n• Nincs HDR video\n• Nincs \'Kids\' videólejátszás\n• A pillanatmegállított videók véletlenszerűen elindulhatnak\n• Alacsony minőségű Shorts csűszka bélyegképek\n• A letöltés gomb mindig rejtett\n• Videó végi kártyák mindig rejtett + A kliens jelenleg iOS-re van hamisítva\n\nA mellékhatások a következők:\n• Nincs HDR-videó\n• Hiányozhatnak a jobb videóminőségek\n• Az élő közvetítések nem játszhatók le csak hangként + A kliens jelenleg Android VR-re van hamisítva\n\nA mellékhatások a következők:\n• Nincs HDR-videó\n• A gyerekeknek készült videók nem játszhatók le\n• A szüneteltetett videók véletlenszerűen folytatódhatnak\n• Rossz minőségű rövidfilmek kereshető indexképei\n• Letöltés művelet gomb el van rejtve\n• A záróképernyő-kártyák el vannak rejtve Hamis kliens miniatűrök nem érhetők el (API időtúllépés) A hamis kliens miniatűrök átmenetileg nem érhetők el: %s diff --git a/src/main/resources/addresources/values-hy-rAM/strings.xml b/src/main/resources/addresources/values-hy-rAM/strings.xml index a95b0ac5f..d7e6ed299 100644 --- a/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -42,7 +42,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Ծրագրի մասին @@ -163,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Ծրագրի մասին @@ -173,13 +171,9 @@ This is because Crowdin requires temporarily flattening this file and removing t - - Բեռնվում է... - Ծրագրի մասին + SponsorBlock sementara tidak tersedia (API timed out). + SponsorBlock sementara tidak tersedia (status %d) + SponsorBlock sementara tidak tersedia + Tidak dapat memilih segmen (API timed out) + Tidak dapat memilih segmen (status: %1$d %2$s) + Tidak dapat memilih segmen: %s Suka Tidak suka Ubah kategori @@ -813,9 +864,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Pilih kategori segmen Kategori dinonaktifkan di pengaturan. Aktifkan untuk kirim. Segmen SponsorBlock Baru - - Atur %1$02d:%2$02d:%3$03d sebagai awal dan akhir dari segmen? awal akhir sekarang @@ -825,26 +873,52 @@ This is because Crowdin requires temporarily flattening this file and removing t Segmen dari\n\n%1$s\nke\n%2$s\n\n(%3$s)\n\nSiap dikirim? + Awal harus sebelum akhir Tandai terlebih dahulu dua lokasi di kotak waktu + Pratinjau segmen, dan memastikan segmen dilewati dengan lancar Atur pengaturan tempo segmen secara manual Apakah Anda ingin mengubah tempo untuk awal atau akhir dari segmen? Waktu yang diberikan tidak valid Statistik + Data sementara tidak tersedia (API is down) Memuat... SponsorBlock dinonaktifkan + Username Anda: <b>%s</b> + Tekan di sini untuk mengubah username Anda Tidak dapat mengubah nama pengguna: Status: %1$d %2$s Nama pengguna berhasil diubah + Reputasi Anda: <b>%.2f</b> + Anda telah membuat segmen <b>%s</b> + Papan peringkat SponsorBlock + Anda menghindarkan orang dari segmen <b>%s</b> + Tekan di sini untuk melihat data global dan kontributor utama + Itu <b>%s</b> dari hidup mereka.<br>Tekan di sini untuk melihat papan peringkat + Anda melewati <b>%s</b> segmen + Itu <b>%s</b> + Reset perhitungan segmen terlewat? + %1$s jam %2$s menit + %1$s menit %2$s detik + %s detik + Warna: Warna terubah Reset warna + Kode warna tidak valid + Reset warna Setel ulang Tentang + Data yang disediakan API SponsorBlock. Tekan di sini untuk mempelajari lebih lanjut dan melihat hasil download untuk platform lain + Palsukan versi app + Versi yang dipalsukan + Versi asli Versi aplikasi akan dipalsukan ke versi lama YouTube.\n\nIni akan mengubah tampilan dan fitur aplikasi, tapi mungkin terjadi efek samping tidak diketahui.\n\nJika nanti dinonaktifkan, disarankan menghapus data aplikasi agar UI tidak kacau. + Target versi app yang dipalsukan + 18.33.40 - Kembalikan RYD pada mode incognito Shorts Bawaan diff --git a/src/main/resources/addresources/values-is-rIS/strings.xml b/src/main/resources/addresources/values-is-rIS/strings.xml index dd25becd2..d7e6ed299 100644 --- a/src/main/resources/addresources/values-is-rIS/strings.xml +++ b/src/main/resources/addresources/values-is-rIS/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Endurstilla @@ -43,10 +42,8 @@ This is because Crowdin requires temporarily flattening this file and removing t - Um - Villuleit - Um @@ -173,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t - Útlit - - Er að halda... - Endurstilla - Um - Sjálfgefinn @@ -216,7 +205,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Loka @@ -257,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Óvirkt diff --git a/src/main/resources/addresources/values-it-rIT/strings.xml b/src/main/resources/addresources/values-it-rIT/strings.xml index 7a7361365..4f463a2c8 100644 --- a/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/src/main/resources/addresources/values-it-rIT/strings.xml @@ -864,9 +864,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Seleziona la categoria della sezione La categoria è disabilitata nelle impostazioni. Abilita la categoria da inviare. Nuova sezione di SponsorBlock - - Impostare %1$02d:%2$02d:%3$03d come inizio o fine di un nuovo segmento? + Impostare %s come inizio o fine di un nuovo segmento? inizio fine ora @@ -1117,8 +1115,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Il client non è spoofed\n\nLa riproduzione video potrebbe non funzionare Disattivare questa impostazione potrebbe causare problemi di riproduzione video. Spoof client per iOS - Il client è attualmente spoofed per iOS\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• La cronologia dell\'orologio potrebbe non funzionare\n• Potrebbero mancare qualità video più elevate\n• I flussi dal vivo non possono riprodurre solo l\'audio\n• I flussi dal vivo non sono disponibili su Android 8.0 - Il client è attualmente spoofed per Android VR\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Shorts seekbar miniature\n• Il pulsante di azione del download è sempre nascosto\n• Le schede dello schermo finale sono sempre nascoste + Il client è attualmente spoofed per iOS\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• Potrebbero mancare qualità video più elevate\n• I flussi live non possono essere riprodotti solo come audio + Il client è attualmente spoofed per Android VR\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Pantaloncini seekbar miniature\n• Il pulsante di azione per scaricare è nascosto\n• Le schede dello schermo finale sono nascoste Le miniature del client non sono disponibili (timeout API) Miniature del client Spoof temporaneamente non disponibili: %s diff --git a/src/main/resources/addresources/values-iw-rIL/strings.xml b/src/main/resources/addresources/values-iw-rIL/strings.xml index d0979363f..1d4cbbb6f 100644 --- a/src/main/resources/addresources/values-iw-rIL/strings.xml +++ b/src/main/resources/addresources/values-iw-rIL/strings.xml @@ -217,8 +217,6 @@ This is because Crowdin requires temporarily flattening this file and removing t שנה קטגוריה אין קטעים לבחירה קטע חסות חדש של SponsorBloack - התחל סוף עכשיו diff --git a/src/main/resources/addresources/values-ja-rJP/strings.xml b/src/main/resources/addresources/values-ja-rJP/strings.xml index e4b087ae0..b3f977e92 100644 --- a/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -176,9 +176,9 @@ This is because Crowdin requires temporarily flattening this file and removing t チャンネルバーを隠す チャンネルバーは非表示です チャンネルバーが表示されます - Playablesを隠す - プレイ可能ファイルは非表示です - プレイブルが表示されます + ゲームを非表示にする + Playables は非表示です + ゲームは隠されていない 全画面表示でクイックアクションを隠す クイックアクションは非表示です クイックアクションを表示する @@ -864,9 +864,7 @@ This is because Crowdin requires temporarily flattening this file and removing t セグメントのカテゴリを選択してください カテゴリは設定で無効になっています。提出するカテゴリを有効にしてください。 新しい SponsorBlock セグメント - - %1$02d:%2$02d:%3$03d を新しいセグメントの開始または終了として設定しますか? + 新しいセグメントの開始または終了として %s を設定しますか? 開始 終了 @@ -965,6 +963,7 @@ This is because Crowdin requires temporarily flattening this file and removing t モダン2 モダン3 展開と閉じるボタンを非表示 + 拡大/縮小のボタンを非表示にします\n(ミニプレーヤーをスワイプして拡大/縮小できます) 展開と閉じる ボタンが表示されます サブテキストを非表示 サブテキストは非表示です @@ -1115,6 +1114,7 @@ This is because Crowdin requires temporarily flattening this file and removing t クライアントは偽装されていません\n\nビデオ再生が動作しない可能性があります この設定をオフにすると、ビデオ再生の問題が発生する可能性があります。 クライアントを iOS に偽装する + クライアントは現在 iOS\n\nの副作用になりすましています:\n• HDRビデオがありません\n•\n• ライブストリームはオーディオのみとして再生できません クライアントのサムネイルを偽装できません(APIがタイムアウトしました) クライアントのサムネイルを一時的に偽装できません: %s diff --git a/src/main/resources/addresources/values-ka-rGE/strings.xml b/src/main/resources/addresources/values-ka-rGE/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-ka-rGE/strings.xml +++ b/src/main/resources/addresources/values-ka-rGE/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-kk-rKZ/strings.xml b/src/main/resources/addresources/values-kk-rKZ/strings.xml index 9ae16aa08..d7e6ed299 100644 --- a/src/main/resources/addresources/values-kk-rKZ/strings.xml +++ b/src/main/resources/addresources/values-kk-rKZ/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Reset @@ -163,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - About @@ -171,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t - Appearance - - Loading... - Reset - About - Default @@ -214,7 +205,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Елемеу @@ -255,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Сөндірулі diff --git a/src/main/resources/addresources/values-km-rKH/strings.xml b/src/main/resources/addresources/values-km-rKH/strings.xml index 7612d20ac..d7e6ed299 100644 --- a/src/main/resources/addresources/values-km-rKH/strings.xml +++ b/src/main/resources/addresources/values-km-rKH/strings.xml @@ -33,9 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - ReVanced - តើអ្នកចង់បន្តធ្វើទេ? - កំណត់ឡើងវិញ @@ -43,7 +40,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - ReVanced @@ -175,12 +171,9 @@ This is because Crowdin requires temporarily flattening this file and removing t - - កំណត់ឡើងវិញ - ទាត់ចោល @@ -253,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - បានផ្ដាច់ diff --git a/src/main/resources/addresources/values-kn-rIN/strings.xml b/src/main/resources/addresources/values-kn-rIN/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-kn-rIN/strings.xml +++ b/src/main/resources/addresources/values-kn-rIN/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-ko-rKR/strings.xml b/src/main/resources/addresources/values-ko-rKR/strings.xml index 5590125de..8f4be90b2 100644 --- a/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -57,9 +57,9 @@ This is because Crowdin requires temporarily flattening this file and removing t ReVanced - ReVanced Patches <i>%s</i> 버전을 사용 중입니다 + ReVanced Patches <i>%s</i><br>버전을 사용 중입니다 알림 - 개발자 버전이므로 알려지지 않은 문제점이 발생할 수 있습니다 + 개발자 버전이므로<br>알려지지 않은 문제점이<br>발생할 수 있습니다 공식 링크 가져오기 / 내보내기 ReVanced 설정을 가져오거나 내보낼 수 있습니다 @@ -151,9 +151,9 @@ This is because Crowdin requires temporarily flattening this file and removing t 소형 배너 숨기기 소형 배너가 숨겨집니다 소형 배너가 노출됩니다 - 영화 섹션 숨기기 - 영화 섹션이 숨겨집니다 - 영화 섹션이 노출됩니다 + 영화 선반 숨기기 + 영화 선반이 숨겨집니다 + 영화 선반이 노출됩니다 피드 설문 조사 숨기기 피드 설문 조사가 숨겨집니다 피드 설문 조사가 노출됩니다 @@ -267,9 +267,9 @@ This is because Crowdin requires temporarily flattening this file and removing t 셀프 스폰서 카드 숨기기 셀프 스폰서 카드가 숨겨집니다 셀프 스폰서 카드가 노출됩니다 - 제품 쇼핑 배너 숨기기 - 배너가 숨겨집니다 - 배너가 노출됩니다 + 제품 보기 배너 숨기기 + 플레이어에서 제품 보기 배너가 숨겨집니다 + 플레이어에서 제품 보기 배너가 노출됩니다 동영상 설명에서 쇼핑 링크 숨기기 쇼핑 링크가 숨겨집니다 쇼핑 링크가 노출됩니다 @@ -280,9 +280,9 @@ This is because Crowdin requires temporarily flattening this file and removing t 웹 검색 결과 숨기기 웹 검색 결과가 숨겨집니다 웹 검색 결과가 노출됩니다 - 제품 배너 숨기기 - 제품 배너가 숨겨집니다 - 제품 배너가 노출됩니다 + 태그된 제품 선반 숨기기 + 태그된 제품 선반이 숨겨집니다 + 태그된 제품 선반이 노출됩니다 \'전체 화면 광고 숨기기\'는 구형 기기에서만 사용할 수 있습니다 @@ -867,9 +867,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 구간 카테고리를 선택하세요 이 카테고리는 비활성화되어 있습니다. 제출하려면 설정에서 활성화해야 합니다 새 SponsorBlock 구간 - - %1$02d:%2$02d:%3$03d을 구간의 시작 또는 끝으로 설정하겠습니까? + %s 을 구간의 시작 또는 끝으로 설정하겠습니까? 시작 현재 @@ -1121,8 +1119,8 @@ This is because Crowdin requires temporarily flattening this file and removing t 클라이언트를 변경하지 않습니다\n동영상 재생 문제가 발생할 수 있습니다 이 설정을 비활성화하면 동영상 재생 문제가 발생할 수 있습니다 iOS 클라이언트로 변경하기 - 클라이언트를 iOS 클라이언트로 변경합니다\n\n알려진 문제점:\n• HDR 동영상을 재생할 수 없습니다\n• 브랜드 계정 사용자는 시청 기록을 사용할 수 없습니다\n• 동영상이 초고화질 동영상 값으로 재생되지 않을 수 있습니다 (1440p, 2160p)\n• 실시간 스트림에서 \'백그라운드 재생\'을 사용할 수 없습니다\n• Android 8.0 사용자는 실시간 스트림을 재생할 수 없습니다 - 클라이언트를 Android VR 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상을 재생할 수 없습니다\n- Kids 동영상을 재생할 수 없습니다\n• 일시 정지된 동영상이 갑자기 다시 시작될 수 있습니다\n• 저화질 Shorts 재생바 썸네일이 표시됩니다\n• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다\n• 최종 화면 카드가 표시되지 않습니다 + 클라이언트를 iOS 클라이언트로 변경합니다\n\n알려진 문제점:\n• HDR 동영상이 재생되지 않을 수 있습니다\n• 동영상이 초고화질 동영상 값으로 재생되지 않을 수 있습니다 (1440p, 2160p)\n• 실시간 스트림에서 \'백그라운드 재생\'을 사용할 수 없습니다 + 클라이언트를 Android VR 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상이 재생되지 않을 수 있습니다\n• Kids 동영상을 재생할 수 없습니다\n• 일시 정지된 동영상이 갑자기 다시 시작될 수 있습니다\n• 저화질 Shorts 재생바 썸네일이 표시됩니다\n• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다\n• 최종 화면 카드가 표시되지 않습니다 클라이언트 썸네일을 사용할 수 없습니다 (응답 시간 초과) 클라이언트 썸네일을 일시적으로 사용할 수 없습니다: %s diff --git a/src/main/resources/addresources/values-ky-rKG/strings.xml b/src/main/resources/addresources/values-ky-rKG/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-ky-rKG/strings.xml +++ b/src/main/resources/addresources/values-ky-rKG/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-lo-rLA/strings.xml b/src/main/resources/addresources/values-lo-rLA/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-lo-rLA/strings.xml +++ b/src/main/resources/addresources/values-lo-rLA/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-lt-rLT/strings.xml b/src/main/resources/addresources/values-lt-rLT/strings.xml index d11d685d4..d7e6ed299 100644 --- a/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Nustatyti iš naujo @@ -43,10 +42,8 @@ This is because Crowdin requires temporarily flattening this file and removing t - Apie - Derinimas - Apie @@ -173,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t - Išvaizda - - Įkeliama... - Nustatyti iš naujo - Apie - Numatyti @@ -216,7 +205,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Atmesti @@ -257,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Išjungta diff --git a/src/main/resources/addresources/values-lv-rLV/strings.xml b/src/main/resources/addresources/values-lv-rLV/strings.xml index 1de88018d..d7e6ed299 100644 --- a/src/main/resources/addresources/values-lv-rLV/strings.xml +++ b/src/main/resources/addresources/values-lv-rLV/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Atiestatīt @@ -43,7 +42,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Par @@ -164,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Par @@ -172,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t - Izskats - - Notiek ielāde... - Atiestatīt - Par - Parasts @@ -255,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Atspējots diff --git a/src/main/resources/addresources/values-mk-rMK/strings.xml b/src/main/resources/addresources/values-mk-rMK/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-mk-rMK/strings.xml +++ b/src/main/resources/addresources/values-mk-rMK/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-ml-rIN/strings.xml b/src/main/resources/addresources/values-ml-rIN/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-ml-rIN/strings.xml +++ b/src/main/resources/addresources/values-ml-rIN/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-mn-rMN/strings.xml b/src/main/resources/addresources/values-mn-rMN/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-mn-rMN/strings.xml +++ b/src/main/resources/addresources/values-mn-rMN/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-mr-rIN/strings.xml b/src/main/resources/addresources/values-mr-rIN/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-mr-rIN/strings.xml +++ b/src/main/resources/addresources/values-mr-rIN/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-ms-rMY/strings.xml b/src/main/resources/addresources/values-ms-rMY/strings.xml index dbfb3edcc..d7e6ed299 100644 --- a/src/main/resources/addresources/values-ms-rMY/strings.xml +++ b/src/main/resources/addresources/values-ms-rMY/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Set semula @@ -43,7 +42,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Tentang @@ -164,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Tentang @@ -172,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t - Penampilan - - Memuatkan... - Set semula - Tentang - diff --git a/src/main/resources/addresources/values-nb-rNO/strings.xml b/src/main/resources/addresources/values-nb-rNO/strings.xml index 8b0988060..50292661c 100644 --- a/src/main/resources/addresources/values-nb-rNO/strings.xml +++ b/src/main/resources/addresources/values-nb-rNO/strings.xml @@ -35,7 +35,6 @@ This is because Crowdin requires temporarily flattening this file and removing t ReVanced Ønsker du å fortsette? - Reset Oppdater og start på nytt Omstart Importer @@ -579,7 +578,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Shorts i hjemmefeed er skjult Shorts i hjemmefeed vises - Skjul Shoets i abonnementsfeed + Skjul Shorts i abonnementsfeed Shorts i abonnementsfeed er skjult Shorts i abonnementsfeed vises Skjul Shorts i søkeresultatene @@ -682,7 +681,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Misliker vises Misliker vises ikke Vis mislykte på Shorts - Misliker vist på shorts + Misliker vist på Shorts Misliker som vises på Shorts\n\nLimitasjon: Misdannelser kan hende i inkognito-modus ikke vises i inkognito-modus Misliker skjult på Shorts Misliker som prosent @@ -858,9 +857,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Velg segmentkategori Kategorien er deaktivert i innstillinger. Aktiver kategori for å sende. Nytt sponsorBlock segment - - Satte %1$02d:%2$02d:%3$03d som start eller slutt for et nytt segment? start slutt @@ -1108,7 +1104,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Klienten er ikke spoofed\n\nVideo playback fungerer kanskje ikke Ved å slå av denne innstillingen kan problemer med videoavspilling. Forside klienten til iOS - Klienten er for øyeblikket skummet til Android VR\n\nSide effects include:\n• Ingen HDR video\n• Barn videoer ikke spiller tilbake\n• Paused videoer kan tilfeldig gjenoppta\n• Lavkvalitet Shorts seekbar miniatyrbilder\n• Last ned handlingsknappen alltid ligger skjult\n• Sluttskjermkort er alltid skjult + Klienten er for øyeblikket oppslukt til iOS\n\nSide include:\n• Ingen HDR-video\n• Høyere videokvaliteter kan mangle\n• Live-strømmer kan ikke spille som lyd + Klienten er for øyeblikket skummet til Android VR\n\nsideeffekter inkluderer:\n• Ingen HDR video\n• Barn videoer ikke spiller tilbake\n• Paused videoer kan tilfeldig gjenoppta\n• Lavkvalitet shorts søkbar miniatyrbilder\n• Last ned handlingsknappen er skjult\n• Sluttskjermkort er skjult Etterligning av klient miniatyrbilder er ikke tilgjengelige (API tidsavbrutt) Spoav klientens miniatyrbilder er midlertidig ikke tilgjengelig: %s diff --git a/src/main/resources/addresources/values-ne-rIN/strings.xml b/src/main/resources/addresources/values-ne-rIN/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-ne-rIN/strings.xml +++ b/src/main/resources/addresources/values-ne-rIN/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-nl-rNL/strings.xml b/src/main/resources/addresources/values-nl-rNL/strings.xml index f8936dde9..f434e8249 100644 --- a/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -865,9 +865,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Kies de segmentcategorie Categorie is uitgeschakeld in instellingen. Schakel categorie in om in te dienen. Nieuw SponsorBlock-segment - - Stel %1$02d:%2$02d:%3$03d in als het begin of einde van een nieuw segment? + %s instellen als het begin of einde van een nieuw segment? begin einde nu @@ -1118,8 +1116,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Client is niet vervalst\n\nVideo afspelen werkt mogelijk niet Het uitschakelen van deze instelling kan problemen met het afspelen van video veroorzaken. Klant naar iOS vervalsen - De klant is momenteel gespoofd naar iOS\n\nSide effecten zoals:\n• Geen HDR video\n• Bekijk geschiedenis kan mogelijk niet werken\n• Hogere videokwaliteiten ontbreken\n• Live streams kunnen niet worden afgespeeld als alleen audio\n• Live streams die niet beschikbaar zijn op Android 8.0 - Client wordt momenteel vervalst naar Android VR\n\nBijwerkingen zijn onder meer:\n• Geen HDR-video\n• Kindervideo\'s worden niet afgespeeld\n• Gepauzeerde video\'s kunnen willekeurig worden hervat\n• Shorts-zoekbalkthumbnails van lage kwaliteit\n• Actieknop downloaden is altijd verborgen\n• Eindschermkaarten zijn altijd verborgen + De klant is momenteel gespoofd naar iOS\n\nSide effecten zoals:\n• Geen HDR video\n• Hogere videokwaliteiten kunnen ontbreken\n• Live streams kunnen niet alleen worden afgespeeld als audio + Cliënt is momenteel ondergesneeuwd naar Android VR\n\nSide effecten inclusief:\n• Geen HDR video\n• Kinderen video\'s spelen niet af\n• Gepauzeerde video\'s kunnen willekeurig hervatten\n• Slechte kwaliteit zoekbalkminiaturen\n• Download actieknop is verborgen\n• Eindscherm kaarten zijn verborgen Klant miniaturen niet beschikbaar (API timed out) Klant miniaturen tijdelijk niet beschikbaar: %s diff --git a/src/main/resources/addresources/values-or-rIN/strings.xml b/src/main/resources/addresources/values-or-rIN/strings.xml index c5fcd999b..d7e6ed299 100644 --- a/src/main/resources/addresources/values-or-rIN/strings.xml +++ b/src/main/resources/addresources/values-or-rIN/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Reset @@ -43,7 +42,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - ସମ୍ବନ୍ଧରେ @@ -164,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - ସମ୍ବନ୍ଧରେ @@ -172,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t - ରୂପ - - Loading... - Reset - ସମ୍ବନ୍ଧରେ - ଡିଫଲ୍ଟ @@ -255,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Disabled diff --git a/src/main/resources/addresources/values-pa-rIN/strings.xml b/src/main/resources/addresources/values-pa-rIN/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-pa-rIN/strings.xml +++ b/src/main/resources/addresources/values-pa-rIN/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-pl-rPL/strings.xml b/src/main/resources/addresources/values-pl-rPL/strings.xml index 96255af31..47ab5c232 100644 --- a/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -866,9 +866,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Wybierz kategorię segmentu Kategoria jest wyłączona w ustawieniach. Włącz kategorię do wysyłania. Nowy segment SponsorBlock\'a - - Ustawić %1$02d:%2$02d:%3$03d jako początek lub koniec nowego segmentu? początek koniec aktualnie @@ -916,14 +913,14 @@ This is because Crowdin requires temporarily flattening this file and removing t Wersja Spoof app - Wersja spofed - Wersja nie sfałszowana - Wersja aplikacji będzie spoofed do starszej wersji YouTube.\n\nTo zmieni wygląd i cechy aplikacji, ale mogą wystąpić nieznane działania niepożądane.\n\nJeśli później wyłączone, zaleca się wyczyszczenie danych aplikacji, aby zapobiec błędom interfejsu. + Wersja zespoofowana + Wersja nie zespoofowana + Wersja aplikacji będzie zespoofowana do starszej wersji YouTube.\n\nZmieni to wygląd i zachowanie aplikacji, lecz mogą wystąpić niepożądane skutki.\n\nJeśli później wyłączone, zaleca się wyczyszczenie danych aplikacji, aby zapobiec błędom interfejsu. - Cel wersji Spop aplikacji + Docelowa zespoofowana wersja aplikacji - 18.33.40 - Przywróć RYD w trybie incognito + 18.33.40 - Przywróć RYD (Return YouTube Dislike) w trybie incognito 18.20.39 - Przywracanie szerokiej prędkości wideo & menu jakości 18.09.39 - Przywróć kartę bibliotek 17.41.37 - Przywróć starą półkę na liście odtwarzania @@ -1044,10 +1041,10 @@ This is because Crowdin requires temporarily flattening this file and removing t Automatyczne powtarzanie jest wyłączone - Wymiary łyżki urządzenia - Wymiary urządzenia spofed\n\nWyższe właściwości wideo mogą być odblokowane, ale możesz doświadczyć oszołomienia odtwarzania wideo, gorszego żywotności baterii i nieznanych efektów ubocznych - Wymiary urządzenia nie spofed\n\nWłączenie tego może odblokować wyższą jakość wideo - Włączenie tego może spowodować stłuczenie odtwarzania wideo, pogorszenie żywotności baterii i nieznane działania niepożądane. + Zespoofuj wymiar urządzenia + Zespoofuj wymiar urządzenia + Wymiary urządzenia nie są zespoofowane\n\nWłączenie tej opcji umożliwia ustawienie wyższej jakości wideo niż zwykle + Włączenie tego może spowodować zacinanie się odtwarzanego filmu, pogorszenie żywotności baterii i nieznane działania niepożądane. Ustawienia GmsCore @@ -1113,15 +1110,15 @@ This is because Crowdin requires temporarily flattening this file and removing t Przesuń, aby przeszukiwać nie jest włączony - Spoiwa klienta - Słuchaj klienta aby zapobiec problemom z odtwarzaniem - Spoiwa klienta - Klient jest spoofed - Klient nie jest spoofed\n\nOdtwarzanie wideo może nie działać + Zespoofowany klient + Zespoofuj klienta, aby zapobiec problemom z odtwarzaniem + Zespoofowany klient + Klient jest zespoofowany + Klient nie jest zespoofowany\n\nOdtwarzanie wideo może nie działać Wyłączenie tego ustawienia może spowodować problemy z odtwarzaniem wideo. - Spośród klientów na iOS - Klient jest obecnie spoofed to iOS\n\nEfekty niepożądane obejmują:\n• Żaden film HDR\n• Historia zegarków może nie działać\n• Wyższe jakość wideo może brakować\n• Strumienie na żywo nie mogą odtwarzać jako tylko audio\n• Strumienie na żywo niedostępne na Androidzie 8.0 - Klient jest obecnie spoofowany na Androida VR\n\nEfekty uboczne obejmują:\n• Bez filmu HDR\n• Filmy dziecięce nie odtwarza\n• Wstrzymaj filmy można losowo wznowić\n• Niska jakość miniatur paska wyszukiwania Shorts\n• Przycisk pobierania jest zawsze ukryty\n• Karty ekranu końcowego są zawsze ukryte + Zespoofuj klient do wersji iOS + Klient jest obecnie spoofed na iOS\n\nEfekty niepożądane obejmują:\n• Bez wideo HDR\n• Może brakować wyższej jakości wideo\n• Strumienie na żywo nie może odtwarzać tylko jako dźwięk + Klient jest obecnie spoofed na Androida VR\n\nEfekty niepożądane obejmują:\n• Brak filmu HDR\n• Filmy dziecięce nie odtwarza\n• Wstrzymane filmy mogą losowo wznawiać\n• Niska jakość miniatur paska wyszukiwania skrótów\n• Przycisk pobierania jest ukryty\n• Karty ekranu końcowego są ukryte Miniatury klienta nie są dostępne (limit czasu API) Miniaturki klienta tymczasowo nie są dostępne: %s diff --git a/src/main/resources/addresources/values-pt-rBR/strings.xml b/src/main/resources/addresources/values-pt-rBR/strings.xml index f3a2cfac4..1604a0971 100644 --- a/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -866,9 +866,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Escolha a categoria do segmento Categoria está desativada nas configurações. Ative a categoria para enviar. Novo segmento SponsorBlock - - Definir %1$02d:%2$02d:%3$03d como início ou fim de um novo segmento? + Definir %s como início ou fim de um novo segmento? início final agora @@ -1119,8 +1117,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Cliente não é falsificado\n\nA reprodução de vídeo pode não funcionar Desativar essa configuração pode causar problemas de reprodução de vídeo. Cliente Spoof para iOS - O cliente está spoofed para o iOS\n\nOs efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• O histórico de assistir pode não funcionar\n• Qualidades de vídeo maiores podem estar faltando\n• Transmissões ao vivo não podem ser reproduzidas como áudio\n• Transmissões ao vivo não disponíveis no Android 8.0 - O cliente está spoofendido para Android VR\n\nOs efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• As crianças não reproduzem\n• Os vídeos pausados podem retomar aleatoriamente\n• Miniaturas de barra de busca curta de baixa qualidade\n• Botão de ação para download está sempre oculto\n• Cartões de tela final sempre estão ocultos Miniaturas Spoof client não disponíveis (API timeout) Miniaturas Spoof client temporariamente não disponíveis: %s diff --git a/src/main/resources/addresources/values-pt-rPT/strings.xml b/src/main/resources/addresources/values-pt-rPT/strings.xml index 2e3f6b99a..069d2fdd1 100644 --- a/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -863,9 +863,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Escolha a categoria do segmento A categoria está desativada nas configurações. Habilite a categoria para enviar. Novo segmento para Patrocinador - - Definir %1$02d:%2$02d:%3$03d como início ou fim de um novo segmento? + Definir %s como início ou fim de um novo segmento? início terminar format@@0number@@1format@@2s @@ -1116,8 +1114,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Cliente não é falsificado\n\nA reprodução de vídeo pode não funcionar Desativar essa configuração pode causar problemas de reprodução de vídeo. Cliente Spoof para iOS - O cliente está spoofed para o iOS\n\nOs efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• O histórico de assistir pode não funcionar\n• Qualidades de vídeo maiores podem estar faltando\n• Transmissões ao vivo não podem ser reproduzidas como áudio\n• Transmissões ao vivo não disponíveis no Android 8.0 - O cliente está spoofendido para Android VR\n\nOs efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• As crianças não reproduzem\n• Os vídeos pausados podem retomar aleatoriamente\n• Miniaturas de barra de busca curta de baixa qualidade\n• Botão de ação para download está sempre oculto\n• Cartões de tela final sempre estão ocultos + O cliente está spoofed para o iOS\n\nOs efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• Qualidades maiores de vídeo podem estar faltando\n• Transmissões ao vivo não podem reproduzir apenas áudio + O cliente está oculta para o Android VR\n\nOs efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• As crianças não reproduzem\n• Os vídeos pausados podem retomar aleatoriamente\n• Miniaturas da barra de busca curta de baixa qualidade\n• Botão de ação para baixar está oculto\n• Cartões de tela final estão ocultos Miniaturas Spoof client não disponíveis (API timeout) Miniaturas Spoof client temporariamente não disponíveis: %s diff --git a/src/main/resources/addresources/values-ro-rRO/strings.xml b/src/main/resources/addresources/values-ro-rRO/strings.xml index 10fe94694..c3d5b30bc 100644 --- a/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -35,7 +35,7 @@ This is because Crowdin requires temporarily flattening this file and removing t ReVanced Doriți să continuați? - Reset + Resetează Reîmprospătați și reporniți Repornire Importare @@ -866,9 +866,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Alege categoria segmentului Categoria este dezactivată în setări. Activați categoria pentru a trimite. Segment de sponsorBlock nou - - Setează %1$02d:%2$02d:%3$03d ca început sau sfârșit al unui nou segment? + Setați %s ca început sau sfârșit al unui nou segment? pornește sfarsit acum @@ -1120,8 +1118,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Clientul nu este lovit\n\nEste posibil ca redarea video să nu funcționeze Dezactivarea acestei setări poate cauza probleme de redare video. Spoof client pe iOS - Clientul este în prezent falsificat de iOS\n\nEfectele secundare includ:\n• Niciun video HDR\n• Istoria ceasului nu funcționează\n• Calități video mai înalte pot lipsi\n• Fluxurile live nu pot fi redate deoarece doar audio\n• Fluxuri live nu sunt disponibile pe Android 8.0 - Clientul este în prezent falsificat pe Android VR\n\nEfectele secundare includ:\n• Niciun video HDR\n• Videoclipuri cu copii nu redă\n• Videoclipurile întrerupte pot relua aleatoriu\n• Pictograme scurte de calitate slabă\n• Butonul de acțiune de descărcare este întotdeauna ascuns\n• Cardurile de pe ecran sunt întotdeauna ascunse + Clientul este în prezent falsificat de iOS\n\nEfectele secundare includ:\n• Niciun video HDR\n• Calități video mai mari pot lipsi\n• Fluxuri live nu pot fi redate deoarece numai audio + Clientul este în prezent falsificat pe Android VR\n\nEfectele secundare includ:\n• Niciun video HDR\n• Videoclipuri cu copii nu redă\n• Videoclipurile întrerupte pot relua aleatoriu\n• Pictograme scurte de calitate slabă\n• Butonul acțiunii de descărcare este ascuns\n• Cardurile de pe ecran sunt ascunse Spoof a miniaturilor clientului nu este disponibil (API a expirat) Fixarea miniaturilor clientului nu este disponibilă temporar: %s diff --git a/src/main/resources/addresources/values-ru-rRU/strings.xml b/src/main/resources/addresources/values-ru-rRU/strings.xml index 0dca24f65..b0ed5ea3d 100644 --- a/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -36,7 +36,7 @@ This is because Crowdin requires temporarily flattening this file and removing t ReVanced Вы хотите продолжить? Сбросить - Перезапустить для применения + Перезапустить для применения? Перезапустить Импортировать Копировать @@ -756,7 +756,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Кнопка создания нового сегмента отображена Кнопка создания нового сегмента скрыта Шаг нового сегмента - Количество миллисекунд, на которое перемещаются кнопки регулировки времени при создании новых сегментов + Длительность (в миллисекундах) перемотки кнопками регулировки времени при создании новых сегментов Значение должно быть положительным числом Просмотреть инструкцию Инструкция содержит правила и советы по созданию новых сегментов @@ -799,12 +799,12 @@ This is because Crowdin requires temporarily flattening this file and removing t Короткое напоминание поставить лайк, подписаться на канал или соцсети посреди видеоролика. Если эта вставка длительная или о чем-то конкретном, она должна классифицироваться как самореклама Основной момент Часть видео, которая интересна большинству людей - Пауза / Интро + Антракт / Вступительная анимация Интервал без фактического содержания. Может быть паузой, статическим кадром или повторяющейся анимацией. Не включает переходы, содержащие информацию Конечные заставки / Титры Титры или время появления конечных заставок YouTube. Не для выводов с информацией - Предпросмотр / Краткое содержание / Завязка - Демонстрация моментов, которые показывают, что происходит или что произошло в данном видео или в других видео серии, где вся информация повторяется в другом месте + Предпросмотр / Пересказ / Завязка + Фрагменты, повторяющие текущее видео или предыдущие серии Отвлеченные темы / Шутки Сегменты, которые увеличивают длительность видео за счет отвлеченных тем или шуток, но не требуются для понимания основного содержания. Не включает сегменты, объясняющие контекст или предысторию Музыка: сегмент без музыки @@ -814,32 +814,32 @@ This is because Crowdin requires temporarily flattening this file and removing t Пропустить спонсорскую рекламу Пропустить промо Пропустить взаимодействие - Пропустить к основному моменту - Пропустить интро - Пропустить паузу - Пропустить паузу + Перейти к основному моменту + Пропустить вступление + Пропустить антракт + Пропустить антракт Пропустить концовку Пропустить предпросмотр Пропустить предпросмотр - Пропустить краткое изложение - Пропустить вставку + Пропустить пересказ + Пропустить заполнитель Пропустить сегмент без музыки Пропустить сегмент - Пропущена спонсорская реклама - Пропущена самореклама - Пропущено назойливое напоминание + Спонсорская реклама пропущена + Самореклама пропущена + Назойливое напоминание пропущено Пропущено к основному моменту - Пропущено интро - Пропущена пауза - Пропущена пауза - Пропущена концовка - Пропущен предпросмотр - Пропущен предпросмотр - Пропущено краткое изложение - Пропущена вставка - Пропущен сегмент без музыки - Пропущен неподтвержденный сегмент - Пропущено несколько сегментов + Вступление пропущено + Антракт пропущен + Антракт пропущен + Концовка пропущена + Предпросмотр пропущен + Предпросмотр пропущен + Пересказ пропущен + Заполнитель пропущен + Сегмент без музыки пропущен + Неопубликованный сегмент пропущен + Несколько сегментов пропущены Пропускать автоматически Пропускать автоматически один раз Кнопка пропуска @@ -866,9 +866,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Выбрать категорию сегмента Категория отключена в настройках. Включите категорию для отправки. Новый сегмент SponsorBlock - - Установить %1$02d:%2$02d:%3$03d как начало или конец нового сегмента? + Установить %s в качестве начала или конца нового сегмента? начало конец сейчас @@ -880,7 +878,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Сегмент от\n\n%1$s\nдо\n%2$s\n\n(%3$s)\n\nГотов к отправке? Начало должно быть перед окончанием Сначала отметьте два места на шкале времени - Предварительный просмотр сегмента для обеспечения плавного пропуска + Просмотрите сегмент и убедитесь, что пропуск происходит плавно Изменить время сегмента вручную Вы хотите изменить время начала или окончания сегмента? Указано неверное время @@ -1119,8 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Клиент не подменен\n\nВоспроизведение видео может не работать Отключение этой настройки может вызвать проблемы с воспроизведением видео. Подмена клиента на iOS - В настоящее время клиент подменен на iOS\n\nПобочные эффекты включают:\n• Отсутствует HDR видео\n• История просмотров может не работать\n• Более высокие качества видео могут отсутствовать\n• Прямые трансляции не могут воспроизводиться только как аудио\n• Прямые трансляции недоступны на Android 8.0 - В настоящее время клиент подменен на Android VR\n\nПобочные эффекты включают:\n• Отсутствует HDR видео\n• Детские видео не воспроизводятся\n• Приостановленные видео могут случайно возобновляться\n• Миниатюры прогресса воспроизведения Shorts низкого качества\n• Кнопка \"Скачать\" всегда скрыта\n• Заставки следующих видео в конце просмотра всегда скрыты + В настоящее время клиент подменен на iOS\n\nПобочные эффекты включают:\n• Отсутствует HDR видео\n• Более высокие качества видео могут отсутствовать\n• Прямые трансляции не могут воспроизводиться только как аудио + В настоящее время клиент подменен на Android VR\n\nПобочные эффекты включают:\n• Отсутствует HDR видео\n• Детские видео не воспроизводятся\n• Приостановленные видео могут случайно возобновляться\n• Миниатюры прогресса воспроизведения Shorts низкого качества\n• Кнопка \"Скачать\" скрыта\n• Заставки следующих видео в конце просмотра скрыты Миниатюры в режиме подмены клиента недоступны (время API истекло) Миниатюры в режиме подмены клиента временно недоступны: %s diff --git a/src/main/resources/addresources/values-si-rLK/strings.xml b/src/main/resources/addresources/values-si-rLK/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-si-rLK/strings.xml +++ b/src/main/resources/addresources/values-si-rLK/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-sk-rSK/strings.xml b/src/main/resources/addresources/values-sk-rSK/strings.xml index 466011cc5..16bad66ce 100644 --- a/src/main/resources/addresources/values-sk-rSK/strings.xml +++ b/src/main/resources/addresources/values-sk-rSK/strings.xml @@ -859,9 +859,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Vyberte kategóriu segmentu Kategória je v nastaveniach zakázaná. Povoľte odoslanie kategórie. Nový SponsorBlock segment - - Nastaviť %1$02d:%2$02d:%3$03d ako začiatok alebo koniec nového segmentu? štart koniec teraz @@ -1107,8 +1104,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Klient nie je sfalšovaný\n\nPrehrávanie videa nemusí fungovať Vypnutie tohto nastavenia môže spôsobiť problémy s prehrávaním videa. Spoof klienta na iOS - Klient je momentálne sfalšovaný na iOS\n\nVedľajšie účinky zahŕňajú:\n• Žiadne HDR video\n• História pozerania nemusí fungovať\n• Môže chýbať vyššia kvalita videa\n• Priame prenosy nemožno prehrávať len ako zvuk\n• Naživo streamy nie sú k dispozícii v systéme Android 8.0 - Klient je momentálne sfalšovaný na Android VR\n\nVedľajšie účinky zahŕňajú:\n• Žiadne HDR video\n• Videá pre deti sa neprehrávajú\n• Pozastavené videá sa môžu náhodne obnoviť\n• Miniatúry vyhľadávacieho panela Shorts v nízkej kvalite\n• Tlačidlo akcie Stiahnuť je vždy skryté\n• Karty záverečnej obrazovky sú vždy skryté Sfalšované miniatúry klientov nie sú k dispozícii (vypršal časový limit rozhrania API) Sfalšované klientske miniatúry sú dočasne nedostupné: %s diff --git a/src/main/resources/addresources/values-sl-rSI/strings.xml b/src/main/resources/addresources/values-sl-rSI/strings.xml index 953bd725f..d32bf3fc0 100644 --- a/src/main/resources/addresources/values-sl-rSI/strings.xml +++ b/src/main/resources/addresources/values-sl-rSI/strings.xml @@ -180,8 +180,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Izgled - diff --git a/src/main/resources/addresources/values-sq-rAL/strings.xml b/src/main/resources/addresources/values-sq-rAL/strings.xml index 7f6cabb18..d7e6ed299 100644 --- a/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Rivendos @@ -43,7 +42,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Rreth nesh @@ -164,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Rreth nesh @@ -172,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t - Pamja - - Po ngarkohet... - Rivendos - Rreth nesh - Default @@ -215,7 +205,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Largoje @@ -256,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - E ç\'aktivizuar diff --git a/src/main/resources/addresources/values-sr-rSP/strings.xml b/src/main/resources/addresources/values-sr-rSP/strings.xml index 109e75397..5395bf6fb 100644 --- a/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -31,8 +31,8 @@ This is because Crowdin requires temporarily flattening this file and removing t You're not correct. This is not the "correct" way and this text will not appear as expected the in app --> - - + + ReVanced Желите ли да наставите? Ресетуј @@ -43,8 +43,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Подешавања ReVanced-а су враћена на подразумеване вредности Увезено %d подешавања Неуспешан увоз: %s - - + + MicroG GmsCore није инсталиран. Инсталирајте га. Неопходна радња @@ -52,10 +52,10 @@ This is because Crowdin requires temporarily flattening this file and removing t Отвори веб-сајт Оптимизација батерије за MicroG GmsCore мора бити онемогућена да би се спречили проблеми.\n\nДодирните дугме „Настави” и онемогућите оптимизацију батерије. Настави - - - - + + + + ReVanced Користите верзију <i>%s</i> ReVanced печева Напомена @@ -63,8 +63,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Званични линкови Увоз / Извоз Увоз / Извоз подешавања ReVanced-а - - + + О програму Огласи Алтернативне сличице @@ -76,8 +76,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Контроле превлачења Разно Видео - - + + Отклањање грешака Омогућите или онемогућите опције за отклањање грешака Евидентирање отклањања грешака @@ -93,8 +93,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Искачуће обавештење се приказује ако дође до грешке Искачуће обавештење се не приказује ако дође до грешке Искључивање искачућих обавештења о грешци сакрива сва обавештења о грешкама у ReVanced-у.\n\nНећете бити обавештени ни о каквим неочекиваним догађајима. - - + + Онемогући сјај дугмади „Свиђа ми се” / „Запрати” Дугмад „Свиђа ми се” и „Запрати” неће светлети када се притисну Дугмад „Свиђа ми се” и „Запрати” ће светлети када се притисну @@ -250,8 +250,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Неважећа кључна реч. „%1$s” је краће од %2$d знакова Кључна реч „%s” ће сакрити све видее - - + + Сакриј опште огласе Општи огласи су скривени Општи огласи су приказани @@ -285,18 +285,18 @@ This is because Crowdin requires temporarily flattening this file and removing t Банери с робом су приказани Сакривање огласа преко целог екрана ради само са старијим уређајима - - + + Сакриј промоције за YouTube Premium Промоције за YouTube Premium испод видео плејера су скривене Промоције за YouTube Premium испод видео плејера су приказане - - + + Сакриј огласе у видеу Огласи у видеу су скривени Огласи у видеу су приказани - - + + Линк је копиран у привремену меморију Линк са временском ознаком је копиран Прикажи дугме за копирање линка видеа @@ -305,14 +305,14 @@ This is because Crowdin requires temporarily flattening this file and removing t Прикажи дугме за копирање линка видеа са временском ознаком Дугме је приказано. Додирните да бисте копирали линк видеа с временском ознаком. Додирните и задржите да бисте копирали линк видеа без временске ознаке Дугме није приказано - - + + Уклони дијалог о дискрецији гледаоца Дијалог ће бити уклоњен Дијалог ће бити приказан Ово не заобилази старосно ограничење. Само га аутоматски прихвата. - - + + Спољна преузимања Подешавања за коришћење спољног програма за преузимање Прикажи дугме за спољно преузимање @@ -325,18 +325,18 @@ This is because Crowdin requires temporarily flattening this file and removing t Назив пакета програма за преузимање Назив пакета инсталираног спољног програма за преузимање, као што је NewPipe или Seal %s није инсталиран. Инсталирајте га. - - + + Онемогући покрет прецизног премотавања Покрет прецизног премотавања је онемогућен Покрет прецизног премотавања је омогућен - - + + Омогући додиривање траке за премотавање Додиривање траке за премотавање је омогућено Додиривање траке за премотавање је онемогућено - - + + Омогући покрет за осветљеност Превлачење за подешавање осветљености је омогућено Превлачење за подешавање осветљености је онемогућено @@ -364,13 +364,13 @@ This is because Crowdin requires temporarily flattening this file and removing t Видљивост позадине покрета превлачења Праг трајања превлачења Износ прага трајања превлачења - - + + Онемогући аутоматске титлове Аутоматски титлови су онемогућени Аутоматски титлови су омогућени - - + + Дугмад радњи Сакријте или прикажите дугмад испод видеа Сакриј дугмад „Свиђа ми се” и „Не свиђа ми се” @@ -405,24 +405,24 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј дугме „Сачувај на плејлисту” Дугме „Сачувај на плејлисту” је скривено Дугме „Сачувај на плејлисту” је приказано - - + + Сакриј дугме „Аутоплеј” Дугме „Аутоплеј” је скривено Дугме „Аутоплеј” је приказано - - + + Сакриј дугме „Титл” Дугме „Титл” је скривено Дугме „Титл” је приказано - - + + Сакриј дугме „Пребацуј” Дугме „Пребацуј” је скривено Дугме „Пребацуј” је приказано - - + + Дугмад навигације Сакријте или промените дугмад на траци за навигацију @@ -448,8 +448,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј ознаке дугмади за навигацију Ознаке дугмади за навигацију су скривене Ознаке дугмади за навигацију су приказане - - + + Падајући мени Сакријте или прикажите предмете у падајућем менију плејера @@ -493,18 +493,18 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј дугме „Гледај у ВР” Дугме „Гледај у ВР” је скривено Дугме „Гледај у ВР” је приказано - - + + Сакриј дугмад за претходни и следећи видео Дугмад су скривена Дугмад су приказана - - + + Сакриј картице албума Картице албума су скривене Картице албума су приказане - - + + Коментари Сакријте или прикажите компоненте одељка за коментаре Сакриј заглавље „Коментари од чланова” @@ -525,18 +525,18 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј дугмад за временску ознаку и емоџије Дугмад за временску ознаку и емоџије су скривена Дугмад за временску ознаку и емоџије су приказана - - + + Сакриј кутију за колективно финансирање Кутија за колективно финансирање је скривена Кутија за колективно финансирање је приказана - - + + Сакриј картице завршног екрана Картице завршног екрана су скривене Картице завршног екрана су приказане - - + + Трака филтера Сакријте или прикажите траку филтера у фиду, претрази или сродним видеима Сакриј у фиду @@ -548,36 +548,36 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј у сродним видеима Скривено у сродним видеима Приказано у сродним видеима - - + + Сакриј плутајуће дугме микрофона Плутајуће дугме микрофона је скривено Плутајуће дугме микрофона је приказано - - + + Онемогући амбијентални режим у режиму целог екрана Амбијентални режим у режиму целог екрана је онемогућен Амбијентални режим у режиму целог екрана је омогућен - - + + Сакриј инфо картице Инфо картице су скривене Инфо картице су приказане - - + + Онемогући анимације бројева Бројеви нису анимирани Бројеви су анимирани - - + + Сакриј траку за премотавање у видео плејеру Трака за премотавање у видео плејеру је скривена Трака за премотавање у видео плејеру је приказана Сакриј траку за премотавање на сличици видеа Трака за премотавање на сличици видеа је скривена Трака за премотавање на сличици видеа је приказана - - + + Сакриј Shorts видее у фиду „Почетна” Shorts видеи у фиду „Почетна” су скривени @@ -656,28 +656,28 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј траку за навигацију Трака за навигацију је скривена Трака за навигацију је приказана - - + + Онемогући предложени видео на завршном екрану Предложени видеи на завршном екрану ће бити скривени Предложени видеи на завршном екрану ће бити приказани - - + + Сакриј временску ознаку видеа Временска ознака видеа је скривена Временска ознака видеа је приказана - - + + Сакриј искачуће панеле плејера Искачући панели плејера су скривени Искачући панели плејера су приказани - - + + Непрозирност слоја плејера Вредност непрозирности између 0-100, где је 0 прозирно Прозирност преклопа плејера мора бити између 0-100 - - + + Скривено Несвиђања привремено нису доступна (API истекао) @@ -721,18 +721,18 @@ This is because Crowdin requires temporarily flattening this file and removing t Није остварено ниједно ограничење стопе клијента Број остварених ограничења стопе клијента: %d %d милисекунди - - + + Омогући широку траку за претрагу Широка трака за претрагу је омогућена Широка трака за претрагу је онемогућена - - + + Врати старе сличице на траци за премотавање Сличице траке за премотавање ће се појавити изнад ње Сличице траке за премотавање ће се појавити у режиму целог екрана - - + + Омогући SponsorBlock SponsorBlock је систем направљен од заједнице корисника и служи за прескакање досадних делова YouTube видеа Изглед @@ -867,9 +867,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Изаберите категорију сегмента Категорија је онемогућена у подешавањима. Омогућите категорију да бисте поднели. Нови SponsorBlock сегмент - - Поставити %1$02d:%2$02d:%3$03d као почетак или крај новог сегмента? + Поставити %s као почетак или крај новог сегмента? почетак крај сада @@ -914,8 +912,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Ресетуј О програму Податке обезбеђује SponsorBlock API. Додирните овде да бисте сазнали више и видели преузимања за друге платформе - - + + Лажирана верзија апликације Верзија је лажирана Верзија није лажирана @@ -929,8 +927,8 @@ This is because Crowdin requires temporarily flattening this file and removing t 18.09.39 - Враћа картицу збирке 17.41.37 - Враћа стару полицу плејлисте 17.33.42 - Враћа стари изглед корисничког интерфејса - - + + Подешавање почетне странице Подразумевана @@ -946,19 +944,19 @@ This is because Crowdin requires temporarily flattening this file and removing t Историја У тренду - - + + Онемогући наставак репродукције Shorts плејера Shorts плејер неће наставити репродукцију при покретању апликације Shorts плејер ће наставити репродукцију при покретању апликације - - + + Омогући кориснички интерфејс таблета Кориснички интерфејс таблета је омогућен Кориснички интерфејс таблета је онемогућен Објаве заједнице се не приказују у корисничком интерфејсу таблета - - + + Мини-плејер Промените стил минимизираног плејера у апликацији Тип мини-плејера @@ -980,26 +978,26 @@ This is because Crowdin requires temporarily flattening this file and removing t Прозирност преклопа Вредност непрозирности између 0-100, где је 0 прозирно Прозирност преклопа мини-плејера мора бити између 0-100 - - + + Омогући екран учитавања с градијентом Екран учитавања ће имати позадину с градијентом Екран учитавања ће имати обичну позадину - - + + Омогући прилагођену боју траке за премотавање Прилагођена боја траке за премотавање је приказана Оригинална боја траке за премотавање је приказана Прилагођена боја траке за премотавање Боја траке за премотавање Неважећа вредност боје траке за премотавање. Коришћење подразумеване вредности. - - + + Заобиђи ограничења региона слике Коришћење хоста слике yt4.ggpht.com Коришћење оригиналног хоста слике\n\nОмогућавањем овога можете да поправите недостајуће слике које су блокиране у неким регионима - - + + Картица „Почетна” @@ -1030,51 +1028,51 @@ This is because Crowdin requires temporarily flattening this file and removing t DeArrow привремено није доступан (кôд статуса: %s) DeArrow привремено није доступан - - + + Прикажи саопштења ReVanced-а Саопштења су приказана при покретању Саопштења нису приказана при покретању Приказивање саопштења при покретању Неуспешно повезивање са пружаоцем саопштења Одбаци - - + + Омогући аутоматско понављање видеа Аутоматско понављање видеа је омогућено Аутоматско понављање видеа је онемогућено - - + + Лажиране димензије уређаја Димензије уређаја су лажиране\n\nВиши квалитети видеа ће можда бити откључан, али ћете можда имати застој при репродукцији видеа, краће трајање батерије и непознате нежељене ефекте Димензије уређаја нису лажиране\n\nАко ово омогућите, виши квалитети видеа ће се можда откључати Ако ово омогућите, можда ће доћи до застоја при репродукцији видеа, краћег трајања батерије и непознатих нежељених ефеката. - - + + Подешавања GmsCore-а Подешавања за GmsCore - - + + Заобиђи URL преусмеравања URL преусмеравања се заобилазе URL преусмеравања се не заобилазе - - + + Отвори линкове у прегледачу Отварање линкова ван апликације Отварање линкова у апликацији - - + + Уклони параметар упита за праћење Параметар упита за праћење је уклоњен из линкова Параметар упита за праћење није уклоњен из линкова - - + + Онемогући вибрацију при увеличавању Вибрација при увеличавању је онемогућена Вибрација при увеличавању је омогућена - - + + Аутоматски квалитет Запамти промене квалитета видеа Промене квалитета се примењују на све видее @@ -1084,36 +1082,36 @@ This is because Crowdin requires temporarily flattening this file and removing t на мобилним подацима на Wi-Fi мрежи Промењен подразумевани квалитет %1$s на: %2$s - - + + Прикажи дугме дијалога за брзину Дугме је приказано Дугме није приказано - - + + Прилагођене брзине репродукције Додајте или промените доступне брзине репродукције Прилагођене брзине репродукције морају бити мање од %s. Коришћење подразумеваних вредности. Неважеће прилагођене брзине репродукције. Коришћење подразумеваних вредности. - - + + Запамти промене брзине репродукције Промене брзине репродукције се примењују на све видее Промене брзине репродукције се примењују само на тренутни видео Подразумевана брзина репродукције Брзина репродукције промењена на: %s - - + + Врати стари мени квалитета видеа Стари мени квалитета видеа је приказан Стари мени квалитета видеа није приказан - - + + Омогући превлачење за премотавање Превлачење за премотавање је омогућено Превлачење за премотавање није омогућено - - + + Лажиран клијент Лажирање клијента да би се спречили проблеми са репродукцијом Лажиран клијент @@ -1121,13 +1119,11 @@ This is because Crowdin requires temporarily flattening this file and removing t Клијент није лажиран\n\nРепродукција видеа можда неће радити Искључивање овог подешавања можда ће изазвати проблеме са репродукцијом видеа. Лажиран клијент на iOS - Клијент је тренутно лажиран на iOS\n\nНежељени ефекти обухватају:\n• Нема HDR видеа\n• Историја гледања можда неће радити\n• Виши квалитети видеа можда ће недостајати\n• Стримови уживо не могу да се пуштају само као аудио\n• Стримови уживо нису доступни на Android верзији 8.0 - Клијент је тренутно лажиран на Android VR\n\nНежељени ефекти обухватају:\н• Нема HDR видеа\n• Дечји видео снимци се не репродукују\n• Паузирани видео снимци могу насумично да се настављају\n• Сличице на траци за премотавање Shorts видеа лошег квалитета\n• Дугме за радњу „Преузми“ је увек скривено\n• Картице завршног екрана су увек скривене Сличице у лажираном клијенту нису доступне (API истекао) Сличице у лажираном клијенту привремено нису доступне: %s - + - + Лажирани потпис апликације Лажирање потписа апликације да би се спречили проблеми с репродукцијом Лажирани потпис апликације @@ -1142,52 +1138,52 @@ This is because Crowdin requires temporarily flattening this file and removing t Сториборд није лажиран\n\nНежељени ефекти укључују:\n• Нема амбијенталног режима\n• Сличице на траци за премотавање су скривене Лажирање сториборда привремено није доступно (API је истекао) Лажирање сториборда привремено није доступно: %s - + - + Омогући аутоматску осветљеност HDR режима Аутоматска осветљеност HDR режима је омогућена Аутоматска осветљеност HDR режима је онемогућена - - - - + + + + Блокирај аудио огласе Аудио огласи су блокирани Аудио огласи су одблокирани - - + + %s недоступан. Огласи ће се можда приказивати. Покушајте да пређете на другу услугу за блокирање огласа у подешавањима. %s сервер је вратио грешку. Огласи ће се можда приказивати. Покушајте да пређете на другу услугу за блокирање огласа у подешавањима. Блокирање уграђених видео огласа Онемогућено Luminous прокси PurpleAdBlock прокси - - + + Блокирај видео огласе Видео огласи су блокирани Видео огласи су одблокирани - - + + порука избрисана Приказ избрисаних порука Не приказуј избрисане поруке Сакриј избрисане поруке иза спојлера Прикажи избрисане поруке као прецртан текст - - + + Аутоматски преузми бодове канала Бодови канала су аутоматски преузети Бодови канала нису аутоматски преузети - - + + Омогући Twitch режим отклањања грешака Twitch режим отклањања грешака је омогућен (није препоручено) Twitch режим отклањања грешака је онемогућен - - + + Подешавања ReVanced-а Огласи Подешавања блокирања огласа @@ -1202,6 +1198,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Евидентирање отклањања грешака Евиденције отклањања грешака су омогућене Евиденције отклањања грешака су онемогућене - - + + diff --git a/src/main/resources/addresources/values-sv-rSE/strings.xml b/src/main/resources/addresources/values-sv-rSE/strings.xml index 418fa54a0..c94c03094 100644 --- a/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -866,9 +866,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Välj segmentkategori Kategorin är inaktiverad i inställningar. Aktivera kategori för att skicka. Nytt Sponsorblock-segment - - Vill du ange %1$02d:%2$02d:%3$03d som början eller slutet av ett nytt segment? + Ange %s som början eller slutet av ett nytt segment? start slut nu @@ -1119,8 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Klienten är inte förfalskad\n\nVideouppspelning kanske inte fungerar Att stänga av den här inställningen kan orsaka videouppspelningsproblem. Spoof klient till iOS - Klienten är för närvarande förfalskad till iOS\n\nBiverkningar inkluderar:\n• Ingen HDR-video\n• Titta på historiken fungerar kanske inte\n• Högre videokvaliteter kan saknas\n• Livesändningar kan inte spelas upp som ljud endast\n• Livesändningar inte tillgängliga på Android 8.0 - Klienten är för närvarande förfalskad till Android VR\n\nBiverkningar inkluderar:\n• Ingen HDR-video\n• Barnvideor spelar inte upp\n• Pausade videor kan slumpmässigt återuppta\n• Lågkvalitativa Shorts seekbar miniatyrer\n• Nedladdningsknappen är alltid dold\n• Slutskärmskort är alltid dolda + Klienten är för närvarande förfalskad till iOS\n\nBiverkningar inkluderar:\n• Ingen HDR-video\n• Högre videokvaliteter kan saknas\n• Live-strömmar kan inte endast spela upp som ljud + Klienten är för närvarande förfalskad till Android VR\n\nBiverkningar inkluderar:\n• Ingen HDR-video\n• Barnvideor spelar inte upp\n• Pausade videor kan slumpmässigt återuppta\n• Lågkvalitativa Shorts seekbar miniatyrer\n• Nedladdningsknappen är dold\n• Slutskärmskorten är dolda Spoof klientminiatyrer är inte tillgängliga (API gick ut) Miniatyrer för Spoof klientminiatyrer tillfälligt inte tillgängliga: %s diff --git a/src/main/resources/addresources/values-sw-rKE/strings.xml b/src/main/resources/addresources/values-sw-rKE/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-sw-rKE/strings.xml +++ b/src/main/resources/addresources/values-sw-rKE/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-ta-rIN/strings.xml b/src/main/resources/addresources/values-ta-rIN/strings.xml index f70f13557..f3668f020 100644 --- a/src/main/resources/addresources/values-ta-rIN/strings.xml +++ b/src/main/resources/addresources/values-ta-rIN/strings.xml @@ -180,8 +180,6 @@ This is because Crowdin requires temporarily flattening this file and removing t தோற்றம் - diff --git a/src/main/resources/addresources/values-te-rIN/strings.xml b/src/main/resources/addresources/values-te-rIN/strings.xml index b769e5a52..d7e6ed299 100644 --- a/src/main/resources/addresources/values-te-rIN/strings.xml +++ b/src/main/resources/addresources/values-te-rIN/strings.xml @@ -42,7 +42,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - గురించి @@ -163,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - గురించి @@ -171,16 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t - స్వరూపం - - లోడ్ అవుతుంది... - గురించి - ตั้ง %1$02d:%2$02d:%3$03d เป็นเวลาเริ่มต้นเวลาจบในส่วนใหม่ เริ่มต้น จบ ขณะนี้ diff --git a/src/main/resources/addresources/values-tl-rPH/strings.xml b/src/main/resources/addresources/values-tl-rPH/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-tl-rPH/strings.xml +++ b/src/main/resources/addresources/values-tl-rPH/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-tr-rTR/strings.xml b/src/main/resources/addresources/values-tr-rTR/strings.xml index b0cbb79ab..d24106d44 100644 --- a/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -864,9 +864,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Bölümün kategorisini seçin Kategori, ayarlarda devre dışı bırakıldı. Göndermek için kategoriyi etkinleştirin. Yeni SponsorBlock bölümü - - %1$02d:%2$02d:%3$03d yeni bölümün başlangıcı olarak mı, bitişi olarak mı ayarlansın? + %s bu kısmın başlangıcı mı, bitişi mi olarak ayarlansın? başlangıç bitiş şimdi @@ -1117,8 +1115,8 @@ This is because Crowdin requires temporarily flattening this file and removing t İstemci taklit edilmiyor\n\nVideo oynatma çalışmayabilir Bu ayarı devre dışı bırakmak video oynatma sorunlarına yol açabilir. İstemciyi iOS olarak taklit et - İstemci şu anda iOS olarak taklit ediliyor\n\nYan etkiler şunları içerir:\n• HDR videolar yok\n• İzleme geçmişi çalışmayabilir\n• Yüksek video kaliteleri eksik olabilir\n• Canlı yayınlar sadece ses olarak oynatılamaz\n• Canlı yayınlar Android 8.0\'da izlenemez - İstemci şu anda Android VR olarak taklit ediliyor\n\nYan etkiler şunları içerir:\n• HDR videolar yok\n• Çocuklara özel videolar oynatılamaz\n• Duraklatılmış videolar rastgele bir şekilde devam edebilir\n• Shorts zaman çubuğu küçük resimleri düşük kalitede\n• \'İndir\' eylem düğmesi her zaman gizli\n• Bitiş ekranı kartları her zaman gizli + İstemci şu anda iOS olarak taklit ediliyor\n\nYan etkiler şunları içerir:\n• HDR videolar yok\n• Yüksek görüntü kaliteleri eksik olabilir\n• Canlı yayınlar sadece ses olarak oynatılamaz + İstemci şu anda Android VR olarak taklit ediliyor\n\nYan etkiler şunları içerir:\n• HDR videolar yok\n• Çocuklara özel videolar oynatılamaz\n• Duraklatılmış videolar rastgele bir şekilde devam edebilir\n• Shorts zaman çubuğu küçük resimleri düşük kalitede\n• \'İndir\' eylem düğmesi gizli\n• Bitiş ekranı kartları gizli İstemci küçük resimlerini taklit etme kullanılamıyor (API zaman aşımına uğradı) İstemci küçük resimlerini taklit etme geçici olarak kullanılamıyor: %s diff --git a/src/main/resources/addresources/values-uk-rUA/strings.xml b/src/main/resources/addresources/values-uk-rUA/strings.xml index 3c2d5e4bc..fd270bed9 100644 --- a/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -864,9 +864,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Вибрати категорію сегмента Категорія вимкнена у налаштуваннях. Увімкніть категорію, щоб надіслати. Новий сегмент SponsorBlock - - Встановити %1$02d:%2$02d:%3$03d як початок або кінець нового сегмента? + Встановити %s як початок чи кінець нового сегмента? початок кінець зараз @@ -1117,8 +1115,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Клієнт не підроблений\n\nВідтворення відео може не працювати Вимкнення цього параметра може призвести до проблем відтворення відео. Підробити клієнт на iOS - Наразі клієнт підроблений на iOS\n\nПобічні ефекти:\n• Немає HDR відео\n• Історія переглядів може не працювати\n• Високі якості відео можуть бути відсутні\n• Прямі трансляції не відтворюються в режимі аудіо\n• Прямі трансляції недоступні на Android 8.0 - Наразі клієнт підроблений на Android VR\n\nПобічні ефекти:\n• Немає HDR відео\n• Відео для дітей не відтворюються\n• Призупинені відео можуть випадково продовжуватися\n• Низька якість мініатюр панелі прогресу Shorts\n• Кнопка завантаження завжди прихована\n• Картки кінцевого екрана завжди приховані + Наразі клієнт підроблений на iOS\n\nПобічні ефекти:\n• Немає HDR відео\n• Високі якості відео можуть бути відсутні\n• Прямі трансляції не відтворюються в режимі аудіо + Наразі клієнт підроблений на Android VR\n\nПобічні ефекти:\n• Немає HDR відео\n• Відео для дітей не відтворюються\n• Призупинені відео можуть випадково продовжуватися\n• Низька якість мініатюр панелі прогресу Shorts\n• Кнопка завантаження прихована\n• Картки кінцевого екрана приховані Мініатюри в режимі підробки клієнта не доступні (закінчився час API) Мініатюри в режимі підробки клієнта тимчасово не доступні: %s diff --git a/src/main/resources/addresources/values-ur-rIN/strings.xml b/src/main/resources/addresources/values-ur-rIN/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-ur-rIN/strings.xml +++ b/src/main/resources/addresources/values-ur-rIN/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - diff --git a/src/main/resources/addresources/values-uz-rUZ/strings.xml b/src/main/resources/addresources/values-uz-rUZ/strings.xml index 11cfdb81a..d7e6ed299 100644 --- a/src/main/resources/addresources/values-uz-rUZ/strings.xml +++ b/src/main/resources/addresources/values-uz-rUZ/strings.xml @@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Oddiy holga qaytarish @@ -43,7 +42,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Haqida @@ -164,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - Haqida @@ -174,14 +171,9 @@ This is because Crowdin requires temporarily flattening this file and removing t - - Yuklanmoqda... - Oddiy holga qaytarish - Haqida - O\'tkazib yuborish @@ -254,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - O\'chirilgan diff --git a/src/main/resources/addresources/values-vi-rVN/strings.xml b/src/main/resources/addresources/values-vi-rVN/strings.xml index db3eb36d3..1c2d80061 100644 --- a/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -71,7 +71,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Bố cục chung Thanh tiến trình Cử chỉ vuốt - Linh tinh + Cài đặt khác Video @@ -864,9 +864,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Chọn danh mục phân đoạn Danh mục này bị tắt trong cài đặt. Bật danh mục để gửi. Tạo phân đoạn SponsorBlock mới - - Đặt %1$02d:%2$02d:%3$03d là bắt đầu hay kết thúc của một phân đoạn mới? + Đặt %s là bắt đầu hoặc là kết thúc của một phân đoạn mới? bắt đầu kết thúc bây giờ @@ -991,6 +989,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Màu thanh tiến trình không hợp lệ. + Vượt qua hạn chế khu vực cho hình ảnh + Sử dụng máy chủ hình ảnh yt4.ggpht.com + Sử dụng máy chủ lưu trữ hình ảnh gốc\n\nBật tính năng này có thể khắc phục tình trạng hình ảnh bị chặn ở một số khu vực @@ -1114,8 +1115,6 @@ This is because Crowdin requires temporarily flattening this file and removing t Máy khách chưa được giả mạo\n\nPhát nền video có thể không hoạt động Việc tắt cài đặt này có thể gây ra sự cố phát nền video. Giả mạo máy khách cho iOS - Hiện tại máy khách đang giả mạo thành iOS\n\nTác dụng phụ bao gồm:\n• Không có video HDR\n• Lịch sử xem có thể không hoạt động\n• Chất lượng cao hơn cho video có thể thiếu\n• Phát trực tiếp không thể phât dạng chỉ âm thanh\n• Phát trực tiếp không khả dụng trên Android 8.0 - Hiện tại máy khách đang giả mạo thành Android VR\n\nTác dụng phụ bao gồm:\n• Không có video HDR\n• Video dành cho trẻ em không phát\n• Video đã tạm dừng có thể ngẫu nhiên phát tiếp\n• Hình thu nhỏ thanh tiến trình Shorts có chất lượng thấp\n• Nút hành động tải xuống luôn ẩn\n• Các thẻ màn hình kết thúc luôn ẩn Hình thu nhỏ giả mạo máy khách không khả dụng (API hết hạn) Hình thu nhỏ giả mạo máy khách tạm thời không khả dụng: %s @@ -1169,8 +1168,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Cài đặt chặn quảng cáo Trò chuyện Cài đặt trò chuyện - Linh tinh - Cài đặt linh tinh + Cài đặt khác + Cài đặt khác Cài đặt chung Cài đặt khác Quảng cáo phía máy khách diff --git a/src/main/resources/addresources/values-zh-rCN/strings.xml b/src/main/resources/addresources/values-zh-rCN/strings.xml index d3e1c8bcc..46e07dea8 100644 --- a/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -864,9 +864,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 选择片段的类别 分类在设置中被禁用。启用类别以提交。 新的 SpongorBlock 片段 - - 设置 %1$02d:%2$02d:%3$03d 作为新片段的开始或结束? + 设置 %s 为新片段的开始或结束? 开始 结束 现在 @@ -1116,7 +1114,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 客户端未伪装\n\n可能无法正常播放视频 关闭此选项可能会导致视频不能正常播放。 伪装客户端为 iOS - 客户端目前被伪装成Android VR\n\n辅助效果包括:\n无 HDR视频\n• 儿童视频不播放\n• 暂停的视频可以随机恢复\n• 低质量的短讯寻找缩略图\n• 下载动作按钮总是隐藏的\n• 终点屏卡总是隐藏的 + 客户端目前被伪装成iOS\n\n附带效果包括:\n• 无 HDR 视频\n• 更高的视频质量可能丢失\n• 现场直播不能仅作为音频播放 伪装客户端缩略图不可用(API 超时) 伪装客户端缩略图暂时不可用: %s diff --git a/src/main/resources/addresources/values-zh-rHK/strings.xml b/src/main/resources/addresources/values-zh-rHK/strings.xml index 89b0983bd..4922e9446 100644 --- a/src/main/resources/addresources/values-zh-rHK/strings.xml +++ b/src/main/resources/addresources/values-zh-rHK/strings.xml @@ -203,8 +203,6 @@ This is because Crowdin requires temporarily flattening this file and removing t 主題 - diff --git a/src/main/resources/addresources/values-zh-rTW/strings.xml b/src/main/resources/addresources/values-zh-rTW/strings.xml index 3ee29ad9a..824600f39 100644 --- a/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -864,9 +864,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 選擇片段的類別 已在設定中停用類別。啟用類別以提交。 新 SponsorBlock 片段 - - 設定 %1$02d:%2$02d:%3$03d 為新片段的開始或結束? + 將 %s 設為新片段的開始或結束? 開始 結束 現在 @@ -1117,8 +1115,8 @@ This is because Crowdin requires temporarily flattening this file and removing t 尚未欺騙客戶端\n\n影片播放可能未作用 關閉此設定可能會導致影片播放發生問題 欺騙客戶端至 iOS - 用戶端目前偽裝為 iOS\n\n副作用包括:\n・無 HDR 影片\n・觀看記錄可能無法使用\n・更高的影片品質可能缺失\n・直播無法僅作為音訊播放\n・Android 8.0 上無法觀看直播 - 客戶端目前偽裝為 Android VR\n\n副作用包括:\n・無 HDR 影片\n・兒童影片無法播放\n・暫停的影片可能會隨\n恢復播放\n・低品質短片的進度條縮圖\n・下載操作按鈕總是隱藏\n・結尾畫面卡片總是隱藏 + 客戶端目前偽裝為 iOS\n\n副作用包括:\n• 無 HDR 影片\n• 更高的影片品質可能缺失\n• 直播無法僅作為音訊播放 + 客戶端目前偽裝為 Android VR\n\n副作用包括:\n• 無 HDR 影片\n• 兒童影片無法播放\n• 暫停的影片可能會隨\n恢復播放\n• 低品質短片的進度條縮圖\n• 下載操作按鈕隱藏\n• 結尾畫面卡片隱藏 欺騙客戶端縮圖尚不可用 (API 逾時) 欺騙客戶端縮圖暫不可用: %s diff --git a/src/main/resources/addresources/values-zu-rZA/strings.xml b/src/main/resources/addresources/values-zu-rZA/strings.xml index a4fa31ad5..d7e6ed299 100644 --- a/src/main/resources/addresources/values-zu-rZA/strings.xml +++ b/src/main/resources/addresources/values-zu-rZA/strings.xml @@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t - From b292c200bf4ea5b4f71d96690ac011e7843552f0 Mon Sep 17 00:00:00 2001 From: LilithSilver <84940819+LilithSilver@users.noreply.github.com> Date: Wed, 31 Jul 2024 10:53:44 -0700 Subject: [PATCH 34/50] feat(Boost for Reddit): Add `Disable ads` patch (#3474) Co-authored-by: oSumAtrIX --- api/revanced-patches.api | 6 +++++ .../boostforreddit/ads/DisableAdsPatch.kt | 23 +++++++++++++++++++ .../fingerprints/AdmobMediationFingerprint.kt | 7 ++++++ .../fingerprints/MaxMediationFingerprint.kt | 7 ++++++ 4 files changed, 43 insertions(+) create mode 100644 src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/DisableAdsPatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/fingerprints/AdmobMediationFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/fingerprints/MaxMediationFingerprint.kt diff --git a/api/revanced-patches.api b/api/revanced-patches.api index e8eba4ec4..1c47eb4ea 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -684,6 +684,12 @@ public final class app/revanced/patches/reddit/customclients/baconreader/api/Spo public fun patchClientId (Ljava/util/Set;Lapp/revanced/patcher/data/BytecodeContext;)V } +public final class app/revanced/patches/reddit/customclients/boostforreddit/ads/DisableAdsPatch : app/revanced/patcher/patch/BytecodePatch { + public static final field INSTANCE Lapp/revanced/patches/reddit/customclients/boostforreddit/ads/DisableAdsPatch; + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V +} + public final class app/revanced/patches/reddit/customclients/boostforreddit/api/SpoofClientPatch : app/revanced/patches/reddit/customclients/BaseSpoofClientPatch { public static final field INSTANCE Lapp/revanced/patches/reddit/customclients/boostforreddit/api/SpoofClientPatch; public fun patchClientId (Ljava/util/Set;Lapp/revanced/patcher/data/BytecodeContext;)V diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/DisableAdsPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/DisableAdsPatch.kt new file mode 100644 index 000000000..00fc7b829 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/DisableAdsPatch.kt @@ -0,0 +1,23 @@ +package app.revanced.patches.reddit.customclients.boostforreddit.ads + +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patches.reddit.customclients.boostforreddit.ads.fingerprints.* +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.patch.annotation.CompatiblePackage +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.util.resultOrThrow + +@Patch( + name = "Disable ads", + compatiblePackages = [CompatiblePackage("com.rubenmayayo.reddit")], +) +@Suppress("unused") +object DisableAdsPatch : BytecodePatch( + setOf(MaxMediationFingerprint, AdmobMediationFingerprint), +) { + override fun execute(context: BytecodeContext) = + arrayOf(MaxMediationFingerprint, AdmobMediationFingerprint).forEach { + it.resultOrThrow().mutableMethod.addInstructions(0, "return-void") + } +} diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/fingerprints/AdmobMediationFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/fingerprints/AdmobMediationFingerprint.kt new file mode 100644 index 000000000..526dc9e96 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/fingerprints/AdmobMediationFingerprint.kt @@ -0,0 +1,7 @@ +package app.revanced.patches.reddit.customclients.boostforreddit.ads.fingerprints + +import app.revanced.patcher.fingerprint.MethodFingerprint + +internal object AdmobMediationFingerprint : MethodFingerprint( + strings = listOf("AdmobMediation: Attempting to initialize SDK") +) diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/fingerprints/MaxMediationFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/fingerprints/MaxMediationFingerprint.kt new file mode 100644 index 000000000..38553c0e6 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/fingerprints/MaxMediationFingerprint.kt @@ -0,0 +1,7 @@ +package app.revanced.patches.reddit.customclients.boostforreddit.ads.fingerprints + +import app.revanced.patcher.fingerprint.MethodFingerprint + +internal object MaxMediationFingerprint : MethodFingerprint( + strings = listOf("MaxMediation: Attempting to initialize SDK") +) From 36442a372a9cee95a518f25a78f348e74ce2b6b5 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 31 Jul 2024 17:56:11 +0000 Subject: [PATCH 35/50] chore(release): 4.12.0-dev.13 [skip ci] # [4.12.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.12...v4.12.0-dev.13) (2024-07-31) ### Features * **Boost for Reddit:** Add `Disable ads` patch ([#3474](https://github.com/ReVanced/revanced-patches/issues/3474)) ([b292c20](https://github.com/ReVanced/revanced-patches/commit/b292c200bf4ea5b4f71d96690ac011e7843552f0)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a54076765..7c4c2cdfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.12...v4.12.0-dev.13) (2024-07-31) + + +### Features + +* **Boost for Reddit:** Add `Disable ads` patch ([#3474](https://github.com/ReVanced/revanced-patches/issues/3474)) ([b292c20](https://github.com/ReVanced/revanced-patches/commit/b292c200bf4ea5b4f71d96690ac011e7843552f0)) + # [4.12.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.11...v4.12.0-dev.12) (2024-07-28) diff --git a/gradle.properties b/gradle.properties index 761e41b62..494e8d7e5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.12 +version = 4.12.0-dev.13 From d75b64595a7ac26faca4c0ae21923b22f6783975 Mon Sep 17 00:00:00 2001 From: ILoveOpenSourceApplications <117499019+ILoveOpenSourceApplications@users.noreply.github.com> Date: Thu, 1 Aug 2024 16:57:28 +0530 Subject: [PATCH 36/50] feat(YouTube - Description components): Add `Hide 'Key concepts' section` option (#3495) Co-authored-by: ILoveOpenSourceApplications --- .../youtube/layout/hide/general/HideLayoutComponentsPatch.kt | 1 + src/main/resources/addresources/values/strings.xml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt index 46e87861a..66e025790 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt @@ -97,6 +97,7 @@ object HideLayoutComponentsPatch : BytecodePatch( SwitchPreference("revanced_hide_attributes_section"), SwitchPreference("revanced_hide_chapters_section"), SwitchPreference("revanced_hide_info_cards_section"), + SwitchPreference("revanced_hide_key_concepts_section"), SwitchPreference("revanced_hide_podcast_section"), SwitchPreference("revanced_hide_transcript_section"), ), diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml index 7f5ab9d0d..e13b9b65a 100644 --- a/src/main/resources/addresources/values/strings.xml +++ b/src/main/resources/addresources/values/strings.xml @@ -213,6 +213,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Hide info cards section Info cards section is hidden Info cards section is shown + Hide \'Key concepts\' section + \'Key concepts\' section is hidden + \'Key concepts\' section is shown Hide Transcript section Transcript section is hidden Transcript section is shown From ec3adb5bb17aeb89be0df2690d9ed2e075789a58 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 1 Aug 2024 11:29:29 +0000 Subject: [PATCH 37/50] chore(release): 4.12.0-dev.14 [skip ci] # [4.12.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.13...v4.12.0-dev.14) (2024-08-01) ### Features * **YouTube - Description components:** Add `Hide 'Key concepts' section` option ([#3495](https://github.com/ReVanced/revanced-patches/issues/3495)) ([d75b645](https://github.com/ReVanced/revanced-patches/commit/d75b64595a7ac26faca4c0ae21923b22f6783975)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c4c2cdfb..0c6e5f7a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.13...v4.12.0-dev.14) (2024-08-01) + + +### Features + +* **YouTube - Description components:** Add `Hide 'Key concepts' section` option ([#3495](https://github.com/ReVanced/revanced-patches/issues/3495)) ([d75b645](https://github.com/ReVanced/revanced-patches/commit/d75b64595a7ac26faca4c0ae21923b22f6783975)) + # [4.12.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.12...v4.12.0-dev.13) (2024-07-31) diff --git a/gradle.properties b/gradle.properties index 494e8d7e5..3992252f0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.13 +version = 4.12.0-dev.14 From ee021e37cc36cc2e361a599222eca70acb6dc0b2 Mon Sep 17 00:00:00 2001 From: ReVanced Bot Date: Fri, 2 Aug 2024 15:37:23 +0200 Subject: [PATCH 38/50] chore: Sync translations (#3499) --- .../addresources/values-ar-rSA/strings.xml | 7 +++- .../addresources/values-az-rAZ/strings.xml | 37 ++++++++++--------- .../addresources/values-cs-rCZ/strings.xml | 2 + .../addresources/values-da-rDK/strings.xml | 3 ++ .../addresources/values-de-rDE/strings.xml | 3 ++ .../addresources/values-el-rGR/strings.xml | 3 ++ .../addresources/values-es-rES/strings.xml | 9 +++-- .../addresources/values-fi-rFI/strings.xml | 2 + .../addresources/values-fr-rFR/strings.xml | 3 ++ .../addresources/values-hu-rHU/strings.xml | 3 ++ .../addresources/values-in-rID/strings.xml | 15 ++++++++ .../addresources/values-it-rIT/strings.xml | 3 ++ .../addresources/values-ja-rJP/strings.xml | 3 ++ .../addresources/values-ko-rKR/strings.xml | 21 ++++++----- .../addresources/values-nb-rNO/strings.xml | 3 +- .../addresources/values-nl-rNL/strings.xml | 30 ++++++++------- .../addresources/values-pl-rPL/strings.xml | 3 ++ .../addresources/values-pt-rPT/strings.xml | 3 ++ .../addresources/values-ro-rRO/strings.xml | 5 ++- .../addresources/values-ru-rRU/strings.xml | 17 +++++---- .../addresources/values-sr-rSP/strings.xml | 2 + .../addresources/values-sv-rSE/strings.xml | 3 ++ .../addresources/values-uk-rUA/strings.xml | 7 +++- .../addresources/values-vi-rVN/strings.xml | 2 + .../addresources/values-zh-rCN/strings.xml | 3 ++ .../addresources/values-zh-rTW/strings.xml | 3 ++ 26 files changed, 140 insertions(+), 55 deletions(-) diff --git a/src/main/resources/addresources/values-ar-rSA/strings.xml b/src/main/resources/addresources/values-ar-rSA/strings.xml index c6ccfa3f4..b599d398a 100644 --- a/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -211,6 +211,9 @@ This is because Crowdin requires temporarily flattening this file and removing t إخفاء قسم بطاقات المعلومات تم إخفاء قسم بطاقات المعلومات يتم عرض قسم بطاقات المعلومات + إخفاء قسم \'المفاهيم الأساسية\' + تم إخفاء قسم \'المفاهيم الأساسية\' + يتم عرض قسم \'المفاهيم الأساسية\' إخفاء قسم النص تم إخفاء قسم النص يتم عرض قسم النص @@ -1115,8 +1118,8 @@ This is because Crowdin requires temporarily flattening this file and removing t لا يتم محاكاة العميل\n\nقد لا يعمل تشغيل الفيديو إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو. Spoof Client to iOS - العميل مرسل حالياً إلى iOS\n\nالآثار الجانبية تشمل:\n• لا يوجد HDR فيديو\n• قد تكون جودة فيديو أعلى مفقودة\n• لا يمكن تشغيل البث المباشر للصوت فقط - العميل معطوب حالياً إلى أندرويد VR\n\nالآثار الجانبية تشمل:\n• لا يوجد فيديو HDR\n• فيديوهات الأطفال لا يتم تشغيلهم\n• مقاطع الفيديو الموقوفة يمكن أن تستأنف عشوائياً\n• جودة منخفضة لصور مصغرة شريط البحث\n• زر التحميل مخفي\n• بطاقات إنهاء الشاشة مخفية + تتم حاليًا محاكاة العميل إلـى iOS\n\nالآثار الجانبية تشمل:\n• لا يوجد فيديو HDR\n• قد تكون جودة الفيديو الأعلى مفقودة\n• لا يمكن تشغيل البث المباشر كصوت فقط + تتم حاليًا محاكاة العميل إلـى Android VR\n\nالآثار الجانبية تشمل:\n• لا يوجد فيديو HDR\n• فيديوهات الأطفال لا يتم تشغيلهم\n• مقاطع الفيديو الموقوفة يمكن أن تستأنف عشوائياً\n• جودة منخفضة لمصغرات شريط التقدم\n• زر التنزيل مخفي\n• بطاقات نهاية الشاشة مخفية محاكاة مصغرات العميل غير متوفرة (انتهت مهلة API) محاكاة مصغرات العميل غير متوفرة مؤقتًا: %s diff --git a/src/main/resources/addresources/values-az-rAZ/strings.xml b/src/main/resources/addresources/values-az-rAZ/strings.xml index 8a0bc527b..3dd7ac71f 100644 --- a/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -145,9 +145,9 @@ This is because Crowdin requires temporarily flattening this file and removing t İcma elanların gizlət İcma elanları gizlədilib İcma elanları göstərilir - Yığcam bannerləri gizlət - Yığcam bannerlər gizlidir - Yığcam bannerlər göstərilir + Yığcam etiketləri gizlət + Yığcam etiketlər gizlidir + Yığcam etiketlər göstərilir Filmlər bölməsini gizlət Filmlər bölməsi gizlidir Filmlər bölməsi göstərilir @@ -184,7 +184,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Cəld fəaliyyətlərdə əlaqəli videoları gizlə Əlaqədar videolar gizlədilib Əlaqədar videolar göstərilir - Axtarış nəticələrindəki şəkil bölməsin gizlət + Axtarış nəticəsində şəkil bölməsin gizlə Şəkil bölməsi gizlidir Şəkil bölməsi göstərilir Son elanları gizlət @@ -211,6 +211,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Məlumat kartları bölməsini gizlət Məlumat kartları bölməsi gizlədilir Məlumat kartları bölməsi göstərilir + \"Əsas anlayışlar\" bölməsin gizlət + \"Əsas anlayışlar\" bölməsi gizlidir + \"Əsas anlayışlar\" bölməsi göstərilir Transkripsiya bölməsini gizlət Transkripsiya bölməsi gizlidir Transkripsiya bölməsi göstərilir @@ -264,21 +267,21 @@ This is because Crowdin requires temporarily flattening this file and removing t Öz-sponsorlu kartları gizlət Özünə sponsorluq edilən kartlar gizlidir Özünə sponsorluq edilən kartlar göstərilir - Məhsullara baxma panelin gizlət - Panel gizlədilib - Panel göstərilir - Video açıqlamadakı alış-veriş linklərin gizlə + Məhsullara baxma etiketin gizlət + Etiket gizlədilib + Etiket göstərilir + Video açıqlama alış-veriş linklər gizlə Alış-veriş bağlantıları gizlədilir Alış-veriş bağlantıları göstərilir - Kanaldakı \"Mağazanı ziyarət et\" düyməsin gizlə + Kanalda \"Mağaza ziyarət\" düymə gizlə Düymə gizlidir Düymə göstərilir Veb axtarış nəticələrini gizlət Veb axtarış nəticələri gizlədilir Veb axtarış nəticələri göstərilir - Məhsul bannerlərini gizlət - Məhsul bannerləri gizlədilir + Məhsul etiketlərini gizlət + Məhsul etiketləri gizlədilir Məhsul bannerləri göstərilir Tam ekran reklamları gizlətmə yalnız köhnə cihazlarda işləyir @@ -316,7 +319,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Yükləmə düyməsi oynadıcıda göstərilir Yükləmə düyməsi oynadıcıda göstərilmir - Yükləmə fəaliyyəti düyməsini qəbul etmə + Yükləmə fəaliyyət düyməsin qəbul etmə Yükləmə düyməsi, xarici yükləyicini açır Yükləmə düyməsi tətbiqdəki standart yükləyicini açır Yükləyici paketi adı @@ -567,7 +570,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Sürüşən say animasiyası açıqdır - Video oynadıcıda axtarış çubuğunu gizlət + Video oynadıcıda axtarış çubuğun gizlə Video oynadıcı axtarış çubuğu gizlidir Video oynadıcı axtarış çubuğu göstərilir Video miniatürlərdə vaxt çubuğun gizlə @@ -665,7 +668,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Vaxt möhürü göstərilir - Oynadıcı açılan pəncərə panellərini gizlət + Oynadıcı açılan pəncərə panellərin gizlə Oynadıcı açılan pəncərə panelləri gizlidir Oynadıcı açılan pəncərə panelləri göstərilir @@ -725,7 +728,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Geniş axtarış çubuğu qeyri-aktivdir - Köhnə axtarış çubuğu miniatürlərini qaytar + Köhnə axtarış çubuğu miniatürlərin al Axtarış çubuğu miniatürləri axtarış çubuğu üstündə görünəcək Axtarış çubuğu miniatürləri tam ekranda görünəcək @@ -788,7 +791,7 @@ This is because Crowdin requires temporarily flattening this file and removing t %s ixrac uğursuz Tənzimləmələr şəxsi SponsorBlock istifadəçi kimliyi ehtiva edir.\n\nİstifadəçi kimliyiniz parol kimidir və bu paylaşılmamalıdır.\n Təkrar göstərmə - Seqment davranışını dəyişdir + Bölüm davranışını dəyişdir Sponsor Ödənişli tanıtım, ödənişli yönləndirmələr və birbaşa reklamlar. Öz-tanıtım və ya bəyəndikləri səbəblərə/yaradıcılara/veb saytlara/məhsullara ödənişsiz çağırışlar etmək üçün deyil Ödənişsiz/Öz reklamı @@ -942,7 +945,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Trenddə olan - Shorts oynadıcı davam etdirməsini bağla + Shorts oynadıcı başladıcını bağla Tətbiq açılanda Shorts oynadıcı davam etməyəcək Tətbiq açılanda Shorts oynadıcı davam edəcək diff --git a/src/main/resources/addresources/values-cs-rCZ/strings.xml b/src/main/resources/addresources/values-cs-rCZ/strings.xml index 4c3962b20..d5f301e33 100644 --- a/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -214,6 +214,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Skrýt sekci informačních karet Sekce Info karty je skrytá Je zobrazena sekce Info karty + Sekce \'Klíčové pojmy\' je skryta + Zobrazí se sekce \'Klíčové pojmy\' Skrýt sekci přepisu Přepsat oddíl je skrytý Je zobrazena sekce přepisu diff --git a/src/main/resources/addresources/values-da-rDK/strings.xml b/src/main/resources/addresources/values-da-rDK/strings.xml index 8f338bbb1..e3dee2b77 100644 --- a/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/src/main/resources/addresources/values-da-rDK/strings.xml @@ -213,6 +213,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Skjul infokort sektion Info-kort sektion er skjult Info-kort sektion er vist + Skjul sektion \'Nøglebegreber\' + \'Nøglebegreber\' sektion er skjult + \'Nøglebegreber\' afsnit vises Skjul udskriftsafsnittet Afsnittet er skjult Afsnittet er vist diff --git a/src/main/resources/addresources/values-de-rDE/strings.xml b/src/main/resources/addresources/values-de-rDE/strings.xml index 28fc51edb..a9c260361 100644 --- a/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/src/main/resources/addresources/values-de-rDE/strings.xml @@ -214,6 +214,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Info-Kartenbereich ausblenden Info-Kartenbereich ist ausgeblendet Info-Kartenbereich wird angezeigt + \'Schlüsselbegriffe\' ausblenden + \'Schlüsselbegriffe\' Abschnitt ist versteckt + Abschnitt \'Schlüsselkonzepte\' wird angezeigt Transkript-Abschnitt ausblenden Transkript-Abschnitt ist ausgeblendet Sektion Transkripte wird angezeigt diff --git a/src/main/resources/addresources/values-el-rGR/strings.xml b/src/main/resources/addresources/values-el-rGR/strings.xml index 90613508c..c3f641b11 100644 --- a/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/src/main/resources/addresources/values-el-rGR/strings.xml @@ -212,6 +212,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Ενότητα καρτών πληροφοριών Κρυμμένη Εμφανίζεται + Απόκρυψη ενότητας \'Έννοιες κλειδιού\' + \'Βασικές έννοιες\' ενότητα είναι κρυμμένη + \'Βασικές έννοιες\' ενότητα εμφανίζεται Ενότητα Απομαγνητοφώνησης Κρυμμένη Εμφανίζεται diff --git a/src/main/resources/addresources/values-es-rES/strings.xml b/src/main/resources/addresources/values-es-rES/strings.xml index 914d3b635..dab8dbad4 100644 --- a/src/main/resources/addresources/values-es-rES/strings.xml +++ b/src/main/resources/addresources/values-es-rES/strings.xml @@ -212,6 +212,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Ocultar sección de tarjetas de información La sección de tarjetas de información está oculta Se muestra la sección de tarjetas de información + Ocultar sección \'Conceptos clave\' + la sección \'Conceptos clave\' está oculta + la sección \'Conceptos clave\' se muestra Ocultar sección de transcripción La sección transcripción está oculta Se muestra la sección transcripción @@ -282,7 +285,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Los banners de mercadería están ocultos Se muestran los banners de Mercandise - Ocultar anuncios a pantalla completa sólo funciona con dispositivos antiguos + Ocultar anuncio solo con dispositivos viejos Ocultar promociones de YouTube Premium @@ -673,7 +676,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Opacidad de superposición del jugador Valor de potencia entre 0-100, donde 0 es transparente - Opacidad de superposición del jugador debe estar entre 0-100 + Opacidad del reproductor debe estar entre 0 y 100 Oculto @@ -975,7 +978,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Saltar adelante y atrás se muestran Overlay opacity Valor de potencia entre 0-100, donde 0 es transparente - La opacidad de superposición del Miniplayer debe estar entre 0-100 + Opacidad de reproductor debe estar en 0 -100 Activar la pantalla de carga del degradado diff --git a/src/main/resources/addresources/values-fi-rFI/strings.xml b/src/main/resources/addresources/values-fi-rFI/strings.xml index 80a0956d2..aad5fb79f 100644 --- a/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -213,6 +213,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Piilota infokorttien osio Infokorttien osio on piilotettu Infokorttien osio näytetään + \'Keskeiset käsitteet\' -osio on piilotettu + \'Keskeiset käsitteet\' -osio näytetään Piilota Transkriptio-osio Transkriptio-osio on piilotettu Transkriptio-osio näytetään diff --git a/src/main/resources/addresources/values-fr-rFR/strings.xml b/src/main/resources/addresources/values-fr-rFR/strings.xml index 7fabccf2c..1da633856 100644 --- a/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -213,6 +213,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Masquer les cartes d\'information Les cartes d\'information sont masquées Les cartes d\'information sont affichées + Masquer la section \"concepts clés\" + La section \"Concepts clé\" est masquée + La section \"Concepts clé\" est affichée Masquer la section de transcription La section transcription est masquée La section transcription est affichée diff --git a/src/main/resources/addresources/values-hu-rHU/strings.xml b/src/main/resources/addresources/values-hu-rHU/strings.xml index b4d16b134..6949b9d33 100644 --- a/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -212,6 +212,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Infó kártyák rész elrejtése Az infó kártyák rész el van rejtve Az infó kártyák rész látható + A „Kulcsfogalmak” szakasz elrejtése + A „Kulcsfogalmak” szakasz el van rejtve + Megjelenik a „Kulcsfogalmak” rész Az Átirat szakasz elrejtése Az átirat rész el van rejtve Az átirat rész megjelenik diff --git a/src/main/resources/addresources/values-in-rID/strings.xml b/src/main/resources/addresources/values-in-rID/strings.xml index 5e1ea1a9e..589c6e66b 100644 --- a/src/main/resources/addresources/values-in-rID/strings.xml +++ b/src/main/resources/addresources/values-in-rID/strings.xml @@ -864,6 +864,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Pilih kategori segmen Kategori dinonaktifkan di pengaturan. Aktifkan untuk kirim. Segmen SponsorBlock Baru + Tetapkan %s sebagai awal atau akhir segmen baru? awal akhir sekarang @@ -919,15 +920,29 @@ This is because Crowdin requires temporarily flattening this file and removing t Target versi app yang dipalsukan 18.33.40 - Kembalikan RYD pada mode incognito Shorts + 18.20.39 - Pulihkan menu kecepatan & kualitas video lebar + 18.09.39 - Pulihkan tab perpustakaan + 17.41.37 - Pulihkan rak daftar putar lama + 17.33.42 - Mengembalikan tata letak UI lama + Tetapkan halaman awal Bawaan + Beranda + Pencarian + Langganan + Jelajahi + Tab Anda + Video yang disukai + Riwayat + Sedang tren + Matikan melanjutkan pemutar video Shorts diff --git a/src/main/resources/addresources/values-it-rIT/strings.xml b/src/main/resources/addresources/values-it-rIT/strings.xml index 4f463a2c8..50af732aa 100644 --- a/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/src/main/resources/addresources/values-it-rIT/strings.xml @@ -211,6 +211,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Nascondi sezione schede info La sezione delle schede informative è nascosta La sezione delle schede informative è mostrata + Nascondi sezione \'Concetti chiave\' + La sezione \'Concetti chiave\' è nascosta + La sezione \'Concetti chiave\' è mostrata Nascondi sezione Trascrizione La sezione della trascrizione è nascosta La sezione della trascrizione è mostrata diff --git a/src/main/resources/addresources/values-ja-rJP/strings.xml b/src/main/resources/addresources/values-ja-rJP/strings.xml index b3f977e92..5785e287b 100644 --- a/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -212,6 +212,9 @@ This is because Crowdin requires temporarily flattening this file and removing t 情報カードセクションを隠す 情報カードセクションは非表示です カード情報セクションが表示されます + 「キーコンセプト」セクションを非表示 + 「キーコンセプト」セクションは非表示です + 「キーコンセプト」セクションが表示されます トランスクリプトセクションを隠す トランスクリプトセクションは非表示です トランスクリプトセクションが表示されます diff --git a/src/main/resources/addresources/values-ko-rKR/strings.xml b/src/main/resources/addresources/values-ko-rKR/strings.xml index 8f4be90b2..e548a0359 100644 --- a/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -172,9 +172,9 @@ This is because Crowdin requires temporarily flattening this file and removing t 정보 패널 숨기기 정보 패널이 숨겨집니다 정보 패널이 노출됩니다 - 의학 정보 패널 숨기기 - 의학 정보 패널이 숨겨집니다 - 의학 정보 패널이 노출됩니다 + 보건 정보 패널 숨기기 + 보건 정보 패널이 숨겨집니다 + 보건 정보 패널이 노출됩니다 채널바 숨기기 채널바가 숨겨집니다 채널바가 노출됩니다 @@ -214,6 +214,9 @@ This is because Crowdin requires temporarily flattening this file and removing t 크리에이터 정보 카드 섹션 숨기기 크리에이터 정보 카드 섹션이 숨겨집니다 크리에이터 정보 카드 섹션이 노출됩니다 + 주요 개념 섹션 숨기기 + 주요 개념 섹션이 숨겨집니다 + 주요 개념 섹션이 노출됩니다 스크립트 섹션 숨기기 스크립트 섹션이 숨겨집니다 스크립트 섹션이 노출됩니다 @@ -300,10 +303,10 @@ This is because Crowdin requires temporarily flattening this file and removing t URL을 클립보드에 복사하였습니다 타임스탬프를 표기한 URL을 클립보드에 복사하였습니다 동영상 URL 복사 버튼 표시하기 - 버튼을 표시합니다. \n버튼을 눌러서 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기한 동영상 URL이 복사됩니다 + 버튼을 표시합니다. 버튼을 눌러서 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기한 동영상 URL이 복사됩니다 버튼을 표시하지 않습니다 타임스탬프를 표기한 URL 복사 버튼 표시하기 - 버튼을 표시합니다. \n버튼을 눌러서 타임스탬프를 표기한 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기하지 않은 동영상 URL이 복사됩니다 + 버튼을 표시합니다. 버튼을 눌러서 타임스탬프를 표기한 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기하지 않은 동영상 URL이 복사됩니다 버튼을 표시하지 않습니다 @@ -993,7 +996,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 잘못된 재생바 색상 값이므로 기본값으로 초기화합니다 - 이미지 표시 국가 제한 우회하기 + 이미지 표시 제한 국가 우회하기 이미지 호스트로 yt4.ggpht.com를 사용합니다 기본 이미지 호스트를 사용합니다\n\n이 설정을 활성화하면 일부 국가에서 차단된 이미지를 수신할 수 있습니다 (채널 프로필 사진, 커뮤니티 게시물 이미지, etc.) @@ -1006,11 +1009,11 @@ This is because Crowdin requires temporarily flattening this file and removing t 나(보관함) 탭 플레이어 구성요소: 재생목록, 관련 동영상, etc. 검색 결과 - 원본 썸네일 - DeArrow & 원본 썸네일 + 기본 썸네일 + DeArrow & 기본 썸네일 DeArrow & 동영상 스틸 컷 썸네일 동영상 스틸 컷 썸네일 - DeArrow는 YouTube 동영상에 크라우드 소싱된 썸네일을 제공합니다. 이러한 썸네일은 YouTube에서 제공하는 썸네일보다 관련성이 높은 경우가 많습니다\n\n이 설정을 활성화하면 동영상 URL이 API 서버로 전송되며 다른 데이터는 전송되지 않습니다. 동영상에 DeArrow 썸네일이 없는 경우에는 원본 썸네일 또는 동영상 스틸 컷 썸네일을 표시합니다\n\nDeArrow에 대해 자세히 알아보려면 여기를 누르세요 + DeArrow는 YouTube 동영상에 크라우드 소싱된 썸네일을 제공합니다. 이러한 썸네일은 YouTube에서 제공하는 썸네일보다 관련성이 높은 경우가 많습니다\n\n이 설정을 활성화하면 동영상 URL이 API 서버로 전송되며 다른 데이터는 전송되지 않습니다. 동영상에 DeArrow 썸네일이 없는 경우에는 기본 썸네일 또는 동영상 스틸 컷 썸네일을 표시합니다\n\nDeArrow에 대해 자세히 알아보려면 여기를 누르세요 API를 사용할 수 없을 때, 팝업 메시지 표시하기 DeArrow를 사용할 수 없을 때, 팝업 메시지를 표시합니다 DeArrow를 사용할 수 없을 때, 팝업 메시지를 표시하지 않습니다 diff --git a/src/main/resources/addresources/values-nb-rNO/strings.xml b/src/main/resources/addresources/values-nb-rNO/strings.xml index 50292661c..a5a0ff50c 100644 --- a/src/main/resources/addresources/values-nb-rNO/strings.xml +++ b/src/main/resources/addresources/values-nb-rNO/strings.xml @@ -211,6 +211,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Skjule seksjonen for informasjonskort Informasjonskort seksjonen er skjult Informasjonskort delen vises + Skjul seksjonen «Key concepts» Skjul transkripsjonsseksjonen Transkripsjonsseksjonen er skjult Transskripsjonsseksjonen vises @@ -896,7 +897,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Farge tilbakestilt Ugyldig fargekode Tilbakestill farge - Reset + Tilbakestill Om Data leveres av SponsorBlock API. Trykk her for å lære mer og se nedlastinger for andre plattformer diff --git a/src/main/resources/addresources/values-nl-rNL/strings.xml b/src/main/resources/addresources/values-nl-rNL/strings.xml index f434e8249..331f9ed95 100644 --- a/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -213,6 +213,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Verberg info kaarten sectie Sectie informatiekaarten is verborgen Sectie informatiekaarten wordt weergegeven + Verberg \'Sleutelbegrippen\' sectie + \'Sleutelbegrippen\' sectie is verborgen + \'Sleutelbegrippen\' sectie wordt weergegeven Transcriptsectie verbergen Transcriptsectie is verborgen Transcriptsectie wordt weergegeven @@ -376,29 +379,30 @@ This is because Crowdin requires temporarily flattening this file and removing t Leuk- en niet-leuk-knoppen zijn verborgen Leuk- en niet-leuk-knoppen worden weergegeven - Verberg deel - Share knop is verborgen - Share knop wordt weergegeven + Verberg delen + Deel knop is verborgen + Deel knop wordt weergegeven - Rapport verbergen - Rapportknop is verborgen - Rapportknop wordt weergegeven + Melden verbergen + Melden is verborgen + Melden wordt weergegeven Verberg Remix Remix knop is verborgen Remix knop wordt weergegeven - Download verbergen - Download knop is verborgen - Download knop wordt weergegeven + Downloaden verbergen + Downloaden knop is verborgen + Downloaden knop wordt weergegeven Bedankt verbergen Bedankt knop is verborgen Bedankt knop wordt weergegeven - Clip knop is verborgen - Clip knop wordt weergegeven + Fragment verbergen + Fragment knop is verborgen + Fragment knop wordt weergegeven Verberg opslaan in afspeellijst Opslaan naar afspeellijst knop is verborgen @@ -631,8 +635,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Remix knop wordt weergegeven Verberg share knop - Share knop is verborgen - Share knop wordt weergegeven + Deel knop is verborgen + Deel knop wordt weergegeven Verberg informatiepaneel Info paneel is verborgen Info paneel wordt weergegeven diff --git a/src/main/resources/addresources/values-pl-rPL/strings.xml b/src/main/resources/addresources/values-pl-rPL/strings.xml index 47ab5c232..2889d8060 100644 --- a/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -213,6 +213,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Ukryj sekcję kart informacyjnych Sekcja kart informacyjnych jest ukryta Sekcja kart informacyjnych jest wyświetlana + Ukryj sekcję \'Koncepcje kluczowe\' + Sekcja \"Koncepcje kluczowe\" jest ukryta + Sekcja \"Koncepcje kluczowe\" jest pokazana Ukryj sekcję transkryptu Sekcja transkryptu jest ukryta Sekcja transkryptu jest wyświetlana diff --git a/src/main/resources/addresources/values-pt-rPT/strings.xml b/src/main/resources/addresources/values-pt-rPT/strings.xml index 069d2fdd1..cb7f0eee6 100644 --- a/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -211,6 +211,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Esconder seção de cartões de informações Seção de cartões de informações está escondida Mostrar a seção de cartões de informações + Ocultar seção \'Temas principais\' + Secção \'Conceitos-chave\' está oculta + A seção \'conceitos principais\' é mostrada Ocultar seção de transcrição Seção de transcrição escondida Seção de transcrição exibida diff --git a/src/main/resources/addresources/values-ro-rRO/strings.xml b/src/main/resources/addresources/values-ro-rRO/strings.xml index c3d5b30bc..563e0385a 100644 --- a/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -213,6 +213,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Ascunde secțiunea carduri de informații Secţiunea carduri de informaţii este ascunsă Secțiunea cartonașelor de informații este afișată + Ascunde secţiunea \"Concepte cheie\" + Secțiunea „Concepte cheie” este ascunsă + Secțiunea „Concepte cheie” este afișată Ascunde secțiunea de Transcriere Secțiunea de transcriere este ascunsă Secțiunea de Transcriere este afișată @@ -908,7 +911,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Resetare culoare Cod culoare nevalid Resetare culoare - Reset + Resetează Despre Datele sunt furnizate de API-ul SponsorBlock. Apasă aici pentru a afla mai multe și a vedea descărcările pentru alte platforme diff --git a/src/main/resources/addresources/values-ru-rRU/strings.xml b/src/main/resources/addresources/values-ru-rRU/strings.xml index b0ed5ea3d..652dcbec4 100644 --- a/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -213,6 +213,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Раздел подсказок Раздел подсказок в описании видео скрыт Раздел подсказок в описании видео отображен + Раздел \"Ключевые понятия\" + Раздел \"Ключевые понятия\" скрыт + Раздел \"Ключевые понятия\" отображен Раздел расшифровки Раздел расшифровки в описании видео скрыт Раздел расшифровки в описании видео отображен @@ -793,19 +796,19 @@ This is because Crowdin requires temporarily flattening this file and removing t Изменить поведение сегмента Спонсорская реклама Рекламные интеграции, реферальные ссылки и прямая реклама. Не для саморекламы или рекомендаций различных событий/создателей/сайтов/продуктов, которые нравятся автору видео - Бесплатная реклама / Самореклама + Бесплатная реклама / самореклама Подобно \"Спонсорской рекламе\", за исключением неоплачиваемой рекламы или саморекламы. Включает разделы о товарах, пожертвованиях или информации о том, с кем сотрудничал автор Напоминание о взаимодействии (подписка) Короткое напоминание поставить лайк, подписаться на канал или соцсети посреди видеоролика. Если эта вставка длительная или о чем-то конкретном, она должна классифицироваться как самореклама Основной момент Часть видео, которая интересна большинству людей - Антракт / Вступительная анимация + Антракт / вступительная анимация Интервал без фактического содержания. Может быть паузой, статическим кадром или повторяющейся анимацией. Не включает переходы, содержащие информацию - Конечные заставки / Титры + Конечные заставки / титры Титры или время появления конечных заставок YouTube. Не для выводов с информацией - Предпросмотр / Пересказ / Завязка + Предпросмотр / пересказ / завязка Фрагменты, повторяющие текущее видео или предыдущие серии - Отвлеченные темы / Шутки + Отвлеченные темы / шутки Сегменты, которые увеличивают длительность видео за счет отвлеченных тем или шуток, но не требуются для понимания основного содержания. Не включает сегменты, объясняющие контекст или предысторию Музыка: сегмент без музыки Только для использования в музыкальных видеороликах. Разделы музыкальных видео без музыки, которые еще не охвачены другой категорией @@ -859,8 +862,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Невозможно проголосовать за сегмент (время API истекло) Невозможно проголосовать за сегмент (статус: %1$d %2$s) Невозможно проголосовать за сегмент: %s - Проголосовать за - Проголосовать против + Голос \"за\" + Голос \"против\" Изменить категорию Нет сегментов для голосования Выбрать категорию сегмента diff --git a/src/main/resources/addresources/values-sr-rSP/strings.xml b/src/main/resources/addresources/values-sr-rSP/strings.xml index 5395bf6fb..3fab48b24 100644 --- a/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -1119,6 +1119,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Клијент није лажиран\n\nРепродукција видеа можда неће радити Искључивање овог подешавања можда ће изазвати проблеме са репродукцијом видеа. Лажиран клијент на iOS + Клијент је тренутно лажиран на iOS\n\nНежељени ефекти обухватају:\n• Нема HDR видеа\n• Виши квалитети видеа можда недостају\n• Стримови уживо не могу да се репродукују само као аудио + Клијент је тренутно лажиран на Android VR\n\nНежељени ефекти обухватају:\н• Нема HDR видеа\n• Дечји видео снимци се не репродукују\n• Паузирани видео снимци могу насумично да се настављају\n• Сличице на траци за премотавање Shorts видеа лошег квалитета\n• Дугме за радњу „Преузми“ је скривено\n• Картице завршног екрана су скривене Сличице у лажираном клијенту нису доступне (API истекао) Сличице у лажираном клијенту привремено нису доступне: %s diff --git a/src/main/resources/addresources/values-sv-rSE/strings.xml b/src/main/resources/addresources/values-sv-rSE/strings.xml index c94c03094..72eda385c 100644 --- a/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -213,6 +213,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Dölj sektion för infokort Sektionen för infokort är dold Informationskortssektionen är synlig + Dölj sektionen \'Nyckelbegrepp\' + Avsnittet \"Nyckelbegrepp\" är dolt + Avsnittet \"Nyckelbegrepp\" visas Dölj avskrift sektion Avskrift sektionen är dold Transkriptsektionen är synlig diff --git a/src/main/resources/addresources/values-uk-rUA/strings.xml b/src/main/resources/addresources/values-uk-rUA/strings.xml index fd270bed9..de3a22ab3 100644 --- a/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -211,6 +211,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Приховати секцію інформаційних карток Секцію інформаційних карток приховано Секція інформаційних карток показується + Приховати секцію \"Основні поняття\" + Секцію \"Основні поняття\" приховано + Секція \"Основні поняття\" показується Приховати секцію \"Текст відео\" Секцію \"Текст відео\" приховано Секція \"Текст відео\" показується @@ -1006,7 +1009,7 @@ This is because Crowdin requires temporarily flattening this file and removing t DeArrow & Оригінальні прев\'ю DeArrow & Стоп-кадри Стоп-кадри - DeArrow надає краудсорсингові мініатюри для відео з YouTube. Ці прев\'ю часто більш релевантні, ніж ті, що надаються YouTube\nЯкщо ввімкнено, серверу API надсилатимуться лише посилання на відео, і більше жодних інших даних. Якщо відео не має прев\'ю DeArrow, то відображаються оригінальні або стоп-кадри\n\nНатисніть тут, щоб дізнатися більше про DeArrow + DeArrow надає краудсорсингові прев\'ю для відео YouTube. Ці прев\'ю часто більш релевантні, ніж ті, що надає YouTube\nЯкщо ввімкнено, серверу API надсилатимуться лише посилання на відео, і більше жодних інших даних. Якщо відео не має прев\'ю DeArrow, то відображаються оригінальні прев\'ю або стоп-кадри\n\nНатисніть тут, щоб дізнатися більше про DeArrow Показувати тост, якщо API не доступний Тост показується, якщо DeArrow не доступний Тост не показується, якщо DeArrow не доступний @@ -1015,7 +1018,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Стоп-кадри з відео Кадри беруться з початку/середини/кінця кожного відео. Ці зображення вбудовані в YouTube і зовнішній API не використовується Використовувати неточні кадри - Використовуються кадри середньої якості. Мініатюри завантажуватиметься швидше, але прямі трансляції, неопубліковані або дуже старі відео можуть зображатися порожніми мініатюрами + Використовуються кадри середньої якості. Прев\'ю завантажуватимуться швидше, але прямі трансляції, неопубліковані або дуже старі відео можуть відображатися з порожніми прев\'ю Використовуються кадри високої якості Час відео з якого береться кадр Початок відео diff --git a/src/main/resources/addresources/values-vi-rVN/strings.xml b/src/main/resources/addresources/values-vi-rVN/strings.xml index 1c2d80061..d91210fa8 100644 --- a/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -1115,6 +1115,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Máy khách chưa được giả mạo\n\nPhát nền video có thể không hoạt động Việc tắt cài đặt này có thể gây ra sự cố phát nền video. Giả mạo máy khách cho iOS + Hiện tại máy khách đang giả mạo thành iOS\n\nTác dụng phụ bao gồm:\n• Không có video HDR\n• Chất lượng cao hơn cho video có thể thiếu\n• Phát trực tiếp chỉ có âm thanh + Hiện tại máy khách đang giả mạo thành Android VR\n\nTác dụng phụ bao gồm:\n• Không có video HDR\n• Video dành cho trẻ em không phát lắp\n• Video đã tạm dừng có thể ngẫu nhiên phát tiếp\n• Hình thu nhỏ thanh tiến trình Shorts có chất lượng thấp\n• Nút hành động tải xuống luôn ẩn\n• Các thẻ màn hình kết thúc luôn ẩn Hình thu nhỏ giả mạo máy khách không khả dụng (API hết hạn) Hình thu nhỏ giả mạo máy khách tạm thời không khả dụng: %s diff --git a/src/main/resources/addresources/values-zh-rCN/strings.xml b/src/main/resources/addresources/values-zh-rCN/strings.xml index 46e07dea8..52c840b7b 100644 --- a/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -211,6 +211,9 @@ This is because Crowdin requires temporarily flattening this file and removing t 隐藏信息卡片部分 信息卡片段已隐藏 信息卡片段已显示 + 隐藏“关键概念”部分 + “关键概念”部分已隐藏 + \'密钥概念\'部分已显示 隐藏字幕部分 字幕部分已隐藏 显示字幕部分 diff --git a/src/main/resources/addresources/values-zh-rTW/strings.xml b/src/main/resources/addresources/values-zh-rTW/strings.xml index 824600f39..c9202ffe2 100644 --- a/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -211,6 +211,9 @@ This is because Crowdin requires temporarily flattening this file and removing t 隱藏資訊卡區 已隱藏資訊卡區 已顯示資訊卡區 + 隱藏關鍵概念部分 + 已隱藏關鍵概念部分 + 已顯示關鍵概念部分 隱藏文字紀錄區 已隱藏字幕記錄區 已顯示字幕記錄區 From 15449819ff74b636fb2fa6aacd770142c51d2e5d Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Fri, 2 Aug 2024 09:40:28 -0400 Subject: [PATCH 39/50] fix(YouTube - SponsorBlock): Improve create segment manual seek accuracy (#3491) --- api/revanced-patches.api | 1 + .../misc/imageurlhook/CronetImageUrlHook.kt | 10 +- .../information/VideoInformationPatch.kt | 104 ++++++++++-------- .../fingerprints/MdxSeekFingerprint.kt | 3 + .../MdxSeekRelativeFingerprint.kt | 19 ++++ .../fingerprints/SeekFingerprint.kt | 3 + .../fingerprints/SeekRelativeFingerprint.kt | 21 ++++ .../kotlin/app/revanced/util/BytecodeUtils.kt | 6 + 8 files changed, 116 insertions(+), 51 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxSeekRelativeFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/SeekRelativeFingerprint.kt diff --git a/api/revanced-patches.api b/api/revanced-patches.api index 1c47eb4ea..14a4e3230 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -2104,6 +2104,7 @@ public final class app/revanced/patches/yuka/misc/unlockpremium/UnlockPremiumPat } public final class app/revanced/util/BytecodeUtilsKt { + public static final fun alsoResolve (Lapp/revanced/patcher/fingerprint/MethodFingerprint;Lapp/revanced/patcher/data/BytecodeContext;Lapp/revanced/patcher/fingerprint/MethodFingerprint;)Lapp/revanced/patcher/fingerprint/MethodFingerprintResult; public static final fun containsWideLiteralInstructionValue (Lcom/android/tools/smali/dexlib2/iface/Method;J)Z public static final fun findMutableMethodOf (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lcom/android/tools/smali/dexlib2/iface/Method;)Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod; public static final fun findOpcodeIndicesReversed (Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/Opcode;)Ljava/util/List; diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt index d300327f2..d85b5f6a1 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt @@ -16,6 +16,7 @@ import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.reques import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback.OnResponseStartedFingerprint import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback.OnSucceededFingerprint import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch +import app.revanced.util.alsoResolve import app.revanced.util.resultOrThrow import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode @@ -84,17 +85,14 @@ object CronetImageUrlHook : BytecodePatch( } override fun execute(context: BytecodeContext) { - fun MethodFingerprint.alsoResolve(fingerprint: MethodFingerprint) = - also { resolve(context, fingerprint.resultOrThrow().classDef) }.resultOrThrow() - loadImageUrlMethod = MessageDigestImageUrlFingerprint - .alsoResolve(MessageDigestImageUrlParentFingerprint).mutableMethod + .alsoResolve(context, MessageDigestImageUrlParentFingerprint).mutableMethod loadImageSuccessCallbackMethod = OnSucceededFingerprint - .alsoResolve(OnResponseStartedFingerprint).mutableMethod + .alsoResolve(context, OnResponseStartedFingerprint).mutableMethod loadImageErrorCallbackMethod = OnFailureFingerprint - .alsoResolve(OnResponseStartedFingerprint).mutableMethod + .alsoResolve(context, OnResponseStartedFingerprint).mutableMethod // The URL is required for the failure callback hook, but the URL field is obfuscated. // Add a helper get method that returns the URL field. diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt index 017862f7d..88b90ba33 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt @@ -7,12 +7,14 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.extensions.or import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patcher.util.proxy.mutableTypes.MutableClass import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch import app.revanced.patches.youtube.video.information.fingerprints.* import app.revanced.patches.youtube.video.playerresponse.PlayerResponseMethodHookPatch import app.revanced.patches.youtube.video.videoid.VideoIdPatch +import app.revanced.util.alsoResolve import app.revanced.util.exception import app.revanced.util.getReference import app.revanced.util.indexOfFirstInstructionOrThrow @@ -45,9 +47,11 @@ object VideoInformationPatch : BytecodePatch( ) ) { private const val INTEGRATIONS_CLASS_DESCRIPTOR = "Lapp/revanced/integrations/youtube/patches/VideoInformation;" + private const val INTEGRATIONS_PLAYER_INTERFACE = "Lapp/revanced/integrations/youtube/patches/VideoInformation${'$'}PlaybackController;" private lateinit var playerInitMethod: MutableMethod - private var playerInitInsertIndex = 4 + private var playerInitInsertIndex = -1 + private var playerInitInsertRegister = -1 private lateinit var mdxInitMethod: MutableMethod private var mdxInitInsertIndex = -1 @@ -70,42 +74,43 @@ object VideoInformationPatch : BytecodePatch( with(PlayerInitFingerprint.resultOrThrow()) { playerInitMethod = mutableClass.methods.first { MethodUtil.isConstructor(it) } - // hook the player controller for use through integrations + // find the location of the first invoke-direct call and extract the register storing the 'this' object reference. + val initThisIndex = playerInitMethod.indexOfFirstInstructionOrThrow { + opcode == Opcode.INVOKE_DIRECT && getReference()?.name == "" + } + playerInitInsertRegister = playerInitMethod.getInstruction(initThisIndex).registerC + playerInitInsertIndex = initThisIndex + 1 + + // Hook the player controller for use through integrations. onCreateHook(INTEGRATIONS_CLASS_DESCRIPTOR, "initialize") - // seek method val seekFingerprintResultMethod = - SeekFingerprint.also { it.resolve(context, classDef) }.resultOrThrow().method + SeekFingerprint.alsoResolve(context, PlayerInitFingerprint).method + val seekRelativeFingerprintResultMethod = + SeekRelativeFingerprint.alsoResolve(context, PlayerInitFingerprint).method - // create helper method - val seekHelperMethod = generateSeekMethodHelper(seekFingerprintResultMethod) - - // add the seekTo method to the class for the integrations to call - mutableClass.methods.add(seekHelperMethod) + // Create integrations interface methods. + addSeekInterfaceMethods(mutableClass, seekFingerprintResultMethod, seekRelativeFingerprintResultMethod) } with(MdxPlayerDirectorSetVideoStageFingerprint.resultOrThrow()) { mdxInitMethod = mutableClass.methods.first { MethodUtil.isConstructor(it) } - // find the location of the first invoke-direct call and extract the register storing the 'this' object reference val initThisIndex = mdxInitMethod.indexOfFirstInstructionOrThrow { opcode == Opcode.INVOKE_DIRECT && getReference()?.name == "" } mdxInitInsertRegister = mdxInitMethod.getInstruction(initThisIndex).registerC mdxInitInsertIndex = initThisIndex + 1 - // hook the MDX director for use through integrations + // Hook the MDX director for use through integrations. onCreateHookMdx(INTEGRATIONS_CLASS_DESCRIPTOR, "initializeMdx") - // MDX seek method val mdxSeekFingerprintResultMethod = - MdxSeekFingerprint.apply { resolve(context, classDef) }.resultOrThrow().method + MdxSeekFingerprint.alsoResolve(context, MdxPlayerDirectorSetVideoStageFingerprint).method + val mdxSeekRelativeFingerprintResultMethod = + MdxSeekRelativeFingerprint.alsoResolve(context, MdxPlayerDirectorSetVideoStageFingerprint).method - // create helper method - val mdxSeekHelperMethod = generateSeekMethodHelper(mdxSeekFingerprintResultMethod) - - // add the seekTo method to the class for the integrations to call - mutableClass.methods.add(mdxSeekHelperMethod) + addSeekInterfaceMethods(mutableClass, mdxSeekFingerprintResultMethod, mdxSeekRelativeFingerprintResultMethod) } with(CreateVideoPlayerSeekbarFingerprint.result!!) { @@ -173,33 +178,42 @@ object VideoInformationPatch : BytecodePatch( userSelectedPlaybackSpeedHook(INTEGRATIONS_CLASS_DESCRIPTOR, "userSelectedPlaybackSpeed") } - private fun generateSeekMethodHelper(seekMethod: Method): MutableMethod { + private fun addSeekInterfaceMethods(targetClass: MutableClass, seekToMethod: Method, seekToRelativeMethod: Method) { + // Add the interface and methods that integrations calls. + targetClass.interfaces.add(INTEGRATIONS_PLAYER_INTERFACE) - // create helper method - val generatedMethod = ImmutableMethod( - seekMethod.definingClass, - "seekTo", - listOf(ImmutableMethodParameter("J", null, "time")), - "Z", - AccessFlags.PUBLIC or AccessFlags.FINAL, - null, null, - MutableMethodImplementation(4) - ).toMutable() + arrayOf( + seekToMethod to "seekTo", + seekToRelativeMethod to "seekToRelative" + ).forEach { (method, name) -> + // Add interface method. + // Get enum type for the seek helper method. + val seekSourceEnumType = method.parameterTypes[1].toString() - // get enum type for the seek helper method - val seekSourceEnumType = seekMethod.parameterTypes[1].toString() + val interfaceImplementation = ImmutableMethod( + targetClass.type, + name, + listOf(ImmutableMethodParameter("J", null, "time")), + "Z", + AccessFlags.PUBLIC or AccessFlags.FINAL, + null, null, + MutableMethodImplementation(4) + ).toMutable() - // insert helper method instructions - generatedMethod.addInstructions( - 0, - """ - sget-object v0, $seekSourceEnumType->a:$seekSourceEnumType - invoke-virtual { p0, p1, p2, v0 }, $seekMethod - move-result p1 - return p1 - """ - ) - return generatedMethod + // Insert helper method instructions. + interfaceImplementation.addInstructions( + 0, + """ + # first enum (field a) is SEEK_SOURCE_UNKNOWN + sget-object v0, $seekSourceEnumType->a:$seekSourceEnumType + invoke-virtual { p0, p1, p2, v0 }, $method + move-result p1 + return p1 + """ + ) + + targetClass.methods.add(interfaceImplementation) + } } private fun MutableMethod.insert(insertIndex: Int, register: String, descriptor: String) = @@ -220,8 +234,8 @@ object VideoInformationPatch : BytecodePatch( internal fun onCreateHook(targetMethodClass: String, targetMethodName: String) = playerInitMethod.insert( playerInitInsertIndex++, - "v0", - "$targetMethodClass->$targetMethodName(Ljava/lang/Object;)V" + "v$playerInitInsertRegister", + "$targetMethodClass->$targetMethodName($INTEGRATIONS_PLAYER_INTERFACE)V" ) /** @@ -234,7 +248,7 @@ object VideoInformationPatch : BytecodePatch( mdxInitMethod.insert( mdxInitInsertIndex++, "v$mdxInitInsertRegister", - "$targetMethodClass->$targetMethodName(Ljava/lang/Object;)V" + "$targetMethodClass->$targetMethodName($INTEGRATIONS_PLAYER_INTERFACE)V" ) /** diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxSeekFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxSeekFingerprint.kt index 6bec477f7..61269e9e8 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxSeekFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxSeekFingerprint.kt @@ -5,6 +5,9 @@ import app.revanced.patcher.fingerprint.MethodFingerprint import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode +/** + * Resolves using class found in [MdxPlayerDirectorSetVideoStageFingerprint]. + */ internal object MdxSeekFingerprint : MethodFingerprint( accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, returnType = "Z", diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxSeekRelativeFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxSeekRelativeFingerprint.kt new file mode 100644 index 000000000..3fd89abf1 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxSeekRelativeFingerprint.kt @@ -0,0 +1,19 @@ +package app.revanced.patches.youtube.video.information.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +/** + * Resolves using class found in [MdxPlayerDirectorSetVideoStageFingerprint]. + */ +internal object MdxSeekRelativeFingerprint : MethodFingerprint( + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + returnType = "Z", + parameters = listOf("J", "L"), + opcodes = listOf( + Opcode.IGET_OBJECT, + Opcode.INVOKE_INTERFACE + ) +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/SeekFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/SeekFingerprint.kt index 5747810e5..ef2d5dcb7 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/SeekFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/SeekFingerprint.kt @@ -3,6 +3,9 @@ package app.revanced.patches.youtube.video.information.fingerprints import app.revanced.patcher.fingerprint.MethodFingerprint +/** + * Resolves using class found in [PlayerInitFingerprint]. + */ internal object SeekFingerprint : MethodFingerprint( strings = listOf("Attempting to seek during an ad") ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/SeekRelativeFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/SeekRelativeFingerprint.kt new file mode 100644 index 000000000..05c89b933 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/SeekRelativeFingerprint.kt @@ -0,0 +1,21 @@ +package app.revanced.patches.youtube.video.information.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +/** + * Resolves using class found in [PlayerInitFingerprint]. + */ +internal object SeekRelativeFingerprint : MethodFingerprint( + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + returnType = "Z", + parameters = listOf("J", "L"), + opcodes = listOf( + Opcode.ADD_LONG_2ADDR, + Opcode.INVOKE_VIRTUAL, + Opcode.MOVE_RESULT, + Opcode.RETURN + ) +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt index f0ac585cc..0f81d8d4e 100644 --- a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt +++ b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt @@ -249,3 +249,9 @@ fun Iterable.returnEarly(bool: Boolean = false) = forEach { f fun List.returnEarly(bool: Boolean = false) = forEach { fingerprint -> fingerprint.returnEarly(bool) } + +/** + * Resolves this fingerprint using the classDef of a parent fingerprint. + */ +fun MethodFingerprint.alsoResolve(context: BytecodeContext, parentFingerprint: MethodFingerprint) = + also { resolve(context, parentFingerprint.resultOrThrow().classDef) }.resultOrThrow() From b3268ece01ef17fa8cd94c28a0ddc13111339492 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 2 Aug 2024 13:42:52 +0000 Subject: [PATCH 40/50] chore(release): 4.12.0-dev.15 [skip ci] # [4.12.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.14...v4.12.0-dev.15) (2024-08-02) ### Bug Fixes * **YouTube - SponsorBlock:** Improve create segment manual seek accuracy ([#3491](https://github.com/ReVanced/revanced-patches/issues/3491)) ([1544981](https://github.com/ReVanced/revanced-patches/commit/15449819ff74b636fb2fa6aacd770142c51d2e5d)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c6e5f7a3..7dfe174d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.14...v4.12.0-dev.15) (2024-08-02) + + +### Bug Fixes + +* **YouTube - SponsorBlock:** Improve create segment manual seek accuracy ([#3491](https://github.com/ReVanced/revanced-patches/issues/3491)) ([1544981](https://github.com/ReVanced/revanced-patches/commit/15449819ff74b636fb2fa6aacd770142c51d2e5d)) + # [4.12.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.13...v4.12.0-dev.14) (2024-08-01) diff --git a/gradle.properties b/gradle.properties index 3992252f0..b8be694d7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.14 +version = 4.12.0-dev.15 From becaad4a9876392b567478cdfe773956655901f0 Mon Sep 17 00:00:00 2001 From: ILoveOpenSourceApplications <117499019+ILoveOpenSourceApplications@users.noreply.github.com> Date: Sun, 4 Aug 2024 13:39:48 +0530 Subject: [PATCH 41/50] refactor(YouTube Music): Rename `Hide music video ads` to `Hide video ads` and add patch description (#3494) Co-authored-by: ILoveOpenSourceApplications Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> --- api/revanced-patches.api | 6 ++++ .../{HideMusicVideoAds.kt => HideVideoAds.kt} | 29 ++++++++++++------- ...nt.kt => ShowVideoAdsParentFingerprint.kt} | 2 +- 3 files changed, 26 insertions(+), 11 deletions(-) rename src/main/kotlin/app/revanced/patches/music/ad/video/{HideMusicVideoAds.kt => HideVideoAds.kt} (60%) rename src/main/kotlin/app/revanced/patches/music/ad/video/fingerprints/{ShowMusicVideoAdsParentFingerprint.kt => ShowVideoAdsParentFingerprint.kt} (84%) diff --git a/api/revanced-patches.api b/api/revanced-patches.api index 14a4e3230..a30a71d22 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -423,6 +423,12 @@ public final class app/revanced/patches/music/ad/video/HideMusicVideoAds : app/r public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } +public final class app/revanced/patches/music/ad/video/HideVideoAds : app/revanced/patcher/patch/BytecodePatch { + public static final field INSTANCE Lapp/revanced/patches/music/ad/video/HideVideoAds; + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V +} + public final class app/revanced/patches/music/ad/video/MusicVideoAdsPatch : app/revanced/patcher/patch/BytecodePatch { public static final field INSTANCE Lapp/revanced/patches/music/ad/video/MusicVideoAdsPatch; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V diff --git a/src/main/kotlin/app/revanced/patches/music/ad/video/HideMusicVideoAds.kt b/src/main/kotlin/app/revanced/patches/music/ad/video/HideVideoAds.kt similarity index 60% rename from src/main/kotlin/app/revanced/patches/music/ad/video/HideMusicVideoAds.kt rename to src/main/kotlin/app/revanced/patches/music/ad/video/HideVideoAds.kt index eddec5b90..b374f4cb7 100644 --- a/src/main/kotlin/app/revanced/patches/music/ad/video/HideMusicVideoAds.kt +++ b/src/main/kotlin/app/revanced/patches/music/ad/video/HideVideoAds.kt @@ -6,11 +6,12 @@ import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod -import app.revanced.patches.music.ad.video.fingerprints.ShowMusicVideoAdsParentFingerprint +import app.revanced.patches.music.ad.video.fingerprints.ShowVideoAdsParentFingerprint import app.revanced.util.exception @Patch( - name = "Hide music video ads", + name = "Hide video ads", + description = "Hides ads that appear while listening to or streaming music videos, podcasts, or songs.", compatiblePackages = [ CompatiblePackage( "com.google.android.apps.youtube.music", @@ -25,24 +26,32 @@ import app.revanced.util.exception ], ) @Suppress("unused") -object HideMusicVideoAds : BytecodePatch( - setOf(ShowMusicVideoAdsParentFingerprint), +object HideVideoAds : BytecodePatch( + setOf(ShowVideoAdsParentFingerprint), ) { override fun execute(context: BytecodeContext) { - ShowMusicVideoAdsParentFingerprint.result?.let { - val showMusicVideoAdsMethod = context + ShowVideoAdsParentFingerprint.result?.let { + val showVideoAdsMethod = context .toMethodWalker(it.mutableMethod) .nextMethod(it.scanResult.patternScanResult!!.startIndex + 1, true).getMethod() as MutableMethod - showMusicVideoAdsMethod.addInstruction(0, "const/4 p1, 0x0") - } ?: throw ShowMusicVideoAdsParentFingerprint.exception + showVideoAdsMethod.addInstruction(0, "const/4 p1, 0x0") + } ?: throw ShowVideoAdsParentFingerprint.exception } } -@Deprecated("This patch class has been renamed to HideMusicVideoAds.") +@Deprecated("This patch class has been renamed to HideVideoAds.") +object HideMusicVideoAds : BytecodePatch( + dependencies = setOf(HideVideoAds::class) +) { + override fun execute(context: BytecodeContext) { + } +} + +@Deprecated("This patch class has been renamed to HideVideoAds.") object MusicVideoAdsPatch : BytecodePatch( dependencies = setOf(HideMusicVideoAds::class), ) { override fun execute(context: BytecodeContext) { } -} +} \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/ad/video/fingerprints/ShowMusicVideoAdsParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/ad/video/fingerprints/ShowVideoAdsParentFingerprint.kt similarity index 84% rename from src/main/kotlin/app/revanced/patches/music/ad/video/fingerprints/ShowMusicVideoAdsParentFingerprint.kt rename to src/main/kotlin/app/revanced/patches/music/ad/video/fingerprints/ShowVideoAdsParentFingerprint.kt index 5996ee98d..5bdd644bc 100644 --- a/src/main/kotlin/app/revanced/patches/music/ad/video/fingerprints/ShowMusicVideoAdsParentFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/ad/video/fingerprints/ShowVideoAdsParentFingerprint.kt @@ -3,7 +3,7 @@ package app.revanced.patches.music.ad.video.fingerprints import app.revanced.patcher.fingerprint.MethodFingerprint import com.android.tools.smali.dexlib2.Opcode -internal object ShowMusicVideoAdsParentFingerprint : MethodFingerprint( +internal object ShowVideoAdsParentFingerprint : MethodFingerprint( opcodes = listOf( Opcode.MOVE_RESULT_OBJECT, Opcode.INVOKE_VIRTUAL, From 90d32880906787d82c4b9a7a1099b46dff3a0870 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sun, 4 Aug 2024 15:38:10 -0400 Subject: [PATCH 42/50] fix(YouTube - Spoof client): Restore livestream audio only playback with iOS spoofing (#3504) --- .../misc/fix/playback/SpoofClientPatch.kt | 59 ++++++++++--------- .../fingerprints/GetTrackingUriFingerprint.kt | 21 ------- ...ModelBackgroundAudioPlaybackFingerprint.kt | 25 ++++++++ .../youtube/misc/gms/GmsCoreSupportPatch.kt | 11 ++-- .../resources/addresources/values/strings.xml | 2 +- 5 files changed, 64 insertions(+), 54 deletions(-) delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/PlayerResponseModelBackgroundAudioPlaybackFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt index 4a9a1724c..1c097fa49 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt @@ -16,7 +16,9 @@ import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMu import app.revanced.patches.all.misc.resources.AddResourcesPatch import app.revanced.patches.shared.misc.settings.preference.PreferenceScreen import app.revanced.patches.shared.misc.settings.preference.SwitchPreference +import app.revanced.patches.youtube.misc.backgroundplayback.BackgroundPlaybackPatch import app.revanced.patches.youtube.misc.fix.playback.fingerprints.* +import app.revanced.patches.youtube.misc.playertype.PlayerTypeHookPatch import app.revanced.patches.youtube.misc.settings.SettingsPatch import app.revanced.util.getReference import app.revanced.util.indexOfFirstInstructionOrThrow @@ -38,16 +40,21 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter SettingsPatch::class, AddResourcesPatch::class, UserAgentClientSpoofPatch::class, + // Required since iOS livestream fix partially enables background playback. + BackgroundPlaybackPatch::class, + PlayerTypeHookPatch::class, ], compatiblePackages = [ CompatiblePackage( "com.google.android.youtube", [ - "18.37.36", - "18.38.44", - "18.43.45", - "18.44.41", - "18.45.43", + // This patch works with these versions, + // but the dependent background playback patch does not. + // "18.37.36", + // "18.38.44", + // "18.43.45", + // "18.44.41", + // "18.45.43", "18.48.39", "18.49.37", "19.01.34", @@ -89,9 +96,9 @@ object SpoofClientPatch : BytecodePatch( // Video qualities missing. BuildRequestFingerprint, - // Watch history. - GetTrackingUriFingerprint, - ), + // Livestream audio only background playback. + PlayerResponseModelBackgroundAudioPlaybackFingerprint, + ) ) { private const val INTEGRATIONS_CLASS_DESCRIPTOR = "Lapp/revanced/integrations/youtube/patches/spoof/SpoofClientPatch;" @@ -316,6 +323,23 @@ object SpoofClientPatch : BytecodePatch( // endregion + // region Fix livestream audio only background play if spoofing to iOS. + // This force enables audio background playback. + + PlayerResponseModelBackgroundAudioPlaybackFingerprint.resultOrThrow().mutableMethod.addInstructions( + 0, + """ + invoke-static { }, $INTEGRATIONS_CLASS_DESCRIPTOR->overrideBackgroundAudioPlayback()Z + move-result v0 + if-eqz v0, :do_not_override + return v0 + :do_not_override + nop + """ + ) + + // endregion + // Fix playback speed menu item if spoofing to iOS. CreatePlaybackSpeedMenuItemFingerprint.resultOrThrow().let { @@ -340,25 +364,6 @@ object SpoofClientPatch : BytecodePatch( // endregion - // Fix watch history if spoofing to iOS. - - GetTrackingUriFingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val returnUrlIndex = it.scanResult.patternScanResult!!.endIndex - val urlRegister = getInstruction(returnUrlIndex).registerA - - addInstructions( - returnUrlIndex, - """ - invoke-static { v$urlRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->overrideTrackingUrl(Landroid/net/Uri;)Landroid/net/Uri; - move-result-object v$urlRegister - """ - ) - } - } - - // endregion - // region Fix video qualities missing, if spoofing to iOS by overriding the user agent. BuildRequestFingerprint.resultOrThrow().let { result -> diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt deleted file mode 100644 index 328fb026f..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt +++ /dev/null @@ -1,21 +0,0 @@ -package app.revanced.patches.youtube.misc.fix.playback.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -internal object GetTrackingUriFingerprint : MethodFingerprint( - returnType = "Landroid/net/Uri;", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = emptyList(), - opcodes = listOf( - Opcode.IGET_OBJECT, - Opcode.INVOKE_STATIC, - Opcode.MOVE_RESULT_OBJECT, - Opcode.RETURN_OBJECT - ), - customFingerprint = { _, classDef -> - classDef.endsWith("TrackingUrlModel;") - } -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/PlayerResponseModelBackgroundAudioPlaybackFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/PlayerResponseModelBackgroundAudioPlaybackFingerprint.kt new file mode 100644 index 000000000..afe153219 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/PlayerResponseModelBackgroundAudioPlaybackFingerprint.kt @@ -0,0 +1,25 @@ +package app.revanced.patches.youtube.misc.fix.playback.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +internal object PlayerResponseModelBackgroundAudioPlaybackFingerprint : MethodFingerprint( + returnType = "Z", + accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, + parameters = listOf("Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;"), + opcodes = listOf( + Opcode.CONST_4, + Opcode.IF_EQZ, + Opcode.INVOKE_INTERFACE, + Opcode.MOVE_RESULT_OBJECT, + Opcode.INVOKE_VIRTUAL, + Opcode.MOVE_RESULT, + Opcode.IF_NEZ, + Opcode.GOTO, + Opcode.RETURN, + null, // Opcode.CONST_4 or Opcode.MOVE + Opcode.RETURN, + ) +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt index e74a3d11e..67a47c71d 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt @@ -32,11 +32,12 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( CompatiblePackage( "com.google.android.youtube", setOf( - "18.37.36", - "18.38.44", - "18.43.45", - "18.44.41", - "18.45.43", + // Patch supports these versions but ClientSpoof does not. + // "18.37.36", + // "18.38.44", + // "18.43.45", + // "18.44.41", + // "18.45.43", "18.48.39", "18.49.37", "19.01.34", diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml index e13b9b65a..b002d5e70 100644 --- a/src/main/resources/addresources/values/strings.xml +++ b/src/main/resources/addresources/values/strings.xml @@ -1135,7 +1135,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Client is not spoofed\n\nVideo playback may not work Turning off this setting may cause video playback issues. Spoof client to iOS - Client is currently spoofed to iOS\n\nSide effects include:\n• No HDR video\n• Higher video qualities may be missing\n• Live streams cannot play as audio only + Client is currently spoofed to iOS\n\nSide effects include:\n• HDR video may not be available\n• Watch history may not work Client is currently spoofed to Android VR\n\nSide effects include:\n• No HDR video\n• Kids videos do not playback\n• Paused videos can randomly resume\n• Low quality Shorts seekbar thumbnails\n• Download action button is hidden\n• End screen cards are hidden Spoof client thumbnails not available (API timed out) Spoof client thumbnails temporarily not available: %s From af28f4b0ad6084b8566a51024628ff08a1c89fdd Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 4 Aug 2024 19:40:12 +0000 Subject: [PATCH 43/50] chore(release): 4.12.0-dev.16 [skip ci] # [4.12.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.15...v4.12.0-dev.16) (2024-08-04) ### Bug Fixes * **YouTube - Spoof client:** Restore livestream audio only playback with iOS spoofing ([#3504](https://github.com/ReVanced/revanced-patches/issues/3504)) ([90d3288](https://github.com/ReVanced/revanced-patches/commit/90d32880906787d82c4b9a7a1099b46dff3a0870)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7dfe174d6..9690e5191 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [4.12.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.15...v4.12.0-dev.16) (2024-08-04) + + +### Bug Fixes + +* **YouTube - Spoof client:** Restore livestream audio only playback with iOS spoofing ([#3504](https://github.com/ReVanced/revanced-patches/issues/3504)) ([90d3288](https://github.com/ReVanced/revanced-patches/commit/90d32880906787d82c4b9a7a1099b46dff3a0870)) + # [4.12.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.14...v4.12.0-dev.15) (2024-08-02) diff --git a/gradle.properties b/gradle.properties index b8be694d7..ef547e83a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.15 +version = 4.12.0-dev.16 From 591903561606677d36e069089121d24d5a397f70 Mon Sep 17 00:00:00 2001 From: ReVanced Bot Date: Mon, 5 Aug 2024 21:56:44 +0200 Subject: [PATCH 44/50] chore: Sync translations (#3507) --- .../all/misc/resources/AddResourcesPatch.kt | 1 + .../addresources/values-ar-rSA/strings.xml | 2 +- .../addresources/values-az-rAZ/strings.xml | 14 +- .../addresources/values-cs-rCZ/strings.xml | 5 +- .../addresources/values-da-rDK/strings.xml | 4 +- .../addresources/values-de-rDE/strings.xml | 4 +- .../addresources/values-el-rGR/strings.xml | 10 +- .../addresources/values-es-rES/strings.xml | 4 +- .../addresources/values-fi-rFI/strings.xml | 4 +- .../addresources/values-fr-rFR/strings.xml | 4 +- .../addresources/values-hu-rHU/strings.xml | 3 +- .../addresources/values-it-rIT/strings.xml | 4 +- .../addresources/values-ja-rJP/strings.xml | 28 +- .../addresources/values-ko-rKR/strings.xml | 6 +- .../addresources/values-nb-rNO/strings.xml | 4 +- .../addresources/values-nl-rNL/strings.xml | 4 +- .../addresources/values-pl-rPL/strings.xml | 4 +- .../addresources/values-pt-rBR/strings.xml | 5 + .../addresources/values-pt-rPT/strings.xml | 4 +- .../addresources/values-ro-rRO/strings.xml | 4 +- .../addresources/values-ru-rRU/strings.xml | 2 +- .../addresources/values-sr-rCS/strings.xml | 1185 +++++++++++++++++ .../addresources/values-sr-rSP/strings.xml | 7 +- .../addresources/values-sv-rSE/strings.xml | 4 +- .../addresources/values-tr-rTR/strings.xml | 7 +- .../addresources/values-uk-rUA/strings.xml | 4 +- .../addresources/values-vi-rVN/strings.xml | 6 +- .../addresources/values-zh-rCN/strings.xml | 1 - .../addresources/values-zh-rTW/strings.xml | 1 - 29 files changed, 1265 insertions(+), 70 deletions(-) create mode 100644 src/main/resources/addresources/values-sr-rCS/strings.xml diff --git a/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt b/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt index 38c479b30..bde5c9848 100644 --- a/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt +++ b/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt @@ -125,6 +125,7 @@ object AddResourcesPatch : ResourcePatch(), MutableMapلا يتم محاكاة العميل\n\nقد لا يعمل تشغيل الفيديو إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو. Spoof Client to iOS - تتم حاليًا محاكاة العميل إلـى iOS\n\nالآثار الجانبية تشمل:\n• لا يوجد فيديو HDR\n• قد تكون جودة الفيديو الأعلى مفقودة\n• لا يمكن تشغيل البث المباشر كصوت فقط + تتم حاليًا محاكاة العميل إلـى iOS\n\nالآثار الجانبية تشمل:\n• قد لا يكون فيديو HDR متوفرًا\n• قد لا يعمل سجل المشاهدة تتم حاليًا محاكاة العميل إلـى Android VR\n\nالآثار الجانبية تشمل:\n• لا يوجد فيديو HDR\n• فيديوهات الأطفال لا يتم تشغيلهم\n• مقاطع الفيديو الموقوفة يمكن أن تستأنف عشوائياً\n• جودة منخفضة لمصغرات شريط التقدم\n• زر التنزيل مخفي\n• بطاقات نهاية الشاشة مخفية محاكاة مصغرات العميل غير متوفرة (انتهت مهلة API) محاكاة مصغرات العميل غير متوفرة مؤقتًا: %s diff --git a/src/main/resources/addresources/values-az-rAZ/strings.xml b/src/main/resources/addresources/values-az-rAZ/strings.xml index 3dd7ac71f..1a9451876 100644 --- a/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -211,7 +211,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Məlumat kartları bölməsini gizlət Məlumat kartları bölməsi gizlədilir Məlumat kartları bölməsi göstərilir - \"Əsas anlayışlar\" bölməsin gizlət + \"Əsas anlayışlar\" bölməsini gizlət \"Əsas anlayışlar\" bölməsi gizlidir \"Əsas anlayışlar\" bölməsi göstərilir Transkripsiya bölməsini gizlət @@ -282,7 +282,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Veb axtarış nəticələri göstərilir Məhsul etiketlərini gizlət Məhsul etiketləri gizlədilir - Məhsul bannerləri göstərilir + Məhsul etiketləri göstərilir Tam ekran reklamları gizlətmə yalnız köhnə cihazlarda işləyir @@ -609,7 +609,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Etiketlənmiş məhsulları gizlət Etiketlənmiş məhsullar gizlədilir Etiketlənmiş məhsullar göstərilir - Yerləşmə etiketini gizlət + Məkan etiketini gizlət Məkan etiketi gizlidir Məkan etiketi göstərilir Səsi pleylistdə saxlama düyməsini gizlət @@ -1062,9 +1062,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Bağlantılar tətbiqdə açılır - İzləmə sorğusu parametrini sil - İzləmə sorğusu parametri bağlantılardan silinir - İzləmə sorğusu parametri bağlantılardan silinmir + İzləmə sorğusu faktorun sil + İzləmə sorğusu faktoru bağlantılardan silinir + İzləmə sorğusu faktoru bağlantılardan silinmir Yaxınlaşdırma əks-əlaqəsini bağla @@ -1118,7 +1118,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Qəbuledici dəyişməyib\n\nVideo oynatma işləməyə bilər Bu seçimin bağlanması, video oynatma problemlərinə səbəb ola bilər. Qəbuledicini iOS olaraq saxtalaşdır - Qəbuledici hazırda iOS-a saxtalaşdırılıb\n\nYan təsirlərə daxildir:\n• HDR video yoxdur\n• Daha yüksək video keyfiyyətlər olmaya bilər\n• Canlı yayımlar yalnız səs kimi oynadıla bilməz + Qəbuledici hazırda iOS üzrə saxtalaşdırılıb\n\nYan təsirlərə daxildir:\n• HDR video mövcud olmaya bilər\n• Baxış tarixçəsi işləməyə bilər Qəbuledici hazırda Android VR\'ə saxtalaşdırılıb \n\nYan təsirlərə daxildir:\n• HDR video yoxdur\n• Uşaq videoları oynadılmır\n• Fasilə verilmiş videolar gözlənilmədən davam edə bilər\n• Aşağı keyfiyyətli Shorts axtarma çubuğu miniatürləri\n• \"Yüklə\" fəaliyyət düyməsi gizlidir\n• Bitiş ekran kartları gizlidir Client kiçik şəkillərini təqlid etmə əlçatmazdır (API vaxtı bitdi) Client kiçik şəkillərini təqlid etmə müvəqqəti əlçatmazdır: %s diff --git a/src/main/resources/addresources/values-cs-rCZ/strings.xml b/src/main/resources/addresources/values-cs-rCZ/strings.xml index d5f301e33..377c910e4 100644 --- a/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -214,6 +214,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Skrýt sekci informačních karet Sekce Info karty je skrytá Je zobrazena sekce Info karty + Skrýt sekci \'Klíčové koncepty\' Sekce \'Klíčové pojmy\' je skryta Zobrazí se sekce \'Klíčové pojmy\' Skrýt sekci přepisu @@ -1121,8 +1122,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Klient není spoofed\n\nPřehrávání videa nemusí fungovat Vypnutí tohoto nastavení může způsobit problémy při přehrávání videa. Spořič do iOS - Klient je v současné době spokojen s iOS\n\nBoční efekty zahrnují:\n• Žádné HDR video\n• Vyšší vlastnosti videa mohou chybět\n• Živé streamy nemohou přehrávat pouze zvuk - Klient je v současné době spout s Androidem VR\n\nBoční efekty zahrnují:\n• No HDR video\n• Dětská videa nepřehrávají\n• Pozastavená videa mohou náhodně pokračovat\n• Nízká kvalita krátkých náhledů ve vyhledávacím panelu\n• Tlačítko pro stažení akce je skryté\n• Karty s ukončenou obrazovkou jsou skryté + Klient je v současné době spokojen s iOS\n\nBoční efekty zahrnují:\n• HDR video nemusí být k dispozici\n• Historie sledování nemusí fungovat + Klient je v současné době spout s Androidem VR. Boční efekty zahrnují:\n• No HDR video\n• Dětská videa nepřehrávají\n• Pozastavená videa mohou náhodně pokračovat\n• Nízká kvalita krátkých náhledů ve vyhledávacím panelu\n• Tlačítko pro stažení akce je skryté\n• Karty s ukončenou obrazovkou jsou skryté Náhledy klientů nejsou k dispozici (vypršel časový limit API) Spouštění náhledů klientů dočasně není k dispozici: %s diff --git a/src/main/resources/addresources/values-da-rDK/strings.xml b/src/main/resources/addresources/values-da-rDK/strings.xml index e3dee2b77..39e57b34e 100644 --- a/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/src/main/resources/addresources/values-da-rDK/strings.xml @@ -1119,8 +1119,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Klienten er ikke forfalsket\n\nVideoafspilning fungerer muligvis ikke At slå denne indstilling fra kan forårsage problemer med videoafspilning. Spoof klient til iOS - Klienten er i øjeblikket spoofed til iOS\n\nBivirkninger omfatter:\n• Ingen HDR-video\n• Højere videokvaliteter mangler muligvis\n• Live streams kan ikke kun afspilles som lyd - Klienten er i øjeblikket spoofed til Android VR\n\nBivirkninger omfatter:\n• Ingen HDR-video\n• Kids videoer ikke afspilning\n• Pause videoer kan tilfældigt genoptage\n• Lav kvalitet Shorts søgelinje miniaturer\n• Download handling knap er skjult\n• End screen cards are hidden + Klienten er i øjeblikket spoofed til iOS\n\nBivirkninger omfatter:\n• HDR-video er muligvis ikke tilgængelig\n• Se historie fungerer måske ikke + Klienten er i øjeblikket spoofed til Android VR. Bivirkninger omfatter:\n• Ingen HDR-video\n• Kids videoer ikke afspilning\n• Pause videoer kan tilfældigt genoptage\n• Lav kvalitet Shorts søgelinje miniaturer\n• Download handling knap er skjult\n• End screen cards are hidden Spoof klient miniaturer ikke tilgængelige (API timemed out) Spoof klient miniaturer midlertidigt ikke tilgængelige: %s diff --git a/src/main/resources/addresources/values-de-rDE/strings.xml b/src/main/resources/addresources/values-de-rDE/strings.xml index a9c260361..39080fb55 100644 --- a/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/src/main/resources/addresources/values-de-rDE/strings.xml @@ -1120,8 +1120,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Client ist nicht gefälscht\n\nVideo-Wiedergabe funktioniert möglicherweise nicht Das Deaktivieren dieser Einstellung kann zu Videowiedergabeproblemen führen. Spoof-Client zu iOS - Der Client ist derzeit zu iOS\n\nSeiteneffekten gefälscht:\n• Kein HDR-Video\n• Höhere Video-Qualitäten fehlen möglicherweise\n• Live-Streams können nicht nur als Audio abspielen - Der Client ist derzeit auf Android VR\n\nSeiteneffekte gefälscht:\n• Kein HDR Video\n• Kindervideos spielen nicht\n• Pausierte Videos können zufällig wieder aufgenommen werden\n• Niedrige Shorts Suchleisten-Thumbnails\n• Download-Button ist ausgeblendet\n• Endbildschirm-Karten werden versteckt + Der Client ist derzeit zu iOS\n\nSeiteneffekten gefälscht:\n• HDR-Video ist möglicherweise nicht verfügbar\n• Verlauf kann nicht funktionieren + Der Client ist derzeit auf Android VR. Seiteneffekte gefälscht:\n• Kein HDR Video\n• Kindervideos spielen nicht\n• Pausierte Videos können zufällig wieder aufgenommen werden\n• Niedrige Shorts Suchleisten-Thumbnails\n• Download-Button ist ausgeblendet\n• Endbildschirm-Karten werden versteckt Spoof-Thumbnails nicht verfügbar (API-Zeitüberschreitung) Spoof-Client-Thumbnails vorübergehend nicht verfügbar: %s diff --git a/src/main/resources/addresources/values-el-rGR/strings.xml b/src/main/resources/addresources/values-el-rGR/strings.xml index c3f641b11..9622f190d 100644 --- a/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/src/main/resources/addresources/values-el-rGR/strings.xml @@ -212,9 +212,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Ενότητα καρτών πληροφοριών Κρυμμένη Εμφανίζεται - Απόκρυψη ενότητας \'Έννοιες κλειδιού\' - \'Βασικές έννοιες\' ενότητα είναι κρυμμένη - \'Βασικές έννοιες\' ενότητα εμφανίζεται + Ενότητα σχετιζόμενων εννοιών + Κρυμμένη + Εμφανίζεται Ενότητα Απομαγνητοφώνησης Κρυμμένη Εμφανίζεται @@ -1120,8 +1120,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Το πρόγραμμα πελάτη δεν παραποιείται\n\nΗ αναπαραγωγή βίντεο ενδέχεται να μη λειτουργεί Η απενεργοποίηση αυτής της ρύθμισης ενδέχεται να προκαλέσει προβλήματα αναπαραγωγής βίντεο. Παραποίηση σε iOS - Ο πελάτης αυτή τη στιγμή παραποιείται ως iOS\n\nΟι παρενέργειες περιλαμβάνουν:\n• Δεν υπάρχει η ποιότητα HDR στα βίντεο\n• Μπορεί να λείπουν επιλογές για υψηλές αναλύσεις βίντεο\n• Δε γίνεται στις ζωντανές ροές η αναπαραγωγή μόνο του ήχου - Ο πελάτης αυτή τη στιγμή παραποιείται ως Android VR\n\nΟι παρενέργειες περιλαμβάνουν:\n• Δεν υπάρχει η ποιότητα HDR στα βίντεο\n• Δεν λειτουργεί η αναπαραγωγή στα βίντεο για παιδιά\n• Βίντεο που έχετε θέσει σε παύση μπορεί να συνεχίσουν να παίζουν τυχαία\n• Χαμηλή ποιότητα μικρογραφιών μπάρας αναζήτησης στα shorts\n• Το κουμπί λήψης είναι πάντα κρυμμένο\n• Οι κάρτες τελικής οθόνης είναι πάντα κρυμμένες + Ο πελάτης αυτή τη στιγμή παραποιείται ως iOS\n\nΟι παρενέργειες περιλαμβάνουν:\n• Δεν υπάρχει η ποιότητα HDR στα βίντεο\n• Το ιστορικό παρακολούθησης μπορεί να μη λειτουργεί + Ο πελάτης αυτή τη στιγμή παραποιείται ως Android VR. Οι παρενέργειες περιλαμβάνουν:\n• Δεν υπάρχει η ποιότητα HDR στα βίντεο\n• Δεν λειτουργεί η αναπαραγωγή στα βίντεο για παιδιά\n• Βίντεο που έχετε θέσει σε παύση μπορεί να συνεχίσουν να παίζουν τυχαία\n• Χαμηλή ποιότητα μικρογραφιών μπάρας αναζήτησης στα shorts\n• Το κουμπί λήψης είναι πάντα κρυμμένο\n• Οι κάρτες τελικής οθόνης είναι πάντα κρυμμένες Μικρογραφίες προεπισκόπησης μη διαθέσιμες (καθυστέρηση API) Μικρογραφίες προεπισκόπησης προσωρινά μη διαθέσιμες: %s diff --git a/src/main/resources/addresources/values-es-rES/strings.xml b/src/main/resources/addresources/values-es-rES/strings.xml index dab8dbad4..1f761cb77 100644 --- a/src/main/resources/addresources/values-es-rES/strings.xml +++ b/src/main/resources/addresources/values-es-rES/strings.xml @@ -1120,8 +1120,8 @@ This is because Crowdin requires temporarily flattening this file and removing t El cliente no está falsificado\n\nEs posible que la reproducción de vídeo no funcione Desactivar esta configuración puede causar problemas de reproducción de vídeo. Spoof cliente a iOS - El cliente está actualmente falseado a iOS\n\nLos efectos laterales incluyen:\n• No hay vídeo HDR\n• Pueden faltar más calidades de vídeo\n• Las transmisiones en vivo no pueden reproducirse como audio solo - El cliente está actualmente falseado a Android VR\n\nLos efectos laterales incluyen:\n• No hay vídeo HDR\n• Los niños vídeos no se reproducirán\n• Los vídeos en pausa pueden reanudarse aleatoriamente\n• Las miniaturas de barras cortas de baja calidad\n• El botón de acción está oculto\n• Las tarjetas de pantalla final están ocultas + El cliente está actualmente falseado a iOS\n\nLos efectos laterales incluyen:\n• El vídeo HDR puede no estar disponible\n• El historial del reloj puede no funcionar + El cliente está actualmente falseado a Android VR. Los efectos laterales incluyen:\n• No hay vídeo HDR\n• Los niños vídeos no se reproducirán\n• Los vídeos en pausa pueden reanudarse aleatoriamente\n• Las miniaturas de barras cortas de baja calidad\n• El botón de acción está oculto\n• Las tarjetas de pantalla final están ocultas Las miniaturas del cliente de Spoof no están disponibles (API) Las miniaturas del cliente Spoof temporalmente no están disponibles: %s diff --git a/src/main/resources/addresources/values-fi-rFI/strings.xml b/src/main/resources/addresources/values-fi-rFI/strings.xml index aad5fb79f..1d7268b6c 100644 --- a/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -1119,8 +1119,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Asiakas ei ole spoofed\n\nVideon toisto ei ehkä toimi Tämän asetuksen poistaminen käytöstä voi aiheuttaa videon toiston ongelmia. Spoof asiakas iOS - Asiakas on tällä hetkellä pilaantunut iOS\n\nSivuvaikutukset ovat:\n• Ei HDR video\n• Korkeampi videon ominaisuuksia voi puuttua,\n• Live streams ei voi toistaa vain ääntä - Asiakas on tällä hetkellä hemmoteltu Android VR\n\nSivuefektejä ovat:\n• Ei HDR video\n• Lasten videot eivät toista\n• Keskeytetty videot voivat toistua satunnaisesti\n• Huonolaatuiset shortsit seekbar pikkukuvat\n• Lataa toimintapainike on piilotettu\n• Päätä näytöt ovat piilotettuja + Asiakas on tällä hetkellä pilkottu iOS\n\nSivuvaikutukset ovat:\n• HDR video ei ehkä ole saatavilla\n• Katsella historia ei ehkä toimi + Asiakas on tällä hetkellä hemmoteltu Android VR. Sivuefektejä ovat:\n• Ei HDR video\n• Lasten videot eivät toista\n• Keskeytetty videot voivat toistua satunnaisesti\n• Huonolaatuiset shortsit seekbar pikkukuvat\n• Lataa toimintapainike on piilotettu\n• Päätä näytöt ovat piilotettuj Spoof asiakkaan pikkukuvat ei ole käytettävissä (API ajastettu) Spoof asiakkaan pikkukuvat tilapäisesti ei käytettävissä: %s diff --git a/src/main/resources/addresources/values-fr-rFR/strings.xml b/src/main/resources/addresources/values-fr-rFR/strings.xml index 1da633856..3cdfc0893 100644 --- a/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -1120,8 +1120,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Le client n\'est pas trompé\n\nLa lecture de la vidéo peut ne pas fonctionner Désactiver ce paramètre peut causer des problèmes de lecture vidéo. Falsifier le client vers iOS - Le client est actuellement usurpé à iOS\n\nLes effets secondaires comprennent :\n• Aucune vidéo HDR\n• Des qualités vidéo plus élevées peuvent manquer\n• Les flux en direct ne peuvent pas jouer uniquement en tant qu\'audio - Le client est actuellement falsifié vers Android VR\n\nEffets secondaires incluant:\n• Aucune vidéo HDR\n• Les vidéos des enfants ne lisent pas\n• Les vidéos en pause peuvent reprendre aléatoirement\n• Les Shorts de basse qualité sur les vignettes de la barre de recherche\n• Le bouton d\'action de téléchargement est caché\n• Les cartes d\'écran de fin sont cachées + Le client est actuellement falsifié vers iOS\n\nLes effets secondaires incluent :\n• La vidéo HDR peut ne pas être disponible\n• L\'historique de la montre peut ne pas fonctionner + Le client est actuellement falsifié vers Android VR. Effets secondaires incluant:\n• Aucune vidéo HDR\n• Les vidéos des enfants ne lisent pas\n• Les vidéos en pause peuvent reprendre aléatoirement\n• Les Shorts de basse qualité sur les vignettes de la barre de recherche\n• Le bouton d\'action de téléchargement est caché\n• Les cartes d\'écran de fin sont cachées Tromper les vignettes du client non disponibles (API expirée) Tromper les vignettes du client temporairement indisponibles : %s diff --git a/src/main/resources/addresources/values-hu-rHU/strings.xml b/src/main/resources/addresources/values-hu-rHU/strings.xml index 6949b9d33..eaa9f402b 100644 --- a/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -1120,8 +1120,7 @@ This is because Crowdin requires temporarily flattening this file and removing t A kliens nincs hamisítva\n\nLehet, hogy a videólejátszás nem működik A beállítás kikapcsolása videolejátszási problémákat okozhat. Hamis kliens iOS-re - A kliens jelenleg iOS-re van hamisítva\n\nA mellékhatások a következők:\n• Nincs HDR-videó\n• Hiányozhatnak a jobb videóminőségek\n• Az élő közvetítések nem játszhatók le csak hangként - A kliens jelenleg Android VR-re van hamisítva\n\nA mellékhatások a következők:\n• Nincs HDR-videó\n• A gyerekeknek készült videók nem játszhatók le\n• A szüneteltetett videók véletlenszerűen folytatódhatnak\n• Rossz minőségű rövidfilmek kereshető indexképei\n• Letöltés művelet gomb el van rejtve\n• A záróképernyő-kártyák el vannak rejtve + A kliens jelenleg Android VR-re van hamisítva. A mellékhatások a következők:\n• Nincs HDR-videó\n• A gyerekeknek készült videók nem játszhatók le\n• A szüneteltetett videók véletlenszerűen folytatódhatnak\n• Rossz minőségű rövidfilmek kereshető indexképei\n• Letöltés művelet gomb el van rejtve\n• A záróképernyő-kártyák el vannak rejtve Hamis kliens miniatűrök nem érhetők el (API időtúllépés) A hamis kliens miniatűrök átmenetileg nem érhetők el: %s diff --git a/src/main/resources/addresources/values-it-rIT/strings.xml b/src/main/resources/addresources/values-it-rIT/strings.xml index 50af732aa..b6e69bf9f 100644 --- a/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/src/main/resources/addresources/values-it-rIT/strings.xml @@ -1118,8 +1118,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Il client non è spoofed\n\nLa riproduzione video potrebbe non funzionare Disattivare questa impostazione potrebbe causare problemi di riproduzione video. Spoof client per iOS - Il client è attualmente spoofed per iOS\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• Potrebbero mancare qualità video più elevate\n• I flussi live non possono essere riprodotti solo come audio - Il client è attualmente spoofed per Android VR\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Pantaloncini seekbar miniature\n• Il pulsante di azione per scaricare è nascosto\n• Le schede dello schermo finale sono nascoste + Il client è attualmente spoofed per iOS\n\nGli effetti collaterali includono:\n• video HDR potrebbe non essere disponibile\n• La cronologia degli orologi potrebbe non funzionare + Il client è attualmente spoofed per Android VR. Gli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Pantaloncini seekbar miniature\n• Il pulsante di azione per scaricare è nascosto\n• Le schede dello schermo finale sono nascoste Le miniature del client non sono disponibili (timeout API) Miniature del client Spoof temporaneamente non disponibili: %s diff --git a/src/main/resources/addresources/values-ja-rJP/strings.xml b/src/main/resources/addresources/values-ja-rJP/strings.xml index 5785e287b..eceb8a66c 100644 --- a/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -83,8 +83,8 @@ This is because Crowdin requires temporarily flattening this file and removing t デバッグログは有効です デバッグログは無効です ログプロトコルバッファ - デバッグログにprotoバッファが含まれています - デバッグログにはプロットバッファが含まれていません + デバッグログにはプロトバッファが含まれる + デバッグログにはプロトバッファは含まれません スタックトレースのログ デバッグログにスタックトレースを含む デバッグログにスタックトレースが含まれていません @@ -94,7 +94,7 @@ This is because Crowdin requires temporarily flattening this file and removing t エラートーストをオフにすると、すべてのReVancedエラー通知が非表示になります。\n\n予期せぬイベントは通知されません。 - 「いいね!」/「購読」ボタンのグローを無効にする + いいね / 登録ボタンの発光を無効にする いいねと購読ボタンは、言及されても輝きません いいねと購読ボタンが表示されると点灯します グレーのセパレーターを非表示 @@ -444,7 +444,8 @@ This is because Crowdin requires temporarily flattening this file and removing t 通知で作成を切り替える Create button is switched with Notifications button\n\nNote: Enabling this also forcly hides video ads - format@@0 ボタンは通知ボタンで切り替えられません + 作成ボタンを通知ボタンは入れ替わりません +既知の問題: この設定がオンの場合、広告のホワイトリストは動作しません ナビゲーションボタンのラベルを隠す ラベルは非表示です ラベルを表示する @@ -674,14 +675,14 @@ This is because Crowdin requires temporarily flattening this file and removing t プレイヤーオーバーレイの透明度 - 0-100の間の不透明度の値 (0が透明) + 透明度の値は 0〜100 の範囲で、0 が透明です プレイヤーオーバーレイの不透明度は0-100の間でなければなりません 非表示 Dislikes temporarily not available(API タイムアウト) - 嫌がらせは利用できません( %dの状態) + 低評価数は一時的に利用できません (ステータス %d) Disfavs not available(client API limit reached) 嫌いは利用できません(%s) @@ -757,7 +758,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 新しいセグメントを作成ボタンが表示されます 新規セグメント作成ボタンは表示されません 新しいセグメントステップを調整する - 新しいセグメントを作成する際の時間調整ボタンの移動時間 (ミリ秒) + 新しいセグメントを作成する際の時間調節ボタンの移動時間 (単位: ミリ秒) 値は正の数でなければなりません ガイドラインを見る ガイドラインには、新しいセグメントを作成するためのルールとヒントが含まれています @@ -773,7 +774,7 @@ This is because Crowdin requires temporarily flattening this file and removing t SponsorBlockリーダーボードは、どれだけの時間が節約されたかを知ることができます。セグメントがスキップされるたびにメッセージがリーダーボードに送信されます。 スキップカウント追跡が有効になっていません 最小のセグメントの長さ - この値より短いセグメントは(秒単位で)表示またはスキップされません + 設定値 (単位: 秒) より短いセグメントはスキップされず、プレーヤーにも表示されません あなたのプライベート ユーザー ID これは非公開にする必要があります。パスワードのようなもので誰とも共有するべきではありません。誰かがこれを持っている場合、あなたになりすますことができます プライベートユーザーIDは30文字以上でなければなりません @@ -854,10 +855,10 @@ This is because Crowdin requires temporarily flattening this file and removing t セグメントを送信できません。\n既に存在します セグメントが正常に送信されました - SponsorBlockは一時的に利用できません(APIがタイムアウトしました) + SponsorBlock は一時的に利用できません (API タイムアウト) SponsorBlockは一時的に利用できません( %dの状態) SponsorBlockは一時的に利用できません - セグメントに投票できません(APIがタイムアウトしました) + セグメントを評価できません (API タイムアウト) セグメントに投票できませんでした(状態: %1$d %2$s) セグメントに投票できません: %s 高評価 @@ -885,7 +886,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 無効な時間の値です 統計 - 統計は一時的に利用できません(APIがダウンしています) + 統計は一時的に利用できません (API ダウン) 読み込み中... SponsorBlock は無効です あなたのユーザー名: <b>%s</b> @@ -975,7 +976,7 @@ This is because Crowdin requires temporarily flattening this file and removing t スキップとバックが非表示になります スキップとバックが表示されます Overlay opacity - 0-100の間の不透明度の値 (0が透明) + 透明度の値は 0〜100 の範囲で、0 が透明です ミニプレーヤーオーバーレイの不透明度は0-100の間でなければなりません @@ -1117,8 +1118,6 @@ This is because Crowdin requires temporarily flattening this file and removing t クライアントは偽装されていません\n\nビデオ再生が動作しない可能性があります この設定をオフにすると、ビデオ再生の問題が発生する可能性があります。 クライアントを iOS に偽装する - クライアントは現在 iOS\n\nの副作用になりすましています:\n• HDRビデオがありません\n•\n• ライブストリームはオーディオのみとして再生できません - クライアントのサムネイルを偽装できません(APIがタイムアウトしました) クライアントのサムネイルを一時的に偽装できません: %s @@ -1132,7 +1131,6 @@ This is because Crowdin requires temporarily flattening this file and removing t アプリの署名がフィード動画になりすましではありません\n\nフィードの動画は再生に問題が発生する前に1分未満再生されます ストーリーボードを偽装する ストーリーボードのなりすまし - ストーリーボードを一時的に偽装できません(APIがタイムアウトしました) 一時的にストーリーボードを偽装できません: %s diff --git a/src/main/resources/addresources/values-ko-rKR/strings.xml b/src/main/resources/addresources/values-ko-rKR/strings.xml index e548a0359..0362f2349 100644 --- a/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -105,8 +105,8 @@ This is because Crowdin requires temporarily flattening this file and removing t 워터마크가 숨겨집니다 워터마크가 노출됩니다 좌우 슬라이드 선반 숨기기 - 다음 선반이 숨겨집니다:\n• 다시 듣기\n• 다시 시청하기\n• 이어서 시청하기\n• 채널 더보기\n• 이 게임 더보기\n• 주요 뉴스\n• 맞춤 실시간 스트림\n• 라이브 쇼핑\n• 보건 정보 출처, etc. - 다음 선반이 노출됩니다:\n• 다시 듣기\n• 다시 시청하기\n• 이어서 시청하기\n• 채널 더보기\n• 이 게임 더보기\n• 주요 뉴스\n• 맞춤 실시간 스트림\n• 라이브 쇼핑\n• 보건 정보 출처, etc + 다음 선반이 숨겨집니다:\n• 다시 듣기\n• 다시 시청하기\n• 이어서 시청하기\n• 채널 더보기\n• 이 게임 더보기\n• 주요 뉴스, 뉴스 속보\n• 맞춤 실시간 스트림\n• 라이브 쇼핑\n• 보건 정보 출처, etc. + 다음 선반이 노출됩니다:\n• 다시 듣기\n• 다시 시청하기\n• 이어서 시청하기\n• 채널 더보기\n• 이 게임 더보기\n• 주요 뉴스, 뉴스 속보\n• 맞춤 실시간 스트림\n• 라이브 쇼핑\n• 보건 정보 출처, etc 가입 버튼 숨기기 @@ -1122,7 +1122,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 클라이언트를 변경하지 않습니다\n동영상 재생 문제가 발생할 수 있습니다 이 설정을 비활성화하면 동영상 재생 문제가 발생할 수 있습니다 iOS 클라이언트로 변경하기 - 클라이언트를 iOS 클라이언트로 변경합니다\n\n알려진 문제점:\n• HDR 동영상이 재생되지 않을 수 있습니다\n• 동영상이 초고화질 동영상 값으로 재생되지 않을 수 있습니다 (1440p, 2160p)\n• 실시간 스트림에서 \'백그라운드 재생\'을 사용할 수 없습니다 + 클라이언트를 iOS 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상이 재생되지 않을 수 있습니다\n• 시청 기록이 작동되지 않을 수 있습니다 클라이언트를 Android VR 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상이 재생되지 않을 수 있습니다\n• Kids 동영상을 재생할 수 없습니다\n• 일시 정지된 동영상이 갑자기 다시 시작될 수 있습니다\n• 저화질 Shorts 재생바 썸네일이 표시됩니다\n• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다\n• 최종 화면 카드가 표시되지 않습니다 클라이언트 썸네일을 사용할 수 없습니다 (응답 시간 초과) 클라이언트 썸네일을 일시적으로 사용할 수 없습니다: %s diff --git a/src/main/resources/addresources/values-nb-rNO/strings.xml b/src/main/resources/addresources/values-nb-rNO/strings.xml index a5a0ff50c..3a99c5ebd 100644 --- a/src/main/resources/addresources/values-nb-rNO/strings.xml +++ b/src/main/resources/addresources/values-nb-rNO/strings.xml @@ -1105,8 +1105,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Klienten er ikke spoofed\n\nVideo playback fungerer kanskje ikke Ved å slå av denne innstillingen kan problemer med videoavspilling. Forside klienten til iOS - Klienten er for øyeblikket oppslukt til iOS\n\nSide include:\n• Ingen HDR-video\n• Høyere videokvaliteter kan mangle\n• Live-strømmer kan ikke spille som lyd - Klienten er for øyeblikket skummet til Android VR\n\nsideeffekter inkluderer:\n• Ingen HDR video\n• Barn videoer ikke spiller tilbake\n• Paused videoer kan tilfeldig gjenoppta\n• Lavkvalitet shorts søkbar miniatyrbilder\n• Last ned handlingsknappen er skjult\n• Sluttskjermkort er skjult + Klienten er for øyeblikket oppslitt til iOS\n\nSide include:\n• HDR video er kanskje ikke tilgjengelig\n• Se loggen fungerer kanskje ikke + Klienten er for øyeblikket skummet til Android VR. sideeffekter inkluderer:\n• Ingen HDR video\n• Barn videoer ikke spiller tilbake\n• Paused videoer kan tilfeldig gjenoppta\n• Lavkvalitet shorts søkbar miniatyrbilder\n• Last ned handlingsknappen er skjult\n• Sluttskjermkort er skjult Etterligning av klient miniatyrbilder er ikke tilgjengelige (API tidsavbrutt) Spoav klientens miniatyrbilder er midlertidig ikke tilgjengelig: %s diff --git a/src/main/resources/addresources/values-nl-rNL/strings.xml b/src/main/resources/addresources/values-nl-rNL/strings.xml index 331f9ed95..bb49857fc 100644 --- a/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -1120,8 +1120,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Client is niet vervalst\n\nVideo afspelen werkt mogelijk niet Het uitschakelen van deze instelling kan problemen met het afspelen van video veroorzaken. Klant naar iOS vervalsen - De klant is momenteel gespoofd naar iOS\n\nSide effecten zoals:\n• Geen HDR video\n• Hogere videokwaliteiten kunnen ontbreken\n• Live streams kunnen niet alleen worden afgespeeld als audio - Cliënt is momenteel ondergesneeuwd naar Android VR\n\nSide effecten inclusief:\n• Geen HDR video\n• Kinderen video\'s spelen niet af\n• Gepauzeerde video\'s kunnen willekeurig hervatten\n• Slechte kwaliteit zoekbalkminiaturen\n• Download actieknop is verborgen\n• Eindscherm kaarten zijn verborgen + Klant is momenteel gespoofd naar iOS\n\nSide effecten zoals:\n• HDR video is mogelijk niet beschikbaar\n• Bekijk geschiedenis werkt mogelijk niet + Cliënt is momenteel ondergesneeuwd naar Android VR. Side effecten inclusief:\n• Geen HDR video\n• Kinderen video\'s spelen niet af\n• Gepauzeerde video\'s kunnen willekeurig hervatten\n• Slechte kwaliteit zoekbalkminiaturen\n• Download actieknop is verborgen\n• Eindscherm kaarten zijn verborgen Klant miniaturen niet beschikbaar (API timed out) Klant miniaturen tijdelijk niet beschikbaar: %s diff --git a/src/main/resources/addresources/values-pl-rPL/strings.xml b/src/main/resources/addresources/values-pl-rPL/strings.xml index 2889d8060..b0e8dfe18 100644 --- a/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -1120,8 +1120,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Klient nie jest zespoofowany\n\nOdtwarzanie wideo może nie działać Wyłączenie tego ustawienia może spowodować problemy z odtwarzaniem wideo. Zespoofuj klient do wersji iOS - Klient jest obecnie spoofed na iOS\n\nEfekty niepożądane obejmują:\n• Bez wideo HDR\n• Może brakować wyższej jakości wideo\n• Strumienie na żywo nie może odtwarzać tylko jako dźwięk - Klient jest obecnie spoofed na Androida VR\n\nEfekty niepożądane obejmują:\n• Brak filmu HDR\n• Filmy dziecięce nie odtwarza\n• Wstrzymane filmy mogą losowo wznawiać\n• Niska jakość miniatur paska wyszukiwania skrótów\n• Przycisk pobierania jest ukryty\n• Karty ekranu końcowego są ukryte + Klient jest obecnie spoofed to iOS\n\nDziałania niepożądane obejmują:\n• Wideo HDR może nie być dostępne\n• Historia zegarków może nie działać + Klient jest obecnie spoofed na Androida VR. Efekty niepożądane obejmują:\n• Brak filmu HDR\n• Filmy dziecięce nie odtwarza\n• Wstrzymane filmy mogą losowo wznawiać\n• Niska jakość miniatur paska wyszukiwania skrótów\n• Przycisk pobierania jest ukryty\n• Karty ekranu końcowego są ukryte Miniatury klienta nie są dostępne (limit czasu API) Miniaturki klienta tymczasowo nie są dostępne: %s diff --git a/src/main/resources/addresources/values-pt-rBR/strings.xml b/src/main/resources/addresources/values-pt-rBR/strings.xml index 1604a0971..3700cc148 100644 --- a/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -213,6 +213,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Ocultar seção de cartões de informações Seção de cartões de informações está oculto Seção de cartões de informações não está oculto + Ocultar a seção \'Conceitos-chave\' + A seção \'Conceitos-chave\' está oculta + A seção \'Conceitos-chave\' é mostrada Ocultar seção de transcrição Seção de transcrição está oculta Seção de transcrição não está oculta @@ -925,6 +928,7 @@ This is because Crowdin requires temporarily flattening this file and removing t 18.20.39 - Restaurar a velocidade de vídeo ampla & menu de qualidade 18.09.39 - Restaurar aba biblioteca 17.41.37 - Restaurar prateleira de lista de reprodução antiga + 17.33.42 - Restaurar layout antigo da interface Definir página inicial @@ -1117,6 +1121,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Cliente não é falsificado\n\nA reprodução de vídeo pode não funcionar Desativar essa configuração pode causar problemas de reprodução de vídeo. Cliente Spoof para iOS + O cliente está falsificado para o Android VR\n\nOs efeitos colaterais incluem:\n• Sem vídeo HDR\n• Vídeos infantis não são reproduzidos\n• Vídeos pausados podem ser retomados aleatoriamente\n• Miniaturas da barra de busca de Shorts de baixa qualidade\n• O botão de ação de download está oculto\n• Os cards da tela final estão ocultos Miniaturas Spoof client não disponíveis (API timeout) Miniaturas Spoof client temporariamente não disponíveis: %s diff --git a/src/main/resources/addresources/values-pt-rPT/strings.xml b/src/main/resources/addresources/values-pt-rPT/strings.xml index cb7f0eee6..4a1430bc7 100644 --- a/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -1117,8 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Cliente não é falsificado\n\nA reprodução de vídeo pode não funcionar Desativar essa configuração pode causar problemas de reprodução de vídeo. Cliente Spoof para iOS - O cliente está spoofed para o iOS\n\nOs efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• Qualidades maiores de vídeo podem estar faltando\n• Transmissões ao vivo não podem reproduzir apenas áudio - O cliente está oculta para o Android VR\n\nOs efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• As crianças não reproduzem\n• Os vídeos pausados podem retomar aleatoriamente\n• Miniaturas da barra de busca curta de baixa qualidade\n• Botão de ação para baixar está oculto\n• Cartões de tela final estão ocultos + Cliente está spoofed no momento para iOS\n\nOs efeitos colaterais incluem:\n• HDR vídeos podem não estar disponíveis\n• Watch histórico pode não funcionar + O cliente está oculta para o Android VR. Os efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• As crianças não reproduzem\n• Os vídeos pausados podem retomar aleatoriamente\n• Miniaturas da barra de busca curta de baixa qualidade\n• Botão de ação para baixar está oculto\n• Cartões de tela final estão ocultos Miniaturas Spoof client não disponíveis (API timeout) Miniaturas Spoof client temporariamente não disponíveis: %s diff --git a/src/main/resources/addresources/values-ro-rRO/strings.xml b/src/main/resources/addresources/values-ro-rRO/strings.xml index 563e0385a..4038ac986 100644 --- a/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -1121,8 +1121,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Clientul nu este lovit\n\nEste posibil ca redarea video să nu funcționeze Dezactivarea acestei setări poate cauza probleme de redare video. Spoof client pe iOS - Clientul este în prezent falsificat de iOS\n\nEfectele secundare includ:\n• Niciun video HDR\n• Calități video mai mari pot lipsi\n• Fluxuri live nu pot fi redate deoarece numai audio - Clientul este în prezent falsificat pe Android VR\n\nEfectele secundare includ:\n• Niciun video HDR\n• Videoclipuri cu copii nu redă\n• Videoclipurile întrerupte pot relua aleatoriu\n• Pictograme scurte de calitate slabă\n• Butonul acțiunii de descărcare este ascuns\n• Cardurile de pe ecran sunt ascunse + Clientul este în prezent falsificat de iOS\n\nReacţiile adverse includ:\n• este posibil ca videoclipul HDR să nu fie disponibil\n• istoricul ceasului poate să nu funcționeze + Clientul este în prezent falsificat pe Android VR. Efectele secundare includ:\n• Niciun video HDR\n• Videoclipuri cu copii nu redă\n• Videoclipurile întrerupte pot relua aleatoriu\n• Pictograme scurte de calitate slabă\n• Butonul acțiunii de descărcare este ascuns\n• Cardurile de pe ecran sunt ascunse Spoof a miniaturilor clientului nu este disponibil (API a expirat) Fixarea miniaturilor clientului nu este disponibilă temporar: %s diff --git a/src/main/resources/addresources/values-ru-rRU/strings.xml b/src/main/resources/addresources/values-ru-rRU/strings.xml index 652dcbec4..b94c00850 100644 --- a/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -1120,7 +1120,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Клиент не подменен\n\nВоспроизведение видео может не работать Отключение этой настройки может вызвать проблемы с воспроизведением видео. Подмена клиента на iOS - В настоящее время клиент подменен на iOS\n\nПобочные эффекты включают:\n• Отсутствует HDR видео\n• Более высокие качества видео могут отсутствовать\n• Прямые трансляции не могут воспроизводиться только как аудио + В настоящее время клиент подменен на iOS\n\nПобочные эффекты включают:\n• HDR видео может отсутствовать\n• История просмотров может не работать В настоящее время клиент подменен на Android VR\n\nПобочные эффекты включают:\n• Отсутствует HDR видео\n• Детские видео не воспроизводятся\n• Приостановленные видео могут случайно возобновляться\n• Миниатюры прогресса воспроизведения Shorts низкого качества\n• Кнопка \"Скачать\" скрыта\n• Заставки следующих видео в конце просмотра скрыты Миниатюры в режиме подмены клиента недоступны (время API истекло) Миниатюры в режиме подмены клиента временно недоступны: %s diff --git a/src/main/resources/addresources/values-sr-rCS/strings.xml b/src/main/resources/addresources/values-sr-rCS/strings.xml new file mode 100644 index 000000000..fded9e903 --- /dev/null +++ b/src/main/resources/addresources/values-sr-rCS/strings.xml @@ -0,0 +1,1185 @@ + + + + + + ReVanced + Želite li da nastavite? + Resetuj + Osveži i restartuj + Restartuj + Uvoz + Kopiraj + Podešavanja ReVanceda su vraćena na podrazumevane vrednosti + Uvezeno %d podešavanja + Neuspešan uvoz: %s + + + + MicroG GmsCore nije instaliran. Instalirajte ga. + Neophodna radnja + MicroG GmsCore nema dozvolu za rad u pozadini.\n\nPratite uputstvo „Don\'t kill my app” za svoj telefon i primenite uputstva na svoju MicroG instalaciju.\n\nOvo je neophodno da bi aplikacija radila. + Otvori veb-sajt + Optimizacija baterije za MicroG GmsCore mora biti onemogućena da bi se sprečili problemi.\n\nDodirnite dugme „Nastavi” i onemogućite optimizaciju baterije. + Nastavi + + + + + ReVanced + Koristite verziju <i>%s</i> ReVanced pečeva + Napomena + Ova verzija je predizdanje i možda ćete imati neočekivane probleme + Zvanični linkovi + Uvoz / Izvoz + Uvoz / Izvoz podešavanja ReVanceda + + + O programu + Oglasi + Alternativne sličice + Fid + Plejer + Opšti izgled + Shorts + Traka za premotavanje + Kontrole prevlačenja + Razno + Video + + + Otklanjanje grešaka + Omogućite ili onemogućite opcije za otklanjanje grešaka + Evidentiranje otklanjanja grešaka + Evidencije otklanjanja grešaka su omogućene + Evidencije otklanjanja grešaka su onemogućene + Evidentiranje bafera protokola + Evidencije otklanjanja grešaka sadrže bafer protokola + Evidencije otklanjanja grešaka ne sadrže bafer protokola + Evidentiranje praćenja steka + Evidencije otklanjanja grešaka sadrže praćenje steka + Evidencije otklanjanja grešaka ne sadrže praćenje steka + Prikaži iskačuće obaveštenje pri grešci s ReVancedom + Iskačuće obaveštenje se prikazuje ako dođe do greške + Iskačuće obavešenje se ne prikazuje ako dođe do greške + Isključivanje iskačućih obaveštenja o grešci sakriva sva obaveštenja o greškama u ReVancedu.\n\nNećete biti obavešteni ni o kakvim neočekivanim događajima. + + + Onemogući sjaj dugmadi „Sviđa mi se” / „Zaprati” + Dugmad „Sviđa mi se” i „Zaprati” neće svetleti kada se pritisnu + Dugmad „Sviđa mi se” i „Zaprati” će svetleti kada se pritisnu + Sakrij sivi separator + Sivi separatori su skriveni + Sivi separatori su prikazani + Sakrij vodeni žig kanala + Vodeni žig je skriven + Vodeni žig je prikazan + Sakrij horizontalne police + Police su skrivene, kao što su:\n• Važne vesti\n• Nastavite da gledate\n• Istražite još kanala\n• Kupovina\n• Gledajte ponovo + Police su prikazane + + Sakrij dugme „Učlani me” + Dugme je skriveno + Dugme je prikazano + + Sakrij policu „Za vas” na stranici kanala + Polica je skrivena + Polica je prikazana + + Sakrij dugme „Obavesti me” + Dugme je skriveno + Dugme je prikazano + + Sakrij preporuke „Drugi su takođe gledali” + Preporuke su skrivene + Preporuke su prikazane + + Sakrij dugme „Prikaži još” + Dugme je skriveno + Dugme je prikazano + Sakrij vremenske reakcije + Vremenske reakcije su skrivene + Vremenske reakcije su prikazane + Sakrij zaglavlje police pri rezultatima pretrage + Zaglavlje police je skriveno + Zaglavlje police je prikazano + Sakrij smernice kanala + Smernice kanala su skrivene + Smernice kanala su prikazane + Sakrij proširivi deo ispod videa + Proširivi delovi su skriveni + Proširivi delovi su prikazani + Sakrij podnožje menija kvaliteta videa + Podnožje menija kvaliteta videa je skriveno + Podnožje menija kvaliteta videa je prikazano + Sakrij objave zajednice + Objave zajednice su skrivene + Objave zajednice su prikazane + Sakrij kompaktne banere + Kompaktni baneri su skriveni + Kompaktni baneri su prikazani + Sakrij odeljak za filmove + Odeljak za filmove je skriven + Odeljak za filmove je prikazan + Sakrij ankete u fidu + Ankete u fidu su skrivene + Ankete u fidu su prikazane + Sakrij smernice zajednice + Smernice zajednice su skrivene + Smernice zajednice su prikazane + Sakrij smernice zajednice pratilaca + Smernice zajednice pratilaca su skrivene + Smernice zajednice pratilaca su prikazane + Sakrij policu članova kanala + Polica članova kanala je skrivena + Polica članova kanala je prikazana + Sakrij kutije za hitne slučajeve + Kutije za hitne slučajeve su skrivene + Kutije za hitne slučajeve su prikazane + Sakrij info panele + Info paneli su skriveni + Info paneli su prikazani + Sakrij medicinske panele + Medicinski paneli su skriveni + Medicinski paneli su prikazani + Sakrij traku kanala + Traka kanala je skrivena + Traka kanala je prikazana + Sakrij salu za igru + Sala za igru je skrivena + Sala za igru je prikazana + Sakrij brze radnje u režimu celog ekrana + Brze radnje su skrivene + Brze radnje su prikazane + Sakrij srodne videe u brzim radnjama + Srodni videi su skriveni + Srodni videi su prikazani + Sakrij policu sa slikama u rezultatima pretrage + Polica sa slikama je skrivena + Polica sa slikama je prikazana + Sakrij najnovije objave + Najnovije objave su skrivene + Najnovije objave su prikazane + Sakrij miks plejliste + Miks plejliste su skrivene + Miks plejliste su prikazane + Sakrij kartice izvođača + Kartice izvođača su skrivene + Kartice izvođača su prikazane + Sakrij policu oznaka sličnih videa + Polica oznaka sličnih videa je skrivena + Polica oznaka sličnih videa je prikazana + Sakrij odeljak s info karticama + Odeljak s info karticama je skriven + Odeljak s info karticama je prikazan + Odeljak za transkripciju je skriven + Odeljak za transkripciju je prikazan + Opis videa + Sakrijte ili prikažite komponente opisa videa + Prilagođeni filter + Sakrijte komponente koristeći prilagođene filtere + Omogući prilagođeni filter + Prilagođeni filter je omogućen + Prilagođeni filter je onemogućen + Prilagođeni filter + + Lista stringova za pravljenje putanje komponenti za filtriranje, odvojena novim redom + Nevažeći prilagođeni filter: %s + Sakrij sadržaj ključne reči + Sakrijte videe iz rezultata pretrage i fida koristeći filter ključnih reči + Sakrij videe na početnoj prema ključnim rečima + Videi na početnoj kartici su filtrirani prema ključnim rečima + Videi na početnoj kartici nisu filtrirani prema ključnim rečima + Sakrij videe iz praćenja prema ključnim rečima + Videi na kartici praćenja su filtrirani prema ključnim rečima + Videi na kartici praćenja nisu filtrirani prema ključnim rečima + Sakrij rezultate pretrage prema ključnim rečima + Rezultati pretrage su filtrirani prema ključnim rečima + Rezultati pretrage nisu filtrirani prema ključnim rečima + Ključne reči sa sakrivanje + + Ključne reči i fraze koje treba sakriti, odvojene novom redovima\n\nReči sa velikim slovima u sredini moraju se uneti sa velikim slovima (npr.: iPhone, TikTok, LeBlanc) + O filtriranju prema ključnim rečima + Početna//Praćenja/Rezultati pretrage se filtriraju da bi se sakrio sadržaj koji se podudara sa ključnim frazama\n\nOgraničenja\n• Neki Shorts videi možda neće biti sakriveni\n• Neke komponente korisničkog interfejsa možda neće biti sakrivene\n• Pretraživanje ključne reči možda neće pokazati rezultate + + Nevažeća ključna reč. Nije moguće koristiti „%s” + + Nevažeća ključna reč. „%1$s” je kraće od %2$d znakova + + + Sakrij opšte oglase + Opšti oglasi su skriveni + Opšti oglasi su prikazani + Sakrij oglase preko celog ekrana + Oglasi preko celog ekrana su skriveni\n\nOva funkcija je dostupna samo za starije uređaje + Oglasi preko celog ekrana su prikazani + Sakrij oglase u obliku dugmadi + Oglasi u obliku dugmadi su skriveni + Oglasi u obliku dugmadi su prikazani + Sakrij oznaku plaćene promocije + Oznaka plaćene promocije je skrivena + Oznaka plaćene promocije je prikazana + Sakrij samosponzorisane kartice + Samosponzorisane kartice su skrivene + Samosponzorisane kartice su prikazane + Sakrij baner za gledanje proizvoda + Baner je skriven + Baner je prikazan + Sakrij linkove za kupovinu u opisu videa + Linkovi za kupovinu su skriveni + Linkovi za kupovinu su prikazani + + Sakrij dugme „Poseti prodavnicu” na stranicama kanala + Dugme je skriveno + Dugme je prikazano + Sakrij rezultate veb-pretrage + Rezultati veb-pretrage su skriveni + Rezultati veb-pretrage su prikazani + Sakrij banere s robom + Baneri s robom su skriveni + Baneri s robom su prikazani + + Sakrivanje oglasa preko celog ekrana radi samo sa starijim uređajima + + + Sakrij promocije za YouTube Premium + Promocije za YouTube Premium ispod video plejera su skrivene + Promocije za YouTube Premium ispod video plejera su prikazane + + + Sakrij oglase u videu + Oglasi u videu su skriveni + Oglasi u videu su prikazani + + + Link je kopiran u privremenu memoriju + Link sa vremenskom oznakom je kopiran + Prikaži dugme za kopiranje linka videa + Dugme je prikazano. Dodirnite da biste kopirali link videa. Dodirnite i zadržite da biste kopirali link videa s vremenskom oznakom + Dugme nije prikazano + Prikaži dugme za kopiranje linka videa sa vremenskom oznakom + Dugme je prikazano. Dodirnite da biste kopirali link videa s vremenskom oznakom. Dodirnite i zadržite da biste kopirali link videa bez vremenske oznake + Dugme nije prikazano + + + Ukloni dijalog o diskreciji gledaoca + Dijalog će biti uklonjen + Dijalog će biti prikazan + Ovo ne zaobilazi starosno ograničenje. Samo ga automatski prihvata. + + + Spoljna preuzimanja + Podešavanja za korišćenje spoljnog programa za preuzimanje + Prikaži dugme za spoljno preuzimanje + Dugme za preuzimanje je prikazano u plejeru + Dugme za preuzimanje nije prikazano u plejeru + + Zameni izvorno dugme „Preuzmi” + Dugme „Preuzmi” otvara spoljni program za preuzimanje + Dugme „Preuzmi” otvara izvorni program za preuzimanje u aplikaciji + Naziv paketa programa za preuzimanje + Naziv paketa instaliranog spoljnog programa za preuzimanje, kao što je NewPipe ili Seal + %s nije instaliran. Instalirajte ga. + + + Onemogući pokret preciznog premotavanja + Pokret preciznog premotavanja je onemogućen + Pokret preciznog premotavanja je omogućen + + + Omogući dodirivanje trake za premotavanje + Dodirivanje trake za premotavanje je omogućeno + Dodirivanje trake za premotavanje je onemogućeno + + + Omogući pokret za osvetljenost + Prevlačenje za podešavanje osvetljenosti je omogućeno + Prevlačenje za podešavanje osvetljenosti je onemogućeno + Omogući pokret za jačinu zvuka + Prevlačenje za podešavanje jačine zvuka je omogućeno + Prevlačenje za podešavanje jačine zvuka je onemogućeno + Omogući pokret pritiskom za prevlačenje + Pokret pritiskom za prevlačenje je omogućen + Pokret pritiskom za prevlačenje je onemogućen + Omogući vibraciju pri dodiru + Vibracija pri dodiru je omogućena + Vibracija pri dodiru je onemogućena + Sačuvaj i vrati osvetljenost + Čuvanje i vraćanje osvetljenosti pri izlasku ili ulasku u režim celog ekrana + Bez čuvanja i vraćanja osvetljenosti pri izlasku ili ulasku u režim celog ekrana + Omogući pokret za automatsku osvetljenost + Prevlačenje nadole do najniže vrednosti pokreta za osvetljenost omogućava automatsku osvetljenost + Prevlačenje nadole do najniže vrednosti pokreta za osvetljenost ne omogućava automatsku osvetljenost + Automatski + Vremensko ograničenje pokreta prevlačenja + Količina milisekundi u kojoj je pokret prevlačenja vidljiv + Veličina teksta pokreta prevlačenja + Veličina teksta za pokret prevlačenja + Vidljivost pozadine pokreta prevlačenja + Vidljivost pozadine za pokret prevlačenja + Prag trajanja prevlačenja + Iznos praga trajanja prevlačenja + + + Onemogući automatske titlove + Automatski titlovi su onemogućeni + Automatski titlovi su omogućeni + + + Dugmad radnji + Sakrijte ili prikažite dugmad ispod videa + Sakrij dugmad „Sviđa mi se” i „Ne sviđa mi se” + Dugmad „Sviđa mi se” i „Ne sviđa mi se” su skrivena + Dugmad „Sviđa mi se” i „Ne sviđa mi se” su prikazana + + Sakrij dugme „Deli” + Dugme „Deli” je skriveno + Dugme „Deli” je prikazano + + Sakrij dugme „Prijavi” + Dugme „Prijavi” je skriveno + Dugme „Prijavi” je prikazano + + Sakrij dugme „Remiks” + Dugme „Remiks” je skriveno + Dugme „Remiks” je prikazano + + Sakrij dugme „Preuzmi” + Dugme „Preuzmi” je skriveno + Dugme „Preuzmi” je prikazano + + Sakrij dugme „Hvala” + Dugme „Hvala” je skriveno + Dugme „Hvala” je prikazano + + Sakrij dugme „Klip” + Dugme „Klip” je skriveno + Dugme „Klip” je prikazano + + Sakrij dugme „Sačuvaj na plejlistu” + Dugme „Sačuvaj na plejlistu” je skriveno + Dugme „Sačuvaj na plejlistu” je prikazano + + + Sakrij dugme „Autoplej” + Dugme „Autoplej” je skriveno + Dugme „Autoplej” je prikazano + + + + Sakrij dugme „Titl” + Dugme „Titl” je skriveno + Dugme „Titl” je prikazano + + + Sakrij dugme „Prebacuj” + Dugme „Prebacuj” je skriveno + Dugme „Prebacuj” je prikazano + + + Dugmad navigacije + Sakrijte ili promenite dugmad na traci za navigaciju + + Sakrij dugme „Početna” + Dugme „Početna” je skriveno + Dugme „Početna” je prikazano + + Sakrij dugme „Shorts” + Dugme „Shorts” je skriveno + Dugme „Shorts” je prikazano + + Sakrij dugme „Napravi” + Dugme „Napravi” je skriveno + Dugme „Napravi” je prikazano + + Sakrij dugme „Praćenja” + Dugme „Praćenja” je skriveno + Dugme „Praćenja” je prikazano + + Zameni dugme „Napravi” dugmetom „Obaveštenja” + Dugme „Napravi” je zamenjeno dugmetom „Obaveštenja”\n\nNapomena: Ako ovo omogućite, takođe će se prisilno sakriti oglasi u videu + Dugme „Napravi” nije zamenjeno dugmetom „Obaveštenja” + Sakrij oznake dugmadi za navigaciju + Oznake dugmadi za navigaciju su skrivene + Oznake dugmadi za navigaciju su prikazane + + + Padajući meni + Sakrijte ili prikažite predmete u padajućem meniju plejera + + Sakrij dugme „Titl” + Meni „Titl” je skriven + Meni „Titl” je prikazan + + Sakrij dugme „Dodatna podešavanja” + Meni „Dodatna podešavanja” je skriven + Meni „Dodatna podešavanja” je prikazan + + Sakrij dugme „Ponavljaj video” + Dugme „Ponavljaj video” je skriveno + Dugme „Ponavljaj video” je prikazano + + Sakrij dugme „Ambijentalni režim” + Dugme „Ambijentalni režim” je skriveno + Dugme „Ambijentalni režim” je prikazano + + Sakrij dugme „Pomoć i povratne informacije” + Dugme „Pomoć i povratne informacije” je skriveno + Dugme „Pomoć i povratne informacije” je prikazano + + Sakrij dugme „Brzina reprodukcije” + Meni „Brzina reprodukcije” je skriven + Meni „Brzina reprodukcije” je prikazan + + Sakrij dugme „Više informacija” + Dugme „Više informacija” je skriveno + Dugme „Više informacija” je prikazano + + Sakrij dugme „Zaključaj ekran” + Dugme „Zaključaj ekran” je skriveno + Dugme „Zaključaj ekran” je prikazano + + Sakrij dugme „Audio snimak” + Meni „Audio snimak” je skriven + Meni „Audio snimak” je prikazan + + Sakrij dugme „Gledaj u VR” + Dugme „Gledaj u VR” je skriveno + Dugme „Gledaj u VR” je prikazano + + + Sakrij dugmad za prethodni i sledeći video + Dugmad su skrivena + Dugmad su prikazana + + + Sakrij kartice albuma + Kartice albuma su skrivene + Kartice albuma su prikazane + + + Komentari + Sakrijte ili prikažite komponente odeljka za komentare + Sakrij zaglavlje „Komentari od članova” + Zaglavlje „Komentari od članova” je skriveno + Zaglavlje „Komentari od članova” je prikazano + Sakrij odeljak za komentare + Odeljak za komentare je skriven + Odeljak za komentare je prikazan + Sakrij komentar za pregled + Komentar za pregled je skriven + Komentar za pregled je prikazan + Sakrij dugme „Hvala” + Dugme „Hvala” je skriveno + Dugme „Hvala” je prikazano + Sakrij dugmad za vremensku oznaku i emodžije + Dugmad za vremensku oznaku i emodžije su skrivena + Dugmad za vremensku oznaku i emodžije su prikazana + + + Sakrij kutiju za kolektivno finansiranje + Kutija za kolektivno finansiranje je skrivena + Kutija za kolektivno finansiranje je prikazana + + + Sakrij kartice završnog ekrana + Kartice završnog ekrana su skrivene + Kartice završnog ekrana su prikazane + + + Traka filtera + Sakrijte ili prikažite traku filtera u fidu, pretrazi ili srodnim videima + Sakrij u fidu + Skriveno u fidu + Prikazano u fidu + Sakrij u pretrazi + Skriveno u pretrazi + Prikazano u pretrazi + Sakrij u srodnim videima + Skriveno u srodnim videima + Prikazano u srodnim videima + + + Sakrij plutajuće dugme mikrofona + Plutajuće dugme mikrofona je skriveno + Plutajuće dugme mikrofona je prikazano + + + Onemogući ambijentalni režim u režimu celog ekrana + Ambijentalni režim u režimu celog ekrana je onemogućen + Ambijentalni režim u režimu celog ekrana je omogućen + + + Sakrij info kartice + Info kartice su skrivene + Info kartice su prikazane + + + Onemogući animacije brojeva + Brojevi nisu animirani + Brojevi su animirani + + + Sakrij traku za premotavanje u video plejeru + Traka za premotavanje u video plejeru je skrivena + Traka za premotavanje u video plejeru je prikazana + Sakrij traku za premotavanje na sličici videa + Traka za premotavanje na sličici videa je skrivena + Traka za premotavanje na sličici videa je prikazana + + + + Sakrij Shorts videe u fidu „Početna” + Shorts videi u fidu „Početna” su skriveni + Shorts videi u fidu „Početna” su prikazani + + Sakrij Shorts videe u fidu „Praćenja” + Shorts videi u fidu „Praćenja” su skriveni + Shorts videi u fidu „Praćenja” su prikazani + Sakrij Shorts videe u rezultatima pretrage + Shorts videi u rezultatima pretrage su skriveni + Shorts videi u rezultatima pretrage su prikazani + + Sakrij dugme „Učlani me” + Dugme „Učlani me” je skriveno + Dugme „Učlani me” je prikazano + + Sakrij dugme „Zaprati” + Dugme „Zaprati” je skriveno pri pauzi + Dugme „Zaprati” je prikazano pri pauzi + Sakrij dugmad u plejeru pri pauzi + Dugmad su skrivena pri pauzi + Dugmad su prikazana pri pauzi + Sakrij dugme „Kupovina” + Dugme „Kupovina” je skriveno + Dugme „Kupovina” je prikazano + Sakrij dugme „Superhvala” + Dugme „Superhvala” je skriveno + Dugme „Superhvala” je prikazano + Sakrij označene proizvode + Označeni proizvodi su skriveni + Označeni proizvodi su prikazani + Sakrij oznaku lokacije + Oznaka lokacije je skrivena + Oznaka lokacije je prikazana + Sakrij dugme „Sačuvaj zvuk na plejlistu” + Dugme „Sačuvaj zvuk na plejlistu” je skriveno + Dugme „Sačuvaj zvuk na plejlistu” je prikazano + Sakrij predloge za pretragu + Predlozi za pretragu su skriveni + Predlozi za pretragu su prikazani + Sakrij dugme „Sviđa mi se” + Dugme „Sviđa mi se” je skriveno + Dugme „Sviđa mi se” je prikazano + Sakrij dugme „Ne sviđa mi se” + Dugme „Ne sviđa mi se” je skriveno + Dugme „Ne sviđa mi se” je prikazano + Sakrij dugme „Komentari” + Dugme „Komentari” je skriveno + Dugme „Komentari” je prikazano + + Sakrij dugme „Remiks” + Dugme „Remiks” je skriveno + Dugme „Remiks” je prikazano + + Sakrij dugme „Deli” + Dugme „Deli” je skriveno + Dugme „Deli” je prikazano + Sakrij info panel + Info panel je skriven + Info panel je prikazan + Sakrij traku kanala + Traka kanala je skrivena + Traka kanala je prikazana + Sakrij naslov videa + Naslov Shorts videa je skriven + Naslov Shorts videa je prikazan + Sakrij oznaku metapodataka zvuka + Oznaka metapodataka zvuka je skrivena + Oznaka metapodataka zvuka je prikazana + Sakrij oznaku linka videa + Oznaka linka videa je skrivena + Oznaka linka videa je prikazana + Sakrij dugme za zvuk + Dugme za zvuk je skriveno + Dugme za zvuk je prikazano + Sakrij traku za navigaciju + Traka za navigaciju je skrivena + Traka za navigaciju je prikazana + + + Onemogući predloženi video na završnom ekranu + Predloženi videi na završnom ekranu će biti skriveni + Predloženi videi na završnom ekranu će biti prikazani + + + Sakrij vremensku oznaku videa + Vremenska oznaka videa je skrivena + Vremenska oznaka videa je prikazana + + + Sakrij iskačuće panele plejera + Iskačući paneli plejera su skriveni + Iskačući paneli plejera su prikazani + + + Neprozirnost sloja plejera + Vrednost neprozirnosti između 0-100, gde je 0 prozirno + Prozirnost preklopa plejera mora biti između 0-100 + + + Skriveno + + Nesviđanja privremeno nisu dostupna (API istekao) + Nesviđanja nisu dostupna (status %d) + Nesviđanja nisu dostupna (limit API-ja klijenta) + Nesviđanja nisu dostupna (%s) + + Osvežite video da biste glasali pomoću ReturnYouTubeDislike + Nesviđanja su prikazana + Nesviđanja nisu prikazana + Prikaži nesviđanja na Shorts videima + Nesviđanja su prikazana na Shorts videima + Nesviđanja su prikazana na Shorts videima\n\nOgraničenje: Nesviđanja se možda neće pojaviti u režimu bez arhiviranja + Nesviđanja su skrivena na Shorts videima + Nesviđanja u procentima + Nesviđanja prikazana u procentima + Nesviđana prikazana u brojevima + + Kompaktno dugme „Sviđa mi se” + Dugme „Sviđa mi se” stilizovano za minimalnu širinu + Dugme „Sviđa mi se” stilizovano za najbolji izgled + Prikaži iskačuće obaveštenje ako API nije dostupan + Iskačuće obaveštenje je prikazano, ako Return YouTube Dislike nije dostupan + Iskačuće obaveštenje nije prikazano, ako Return YouTube Dislike nije dostupan + O programu + Podatke obezbeđuje Return YouTube Dislike API. Dodirnite ovde da biste saznali više + + Statistike ReturnYouTubeDislike API-ja za ovaj uređaj + Vreme odgovora API-ja, prosečno + Vreme odgovora API-ja, minimalno + Vreme odgovora API-ja, maksimalno + Vreme odgovora API-ja, poslednji video + Nesviđanja privremeno nisu dostupna – na snazi je ograničenje stope API klijenta + API prikupljanje glasova, broj poziva + Nije ostvaren nijedan mrežni poziv + Broj ostvarenih mrežnih poziva: %d + API prikupljanje glasova, broj isteka + Nije istekao nijedan mrežni poziv + Broj isteklih mrežnih poziva: %d + Ograničenje stope klijenta API-ja + Nije ostvareno nijedno ograničenje stope klijenta + Broj ostvarenih ograničenja stope klijenta: %d + %d milisekundi + + + Omogući široku traku za pretragu + Široka traka za pretragu je omogućena + Široka traka za pretragu je onemogućena + + + Vrati stare sličice na traci za premotavanje + Sličice trake za premotavanje će se pojaviti iznad nje + Sličice trake za premotavanje će se pojaviti u režimu celog ekrana + + + Omogući SponsorBlock + SponsorBlock je sistem napravljen od zajednice korisnika i služi za preskakanje dosadnih delova YouTube videa + Izgled + Prikaži dugme za glasanje + Dugme za glasanje za segment je prikazano + Dugme za glasanje za segment nije prikazano + + Koristi kompaktno dugme za preskakanje + Dugme za preskakanje stilizovano za minimalnu širinu + Dugme za preskakanje stilizovano za najbolji izgled + Automatski sakrij dugme za preskakanje + Dugme za preskakanje će biti skriveno nakon nekoliko sekundi + Dugme za preskakanje će biti prikazano tokom celog segmenta + Prikaži iskačuće obaveštenje pri automatskom preskakanju + Iskačuće obaveštenje se prikazuje, kada je segment automatski preskočen. Dodirnite ovde da vidite primer + Iskačuće obaveštenje se ne prikazuje. Dodirnite ovde da vidite primer + Prikaži dužinu videa bez segmenata + Dužina videa minus svi segmenti, prikazana u zagradama pored pune dužine videa + Puna dužina videa je prikazana + Pravljenje novih segmenata + Prikaži dugme za pravljenje novog segmenta + Dugme za pravljenje novog segmenta je prikazano + Dugme za pravljenje novog segmenta nije prikazano + Podešavanje koraka novog segmenta + Broj milisekundi u kojima se pomeraju dugmad za podešavanje vremena prilikom pravljenja novih segmenata + Vrednost mora biti pozitivan broj + Vidi smernice + Smernice sadrže pravila i savete za pravljenje novih segmenata + Pratite smernice + Pročitajte smernice SponsorBlocka pre pravljenja novih segmenata + Već pročitano + Pokaži mi + Opšte + Prikaži iskačuće obaveštenje ako API nije dostupan + Iskačuće obaveštenje je prikazano, ako SponsorBlock nije dostupan + Iskačuće obaveštenje nije prikazano, ako SponsorBlock nije dostupan + Omogući praćenje broja preskakanja + Omogućava SponsorBlock rang-listi da zna koliko je vremena ušteđeno. Poruka se šalje na rang-listu svaki put kada je segment preskočen + Praćenje broja preskakanja nije omogućeno + Minimalno trajanje segmenta + Segmenti kraći od ove vrednosti (u sekundama) neće biti prikazani ili preskočeni + Vaš privatni korisnički ID + Ovo treba da ostane privatno. Ovo je kao lozinka i ne bi trebalo da se deli ni sa kim. Ako neko ima ovo, može da se lažno predstavlja za vas + Privatni korisnički ID mora da ima najmanje 30 znakova + Promena URL-a API-ja + Adresa koju SponsorBlock koristi za upućivanje poziva serveru + Resetovanje URL-a API-ja + URL API-ja je nevažeći + URL API-ja je promenjen + Uvoz/Izvoz podešavanja + Kopiraj + Vaša SponsorBlock JSON konfiguracija koja može da se uveze/izveze u ReVanced i druge SponsorBlock platforme + Vaša SponsorBlock JSON konfiguracija koja može da se uveze/izveze u ReVanced i druge SponsorBlock platforme. Ovo uključuje vaš privatni korisnički ID. Delite ovo mudro + Podešavanja su uspešno uvezena + Neuspešan uvoz: %s + Neuspešan izvoz: %s + Vaša podešavanja sadrže privatni SponsorBlock korisnički ID.\n\nVaš korisnički ID je kao lozinka i nikada ga ne treba deliti.\n + Ne prikazuj ponovo + Promena ponašanja segmenta + Sponzor + Plaćene promocije, plaćene preporuke i direktne reklame. Nije za samopromociju ili besplatno pozivanje na ciljeve/kreatore/veb-sajtove/proizvode koji im se dopadaju + Neplaćena promocija/Samopromocija + Slično kao „Sponzor”, osim za neplaćenu promociju ili samopromociju. Uključuje odeljke o robi, donacijama ili informacijama o tome sa kim su sarađivali + Podsetnik o interakciji (praćenje) + Kratak podsetnik da lajkujete, pretplatite se ili ih zapratite usred sadržaja. Ako je dugačak ili o nečemu konkretnom, trebalo bi da bude pod samopromocijom + Istaknuto + Deo videa koji većina ljudi traži + Pauza/Uvodna animacija + Interval bez stvarnog sadržaja. Može biti pauza, statični kadar ili ponavljajuća animacija. Ne uključuje prelaze koji sadrže informacije + Završne kartice/Krediti + Krediti ili kada se pojave YouTube završne kartice. Nije za zaključke sa informacijama + Pregled/Rekapitulacija/Najava + Kolekcija klipova koji pokazuju šta sledi ili šta se desilo u videu ili u drugim videima serijе, gde se sve informacije ponavljaju na drugom mestu + Popunjavanje/Šale + Nepovezane scene su dodate samo za popunjavanje ili humor i takve scene nisu potrebne za razumevanje glavnog sadržaja videa. Ne uključuje segmente koji pružaju detalje o kontekstu ili pozadini + Muzika: Segment bez muzike + Samo za upotrebu u muzičkim spotovima. Delovi muzičkih spotova bez muzike, koji nisu obuhvaćeni drugom kategorijom + Preskoči + Istaknuto + Preskoči sponzora + Preskoči promociju + Preskoči interakciju + Preskoči na istaknuto + Preskoči uvodnu animaciju + Preskoči pauzu + Preskoči pauzu + Preskoči završnu animaciju + Preskoči pregled + Preskoči pregled + Preskoči rekapitulaciju + Preskoči popunjavanje + Preskoči segment bez muzike + Preskoči segment + Preskočen sponzor + Preskočena samopromocija + Preskočen dosadni podsetnik + Preskočeno na istaknuto + Preskočena uvodna animacija + Preskočena pauza + Preskočena pauza + Preskočena završna animacija + Preskočen pregled + Preskočen pregled + Preskočena rekapitulacija + Preskočeno popunjavanje + Preskočen segment bez muzike + Preskočen nepodneseni segment + Preskočeno više segmenata + Preskoči automatski + Preskoči automatski jedanput + Prikaži dugme za preskakanje + Prikaži na traci za premotavanje + Onemogući + Nije moguće podneti segment: %s + SponsorBlock privremeno ne radi + Nije mogući podneti segment (status: %1$d %2$s) + Nije moguće podneti segment.\nOgraničenje stope (previše od istog korisnika ili IP adrese) + Nije moguće podneti segment: %s + Nije moguće podneti segment.\nVeć postoji + Segment je uspešno podnet + + SponsorBlock privremeno nije dostupan (API istekao) + SponsorBlock privremeno nije dostupan (status %d) + SponsorBlock privremeno nije dostupan + Nije moguće glasati za segment (API istekao) + Nije moguće glasati za segment (status: %1$d %2$s) + Nije moguće glasati za segment: %s + Glasaj za + Glasaj protiv + Promeni kategoriju + Nema nijednog segmenta za glasanje + Izaberite kategoriju segmenta + Kategorija je onemogućena u podešavanjima. Omogućite kategoriju da biste podneli. + Novi SponsorBlock segment + početak + kraj + sada + Vreme početka segmenta + Vreme kraja segmenta + Da li su vremena tačna? + + Segment je od\n\n%1$s\ndo\n%%2$s\n\n(%3$s)\n\nSpreman za podnošenje? + Početak mora biti pre kraja + Prvo označite dva mesta na vremenskoj traci + Pregledajte segment i uverite se da glatko preskače + Ručno izmenite vreme segmenta + Želite li da izmenite vreme početka ili kraja segmenta? + Dato je nevažeće vreme + Statistika + + Statistika privremeno nije dostupna (API ne radi) + Učitavanje… + SponsorBlock je onemogućen + Vaše korisničko ime: <b>%s</b> + Dodirnite ovde da promenite svoje korisničko ime + Nije moguće promeniti korisničko ime: Status: %1$d %2$s + Korisničko ime uspešno promenjeno + Vaša reputacija je <b>%.2f</b> + Napravili ste <b>%s</b> segmenata + SponsorBlock rang-lista + Sačuvali ste ljude od <b>%s</b> segmenata + Dodirnite ovde da biste videli globalnu statistiku i najbolje doprinosioce + To je <b>%s</b> njihovih života.<br>Dodirnite ovde da biste videli rang-listu + Preskočili ste <b>%s</b> segmenata + To je <b>%s</b> + Resetovati brojač preskočenih segmenata? + %1$s sati %2$s minuta + %1$s minuta %2$s sekundi + %s sekundi + Boja: + Boja promenjena + Boja resetovana + Nevažeći kôd boje + Resetuj boju + Resetuj + O programu + Podatke obezbeđuje SponsorBlock API. Dodirnite ovde da biste saznali više i videli preuzimanja za druge platforme + + + Lažirana verzija aplikacije + Verzija je lažirana + Verzija nije lažirana + Verzija aplikacije će biti lažirana na stariju verziju YouTubea.\n\nOvo će promeniti izgled i karakteristike aplikacije, ali može doći do nepoznatih neželjenih efekata.\n\nAko se kasnije isključi, preporučuje se da očistite podatke aplikacije da biste sprečili greške u korisničkom interfejsu. + + Ciljna verzija aplikacije za lažiranje + + 18.33.40 - Vraća Return YouTube Dislike u Shorts videima u režimu bez arhiviranja + 18.20.39 - Vraća širok meni za brzinu i kvalitet videa + 18.09.39 - Vraća karticu zbirke + 17.41.37 - Vraća staru policu plejliste + 17.33.42 - Vraća stari izgled korisničkog interfejsa + + + Podešavanje početne stranice + Podrazumevana + + Početna + Pretraga + + Praćenja + Istraži + Shorts + + Kartica „Vi” + Lajkovani videi + + Istorija + U trendu + + + Onemogući nastavak reprodukcije Shorts plejera + Shorts plejer neće nastaviti reprodukciju pri pokretanju aplikacije + Shorts plejer će nastaviti reprodukciju pri pokretanju aplikacije + + + Omogući korisnički interfejs tableta + Korisnički interfejs tableta je omogućen + Korisnički interfejs tableta je onemogućen + Objave zajednice se ne prikazuju u korisničkom interfejsu tableta + + + Mini-plejer + Promenite stil minimiziranog plejera u aplikaciji + Tip mini-plejera + Originalni + Telefon + Tablet + Moderan 1 + Moderan 2 + Moderan 3 + Sakrij dugmad za proširivanje i zatvaranje + Dugmad za proširivanje i zatvaranje su skrivena\n(prevucite mini-plejer da biste ga proširili ili zatvorili) + Dugmad za proširivanje i zatvaranje su prikazana + Sakrij podtekstove + Podtekstovi su skriveni + Podtekstovi su prikazani + Sakrij dugmad za premotavanje unapred i unazad + Dugmad za premotavanje unapred i unazad su skrivena + Dugmad za premotavanje unapred i unazad su prikazana + Prozirnost preklopa + Vrednost neprozirnosti između 0-100, gde je 0 prozirno + Prozirnost preklopa mini-plejera mora biti između 0-100 + + + Omogući ekran učitavanja s gradijentom + Ekran učitavanja će imati pozadinu s gradijentom + Ekran učitavanja će imati običnu pozadinu + + + Omogući prilagođenu boju trake za premotavanje + Prilagođena boja trake za premotavanje je prikazana + Originalna boja trake za premotavanje je prikazana + Prilagođena boja trake za premotavanje + Boja trake za premotavanje + Nevažeća vrednost boje trake za premotavanje. Korišćenje podrazumevane vrednosti. + + + + + + Kartica „Početna” + + Kartica „Praćenja” + + Kartica „Vi” + Plejliste plejera, preporuke + Rezultati pretrage + Originalne sličice + DeArrow i originalne sličice + DeArrow i zahvati kadra + Zahvati kadra + DeArrow pruža sličice za YouTube videe prikupljene od zajednice. Ove sličice su često relevantnije od onih koje pruža YouTube\n\n Ako je omogućeno, linkovi videa će biti poslati na API server i nikakvi drugi podaci se neće slati. Ako video nema DeArrow sličice, tada se prikazuju originalne sličice ili sličice zahvata kadra\n\nDodirnite ovde da biste saznali više o DeArrowu + Prikaži iskačuće obaveštenje ako API nije dostupan + Iskačuće obaveštenje je prikazano, ako DeArrow nije dostupan + Iskačuće obaveštenje nije prikazano, ako DeArrow nije dostupan + Krajnja tačka DeArrow API-ja + URL krajnje tačke keša DeArrow sličica + Zahvati kadra iz videa + Zahvati kadra se prave od početka/sredine/kraja svakog videa. Ove slike su ugrađene u YouTube i ne koristi se nijedan spoljni API + Koristi brze zahvate kadra + Koriste se zahvati kadra srednjeg kvaliteta. Sličice će se brže učitavati, ali strimovi uživo, neobjavljeni ili veoma stari videi mogu da prikazuju prazne sličice + Koriste se zahvati kadra visokog kvaliteta + Vreme videa za pravljenje zahvata kadra + Početak videa + Sredina videa + Kraj videa + + DeArrow privremeno nije dostupan (kôd statusa: %s) + DeArrow privremeno nije dostupan + + + Prikaži saopštenja ReVanceda + Saopštenja su prikazana pri pokretanju + Saopštenja nisu prikazana pri pokretanju + Prikazivanje saopštenja pri pokretanju + Neuspešno povezivanje sa pružaocem saopštenja + Odbaci + + + Omogući automatsko ponavljanje videa + Automatsko ponavljanje videa je omogućeno + Automatsko ponavljanje videa je onemogućeno + + + Lažirane dimenzije uređaja + Dimenzije uređaja su lažirane\n\nViši kvaliteti videa će možda biti otključani, ali ćete možda imati zastoj pri reprodukciji videa, kraće trajanje baterije i nepoznate neželjene efekte + Dimenzije uređaja nisu lažirane\n\nAko ovo omogućite, viši kvaliteti videa će se možda otključati + Ako ovo omogućite, možda će doći do zastoja pri reprodukciji videa, kraćeg trajanja baterije i nepoznatih neželjenih efekata. + + + Podešavanja GmsCorea + Podešavanja za GmsCore + + + Zaobiđi URL preusmeravanja + URL preusmeravanja se zaobilaze + URL preusmeravanja se ne zaobilaze + + + Otvori linkove u pregledaču + Otvaranje linkova van aplikacije + Otvaranje linkova u aplikaciji + + + Ukloni parametar upita za praćenje + Parametar upita za praćenje je uklonjen iz linkova + Parametar upita za praćenje nije uklonjen iz linkova + + + Onemogući vibraciju pri uveličavanju + Vibracija pri uveličavanju je onemogućena + Vibracija pri uveličavanju je omogućena + + + Automatski kvalitet + Zapamti promene kvaliteta videa + Promene kvaliteta se primenjuju na sve videe + Promene kvaliteta se primenjuju samo na trenutni video + Podrazumevani kvalitet videa na Wi-Fi mreži + Podrazumevani kvalitet videa na mobilnim podacima + na mobilnim podacima + na Wi-Fi mreži + Promenjen podrazumevani kvalitet %1$s na: %2$s + + + Prikaži dugme dijaloga za brzinu + Dugme je prikazano + Dugme nije prikazano + + + Prilagođene brzine reprodukcije + Dodajte ili promenite dostupne brzine reprodukcije + Prilagođene brzine reprodukcije moraju biti manje od %s. Korišćenje podrazumevanih vrednosti. + Nevažeće prilagođene brzine reprodukcije. Korišćenje podrazumevanih vrednosti. + + + Zapamti promene brzine reprodukcije + Promene brzine reprodukcije se primenjuju na sve videe + Promene brzine reprodukcije se primenjuju samo na trenutni video + Podrazumevana brzina reprodukcije + Brzina reprodukcije promenjena na: %s + + + Vrati stari meni kvaliteta videa + Stari meni kvaliteta videa je prikazan + Stari meni kvaliteta videa nije prikazan + + + Omogući prevlačenje za premotavanje + Prevlačenje za premotavanje je omogućeno + Prevlaćenje za premotavanje nije omogućeno + + + Lažiran klijent + Lažiranje klijenta da bi se sprečili problemi sa reprodukcijom + Lažiran klijent + Klijent je lažiran + Klijent nije lažiran\n\nReprodukcija videa možda neće raditi + Isključivanje ovog podešavanja možda će izazvati probleme sa reprodukcijom videa. + Lažiran klijent na iOS + Sličice u lažiranom klijentu nisu dostupne (API istekao) + Sličice u lažiranom klijentu privremeno nisu dostupne: %s + + + + Lažirani potpis aplikacije + Lažiranje potpisa aplikacije da bi se sprečili problemi s reprodukcijom + Lažirani potpis aplikacije + Potpis aplikacije je lažiran\n\nNeželjeni efekti obuhvataju:\n• Poboljšana brzina prenosa nije dostupna\n• Videi se ne mogu preuzimati\n• Nema sličica na traci za premotavanje za plaćene videe + Potpis aplikacije nije lažiran\n\nReprodukcija videa možda neće raditi + Isključivanje ovog podešavanja može izazvati probleme s reprodukcijom videa. + Lažirani potpis aplikacije u fidu + Potpis plikacije je lažiran\n\nNeželjeni efekti obuhvataju:\n• Videi u fidu nemaju titlove\n• Automatski pušteni videi u fidu će se pojaviti u istoriji gledanja + Potpis aplikacije nije lažiran za videe u fidu\n\nVidei u fidu će se pustiti na manje od 1 minuta pre nego što naiđu na probleme s reprodukcijom + Lažirani storibord + Storibord je lažiran + Storibord nije lažiran\n\nNeželjeni efekti uključuju:\n• Nema ambijentalnog režima\n• Sličice na traci za premotavanje su skrivene + Lažiranje storiborda privremeno nije dostupno (API je istekao) + Lažiranje storiborda privremeno nije dostupno: %s + + + + Omogući automatsku osvetljenost HDR režima + Automatska osvetljenost HDR režima je omogućena + Automatska osvetljenost HDR režima je onemogućena + + + + + Blokiraj audio oglase + Audio oglasi su blokirani + Audio oglasi su odblokirani + + + %s nedostupan. Oglasi će se možda prikazivati. Pokušajte da pređete na drugu uslugu za blokiranje oglasa u podešavanjima. + %s server je vratio grešku. Oglasi će se možda prikazivati. Pokušajte da pređete na drugu uslugu za blokiranje oglasa u podešavanjima. + Blokiranje ugrađenih video oglasa + Onemogućeno + Luminous proksi + PurpleAdBlock proksi + + + Blokiraj video oglase + Video oglasi su blokirani + Video oglasi su odblokirani + + + poruka izbrisana + Prikaz izbrisanih poruka + Ne prikazuj izbrisane poruke + Sakrij izbrisane poruke iza spojlera + Prikaži izbrisane poruke kao precrtan tekst + + + Automatski preuzmi bodove kanala + Bodovi kanala su automatski preuzeti + Bodovi kanala nisu automatski preuzeti + + + + Omogući Twitch režim otklanjanja grešaka + Twitch režim otklanjanja grešaka je omogućen (nije preporučeno) + Twitch režim otklanjanja grešaka je onemogućen + + + Podešavanja ReVanceda + Oglasi + Podešavanja blokiranja oglasa + Ćaskanje + Podešavanja ćaskanja + Razno + Razna podešavanja + Opšta podešavanja + Ostala podešavanja + Oglasi na strani klijenta + Oglasi na strani servera + Evidentiranje otklanjanja grešaka + Evidencije otklanjanja grešaka su omogućene + Evidencije otklanjanja grešaka su onemogućene + + + diff --git a/src/main/resources/addresources/values-sr-rSP/strings.xml b/src/main/resources/addresources/values-sr-rSP/strings.xml index 3fab48b24..6a2ea816b 100644 --- a/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -214,6 +214,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Сакриј одељак с инфо картицама Одељак с инфо картицама је скривен Одељак с инфо картицама је приказан + Сакриј одељак „Кључни концепти” + Одељак „Кључни концепти” је скривен + Одељак „Кључни концепти” је приказан Сакриј одељак за транскрипцију Одељак за транскрипцију је скривен Одељак за транскрипцију је скривен @@ -1119,8 +1122,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Клијент није лажиран\n\nРепродукција видеа можда неће радити Искључивање овог подешавања можда ће изазвати проблеме са репродукцијом видеа. Лажиран клијент на iOS - Клијент је тренутно лажиран на iOS\n\nНежељени ефекти обухватају:\n• Нема HDR видеа\n• Виши квалитети видеа можда недостају\n• Стримови уживо не могу да се репродукују само као аудио - Клијент је тренутно лажиран на Android VR\n\nНежељени ефекти обухватају:\н• Нема HDR видеа\n• Дечји видео снимци се не репродукују\n• Паузирани видео снимци могу насумично да се настављају\n• Сличице на траци за премотавање Shorts видеа лошег квалитета\n• Дугме за радњу „Преузми“ је скривено\n• Картице завршног екрана су скривене + Клијент је тренутно лажиран на iOS\n\nНежељени ефекти обухватају:\n• HDR видео можда неће бити доступан\n• Историја гледања можда неће функционисати + Клијент је тренутно лажиран на Android VR Нежељени ефекти обухватају:\n• Нема HDR видеа\n• Дечји видео снимци се не репродукују\n• Паузирани видео снимци могу насумично да се настављају\n• Сличице на траци за премотавање Shorts видеа лошег квалитета\n• Дугме за радњу „Преузми“ је скривено\n• Картице завршног екрана су скривене Сличице у лажираном клијенту нису доступне (API истекао) Сличице у лажираном клијенту привремено нису доступне: %s diff --git a/src/main/resources/addresources/values-sv-rSE/strings.xml b/src/main/resources/addresources/values-sv-rSE/strings.xml index 72eda385c..3e9acbac2 100644 --- a/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -1120,8 +1120,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Klienten är inte förfalskad\n\nVideouppspelning kanske inte fungerar Att stänga av den här inställningen kan orsaka videouppspelningsproblem. Spoof klient till iOS - Klienten är för närvarande förfalskad till iOS\n\nBiverkningar inkluderar:\n• Ingen HDR-video\n• Högre videokvaliteter kan saknas\n• Live-strömmar kan inte endast spela upp som ljud - Klienten är för närvarande förfalskad till Android VR\n\nBiverkningar inkluderar:\n• Ingen HDR-video\n• Barnvideor spelar inte upp\n• Pausade videor kan slumpmässigt återuppta\n• Lågkvalitativa Shorts seekbar miniatyrer\n• Nedladdningsknappen är dold\n• Slutskärmskorten är dolda + Klienten är för närvarande förfalskad till iOS\n\nBiverkningar inkluderar:\n• HDR-video kanske inte är tillgänglig\n• Titta historik kanske inte fungerar + Klienten är för närvarande förfalskad till Android VR. Biverkningar inkluderar:\n• Ingen HDR-video\n• Barnvideor spelar inte upp\n• Pausade videor kan slumpmässigt återuppta\n• Lågkvalitativa Shorts seekbar miniatyrer\n• Nedladdningsknappen är dold\n• Slutskärmskorten är dolda Spoof klientminiatyrer är inte tillgängliga (API gick ut) Miniatyrer för Spoof klientminiatyrer tillfälligt inte tillgängliga: %s diff --git a/src/main/resources/addresources/values-tr-rTR/strings.xml b/src/main/resources/addresources/values-tr-rTR/strings.xml index d24106d44..9af884a8d 100644 --- a/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -211,6 +211,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Bilgi kartları kısmını gizle Bilgi kartları kısmı gizleniyor Bilgi kartları kısmı gösteriliyor + \'Anahtar kavramlar\' bölümünü gizle + \'Anahtar kavramlar\' bölümü gizli + \'Anahtar kavramlar\' bölümü görünür Transkript kısmını gizle Transkript kısmı gizleniyor Transkript kısmı gösteriliyor @@ -1115,8 +1118,8 @@ This is because Crowdin requires temporarily flattening this file and removing t İstemci taklit edilmiyor\n\nVideo oynatma çalışmayabilir Bu ayarı devre dışı bırakmak video oynatma sorunlarına yol açabilir. İstemciyi iOS olarak taklit et - İstemci şu anda iOS olarak taklit ediliyor\n\nYan etkiler şunları içerir:\n• HDR videolar yok\n• Yüksek görüntü kaliteleri eksik olabilir\n• Canlı yayınlar sadece ses olarak oynatılamaz - İstemci şu anda Android VR olarak taklit ediliyor\n\nYan etkiler şunları içerir:\n• HDR videolar yok\n• Çocuklara özel videolar oynatılamaz\n• Duraklatılmış videolar rastgele bir şekilde devam edebilir\n• Shorts zaman çubuğu küçük resimleri düşük kalitede\n• \'İndir\' eylem düğmesi gizli\n• Bitiş ekranı kartları gizli + İstemci şu anda iOS olarak taklit ediliyor\n\nYan etkiler şunları içerir:\n• HDR videolar olmayabilir\n• İzleme geçmişi çalışmayabilir + İstemci şu anda Android VR olarak taklit ediliyor. Yan etkiler şunları içerir:\n• HDR videolar yok\n• Çocuklara özel videolar oynatılamaz\n• Duraklatılmış videolar rastgele bir şekilde devam edebilir\n• Shorts zaman çubuğu küçük resimleri düşük kalitede\n• \'İndir\' eylem düğmesi gizli\n• Bitiş ekranı kartları gizli İstemci küçük resimlerini taklit etme kullanılamıyor (API zaman aşımına uğradı) İstemci küçük resimlerini taklit etme geçici olarak kullanılamıyor: %s diff --git a/src/main/resources/addresources/values-uk-rUA/strings.xml b/src/main/resources/addresources/values-uk-rUA/strings.xml index de3a22ab3..7f4e4daf2 100644 --- a/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -1118,8 +1118,8 @@ This is because Crowdin requires temporarily flattening this file and removing t Клієнт не підроблений\n\nВідтворення відео може не працювати Вимкнення цього параметра може призвести до проблем відтворення відео. Підробити клієнт на iOS - Наразі клієнт підроблений на iOS\n\nПобічні ефекти:\n• Немає HDR відео\n• Високі якості відео можуть бути відсутні\n• Прямі трансляції не відтворюються в режимі аудіо - Наразі клієнт підроблений на Android VR\n\nПобічні ефекти:\n• Немає HDR відео\n• Відео для дітей не відтворюються\n• Призупинені відео можуть випадково продовжуватися\n• Низька якість мініатюр панелі прогресу Shorts\n• Кнопка завантаження прихована\n• Картки кінцевого екрана приховані + Наразі клієнт підроблений на iOS\n\nПобічні ефекти:\n• HDR відео може бути недоступним\n• Історія переглядів може не працювати + Наразі клієнт підроблений на Android VR. Побічні ефекти:\n• Немає HDR відео\n• Відео для дітей не відтворюються\n• Призупинені відео можуть випадково продовжуватися\n• Низька якість мініатюр панелі прогресу Shorts\n• Кнопка завантаження прихована\n• Картки кінцевого екрана приховані Мініатюри в режимі підробки клієнта не доступні (закінчився час API) Мініатюри в режимі підробки клієнта тимчасово не доступні: %s diff --git a/src/main/resources/addresources/values-vi-rVN/strings.xml b/src/main/resources/addresources/values-vi-rVN/strings.xml index d91210fa8..63436e91f 100644 --- a/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -211,6 +211,9 @@ This is because Crowdin requires temporarily flattening this file and removing t Ẩn phần thẻ thông tin Phần thẻ thông tin được ẩn Phần thẻ thông tin được hiện + Ẩn phần \'Khái niệm chính\' + Phần \'Khái niệm chính\' được ẩn + Phần \'Khái niệm chính\' được hiện Ẩn phần bản chép lời Phần bản chép lời được ẩn Phần bản chép lời được hiện @@ -1115,8 +1118,7 @@ This is because Crowdin requires temporarily flattening this file and removing t Máy khách chưa được giả mạo\n\nPhát nền video có thể không hoạt động Việc tắt cài đặt này có thể gây ra sự cố phát nền video. Giả mạo máy khách cho iOS - Hiện tại máy khách đang giả mạo thành iOS\n\nTác dụng phụ bao gồm:\n• Không có video HDR\n• Chất lượng cao hơn cho video có thể thiếu\n• Phát trực tiếp chỉ có âm thanh - Hiện tại máy khách đang giả mạo thành Android VR\n\nTác dụng phụ bao gồm:\n• Không có video HDR\n• Video dành cho trẻ em không phát lắp\n• Video đã tạm dừng có thể ngẫu nhiên phát tiếp\n• Hình thu nhỏ thanh tiến trình Shorts có chất lượng thấp\n• Nút hành động tải xuống luôn ẩn\n• Các thẻ màn hình kết thúc luôn ẩn + Hiện tại máy khách đang giả mạo thành Android VR. Tác dụng phụ bao gồm:\n• Không có video HDR\n• Video dành cho trẻ em không phát lắp\n• Video đã tạm dừng có thể ngẫu nhiên phát tiếp\n• Hình thu nhỏ thanh tiến trình Shorts có chất lượng thấp\n• Nút hành động tải xuống luôn ẩn\n• Các thẻ màn hình kết thúc luôn ẩn Hình thu nhỏ giả mạo máy khách không khả dụng (API hết hạn) Hình thu nhỏ giả mạo máy khách tạm thời không khả dụng: %s diff --git a/src/main/resources/addresources/values-zh-rCN/strings.xml b/src/main/resources/addresources/values-zh-rCN/strings.xml index 52c840b7b..aabc790c1 100644 --- a/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -1117,7 +1117,6 @@ This is because Crowdin requires temporarily flattening this file and removing t 客户端未伪装\n\n可能无法正常播放视频 关闭此选项可能会导致视频不能正常播放。 伪装客户端为 iOS - 客户端目前被伪装成iOS\n\n附带效果包括:\n• 无 HDR 视频\n• 更高的视频质量可能丢失\n• 现场直播不能仅作为音频播放 伪装客户端缩略图不可用(API 超时) 伪装客户端缩略图暂时不可用: %s diff --git a/src/main/resources/addresources/values-zh-rTW/strings.xml b/src/main/resources/addresources/values-zh-rTW/strings.xml index c9202ffe2..f7234fd8a 100644 --- a/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -1118,7 +1118,6 @@ This is because Crowdin requires temporarily flattening this file and removing t 尚未欺騙客戶端\n\n影片播放可能未作用 關閉此設定可能會導致影片播放發生問題 欺騙客戶端至 iOS - 客戶端目前偽裝為 iOS\n\n副作用包括:\n• 無 HDR 影片\n• 更高的影片品質可能缺失\n• 直播無法僅作為音訊播放 客戶端目前偽裝為 Android VR\n\n副作用包括:\n• 無 HDR 影片\n• 兒童影片無法播放\n• 暫停的影片可能會隨\n恢復播放\n• 低品質短片的進度條縮圖\n• 下載操作按鈕隱藏\n• 結尾畫面卡片隱藏 欺騙客戶端縮圖尚不可用 (API 逾時) 欺騙客戶端縮圖暫不可用: %s From 7ae9f8fa0a349b91853e9554f18e564ca6ff887c Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Tue, 6 Aug 2024 01:25:28 +0200 Subject: [PATCH 45/50] feat(CandyLink): Remove non-functional `Unlock pro` patch Servers now check the purchase status. --- .../patches/candylinkvpn/UnlockProPatch.kt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/candylinkvpn/UnlockProPatch.kt b/src/main/kotlin/app/revanced/patches/candylinkvpn/UnlockProPatch.kt index 3a878ddf7..ae7df4408 100644 --- a/src/main/kotlin/app/revanced/patches/candylinkvpn/UnlockProPatch.kt +++ b/src/main/kotlin/app/revanced/patches/candylinkvpn/UnlockProPatch.kt @@ -1,20 +1,23 @@ package app.revanced.patches.candylinkvpn -import app.revanced.util.exception import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.Patch import app.revanced.patches.candylinkvpn.fingerprints.IsPremiumPurchasedFingerprint +import app.revanced.util.exception @Patch( - name = "Unlock pro", - compatiblePackages = [CompatiblePackage("com.candylink.openvpn")] + compatiblePackages = [CompatiblePackage("com.candylink.openvpn")], +) +@Deprecated( + "This patch does not work anymore and will be removed in the future, " + + "because the servers now check the purchase status.", ) @Suppress("unused") object UnlockProPatch : BytecodePatch( - setOf(IsPremiumPurchasedFingerprint) + setOf(IsPremiumPurchasedFingerprint), ) { override fun execute(context: BytecodeContext) { IsPremiumPurchasedFingerprint.result?.mutableMethod?.addInstructions( @@ -22,7 +25,7 @@ object UnlockProPatch : BytecodePatch( """ const/4 v0, 0x1 return v0 - """ + """, ) ?: throw IsPremiumPurchasedFingerprint.exception } -} \ No newline at end of file +} From 5e1d001056df68e1e2b39f1365215c91bcc9e46b Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Tue, 6 Aug 2024 01:27:06 +0200 Subject: [PATCH 46/50] feat(Instagram): Remove unnecessary `Hide timeline ads` patch The `Hide ads` patch supersedes this patch. --- .../instagram/patches/ads/timeline/HideTimelineAdsPatch.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/app/revanced/patches/instagram/patches/ads/timeline/HideTimelineAdsPatch.kt b/src/main/kotlin/app/revanced/patches/instagram/patches/ads/timeline/HideTimelineAdsPatch.kt index 2cb98620c..0715432ff 100644 --- a/src/main/kotlin/app/revanced/patches/instagram/patches/ads/timeline/HideTimelineAdsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/instagram/patches/ads/timeline/HideTimelineAdsPatch.kt @@ -14,9 +14,9 @@ import app.revanced.util.exception import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction @Patch( - name = "Hide timeline ads", compatiblePackages = [CompatiblePackage("com.instagram.android")], ) +@Deprecated("This patch is not needed anymore.", replaceWith = ReplaceWith("HideAdsPatch")) @Suppress("unused") object HideTimelineAdsPatch : BytecodePatch( setOf( From 6207c314c657a1188d1081b0a196a61e49cad83b Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Tue, 6 Aug 2024 01:29:50 +0200 Subject: [PATCH 47/50] fix(Messenger - Disable switching emoji to sticker): Constrain to last working version `439.0.0.29.119` --- .../messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt b/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt index 5da83e876..805175580 100644 --- a/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt +++ b/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt @@ -13,7 +13,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Patch( name = "Disable switching emoji to sticker", description = "Disables switching from emoji to sticker search mode in message input field.", - compatiblePackages = [CompatiblePackage("com.facebook.orca")], + compatiblePackages = [CompatiblePackage("com.facebook.orca", ["439.0.0.29.119"])], ) @Suppress("unused") object DisableSwitchingEmojiToStickerPatch : BytecodePatch( From ebbcac74fd8598daebb4be0bd7c430c41333e2d4 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Tue, 6 Aug 2024 01:40:11 +0200 Subject: [PATCH 48/50] feat(Expense Manager): Remove non-functional `Unlock pro` patch --- .../patches/moneymanager/UnlockProPatch.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/moneymanager/UnlockProPatch.kt b/src/main/kotlin/app/revanced/patches/moneymanager/UnlockProPatch.kt index 0f5afa70c..200e0cfed 100644 --- a/src/main/kotlin/app/revanced/patches/moneymanager/UnlockProPatch.kt +++ b/src/main/kotlin/app/revanced/patches/moneymanager/UnlockProPatch.kt @@ -8,20 +8,20 @@ import app.revanced.patcher.patch.annotation.Patch import app.revanced.patches.moneymanager.fingerprints.UnlockProFingerprint @Patch( - name = "Unlock pro", - compatiblePackages = [CompatiblePackage("com.ithebk.expensemanager")] + compatiblePackages = [CompatiblePackage("com.ithebk.expensemanager")], ) +@Deprecated("This patch is not functional anymore and will be removed in the future.") @Suppress("unused") object UnlockProPatch : BytecodePatch( - setOf(UnlockProFingerprint) -){ + setOf(UnlockProFingerprint), +) { override fun execute(context: BytecodeContext) { - UnlockProFingerprint.result!!.mutableMethod.addInstructions( + UnlockProFingerprint.result!!.mutableMethod.addInstructions( 0, """ const/4 v0, 0x1 return v0 - """ + """, ) } -} \ No newline at end of file +} From acf38cafae5eb9896b43f3a6cbd808ac273cd081 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Tue, 6 Aug 2024 02:01:44 +0200 Subject: [PATCH 49/50] fix(Google Photos - GmsCore support): Fix by checking first if a method exists before trying to patch it --- .../shared/misc/gms/BaseGmsCoreSupportPatch.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt index 9f773b03a..188f309b7 100644 --- a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt @@ -56,7 +56,7 @@ abstract class BaseGmsCoreSupportPatch( ) : BytecodePatch( name = "GmsCore support", description = "Allows patched Google apps to run without root and under a different package name " + - "by using GmsCore instead of Google Play Services.", + "by using GmsCore instead of Google Play Services.", dependencies = setOf( ChangePackageNamePatch::class, gmsCoreSupportResourcePatch::class, @@ -100,7 +100,13 @@ abstract class BaseGmsCoreSupportPatch( primeMethodFingerprint?.let { transformPrimeMethod(packageName) } // Return these methods early to prevent the app from crashing. - (earlyReturnFingerprints + ServiceCheckFingerprint + CastDynamiteModuleFingerprint).returnEarly() + earlyReturnFingerprints.returnEarly() + ServiceCheckFingerprint.returnEarly() + // Not all apps have CastDynamiteModule, so we need to check if it's present. + if (CastDynamiteModuleFingerprint.result != null) { + CastDynamiteModuleFingerprint.returnEarly() + } + // Google Play Utility is not present in all apps, so we need to check if it's present. if (GooglePlayUtilityFingerprint.result != null) { GooglePlayUtilityFingerprint.returnEarly() } @@ -109,7 +115,7 @@ abstract class BaseGmsCoreSupportPatch( mainActivityOnCreateFingerprint.result?.mutableMethod?.addInstructions( 0, "invoke-static/range { p0 .. p0 }, Lapp/revanced/integrations/shared/GmsCoreSupport;->" + - "checkGmsCore(Landroid/app/Activity;)V", + "checkGmsCore(Landroid/app/Activity;)V", ) ?: throw mainActivityOnCreateFingerprint.exception // Change the vendor of GmsCore in ReVanced Integrations. From dcabcb4f865abf1f883a540020db3d6724da2043 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 6 Aug 2024 00:04:26 +0000 Subject: [PATCH 50/50] chore(release): 4.12.0-dev.17 [skip ci] # [4.12.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.16...v4.12.0-dev.17) (2024-08-06) ### Bug Fixes * **Google Photos - GmsCore support:** Fix by checking first if a method exists before trying to patch it ([acf38ca](https://github.com/ReVanced/revanced-patches/commit/acf38cafae5eb9896b43f3a6cbd808ac273cd081)) * **Messenger - Disable switching emoji to sticker:** Constrain to last working version `439.0.0.29.119` ([6207c31](https://github.com/ReVanced/revanced-patches/commit/6207c314c657a1188d1081b0a196a61e49cad83b)) ### Features * **CandyLink:** Remove non-functional `Unlock pro` patch ([7ae9f8f](https://github.com/ReVanced/revanced-patches/commit/7ae9f8fa0a349b91853e9554f18e564ca6ff887c)) * **Expense Manager:** Remove non-functional `Unlock pro` patch ([ebbcac7](https://github.com/ReVanced/revanced-patches/commit/ebbcac74fd8598daebb4be0bd7c430c41333e2d4)) * **Instagram:** Remove unnecessary `Hide timeline ads` patch ([5e1d001](https://github.com/ReVanced/revanced-patches/commit/5e1d001056df68e1e2b39f1365215c91bcc9e46b)) --- CHANGELOG.md | 15 +++++++++++++++ gradle.properties | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9690e5191..1654dac69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +# [4.12.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.16...v4.12.0-dev.17) (2024-08-06) + + +### Bug Fixes + +* **Google Photos - GmsCore support:** Fix by checking first if a method exists before trying to patch it ([acf38ca](https://github.com/ReVanced/revanced-patches/commit/acf38cafae5eb9896b43f3a6cbd808ac273cd081)) +* **Messenger - Disable switching emoji to sticker:** Constrain to last working version `439.0.0.29.119` ([6207c31](https://github.com/ReVanced/revanced-patches/commit/6207c314c657a1188d1081b0a196a61e49cad83b)) + + +### Features + +* **CandyLink:** Remove non-functional `Unlock pro` patch ([7ae9f8f](https://github.com/ReVanced/revanced-patches/commit/7ae9f8fa0a349b91853e9554f18e564ca6ff887c)) +* **Expense Manager:** Remove non-functional `Unlock pro` patch ([ebbcac7](https://github.com/ReVanced/revanced-patches/commit/ebbcac74fd8598daebb4be0bd7c430c41333e2d4)) +* **Instagram:** Remove unnecessary `Hide timeline ads` patch ([5e1d001](https://github.com/ReVanced/revanced-patches/commit/5e1d001056df68e1e2b39f1365215c91bcc9e46b)) + # [4.12.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.15...v4.12.0-dev.16) (2024-08-04) diff --git a/gradle.properties b/gradle.properties index ef547e83a..94a7e3c44 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.0-dev.16 +version = 4.12.0-dev.17