Gradle build issues for Android API SDK 35 in Unity 2022.3LTS

I tried following your instructions for Unity 2022.3.62f2 and i still get an error saying that I am using Gradle 7.4.2 which is incompatible with API > 33
I updated all the Firebase packages I use to 13.3.0, Facebook SDK to 18.0.0. Google Ad Mob to 10.5. I have no idea why Unity insists of using Gradle 7.4.2 for this Android build.

Please share full details log.

CommandInvokationFailure: Gradle build failed. 
/Applications/Unity/Hub/Editor/2022.3.62f2/PlaybackEngines/AndroidPlayer/OpenJDK/bin/java -classpath "/Applications/Unity/Hub/Editor/2022.3.62f2/PlaybackEngines/AndroidPlayer/Tools/gradle-8.6/lib/gradle-launcher-8.6.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx6144m" "bundleRelease"

Environment Variables:
XPC_SERVICE_NAME = application.com.unity3d.unityhub.64092982.64092988
XPC_FLAGS = 0x0
MallocNanoZone = 0
ORIGINAL_XDG_CURRENT_DESKTOP = undefined
SHELL = /bin/zsh
SSH_AUTH_SOCK = /private/tmp/com.apple.launchd.pIuR9ilhdv/Listeners
HOME = /Users/sagielevy
PATH = /usr/bin:/bin:/usr/sbin:/sbin
__CFBundleIdentifier = com.unity3d.unityhub
USER = sagielevy
__CF_USER_TEXT_ENCODING = 0x1F6:0x0:0x0
UNITY_SHADER_COMPILER_TASK_TIMEOUT_MINUTES = 180
TMPDIR = /var/folders/67/5qdb4h3146z0yy1rfwq39x500000gp/T/
JAVA_HOME = /Applications/Unity/Hub/Editor/2022.3.62f2/PlaybackEngines/AndroidPlayer/OpenJDK
LOGNAME = sagielevy
grpc_cfstream = 0
ANDROID_NDK_ROOT = /Applications/Unity/Hub/Editor/2022.3.62f2/PlaybackEngines/AndroidPlayer/NDK
COMMAND_MODE = unix2003


stderr[
Warning: SDK processing. This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: /Users/sagielevy/Documents/Unity Projects/HexaPrisms/Unity/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/java/com/unity3d/player/UnityPlayerActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':launcher:bundleReleaseResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.Aapt2ProcessResourcesRunnable
   > AAPT2 36.0.0 Daemon #0: Unexpected error during link, attempting to stop daemon.
     This should not happen under normal circumstances, please file an issue if it does.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':launcher:processReleaseResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction
   > AAPT2 36.0.0 Daemon #1: Unexpected error during link, attempting to stop daemon.
     This should not happen under normal circumstances, please file an issue if it does.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
==============================================================================

BUILD FAILED in 6m 11s
]
stdout[
Starting a Gradle Daemon (subsequent builds will be faster)

> Configure project :launcher
WARNING:The option setting 'android.aapt2FromMavenOverride=/Applications/Unity/Hub/Editor/2022.3.62f2/PlaybackEngines/AndroidPlayer/SDK/build-tools/36.0.0/aapt2' is experimental.
WARNING:The option setting 'android.jetifier.ignorelist=annotation-experimental-1.4.0.aar' is experimental.

> Configure project :unityLibrary:GoogleMobileAdsPlugin.androidlib
WARNING:minSdkVersion (23) is greater than targetSdkVersion (22) for variant "debug". Please change the values such that minSdkVersion is less than or equal to targetSdkVersion.
WARNING:minSdkVersion (23) is greater than targetSdkVersion (22) for variant "release". Please change the values such that minSdkVersion is less than or equal to targetSdkVersion.
WARNING:We recommend using a newer Android Gradle plugin to use compileSdk = 36

This Android Gradle plugin (7.4.2) was tested up to compileSdk = 33

This warning can be suppressed by adding
    android.suppressUnsupportedCompileSdk=36
to this project's gradle.properties

The build will continue, but you are strongly encouraged to update your project to
use a newer Android Gradle Plugin that has been tested with compileSdk = 36

> Task :launcher:preBuild UP-TO-DATE
> Task :unityLibrary:preBuild UP-TO-DATE
> Task :unityLibrary:mobilenotifications.androidlib:preBuild UP-TO-DATE
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:preBuild UP-TO-DATE
> Task :launcher:preReleaseBuild UP-TO-DATE
> Task :unityLibrary:preReleaseBuild UP-TO-DATE
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:preReleaseBuild UP-TO-DATE
> Task :unityLibrary:mobilenotifications.androidlib:preReleaseBuild UP-TO-DATE
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:packageReleaseRenderscript NO-SOURCE
> Task :unityLibrary:mobilenotifications.androidlib:packageReleaseRenderscript NO-SOURCE
> Task :unityLibrary:packageReleaseRenderscript NO-SOURCE
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:compileReleaseRenderscript NO-SOURCE
> Task :unityLibrary:mobilenotifications.androidlib:compileReleaseRenderscript NO-SOURCE
> Task :launcher:generateReleaseResValues
> Task :unityLibrary:generateReleaseResValues
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:generateReleaseResValues
> Task :unityLibrary:mobilenotifications.androidlib:generateReleaseResValues
> Task :unityLibrary:compileReleaseRenderscript NO-SOURCE
> Task :launcher:compileReleaseRenderscript NO-SOURCE
> Task :unityLibrary:mobilenotifications.androidlib:generateReleaseResources
> Task :unityLibrary:generateReleaseResources
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:generateReleaseResources
> Task :launcher:generateReleaseResources
> Task :launcher:createReleaseCompatibleScreenManifests
> Task :launcher:extractDeepLinksRelease
> Task :launcher:mergeReleaseShaders
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:packageReleaseResources
> Task :unityLibrary:mobilenotifications.androidlib:packageReleaseResources
> Task :launcher:compileReleaseShaders NO-SOURCE
> Task :launcher:generateReleaseAssets UP-TO-DATE
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:extractDeepLinksRelease
> Task :unityLibrary:mobilenotifications.androidlib:extractDeepLinksRelease
> Task :unityLibrary:packageReleaseResources
> Task :unityLibrary:extractDeepLinksRelease
> Task :unityLibrary:mobilenotifications.androidlib:compileReleaseLibraryResources
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:compileReleaseLibraryResources
> Task :unityLibrary:mobilenotifications.androidlib:mergeReleaseShaders
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:mergeReleaseShaders
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:compileReleaseShaders NO-SOURCE
> Task :unityLibrary:mobilenotifications.androidlib:compileReleaseShaders NO-SOURCE
> Task :unityLibrary:compileReleaseLibraryResources
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:generateReleaseAssets UP-TO-DATE
> Task :unityLibrary:mobilenotifications.androidlib:generateReleaseAssets UP-TO-DATE
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:packageReleaseAssets
> Task :unityLibrary:mobilenotifications.androidlib:packageReleaseAssets
> Task :unityLibrary:mergeReleaseShaders
> Task :unityLibrary:compileReleaseShaders NO-SOURCE
> Task :unityLibrary:generateReleaseAssets UP-TO-DATE
> Task :unityLibrary:mobilenotifications.androidlib:compileReleaseAidl NO-SOURCE
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:compileReleaseAidl NO-SOURCE

> Task :unityLibrary:mobilenotifications.androidlib:processReleaseManifest
package="com.unity.androidnotifications" found in source AndroidManifest.xml: /Users/sagielevy/Documents/Unity Projects/HexaPrisms/Unity/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/mobilenotifications.androidlib/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :unityLibrary:processReleaseManifest

> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:processReleaseManifest
package="com.google.unity.ads" found in source AndroidManifest.xml: /Users/sagielevy/Documents/Unity Projects/HexaPrisms/Unity/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:generateReleaseBuildConfig
> Task :unityLibrary:mobilenotifications.androidlib:generateReleaseBuildConfig
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:parseReleaseLocalResources
> Task :unityLibrary:mobilenotifications.androidlib:parseReleaseLocalResources
> Task :unityLibrary:mobilenotifications.androidlib:javaPreCompileRelease
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:javaPreCompileRelease
> Task :unityLibrary:packageReleaseAssets
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:processReleaseJavaRes NO-SOURCE
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:writeReleaseAarMetadata
> Task :unityLibrary:mobilenotifications.androidlib:writeReleaseAarMetadata
> Task :unityLibrary:compileReleaseAidl NO-SOURCE
> Task :unityLibrary:generateReleaseBuildConfig
> Task :unityLibrary:javaPreCompileRelease
> Task :unityLibrary:writeReleaseAarMetadata
> Task :unityLibrary:parseReleaseLocalResources
> Task :unityLibrary:processReleaseJavaRes
> Task :unityLibrary:bundleLibResRelease
> Task :unityLibrary:mobilenotifications.androidlib:processReleaseJavaRes NO-SOURCE
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:bundleLibResRelease NO-SOURCE
> Task :unityLibrary:mobilenotifications.androidlib:bundleLibResRelease NO-SOURCE
> Task :unityLibrary:mobilenotifications.androidlib:mergeReleaseJniLibFolders
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:mergeReleaseJniLibFolders
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:generateReleaseRFile
> Task :unityLibrary:mobilenotifications.androidlib:generateReleaseRFile
> Task :unityLibrary:mobilenotifications.androidlib:mergeReleaseNativeLibs NO-SOURCE
> Task :unityLibrary:mergeReleaseJniLibFolders
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:compileReleaseJavaWithJavac
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:mergeReleaseGeneratedProguardFiles
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:bundleLibCompileToJarRelease
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:exportReleaseConsumerProguardFiles
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:bundleLibRuntimeToJarRelease
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:mergeReleaseNativeLibs NO-SOURCE
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:prepareReleaseArtProfile
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:copyReleaseJniLibsProjectOnly

> Task :unityLibrary:mobilenotifications.androidlib:compileReleaseJavaWithJavac

> Task :unityLibrary:mobilenotifications.androidlib:bundleLibCompileToJarRelease
> Task :unityLibrary:mobilenotifications.androidlib:mergeReleaseGeneratedProguardFiles
> Task :unityLibrary:mobilenotifications.androidlib:exportReleaseConsumerProguardFiles
> Task :unityLibrary:mobilenotifications.androidlib:copyReleaseJniLibsProjectOnly
> Task :unityLibrary:mobilenotifications.androidlib:bundleLibRuntimeToJarRelease
> Task :unityLibrary:mobilenotifications.androidlib:prepareReleaseArtProfile
> Task :launcher:checkReleaseDuplicateClasses
> Task :unityLibrary:generateReleaseRFile
WARNING: [Processor] Library '/Users/sagielevy/Documents/Unity Projects/HexaPrisms/Unity/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/libs/app-1.8.7-unity-lite-support.aar' contains references to both AndroidX and old support library. This seems like the library is partially migrated. Jetifier will try to rewrite the library anyway.
 Example of androidX reference: 'androidx/work/WorkerParameters'
 Example of support library reference: 'android/support/v4/app/Fragment'

> Task :unityLibrary:prepareReleaseArtProfile
> Task :unityLibrary:mergeReleaseNativeLibs
> Task :launcher:mapReleaseSourceSetPaths
> Task :launcher:mergeReleaseResources

> Task :launcher:processReleaseMainManifest
[:googlemobileads-unity:] /Users/sagielevy/.gradle/caches/transforms-4/9922bbacf5cedf8267c275fcafcd2548/transformed/jetified-googlemobileads-unity/AndroidManifest.xml Warning:
	Namespace 'com.google.unity.ads' used in: :googlemobileads-unity:, :unityLibrary:GoogleMobileAdsPlugin.androidlib.

> Task :launcher:processReleaseManifest
> Task :launcher:processApplicationManifestReleaseForBundle
> Task :launcher:mergeReleaseAssets
> Task :launcher:compileReleaseAidl NO-SOURCE
> Task :launcher:generateReleaseBuildConfig
> Task :launcher:javaPreCompileRelease
> Task :launcher:checkReleaseAarMetadata
> Task :launcher:extractProguardFiles
> Task :launcher:processReleaseJavaRes NO-SOURCE

> Task :unityLibrary:compileReleaseJavaWithJavac

> Task :launcher:mergeReleaseJniLibFolders
> Task :launcher:writeReleaseAppMetadata
> Task :launcher:collectReleaseDependencies
> Task :launcher:configureReleaseDependencies
> Task :launcher:processReleaseManifestForPackage
> Task :launcher:parseReleaseIntegrityConfig
> Task :launcher:mergeReleaseJavaResource
> Task :launcher:writeReleaseApplicationId
> Task :launcher:analyticsRecordingRelease
> Task :launcher:validateSigningRelease
> Task :launcher:mergeReleaseArtProfile
> Task :unityLibrary:mergeReleaseGeneratedProguardFiles
> Task :unityLibrary:exportReleaseConsumerProguardFiles
> Task :unityLibrary:bundleLibRuntimeToJarRelease
> Task :unityLibrary:bundleLibCompileToJarRelease
> Task :unityLibrary:copyReleaseJniLibsProjectOnly
> Task :launcher:mergeReleaseNativeLibs
> Task :launcher:stripReleaseDebugSymbols
> Task :launcher:extractReleaseNativeSymbolTables
> Task :launcher:bundleReleaseResources
> Task :launcher:processReleaseResources
> Task :launcher:bundleReleaseResources FAILED
> Task :launcher:processReleaseResources FAILED

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.6/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
94 actionable tasks: 94 executed
]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at /home/bokken/build/output/unity/unity/PlatformDependent/AndroidPlayer/Editor/Managed/Android/Command.cs:209)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at /home/bokken/build/output/unity/unity/PlatformDependent/AndroidPlayer/Editor/Managed/Android/Command.cs:157)
UnityEditor.Android.Command.Run (System.String command, System.String args, System.String workingdir, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at /home/bokken/build/output/unity/u<message truncated>

Please share your gradleTemplate.properties file

org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
org.gradle.parallel=true
unityStreamingAssets=**STREAMING_ASSETS**
# Android Resolver Properties Start
android.useAndroidX=true
android.enableJetifier=true
# Android Resolver Properties End
**ADDITIONAL_PROPERTIES**


android.aapt2FromMavenOverride=/Applications/Unity/Hub/Editor/2022.3.62f2/PlaybackEngines/AndroidPlayer/SDK/build-tools/36.0.0/aapt2

android.jetifier.ignorelist=annotation-experimental-1.4.0.aar

Replace /Applications/Unity/Hub/Editor/2022.3.62f2/PlaybackEngines/AndroidPlayer/SDK/build-tools/36.0.0/aapt2 with the actual path to your Android SDK installation directory.
For Windows use file with extension: appt2.exe.

For Mac only use aapt2.

Example : android.aapt2FromMavenOverride= {full path}/aapt2.exe.

Full path should be start with any directory that have android sdk like C:/, D:/, etc.

Check my video that I sent for 36 API level.

I originally followed your video, i copied the build-tools 36.0.0 directory to the Unity version and ran it from there. I am running on Mac but i assume it doesn’t make a difference.
I think the core issue is that the Gradle version for Android doesn’t fit API > 33:

I’ve tried everything.. I tried building with API level 35 or 36. I set android.aapt2FromMavenOverride={full path}/aapt2 as described. I keep getting the same error:

Warning: SDK processing. This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: /Users/sagielevy/Documents/Unity Projects/HexaPrisms/Unity/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/java/com/unity3d/player/UnityPlayerActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

FAILURE: Build completed with 3 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':launcher:bundleReleaseResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.Aapt2ProcessResourcesRunnable
   > AAPT2 35.0.0 Daemon #0: Unexpected error during link, attempting to stop daemon.
     This should not happen under normal circumstances, please file an issue if it does.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
java.lang.StackOverflowError (no error message)

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

3: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':launcher:processReleaseResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction
   > AAPT2 35.0.0 Daemon #1: Unexpected error during link, attempting to stop daemon.
     This should not happen under normal circumstances, please file an issue if it does.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

* Get more help at https://help.gradle.org

BUILD FAILED in 3m 50s

I tried changing the Gradle version since it is supposed to be compatible with API level 35 or 36, but that requires JDK 17 and this version of Unity does not work with JDK 17, whenever I change it simply doesn’t build.

Hi there! I’m currently facing the same error on Unity 2022.3.62f2

Were you able to resolved this? If so, how did you do it?

As a extra note, this project i contains a lot of Plugins. I’m not sure if that is the reason for this bug.
If so, is there a way to figure out which specific plugin is the one causing the error?

The output says we can use --stacktrace. --info or --scan but where do i put these arguments for me to see them?

Thank you

manage to find a fix for my case.
the reason for me case is because i have a lot of json files in Unity’s StreamingAssets.
in my launcherTemplate.gradle, the code that does unityStreamingAssets.tokenize(', ') does not return just a single “.json” but returns all of my json files as individual filenames. ( my other files are compressed into their .extension form )

so when this large array is sent into the aapt2 program, it probably causes it to break

the fix is to filter just my json extension into a single .json using some simple groovy code

hopefully for other people, this can help. you can println to find out what are the file extensions that aren’t filtered out to just their extensions in unityStreamingAssets. ( gradle accepts Groovy code it seems )

aaptOptions {
        // NOTE: This is a hack in 2022.3.62f2 to filter unity's streaming assets to compress all json texts into a single .json string
        //  Likely under the hood, the unityStreamingAssets does not filter out certain extensions ( such as .json ) and adds as is
        // my game has a lot of json files so this returns a large array
        // thus, aapt2.exe times out, causing the error
        // fix is to manually filter out the .json files by writing some simple groovy code, then adding in .json ourselves ( since aapt takes in just extensions )
        def filteredStreamingAssets = unityStreamingAssets
        .tokenize(', ')
        .findAll { !it.contains('.json') }
        filteredStreamingAssets.add('.json')        
        
        noCompress = **BUILTIN_NOCOMPRESS** + filteredStreamingAssets
        ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
    }**SIGN**