diff --git a/.claude/settings.local [conflicted 2].json b/.claude/settings.local [conflicted 2].json new file mode 100644 index 0000000..b73a72c --- /dev/null +++ b/.claude/settings.local [conflicted 2].json @@ -0,0 +1,7 @@ +{ + "permissions": { + "allow": [ + "Bash(cd /home/mario/Workspaces/xxx-thegame/xxxthegame/src/main/java/de/oaa/xxx/games/chastity && mv KeyholdeCardLock.java KeyholderCardLock.java && mv PrcoessTimedLock.java ProcessTimedLock.java)" + ] + } +} diff --git a/.claude/settings.local [conflicted 3].json b/.claude/settings.local [conflicted 3].json new file mode 100644 index 0000000..7350ccd --- /dev/null +++ b/.claude/settings.local [conflicted 3].json @@ -0,0 +1,7 @@ +{ + "permissions": { + "allow": [ + "Bash(cd /home/mario/Workspaces/xxx-thegame/xxxthegame && ./gradlew compileJava 2>&1 | tail -40)" + ] + } +} diff --git a/.claude/settings.local [conflicted].json b/.claude/settings.local [conflicted].json new file mode 100644 index 0000000..58b7bdc --- /dev/null +++ b/.claude/settings.local [conflicted].json @@ -0,0 +1,10 @@ +{ + "permissions": { + "allow": [ + "Bash(cd /home/mario/Workspaces/xxx-thegame/xxxthegame && ./gradlew compileJava 2>&1 | tail -40)", + "Bash(grep -l \"variables.css\\\\|:root\" /home/mario/Workspaces/xxx-thegame/xxxthegame/src/main/resources/static/*.html | head -5)", + "Bash(cd /home/mario/Workspaces/xxx-thegame/xxxthegame && ./gradlew compileJava 2>&1 | tail -30)", + "Bash(grep -r \"profile-images\\\\|ProfileImage\\\\|imageData\\\\|lightbox\\\\|carousel\" /home/mario/Workspaces/xxx-thegame/xxxthegame/src/main/resources/static --include=\"*.html\" --include=\"*.js\" 2>/dev/null | head -40)" + ] + } +} diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..6a8685d --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,11 @@ +{ + "permissions": { + "allow": [ + "Bash(cd /home/mario/Workspaces/xxx-thegame/xxxthegame && ./gradlew compileJava 2>&1 | tail -40)", + "Bash(grep -l \"variables.css\\\\|:root\" /home/mario/Workspaces/xxx-thegame/xxxthegame/src/main/resources/static/*.html | head -5)", + "Bash(cd /home/mario/Workspaces/xxx-thegame/xxxthegame && ./gradlew compileJava 2>&1 | tail -30)", + "Bash(grep:*)", + "Bash(mkdir:*)" + ] + } +} diff --git a/.metadata/.lock b/.metadata/.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.lock_info b/.metadata/.lock_info new file mode 100644 index 0000000..7e5d72a --- /dev/null +++ b/.metadata/.lock_info @@ -0,0 +1,5 @@ +#Sun Mar 15 20:44:32 CET 2026 +display=\:0 +host=Mario-Linux +process-id=63885 +user=mario diff --git a/.metadata/.log b/.metadata/.log new file mode 100644 index 0000000..fdd34d3 --- /dev/null +++ b/.metadata/.log @@ -0,0 +1,4140 @@ +!SESSION 2026-03-01 17:26:52.316 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2026-03-01 17:26:53.015 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-01 17:27:15.872 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.buildship.core 2 2 2026-03-01 17:27:54.195 +!MESSAGE Initialize project xxx-thegame, Update preview failed due to an error in the referenced Gradle build. +!STACK 0 +org.gradle.tooling.BuildException: Could not execute build using connection to Gradle distribution 'https://services.gradle.org/distributions/gradle-8.9-bin.zip'. + at org.gradle.tooling.internal.consumer.ConnectionExceptionTransformer.transform(ConnectionExceptionTransformer.java:53) + at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:42) + at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:68) + at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) + at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) + at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46) + at org.gradle.tooling.internal.consumer.DefaultBuildLauncher.run(DefaultBuildLauncher.java:82) + at org.eclipse.buildship.core.internal.workspace.InitializeNewProjectOperation.initProjectIfNotExists(InitializeNewProjectOperation.java:65) + at org.eclipse.buildship.core.internal.workspace.InitializeNewProjectOperation.runInToolingApi(InitializeNewProjectOperation.java:51) + at org.eclipse.buildship.core.internal.operation.ToolingApiOperations$1.runInToolingApi(ToolingApiOperations.java:55) + at org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager$WorkspaceRunnableAdapter.run(DefaultToolingApiOperationManager.java:58) + at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2505) + at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2533) + at org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager.run(DefaultToolingApiOperationManager.java:39) + at org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager.run(DefaultToolingApiOperationManager.java:33) + at org.eclipse.buildship.ui.internal.wizard.project.ProjectPreviewWizardPage$4.run(ProjectPreviewWizardPage.java:307) + at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:123) +Caused by: org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':init'. + at org.gradle.initialization.exception.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:97) + at org.gradle.initialization.exception.DefaultExceptionAnalyser.collectFailures(DefaultExceptionAnalyser.java:63) + at org.gradle.initialization.exception.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:55) + at org.gradle.initialization.exception.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:39) + at org.gradle.internal.buildtree.DefaultBuildTreeFinishExecutor.finishBuildTree(DefaultBuildTreeFinishExecutor.java:56) + at org.gradle.composite.internal.OperationFiringBuildTreeFinishExecutor$1.call(OperationFiringBuildTreeFinishExecutor.java:46) + at org.gradle.composite.internal.OperationFiringBuildTreeFinishExecutor$1.call(OperationFiringBuildTreeFinishExecutor.java:42) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) + at org.gradle.composite.internal.OperationFiringBuildTreeFinishExecutor.finishBuildTree(OperationFiringBuildTreeFinishExecutor.java:42) + at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$runBuild$4(DefaultBuildTreeLifecycleController.java:125) + at org.gradle.internal.model.StateTransitionController.lambda$transition$6(StateTransitionController.java:169) + at org.gradle.internal.model.StateTransitionController.doTransition(StateTransitionController.java:266) + at org.gradle.internal.model.StateTransitionController.lambda$transition$7(StateTransitionController.java:169) + at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:44) + at org.gradle.internal.model.StateTransitionController.transition(StateTransitionController.java:169) + at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild(DefaultBuildTreeLifecycleController.java:117) + at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:77) + at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:72) + at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:53) + at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) + at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:49) + at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:65) + at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:140) + at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41) + at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40) + at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:130) + at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40) + at org.gradle.internal.buildtree.InitDeprecationLoggingActionExecutor.execute(InitDeprecationLoggingActionExecutor.java:62) + at org.gradle.internal.buildtree.InitProblems.execute(InitProblems.java:36) + at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40) + at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:71) + at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:60) + at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:71) + at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:61) + at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:57) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) + at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57) + at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:36) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:267) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:131) + at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:36) + at org.gradle.tooling.internal.provider.continuous.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:110) + at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64) + at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46) + at org.gradle.internal.buildprocess.execution.BuildSessionLifecycleBuildActionExecutor$ActionImpl.apply(BuildSessionLifecycleBuildActionExecutor.java:92) + at org.gradle.internal.buildprocess.execution.BuildSessionLifecycleBuildActionExecutor$ActionImpl.apply(BuildSessionLifecycleBuildActionExecutor.java:80) + at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:71) + at org.gradle.internal.buildprocess.execution.BuildSessionLifecycleBuildActionExecutor.execute(BuildSessionLifecycleBuildActionExecutor.java:62) + at org.gradle.internal.buildprocess.execution.BuildSessionLifecycleBuildActionExecutor.execute(BuildSessionLifecycleBuildActionExecutor.java:41) + at org.gradle.internal.buildprocess.execution.StartParamsValidatingActionExecutor.execute(StartParamsValidatingActionExecutor.java:64) + at org.gradle.internal.buildprocess.execution.StartParamsValidatingActionExecutor.execute(StartParamsValidatingActionExecutor.java:32) + at org.gradle.internal.buildprocess.execution.SessionFailureReportingActionExecutor.execute(SessionFailureReportingActionExecutor.java:51) + at org.gradle.internal.buildprocess.execution.SessionFailureReportingActionExecutor.execute(SessionFailureReportingActionExecutor.java:39) + at org.gradle.internal.buildprocess.execution.SetupLoggingActionExecutor.execute(SetupLoggingActionExecutor.java:47) + at org.gradle.internal.buildprocess.execution.SetupLoggingActionExecutor.execute(SetupLoggingActionExecutor.java:31) + at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:70) + at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37) + at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) + at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39) + at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) + at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29) + at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) + at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35) + at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) + at org.gradle.launcher.daemon.server.exec.ForwardClientInput.lambda$execute$0(ForwardClientInput.java:40) + at org.gradle.internal.daemon.clientinput.ClientInputForwarder.forwardInput(ClientInputForwarder.java:80) + at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:37) + at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) + at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:64) + at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) + at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63) + at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37) + at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) + at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84) + at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37) + at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) + at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52) + at org.gradle.launcher.daemon.server.DaemonStateCoordinator.lambda$runCommand$0(DaemonStateCoordinator.java:320) + at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) + at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48) +Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':init'. + at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:130) + at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:293) + at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:128) + at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:116) + at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) + at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51) + at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) + at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74) + at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) + at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) + at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) + at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) + at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) + at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42) + at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:331) + at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:318) + at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:314) + at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:85) + at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:314) + at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303) + at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:459) + at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:376) + ... 2 more +Caused by: org.gradle.api.GradleException: Package name: '_xxx-thegame' is not valid - it may contain invalid characters or reserved words. + at org.gradle.buildinit.tasks.InitBuild.validatePackageName(InitBuild.java:399) + at org.gradle.buildinit.tasks.InitBuild.calculateGenerationSettings(InitBuild.java:307) + at org.gradle.api.internal.tasks.userinput.AbstractUserInputHandler$1.call(AbstractUserInputHandler.java:37) + at org.gradle.api.internal.provider.DefaultProvider.calculateOwnValue(DefaultProvider.java:72) + at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateOwnPresentValue(AbstractMinimalProvider.java:80) + at org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:100) + at org.gradle.buildinit.tasks.InitBuild.setupProjectLayout(InitBuild.java:274) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125) + at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58) + at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51) + at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29) + at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:244) + at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) + at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47) + at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:229) + at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:212) + at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:195) + at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:162) + at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105) + at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44) + at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59) + at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) + at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56) + at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44) + at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:42) + at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:75) + at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55) + at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:50) + at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:28) + at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:67) + at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:37) + at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:61) + at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:26) + at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:69) + at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:46) + at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:40) + at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:29) + at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:189) + at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:75) + at org.gradle.internal.Either$Right.fold(Either.java:175) + at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:62) + at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73) + at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48) + at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:46) + at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:35) + at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:75) + at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:53) + at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:53) + at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:35) + at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37) + at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27) + at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:49) + at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:27) + at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:71) + at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:39) + at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:65) + at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:36) + at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:105) + at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:54) + at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:64) + at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:43) + at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.executeWithNonEmptySources(AbstractSkipEmptyWorkStep.java:125) + at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:56) + at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:36) + at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38) + at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36) + at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23) + at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:75) + at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:41) + at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.lambda$execute$0(AssignMutableWorkspaceStep.java:35) + at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:289) + at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:31) + at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:22) + at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:40) + at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:23) + at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.lambda$execute$2(ExecuteWorkBuildOperationFiringStep.java:67) + at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:67) + at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:39) + at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:46) + at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:34) + at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:48) + at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:35) + at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:61) + at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:127) + ... 28 more +!SESSION 2026-03-01 18:42:10.624 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product -data /home/mario/Workspaces/xxx-thegame/ + +!ENTRY ch.qos.logback.classic 1 0 2026-03-01 18:42:11.339 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-01 18:42:11.793 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.equinox.p2.core 4 0 2026-03-01 19:33:56.546 +!MESSAGE Provisioning exception +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: No repository found at https://download.eclipse.org/buildship/updates/e410/releases/3.x/3.1.10.v20250903-1508/. + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.fail(AbstractRepositoryManager.java:437) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.fail(CachingRepositoryManager.java:387) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:278) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.load(CompositeArtifactRepository.java:495) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.addChild(CompositeArtifactRepository.java:158) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.(CompositeArtifactRepository.java:79) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepositoryFactory.load(CompositeArtifactRepositoryFactory.java:127) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.factoryLoad(ArtifactRepositoryManager.java:94) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:853) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:447) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:230) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.epp.internal.mpc.ui.catalog.MarketplaceCatalog.lambda$10(MarketplaceCatalog.java:330) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +!SUBENTRY 1 org.eclipse.equinox.p2.artifact.repository 4 1000 2026-03-01 19:33:56.547 +!MESSAGE No repository found at https://download.eclipse.org/buildship/updates/e410/releases/3.x/3.1.10.v20250903-1508/. + +!ENTRY org.eclipse.epp.mpc.ui 1 2 2026-03-01 19:33:56.547 +!MESSAGE Skipping update check for repository 'https://download.eclipse.org/buildship/updates/e410/releases/3.x' - failed to read repository. Affected entries: +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: Unable to read repository at https://download.eclipse.org/buildship/updates/e410/releases/3.x. + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.addChild(CompositeArtifactRepository.java:169) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.(CompositeArtifactRepository.java:79) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepositoryFactory.load(CompositeArtifactRepositoryFactory.java:127) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.factoryLoad(ArtifactRepositoryManager.java:94) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:853) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:447) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:230) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.epp.internal.mpc.ui.catalog.MarketplaceCatalog.lambda$10(MarketplaceCatalog.java:330) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +Caused by: org.eclipse.equinox.p2.core.ProvisionException: No repository found at https://download.eclipse.org/buildship/updates/e410/releases/3.x/3.1.10.v20250903-1508/. + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.fail(AbstractRepositoryManager.java:437) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.fail(CachingRepositoryManager.java:387) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:278) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.load(CompositeArtifactRepository.java:495) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.addChild(CompositeArtifactRepository.java:158) + ... 18 more +!SUBENTRY 1 org.eclipse.equinox.p2.artifact.repository 4 1002 2026-03-01 19:33:56.547 +!MESSAGE Unable to read repository at https://download.eclipse.org/buildship/updates/e410/releases/3.x. +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: No repository found at https://download.eclipse.org/buildship/updates/e410/releases/3.x/3.1.10.v20250903-1508/. + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.fail(AbstractRepositoryManager.java:437) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.fail(CachingRepositoryManager.java:387) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:278) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.load(CompositeArtifactRepository.java:495) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.addChild(CompositeArtifactRepository.java:158) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.(CompositeArtifactRepository.java:79) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepositoryFactory.load(CompositeArtifactRepositoryFactory.java:127) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.factoryLoad(ArtifactRepositoryManager.java:94) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:853) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:447) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:230) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.epp.internal.mpc.ui.catalog.MarketplaceCatalog.lambda$10(MarketplaceCatalog.java:330) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +!SUBENTRY 2 org.eclipse.equinox.p2.artifact.repository 4 1000 2026-03-01 19:33:56.547 +!MESSAGE No repository found at https://download.eclipse.org/buildship/updates/e410/releases/3.x/3.1.10.v20250903-1508/. +!SUBENTRY 1 org.eclipse.epp.mpc.ui 1 0 2026-03-01 19:33:56.547 +!MESSAGE Buildship Gradle Integration 3.0 + +!ENTRY org.eclipse.ui 4 0 2026-03-01 19:33:56.570 +!MESSAGE Unhandled event loop exception +!STACK 0 +java.lang.IllegalArgumentException: Argument not valid + at org.eclipse.swt.SWT.error(SWT.java:4931) + at org.eclipse.swt.SWT.error(SWT.java:4865) + at org.eclipse.swt.SWT.error(SWT.java:4836) + at org.eclipse.swt.graphics.Image.init(Image.java:1334) + at org.eclipse.swt.graphics.Image.(Image.java:219) + at org.eclipse.equinox.internal.p2.ui.discovery.util.GradientCanvas.onPaint(GradientCanvas.java:168) + at org.eclipse.equinox.internal.p2.ui.discovery.util.GradientCanvas.lambda$0(GradientCanvas.java:81) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5894) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1656) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1682) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1665) + at org.eclipse.swt.widgets.Control.gtk_draw(Control.java:3902) + at org.eclipse.swt.widgets.Scrollable.gtk_draw(Scrollable.java:394) + at org.eclipse.swt.widgets.Composite.gtk_draw(Composite.java:507) + at org.eclipse.swt.widgets.Canvas.gtk_draw(Canvas.java:173) + at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2614) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:6854) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:6201) + at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_do_event(Native Method) + at org.eclipse.swt.widgets.Display.eventProc(Display.java:1624) + at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_iteration_do(Native Method) + at org.eclipse.swt.browser.WebKit$Webkit2AsyncToSync.execAsyncAndWaitForReturn(WebKit.java:1397) + at org.eclipse.swt.browser.WebKit$Webkit2AsyncToSync.runjavascript(WebKit.java:1084) + at org.eclipse.swt.browser.WebKit$Webkit2AsyncToSync.evaluate(WebKit.java:1041) + at org.eclipse.swt.browser.WebKit.evaluate(WebKit.java:1414) + at org.eclipse.swt.browser.WebKit.close(WebKit.java:902) + at org.eclipse.swt.browser.WebKit.onDispose(WebKit.java:1907) + at org.eclipse.swt.browser.WebKit.lambda$5(WebKit.java:791) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5894) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1656) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1682) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1661) + at org.eclipse.swt.widgets.Widget.release(Widget.java:1400) + at org.eclipse.swt.widgets.Control.release(Control.java:4748) + at org.eclipse.swt.widgets.Widget.dispose(Widget.java:576) + at org.eclipse.epp.internal.mpc.ui.wizards.AbstractMarketplaceDiscoveryItem.computeBrowserAvailable(AbstractMarketplaceDiscoveryItem.java:521) + at org.eclipse.epp.internal.mpc.ui.wizards.AbstractMarketplaceDiscoveryItem.createInfoLink(AbstractMarketplaceDiscoveryItem.java:394) + at org.eclipse.epp.internal.mpc.ui.wizards.AbstractMarketplaceDiscoveryItem.createDescription(AbstractMarketplaceDiscoveryItem.java:341) + at org.eclipse.epp.internal.mpc.ui.wizards.AbstractMarketplaceDiscoveryItem.createContent(AbstractMarketplaceDiscoveryItem.java:241) + at org.eclipse.epp.internal.mpc.ui.wizards.AbstractMarketplaceDiscoveryItem.createContent(AbstractMarketplaceDiscoveryItem.java:203) + at org.eclipse.epp.internal.mpc.ui.wizards.AbstractMarketplaceDiscoveryItem.(AbstractMarketplaceDiscoveryItem.java:168) + at org.eclipse.epp.internal.mpc.ui.wizards.DiscoveryItem.(DiscoveryItem.java:86) + at org.eclipse.epp.internal.mpc.ui.wizards.MarketplaceViewer.createDiscoveryItem(MarketplaceViewer.java:462) + at org.eclipse.epp.internal.mpc.ui.wizards.MarketplaceViewer.doCreateViewerItem(MarketplaceViewer.java:412) + at org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogViewer$3.doCreateItem(CatalogViewer.java:342) + at org.eclipse.equinox.internal.p2.ui.discovery.util.ControlListViewer.createNewItem(ControlListViewer.java:241) + at org.eclipse.equinox.internal.p2.ui.discovery.util.ControlListViewer.refreshAll(ControlListViewer.java:483) + at org.eclipse.equinox.internal.p2.ui.discovery.util.ControlListViewer.inputChanged(ControlListViewer.java:355) + at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:279) + at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1639) + at org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogViewer.catalogUpdated(CatalogViewer.java:248) + at org.eclipse.epp.internal.mpc.ui.wizards.MarketplaceViewer.access$3(MarketplaceViewer.java:1) + at org.eclipse.epp.internal.mpc.ui.wizards.MarketplaceViewer.lambda$1(MarketplaceViewer.java:354) + at org.eclipse.epp.internal.mpc.ui.wizards.MarketplaceViewer.runUpdate(MarketplaceViewer.java:712) + at org.eclipse.epp.internal.mpc.ui.wizards.MarketplaceViewer.catalogUpdated(MarketplaceViewer.java:353) + at org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogViewer.updateCatalog(CatalogViewer.java:588) + at org.eclipse.epp.internal.mpc.ui.wizards.MarketplaceViewer.updateCatalog(MarketplaceViewer.java:989) + at org.eclipse.epp.internal.mpc.ui.wizards.MarketplacePage.safeUpdateCatalog(MarketplacePage.java:798) + at org.eclipse.epp.internal.mpc.ui.wizards.MarketplacePage.lambda$4(MarketplacePage.java:786) + at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) + at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132) + at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5084) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4549) + at org.eclipse.jface.window.Window.runEventLoop(Window.java:824) + at org.eclipse.jface.window.Window.open(Window.java:804) + at org.eclipse.epp.internal.mpc.ui.commands.AbstractMarketplaceWizardCommand.openWizardDialog(AbstractMarketplaceWizardCommand.java:146) + at org.eclipse.epp.internal.mpc.ui.commands.AbstractMarketplaceWizardCommand.execute(AbstractMarketplaceWizardCommand.java:73) + at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:277) + at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:98) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:305) + at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:237) + at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:174) + at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:165) + at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488) + at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:484) + at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:204) + at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:446) + at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.handleWidgetSelection(AbstractContributionItem.java:471) + at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.lambda$2(AbstractContributionItem.java:493) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5894) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1656) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5109) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4546) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1147) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1038) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:677) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + at org.eclipse.equinox.launcher.Main.main(Main.java:1387) +!SESSION 2026-03-01 19:35:39.848 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product -data file:/home/mario/Workspaces/xxx-thegame/ + +!ENTRY ch.qos.logback.classic 1 0 2026-03-01 19:35:41.034 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-01 19:35:41.838 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.ui 2 0 2026-03-01 19:35:41.959 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-01 19:35:41.959 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.ui 2 0 2026-03-01 19:35:42.071 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-01 19:35:42.071 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' +!SESSION 2026-03-02 07:06:00.104 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2026-03-02 07:06:04.976 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-02 07:06:09.939 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.ui 2 0 2026-03-02 07:06:10.126 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-02 07:06:10.126 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.ui 2 0 2026-03-02 07:06:10.280 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-02 07:06:10.280 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.jface 2 0 2026-03-02 07:17:32.622 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2026-03-02 07:17:32.622 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.jdt.ui.navigate.open.type"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolInWorkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.lsp4e.symbolInWorkspace"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.debug.core 4 125 2026-03-02 07:17:32.817 +!MESSAGE Error logged from Debug Core: +!STACK 0 +java.io.IOException: Stream closed + at java.base/java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:188) + at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:343) + at java.base/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:405) + at java.base/java.io.FilterInputStream.read(FilterInputStream.java:95) + at org.eclipse.debug.internal.core.OutputStreamMonitor.internalRead(OutputStreamMonitor.java:235) + at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:211) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-02 11:04:28.836 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) +!SESSION 2026-03-02 18:52:12.395 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2026-03-02 18:52:17.211 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-02 18:52:30.891 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.ui 2 0 2026-03-02 18:52:31.083 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-02 18:52:31.083 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.ui 2 0 2026-03-02 18:52:31.215 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-02 18:52:31.215 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.jface 2 0 2026-03-02 19:47:48.567 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2026-03-02 19:47:48.567 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.jdt.ui.navigate.open.type"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolInWorkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.lsp4e.symbolInWorkspace"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.debug.core 4 125 2026-03-02 20:36:48.515 +!MESSAGE Error logged from Debug Core: +!STACK 0 +java.io.IOException: Stream closed + at java.base/java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:188) + at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:343) + at java.base/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:405) + at java.base/java.io.FilterInputStream.read(FilterInputStream.java:95) + at org.eclipse.debug.internal.core.OutputStreamMonitor.internalRead(OutputStreamMonitor.java:235) + at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:211) + at java.base/java.lang.Thread.run(Thread.java:1583) +!SESSION 2026-03-03 07:39:25.427 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2026-03-03 07:39:30.215 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-03 07:39:35.273 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.ui 2 0 2026-03-03 07:39:35.456 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-03 07:39:35.456 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.ui 2 0 2026-03-03 07:39:35.586 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-03 07:39:35.586 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.jface 2 0 2026-03-03 07:56:04.643 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2026-03-03 07:56:04.643 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.jdt.ui.navigate.open.type"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolInWorkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.lsp4e.symbolInWorkspace"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-03 15:57:21.578 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-03 15:59:16.948 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-03 16:03:19.413 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) +!SESSION 2026-03-04 06:34:26.083 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2026-03-04 06:34:30.883 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-04 06:34:36.349 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.ui 2 0 2026-03-04 06:34:36.549 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-04 06:34:36.549 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.ui 2 0 2026-03-04 06:34:36.687 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-04 06:34:36.687 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.jface 2 0 2026-03-04 07:19:59.254 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2026-03-04 07:19:59.254 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.jdt.ui.navigate.open.type"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolInWorkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.lsp4e.symbolInWorkspace"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SESSION 2026-03-05 07:45:41.907 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2026-03-05 07:45:46.723 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-05 07:45:51.182 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.ui 2 0 2026-03-05 07:45:51.346 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-05 07:45:51.346 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.ui 2 0 2026-03-05 07:45:51.483 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-05 07:45:51.483 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-05 14:31:19.161 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-05 14:31:21.547 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) +!SESSION 2026-03-05 17:18:50.063 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2026-03-05 17:18:54.876 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-05 17:18:58.331 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.ui 2 0 2026-03-05 17:18:58.528 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-05 17:18:58.528 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.ui 2 0 2026-03-05 17:18:58.658 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-05 17:18:58.658 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.equinox.p2.core 4 0 2026-03-05 17:23:32.098 +!MESSAGE Provisioning exception +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: No repository found at https://download.eclipse.org/buildship/updates/e410/releases/3.x/3.1.10.v20250903-1508/. + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.fail(AbstractRepositoryManager.java:437) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.fail(CachingRepositoryManager.java:387) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:278) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.load(CompositeArtifactRepository.java:495) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.addChild(CompositeArtifactRepository.java:158) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.(CompositeArtifactRepository.java:79) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepositoryFactory.load(CompositeArtifactRepositoryFactory.java:127) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.factoryLoad(ArtifactRepositoryManager.java:94) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:853) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:447) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:230) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.epp.internal.mpc.ui.catalog.MarketplaceCatalog.lambda$10(MarketplaceCatalog.java:330) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +!SUBENTRY 1 org.eclipse.equinox.p2.artifact.repository 4 1000 2026-03-05 17:23:32.109 +!MESSAGE No repository found at https://download.eclipse.org/buildship/updates/e410/releases/3.x/3.1.10.v20250903-1508/. + +!ENTRY org.eclipse.epp.mpc.ui 1 2 2026-03-05 17:23:32.110 +!MESSAGE Skipping update check for repository 'https://download.eclipse.org/buildship/updates/e410/releases/3.x' - failed to read repository. Affected entries: +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: Unable to read repository at https://download.eclipse.org/buildship/updates/e410/releases/3.x. + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.addChild(CompositeArtifactRepository.java:169) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.(CompositeArtifactRepository.java:79) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepositoryFactory.load(CompositeArtifactRepositoryFactory.java:127) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.factoryLoad(ArtifactRepositoryManager.java:94) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:853) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:447) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:230) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.epp.internal.mpc.ui.catalog.MarketplaceCatalog.lambda$10(MarketplaceCatalog.java:330) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +Caused by: org.eclipse.equinox.p2.core.ProvisionException: No repository found at https://download.eclipse.org/buildship/updates/e410/releases/3.x/3.1.10.v20250903-1508/. + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.fail(AbstractRepositoryManager.java:437) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.fail(CachingRepositoryManager.java:387) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:278) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.load(CompositeArtifactRepository.java:495) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.addChild(CompositeArtifactRepository.java:158) + ... 18 more +!SUBENTRY 1 org.eclipse.equinox.p2.artifact.repository 4 1002 2026-03-05 17:23:32.110 +!MESSAGE Unable to read repository at https://download.eclipse.org/buildship/updates/e410/releases/3.x. +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: No repository found at https://download.eclipse.org/buildship/updates/e410/releases/3.x/3.1.10.v20250903-1508/. + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.fail(AbstractRepositoryManager.java:437) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.fail(CachingRepositoryManager.java:387) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:278) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.load(CompositeArtifactRepository.java:495) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.addChild(CompositeArtifactRepository.java:158) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.(CompositeArtifactRepository.java:79) + at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepositoryFactory.load(CompositeArtifactRepositoryFactory.java:127) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.factoryLoad(ArtifactRepositoryManager.java:94) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:853) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:126) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:447) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:230) + at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Artifact.loadRepository(CachingRepositoryManager.java:586) + at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:128) + at org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager.loadRepository(IArtifactRepositoryManager.java:136) + at org.eclipse.epp.internal.mpc.ui.catalog.MarketplaceCatalog.lambda$10(MarketplaceCatalog.java:330) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +!SUBENTRY 2 org.eclipse.equinox.p2.artifact.repository 4 1000 2026-03-05 17:23:32.110 +!MESSAGE No repository found at https://download.eclipse.org/buildship/updates/e410/releases/3.x/3.1.10.v20250903-1508/. +!SUBENTRY 1 org.eclipse.epp.mpc.ui 1 0 2026-03-05 17:23:32.110 +!MESSAGE Buildship Gradle Integration 3.0 + +!ENTRY org.eclipse.equinox.p2.artifact.repository 2 0 2026-03-05 17:24:28.018 +!MESSAGE No digest algorithm is available to verify download of org.eclipse.update.feature,org.projectlombok.feature,1.18.42 from repository https://projectlombok.org/p2. + +!ENTRY org.eclipse.equinox.p2.artifact.repository 2 0 2026-03-05 17:24:28.018 +!MESSAGE No digest algorithm is available to verify download of osgi.bundle,org.projectlombok.agent,1.18.42 from repository https://projectlombok.org/p2. +!SESSION 2026-03-05 17:24:37.865 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product -data file:/home/mario/Workspaces/xxx-thegame/ + +!ENTRY ch.qos.logback.classic 1 0 2026-03-05 17:24:39.694 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-05 17:24:41.097 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.ui 2 0 2026-03-05 17:24:41.350 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-05 17:24:41.350 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.ui 2 0 2026-03-05 17:24:41.541 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-05 17:24:41.541 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' +!SESSION 2026-03-06 08:04:48.391 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2026-03-06 08:04:53.127 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-06 08:04:57.387 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.ui 2 0 2026-03-06 08:04:57.546 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-06 08:04:57.546 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.ui 2 0 2026-03-06 08:04:57.675 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-06 08:04:57.675 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-06 09:36:47.291 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-06 09:48:37.866 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-06 09:52:31.134 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-06 10:03:21.877 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-06 10:37:41.706 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.lsp4e 4 0 2026-03-06 10:47:38.839 +!MESSAGE 3254 +!STACK 0 +org.eclipse.jface.text.BadLocationException: 3254 + at org.eclipse.jface.text.TreeLineTracker.lineByOffset(TreeLineTracker.java:275) + at org.eclipse.jface.text.TreeLineTracker.getLineNumberOfOffset(TreeLineTracker.java:1183) + at org.eclipse.jface.text.AbstractLineTracker.getLineNumberOfOffset(AbstractLineTracker.java:246) + at org.eclipse.jface.text.AbstractDocument.getLineOfOffset(AbstractDocument.java:892) + at org.eclipse.core.internal.filebuffers.SynchronizableDocument.getLineOfOffset(SynchronizableDocument.java:429) + at org.eclipse.lsp4e.LSPEclipseUtils.toPosition(LSPEclipseUtils.java:202) + at org.eclipse.lsp4e.LSPEclipseUtils.toTextDocumentPositionParamsCommon(LSPEclipseUtils.java:299) + at org.eclipse.lsp4e.LSPEclipseUtils.toHoverParams(LSPEclipseUtils.java:310) + at org.eclipse.lsp4e.operations.hover.LSPTextHover.initiateHoverRequest(LSPTextHover.java:246) + at org.eclipse.lsp4e.operations.hover.LSPTextHover.getHoverInfoFuture(LSPTextHover.java:103) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:50) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.jdt.ui 4 0 2026-03-06 10:47:38.847 +!MESSAGE IllegalStateException computing hover information in VerificationController.java at offset 3254 +!STACK 0 +java.lang.IllegalStateException: Unexpected null value present! + at org.eclipse.lsp4e.internal.NullSafetyHelper.castNonNull(NullSafetyHelper.java:36) + at org.eclipse.lsp4e.operations.hover.LSPTextHover.getHoverInfoFuture(LSPTextHover.java:105) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:50) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + Suppressed: org.eclipse.jface.text.BadLocationException: 3254 + at org.eclipse.jface.text.TreeLineTracker.lineByOffset(TreeLineTracker.java:275) + at org.eclipse.jface.text.TreeLineTracker.getLineNumberOfOffset(TreeLineTracker.java:1183) + at org.eclipse.jface.text.AbstractLineTracker.getLineNumberOfOffset(AbstractLineTracker.java:246) + at org.eclipse.jface.text.AbstractDocument.getLineOfOffset(AbstractDocument.java:892) + at org.eclipse.core.internal.filebuffers.SynchronizableDocument.getLineOfOffset(SynchronizableDocument.java:429) + at org.eclipse.jdt.internal.ui.util.SelectionUtil.logException(SelectionUtil.java:147) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:178) + ... 3 more + +!ENTRY org.eclipse.jdt.core.manipulation 4 2 2026-03-06 11:30:16.463 +!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jdt.core.manipulation". +!STACK 0 +org.eclipse.jdt.internal.compiler.problem.AbortCompilation: + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11610) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12005) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11946) + at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10333) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:656) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:629) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:840) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:1405) + at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:109) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1410) + at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1289) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1289) + at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:933) + at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:189) + at org.eclipse.jdt.core.manipulation.SharedASTProviderCore.getAST(SharedASTProviderCore.java:138) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.internalGetHoverInfo(NLSStringHover.java:141) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.getHoverInfo2(NLSStringHover.java:120) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.jdt.core.manipulation 4 0 2026-03-06 11:30:16.463 +!MESSAGE Error in JDT Core during AST creation +!STACK 0 +org.eclipse.jdt.internal.compiler.problem.AbortCompilation: + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11610) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12005) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11946) + at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10333) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:656) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:629) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:840) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:1405) + at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:109) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1410) + at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1289) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1289) + at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:933) + at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:189) + at org.eclipse.jdt.core.manipulation.SharedASTProviderCore.getAST(SharedASTProviderCore.java:138) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.internalGetHoverInfo(NLSStringHover.java:141) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.getHoverInfo2(NLSStringHover.java:120) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-06 11:30:23.022 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.jdt.core.manipulation 4 2 2026-03-06 12:14:14.267 +!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jdt.core.manipulation". +!STACK 0 +org.eclipse.jdt.internal.compiler.problem.AbortCompilation: + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11610) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12005) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11946) + at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10333) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:656) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:629) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:840) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:1405) + at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:109) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1410) + at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1289) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1289) + at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:933) + at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:189) + at org.eclipse.jdt.core.manipulation.SharedASTProviderCore.getAST(SharedASTProviderCore.java:138) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.internalGetHoverInfo(NLSStringHover.java:141) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.getHoverInfo2(NLSStringHover.java:120) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.jdt.core.manipulation 4 0 2026-03-06 12:14:14.267 +!MESSAGE Error in JDT Core during AST creation +!STACK 0 +org.eclipse.jdt.internal.compiler.problem.AbortCompilation: + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11610) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12005) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11946) + at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10333) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:656) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:629) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:840) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:1405) + at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:109) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1410) + at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1289) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1289) + at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:933) + at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:189) + at org.eclipse.jdt.core.manipulation.SharedASTProviderCore.getAST(SharedASTProviderCore.java:138) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.internalGetHoverInfo(NLSStringHover.java:141) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.getHoverInfo2(NLSStringHover.java:120) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.jdt.core.manipulation 4 2 2026-03-06 12:15:38.077 +!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jdt.core.manipulation". +!STACK 0 +org.eclipse.jdt.internal.compiler.problem.AbortCompilation: + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11610) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12005) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11946) + at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10333) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:656) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:629) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:840) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:1405) + at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:109) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1410) + at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1289) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1289) + at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:933) + at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:189) + at org.eclipse.jdt.core.manipulation.SharedASTProviderCore.getAST(SharedASTProviderCore.java:138) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.internalGetHoverInfo(NLSStringHover.java:141) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.getHoverInfo2(NLSStringHover.java:120) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.jdt.core.manipulation 4 0 2026-03-06 12:15:38.077 +!MESSAGE Error in JDT Core during AST creation +!STACK 0 +org.eclipse.jdt.internal.compiler.problem.AbortCompilation: + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11610) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12005) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11946) + at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10333) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:656) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:629) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:840) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:1405) + at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:109) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1410) + at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1289) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1289) + at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:933) + at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:189) + at org.eclipse.jdt.core.manipulation.SharedASTProviderCore.getAST(SharedASTProviderCore.java:138) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.internalGetHoverInfo(NLSStringHover.java:141) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.getHoverInfo2(NLSStringHover.java:120) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.jdt.ui 4 0 2026-03-06 12:17:17.285 +!MESSAGE ClassCastException computing hover information in VerificationVoteDTO.java at offset 146 +!STACK 0 +java.lang.ClassCastException + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-06 12:17:37.735 +!MESSAGE Unable to compute end of document +!STACK 0 +org.eclipse.jface.text.BadLocationException: 504 + at org.eclipse.jface.text.TreeLineTracker.lineByOffset(TreeLineTracker.java:275) + at org.eclipse.jface.text.TreeLineTracker.getLineNumberOfOffset(TreeLineTracker.java:1183) + at org.eclipse.jface.text.AbstractLineTracker.getLineNumberOfOffset(AbstractLineTracker.java:246) + at org.eclipse.jface.text.AbstractDocument.getLineOfOffset(AbstractDocument.java:892) + at org.eclipse.core.internal.filebuffers.SynchronizableDocument.getLineOfOffset(SynchronizableDocument.java:429) + at org.eclipse.lsp4e.LSPEclipseUtils.toPosition(LSPEclipseUtils.java:202) + at org.eclipse.lsp4e.operations.inlayhint.InlayHintProvider.doProvideCodeMinings(InlayHintProvider.java:44) + at org.eclipse.lsp4e.internal.AbstractLSPCodeMiningProvider.provideCodeMinings(AbstractLSPCodeMiningProvider.java:64) + at org.eclipse.jface.internal.text.codemining.CodeMiningManager.lambda$2(CodeMiningManager.java:196) + at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) + at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.eclipse.jface.internal.text.codemining.CodeMiningManager.getCodeMinings(CodeMiningManager.java:202) + at org.eclipse.jface.internal.text.codemining.CodeMiningManager.updateCodeMinings(CodeMiningManager.java:147) + at org.eclipse.jface.internal.text.codemining.CodeMiningManager.run(CodeMiningManager.java:136) + at org.eclipse.jface.text.source.SourceViewer.updateCodeMinings(SourceViewer.java:1367) + at org.eclipse.jdt.internal.ui.javaeditor.JavaCodeMiningReconciler.reconciled(JavaCodeMiningReconciler.java:51) + at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.reconciled(CompilationUnitEditor.java:1674) + at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconciled(JavaReconcilingStrategy.java:228) + at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconciled(JavaCompositeReconcilingStrategy.java:171) + at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile(JavaCompositeReconcilingStrategy.java:115) + at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:77) + at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundWorker.run(AbstractReconciler.java:201) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core.manipulation 4 2 2026-03-06 13:20:59.058 +!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jdt.core.manipulation". +!STACK 0 +org.eclipse.jdt.internal.compiler.problem.AbortCompilation: + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11610) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12005) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11946) + at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10333) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:656) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:629) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:840) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:1405) + at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:109) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1410) + at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1289) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1289) + at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:933) + at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:189) + at org.eclipse.jdt.core.manipulation.SharedASTProviderCore.getAST(SharedASTProviderCore.java:138) + at org.eclipse.jdt.internal.ui.text.correction.AssistContext.getASTRoot(AssistContext.java:128) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover$ProblemInfo.getJavaAnnotationFixes(ProblemHover.java:111) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover$ProblemInfo.computeCompletionProposals(ProblemHover.java:89) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover$ProblemInfo.(ProblemHover.java:74) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover.createAnnotationInfo(ProblemHover.java:178) + at org.eclipse.jdt.internal.ui.text.java.hover.AbstractAnnotationHover.getHoverInfo2(AbstractAnnotationHover.java:753) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.jdt.core.manipulation 4 0 2026-03-06 13:20:59.058 +!MESSAGE Error in JDT Core during AST creation +!STACK 0 +org.eclipse.jdt.internal.compiler.problem.AbortCompilation: + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11610) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12005) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11946) + at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10333) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:656) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:629) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:840) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:1405) + at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:109) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1410) + at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1289) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1289) + at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:933) + at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:189) + at org.eclipse.jdt.core.manipulation.SharedASTProviderCore.getAST(SharedASTProviderCore.java:138) + at org.eclipse.jdt.internal.ui.text.correction.AssistContext.getASTRoot(AssistContext.java:128) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover$ProblemInfo.getJavaAnnotationFixes(ProblemHover.java:111) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover$ProblemInfo.computeCompletionProposals(ProblemHover.java:89) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover$ProblemInfo.(ProblemHover.java:74) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover.createAnnotationInfo(ProblemHover.java:178) + at org.eclipse.jdt.internal.ui.text.java.hover.AbstractAnnotationHover.getHoverInfo2(AbstractAnnotationHover.java:753) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.jdt.ui 4 0 2026-03-06 13:20:59.060 +!MESSAGE AbortCompilation computing hover information in LockHistoryDTO.java at offset 217 +!STACK 0 +org.eclipse.jdt.internal.compiler.problem.AbortCompilation: + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11610) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12005) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11946) + at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10333) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:656) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:629) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:840) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:1405) + at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:109) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1410) + at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1289) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1289) + at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:933) + at org.eclipse.jdt.internal.core.manipulation.dom.ASTResolving.createQuickFixAST(ASTResolving.java:1127) + at org.eclipse.jdt.internal.ui.text.correction.AssistContext.getASTRoot(AssistContext.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover$ProblemInfo.getJavaAnnotationFixes(ProblemHover.java:111) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover$ProblemInfo.computeCompletionProposals(ProblemHover.java:89) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover$ProblemInfo.(ProblemHover.java:74) + at org.eclipse.jdt.internal.ui.text.java.hover.ProblemHover.createAnnotationInfo(ProblemHover.java:178) + at org.eclipse.jdt.internal.ui.text.java.hover.AbstractAnnotationHover.getHoverInfo2(AbstractAnnotationHover.java:753) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + Suppressed: java.lang.Throwable: Source line 10 : +----- +package de.oaa.xxx.games.chastity.history; + +import java.time.LocalDateTime; +import java.util.UUID; + +import de.oaa.xxx.games.chastity.LockType; +import jakarta.persistence.Column; +import jakarta.persistence.Id; + +public |rec LockHistoryDTO { +----- + at org.eclipse.jdt.internal.ui.util.SelectionUtil.logException(SelectionUtil.java:157) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:178) + ... 3 more + +!ENTRY org.eclipse.jdt.core.manipulation 4 2 2026-03-06 13:20:59.061 +!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jdt.core.manipulation". +!STACK 0 +org.eclipse.jdt.internal.compiler.problem.AbortCompilation: + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11610) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12005) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11946) + at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10333) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:656) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:629) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:840) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:1405) + at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:109) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1410) + at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1289) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1289) + at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:933) + at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199) + at org.eclipse.jdt.core.manipulation.SharedASTProviderCore.getAST(SharedASTProviderCore.java:138) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.internalGetHoverInfo(NLSStringHover.java:141) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.getHoverInfo2(NLSStringHover.java:120) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.jdt.core.manipulation 4 0 2026-03-06 13:20:59.061 +!MESSAGE Error in JDT Core during AST creation +!STACK 0 +org.eclipse.jdt.internal.compiler.problem.AbortCompilation: + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11610) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12005) + at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11946) + at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10333) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:656) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:629) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:840) + at org.eclipse.jdt.core.dom.CompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:1405) + at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.toCompilationUnit(CompilationUnitResolver.java:109) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1410) + at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1289) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1289) + at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:933) + at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286) + at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199) + at org.eclipse.jdt.core.manipulation.SharedASTProviderCore.getAST(SharedASTProviderCore.java:138) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.internalGetHoverInfo(NLSStringHover.java:141) + at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.getHoverInfo2(NLSStringHover.java:120) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) + +!ENTRY org.eclipse.lsp4e 2 0 2026-03-06 14:34:51.699 +!MESSAGE Javadoc unavailable. Failed to obtain it. +!STACK 0 +java.lang.InterruptedException + at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:386) + at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.getHoverInfo2(LSJavaHoverProvider.java:66) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:165) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:131) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:89) + at org.eclipse.jface.text.TextViewerHoverManager$1.run(TextViewerHoverManager.java:155) +!SESSION 2026-03-13 14:17:20.545 ----------------------------------------------- +eclipse.buildId=4.39.0.20260305-0817 +java.version=21.0.10 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product -data C:\Projekte\XXX\xxx-game + +!ENTRY ch.qos.logback.classic 1 0 2026-03-13 14:17:23.195 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY org.eclipse.core.resources 4 567 2026-03-13 14:17:39.022 +!MESSAGE Workspace restored, but some problems occurred. +!SUBENTRY 1 org.eclipse.core.resources 4 567 2026-03-13 14:17:39.022 +!MESSAGE Could not read metadata for '.org.eclipse.egit.core.cmp'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/.org.eclipse.egit.core.cmp)[567]: java.lang.Exception: The project description file (.project) for '.org.eclipse.egit.core.cmp' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:1015) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:1004) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:983) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:825) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1689) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2677) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2369) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:838) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:830) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:780) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1082) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:394) + at org.eclipse.osgi.container.Module.doStart(Module.java:643) + at org.eclipse.osgi.container.Module.start(Module.java:500) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:353) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:418) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:523) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:439) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:195) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:186) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2026-03-13 14:17:39.027 +!MESSAGE The project description file (.project) for '.org.eclipse.egit.core.cmp' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for '.org.eclipse.egit.core.cmp' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:1015) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:1004) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:983) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:825) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1689) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2677) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2369) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:838) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:830) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:780) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1082) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:394) + at org.eclipse.osgi.container.Module.doStart(Module.java:643) + at org.eclipse.osgi.container.Module.start(Module.java:500) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:353) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:418) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:523) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:439) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:195) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:186) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY ch.qos.logback.classic 1 0 2026-03-13 14:17:39.627 +!MESSAGE Logback config file: C:\Projekte\XXX\xxx-game\.metadata\.plugins\org.eclipse.m2e.logback\logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.core.runtime 4 0 2026-03-13 14:17:44.821 +!MESSAGE Invalid input url:platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon@2x.png +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:66) + at org.eclipse.core.internal.runtime.FindSupport.find(FindSupport.java:331) + at org.eclipse.core.runtime.FileLocator.find(FileLocator.java:219) + at org.eclipse.jface.resource.URLImageDescriptor.resolvePathVariables(URLImageDescriptor.java:280) + at org.eclipse.jface.resource.URLImageDescriptor.getFilePath(URLImageDescriptor.java:253) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$1(URLImageDescriptor.java:66) + at org.eclipse.jface.resource.URLImageDescriptor.getZoomedImageSource(URLImageDescriptor.java:118) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$0(URLImageDescriptor.java:66) + at org.eclipse.swt.internal.DPIUtil.lambda$3(DPIUtil.java:386) + at org.eclipse.swt.internal.DPIUtil.getElementAtZoom(DPIUtil.java:395) + at org.eclipse.swt.internal.DPIUtil.validateAndGetImagePathAtZoom(DPIUtil.java:386) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.loadImageData(Image.java:2507) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.initializeHandleFromSource(Image.java:2484) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.lambda$0(Image.java:2465) + at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.newImageData(Image.java:2470) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.(Image.java:2502) + at org.eclipse.swt.graphics.Image.(Image.java:696) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:300) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:271) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.core.runtime 4 0 2026-03-13 14:17:44.822 +!MESSAGE Invalid input url:platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon@2x.png +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:66) + at org.eclipse.core.internal.runtime.FindSupport.find(FindSupport.java:331) + at org.eclipse.core.runtime.FileLocator.find(FileLocator.java:219) + at org.eclipse.jface.resource.URLImageDescriptor.resolvePathVariables(URLImageDescriptor.java:280) + at org.eclipse.jface.resource.URLImageDescriptor.getFilePath(URLImageDescriptor.java:253) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$1(URLImageDescriptor.java:66) + at org.eclipse.jface.resource.URLImageDescriptor.getZoomedImageSource(URLImageDescriptor.java:118) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$0(URLImageDescriptor.java:66) + at org.eclipse.swt.internal.DPIUtil.lambda$3(DPIUtil.java:386) + at org.eclipse.swt.internal.DPIUtil.getElementAtZoom(DPIUtil.java:406) + at org.eclipse.swt.internal.DPIUtil.validateAndGetImagePathAtZoom(DPIUtil.java:386) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.loadImageData(Image.java:2507) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.initializeHandleFromSource(Image.java:2484) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.lambda$0(Image.java:2465) + at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.newImageData(Image.java:2470) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.(Image.java:2502) + at org.eclipse.swt.graphics.Image.(Image.java:696) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:300) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:271) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.core.runtime 4 0 2026-03-13 14:17:44.823 +!MESSAGE Invalid input url:platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon.png +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:66) + at org.eclipse.core.internal.runtime.FindSupport.find(FindSupport.java:331) + at org.eclipse.core.runtime.FileLocator.find(FileLocator.java:219) + at org.eclipse.jface.resource.URLImageDescriptor.resolvePathVariables(URLImageDescriptor.java:280) + at org.eclipse.jface.resource.URLImageDescriptor.getFilePath(URLImageDescriptor.java:253) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$0(URLImageDescriptor.java:64) + at org.eclipse.swt.internal.DPIUtil.lambda$3(DPIUtil.java:386) + at org.eclipse.swt.internal.DPIUtil.getElementAtZoom(DPIUtil.java:412) + at org.eclipse.swt.internal.DPIUtil.validateAndGetImagePathAtZoom(DPIUtil.java:386) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.loadImageData(Image.java:2507) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.initializeHandleFromSource(Image.java:2484) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.lambda$0(Image.java:2465) + at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.newImageData(Image.java:2470) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.(Image.java:2502) + at org.eclipse.swt.graphics.Image.(Image.java:696) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:300) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:271) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.jface 4 0 2026-03-13 14:17:44.829 +!MESSAGE Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:66) + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.resolve(PlatformURLPluginConnection.java:76) + at org.eclipse.core.internal.boot.PlatformURLHandler.openConnection(PlatformURLHandler.java:72) + at org.eclipse.osgi.internal.url.URLStreamHandlerProxy.openConnection(URLStreamHandlerProxy.java:138) + at org.eclipse.equinox.plurl.impl.PlurlImpl$PlurlRootURLStreamHandler.openConnection(PlurlImpl.java:1453) + at java.base/java.net.URL.openConnection(URL.java:1258) + at org.eclipse.core.internal.runtime.PlatformURLConverter.toFileURL(PlatformURLConverter.java:34) + at org.eclipse.core.runtime.FileLocator.toFileURL(FileLocator.java:277) + at org.eclipse.jface.resource.URLImageDescriptor.getFilePath(URLImageDescriptor.java:254) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$0(URLImageDescriptor.java:64) + at org.eclipse.swt.internal.DPIUtil.lambda$3(DPIUtil.java:386) + at org.eclipse.swt.internal.DPIUtil.getElementAtZoom(DPIUtil.java:412) + at org.eclipse.swt.internal.DPIUtil.validateAndGetImagePathAtZoom(DPIUtil.java:386) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.loadImageData(Image.java:2507) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.initializeHandleFromSource(Image.java:2484) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.lambda$0(Image.java:2465) + at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.newImageData(Image.java:2470) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.(Image.java:2502) + at org.eclipse.swt.graphics.Image.(Image.java:696) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:300) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:271) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.core.runtime 4 0 2026-03-13 14:17:44.831 +!MESSAGE Invalid input url:platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon.png +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:66) + at org.eclipse.core.internal.runtime.FindSupport.find(FindSupport.java:331) + at org.eclipse.core.runtime.FileLocator.find(FileLocator.java:219) + at org.eclipse.jface.resource.URLImageDescriptor.resolvePathVariables(URLImageDescriptor.java:280) + at org.eclipse.jface.resource.URLImageDescriptor.getStream(URLImageDescriptor.java:170) + at org.eclipse.jface.resource.URLImageDescriptor.getImageData(URLImageDescriptor.java:134) + at org.eclipse.jface.resource.URLImageDescriptor.getImageData(URLImageDescriptor.java:108) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$2(URLImageDescriptor.java:73) + at org.eclipse.swt.graphics.Image.(Image.java:737) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:311) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:271) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.jface 2 0 2026-03-13 14:17:44.832 +!MESSAGE The image could not be loaded: URLImageDescriptor(platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon.png) +!STACK 0 +org.eclipse.jface.resource.DeviceResourceException: Unable to create resource URLImageDescriptor(platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon.png) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:273) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.egit.ui 2 0 2026-03-13 14:17:50.097 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\mario'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2026-03-13 14:17:50.266 +!MESSAGE Removing PartDescriptorImpl with the "org.eclipse.linuxtools.docker.ui.dockerContainersView" id and the "Docker Containers" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2026-03-13 14:17:50.270 +!MESSAGE Removing PartDescriptorImpl with the "org.eclipse.linuxtools.docker.ui.dockerImagesView" id and the "Docker Images" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2026-03-13 14:17:50.270 +!MESSAGE Removing PartDescriptorImpl with the "org.eclipse.linuxtools.docker.ui.dockerExplorerView" id and the "Docker Explorer" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2026-03-13 14:17:50.270 +!MESSAGE Removing PartDescriptorImpl with the "org.eclipse.linuxtools.docker.ui.dockerImageHierarchyView" id and the "Docker Image Hierarchy" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2026-03-13 14:17:50.270 +!MESSAGE Removing PartDescriptorImpl with the "org.springframework.ide.eclipse.boot.dash.views.BootDashView" id and the "Boot Dashboard" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2026-03-13 14:17:50.274 +!MESSAGE Removing PartDescriptorImpl with the "org.springframework.tooling.boot.ls.views.LogicalStructureView" id and the "Logical Structure" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2026-03-13 14:17:50.274 +!MESSAGE Removing PartDescriptorImpl with the "org.springframework.tooling.ls.eclipse.gotosymbol.view.SpringSymbolsView" id and the "Spring Symbols" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled +!SESSION 2026-03-13 14:48:00.430 ----------------------------------------------- +eclipse.buildId=4.39.0.20260305-0817 +java.version=21.0.10 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY ch.qos.logback.classic 1 0 2026-03-13 14:48:02.683 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-13 14:48:06.246 +!MESSAGE Logback config file: C:\Projekte\XXX\xxx-game\.metadata\.plugins\org.eclipse.m2e.logback\logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.core.runtime 4 0 2026-03-13 14:48:12.728 +!MESSAGE Invalid input url:platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon@2x.png +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:66) + at org.eclipse.core.internal.runtime.FindSupport.find(FindSupport.java:331) + at org.eclipse.core.runtime.FileLocator.find(FileLocator.java:219) + at org.eclipse.jface.resource.URLImageDescriptor.resolvePathVariables(URLImageDescriptor.java:280) + at org.eclipse.jface.resource.URLImageDescriptor.getFilePath(URLImageDescriptor.java:253) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$1(URLImageDescriptor.java:66) + at org.eclipse.jface.resource.URLImageDescriptor.getZoomedImageSource(URLImageDescriptor.java:118) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$0(URLImageDescriptor.java:66) + at org.eclipse.swt.internal.DPIUtil.lambda$3(DPIUtil.java:386) + at org.eclipse.swt.internal.DPIUtil.getElementAtZoom(DPIUtil.java:395) + at org.eclipse.swt.internal.DPIUtil.validateAndGetImagePathAtZoom(DPIUtil.java:386) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.loadImageData(Image.java:2507) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.initializeHandleFromSource(Image.java:2484) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.lambda$0(Image.java:2465) + at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.newImageData(Image.java:2470) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.(Image.java:2502) + at org.eclipse.swt.graphics.Image.(Image.java:696) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:300) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:271) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.core.runtime 4 0 2026-03-13 14:48:12.730 +!MESSAGE Invalid input url:platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon@2x.png +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:66) + at org.eclipse.core.internal.runtime.FindSupport.find(FindSupport.java:331) + at org.eclipse.core.runtime.FileLocator.find(FileLocator.java:219) + at org.eclipse.jface.resource.URLImageDescriptor.resolvePathVariables(URLImageDescriptor.java:280) + at org.eclipse.jface.resource.URLImageDescriptor.getFilePath(URLImageDescriptor.java:253) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$1(URLImageDescriptor.java:66) + at org.eclipse.jface.resource.URLImageDescriptor.getZoomedImageSource(URLImageDescriptor.java:118) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$0(URLImageDescriptor.java:66) + at org.eclipse.swt.internal.DPIUtil.lambda$3(DPIUtil.java:386) + at org.eclipse.swt.internal.DPIUtil.getElementAtZoom(DPIUtil.java:406) + at org.eclipse.swt.internal.DPIUtil.validateAndGetImagePathAtZoom(DPIUtil.java:386) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.loadImageData(Image.java:2507) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.initializeHandleFromSource(Image.java:2484) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.lambda$0(Image.java:2465) + at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.newImageData(Image.java:2470) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.(Image.java:2502) + at org.eclipse.swt.graphics.Image.(Image.java:696) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:300) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:271) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.core.runtime 4 0 2026-03-13 14:48:12.731 +!MESSAGE Invalid input url:platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon.png +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:66) + at org.eclipse.core.internal.runtime.FindSupport.find(FindSupport.java:331) + at org.eclipse.core.runtime.FileLocator.find(FileLocator.java:219) + at org.eclipse.jface.resource.URLImageDescriptor.resolvePathVariables(URLImageDescriptor.java:280) + at org.eclipse.jface.resource.URLImageDescriptor.getFilePath(URLImageDescriptor.java:253) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$0(URLImageDescriptor.java:64) + at org.eclipse.swt.internal.DPIUtil.lambda$3(DPIUtil.java:386) + at org.eclipse.swt.internal.DPIUtil.getElementAtZoom(DPIUtil.java:412) + at org.eclipse.swt.internal.DPIUtil.validateAndGetImagePathAtZoom(DPIUtil.java:386) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.loadImageData(Image.java:2507) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.initializeHandleFromSource(Image.java:2484) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.lambda$0(Image.java:2465) + at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.newImageData(Image.java:2470) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.(Image.java:2502) + at org.eclipse.swt.graphics.Image.(Image.java:696) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:300) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:271) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.jface 4 0 2026-03-13 14:48:12.738 +!MESSAGE Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:66) + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.resolve(PlatformURLPluginConnection.java:76) + at org.eclipse.core.internal.boot.PlatformURLHandler.openConnection(PlatformURLHandler.java:72) + at org.eclipse.osgi.internal.url.URLStreamHandlerProxy.openConnection(URLStreamHandlerProxy.java:138) + at org.eclipse.equinox.plurl.impl.PlurlImpl$PlurlRootURLStreamHandler.openConnection(PlurlImpl.java:1453) + at java.base/java.net.URL.openConnection(URL.java:1258) + at org.eclipse.core.internal.runtime.PlatformURLConverter.toFileURL(PlatformURLConverter.java:34) + at org.eclipse.core.runtime.FileLocator.toFileURL(FileLocator.java:277) + at org.eclipse.jface.resource.URLImageDescriptor.getFilePath(URLImageDescriptor.java:254) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$0(URLImageDescriptor.java:64) + at org.eclipse.swt.internal.DPIUtil.lambda$3(DPIUtil.java:386) + at org.eclipse.swt.internal.DPIUtil.getElementAtZoom(DPIUtil.java:412) + at org.eclipse.swt.internal.DPIUtil.validateAndGetImagePathAtZoom(DPIUtil.java:386) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.loadImageData(Image.java:2507) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.initializeHandleFromSource(Image.java:2484) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.lambda$0(Image.java:2465) + at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228) + at org.eclipse.swt.graphics.Image$BaseImageProviderWrapper.newImageData(Image.java:2470) + at org.eclipse.swt.graphics.Image$ImageFileNameProviderWrapper.(Image.java:2502) + at org.eclipse.swt.graphics.Image.(Image.java:696) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:300) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:271) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.core.runtime 4 0 2026-03-13 14:48:12.740 +!MESSAGE Invalid input url:platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon.png +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.springframework.ide.eclipse.boot.dash". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:66) + at org.eclipse.core.internal.runtime.FindSupport.find(FindSupport.java:331) + at org.eclipse.core.runtime.FileLocator.find(FileLocator.java:219) + at org.eclipse.jface.resource.URLImageDescriptor.resolvePathVariables(URLImageDescriptor.java:280) + at org.eclipse.jface.resource.URLImageDescriptor.getStream(URLImageDescriptor.java:170) + at org.eclipse.jface.resource.URLImageDescriptor.getImageData(URLImageDescriptor.java:134) + at org.eclipse.jface.resource.URLImageDescriptor.getImageData(URLImageDescriptor.java:108) + at org.eclipse.jface.resource.URLImageDescriptor.lambda$2(URLImageDescriptor.java:73) + at org.eclipse.swt.graphics.Image.(Image.java:737) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:311) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:271) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.jface 2 0 2026-03-13 14:48:12.742 +!MESSAGE The image could not be loaded: URLImageDescriptor(platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon.png) +!STACK 0 +org.eclipse.jface.resource.DeviceResourceException: Unable to create resource URLImageDescriptor(platform:/plugin/org.springframework.ide.eclipse.boot.dash/icons/boot-icon.png) + at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:273) + at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56) + at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:92) + at org.eclipse.jface.resource.LazyResourceManager.create(LazyResourceManager.java:95) + at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192) + at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:208) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImageFromURI(SWTPartRenderer.java:236) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.getImage(SWTPartRenderer.java:246) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.createTab(StackRenderer.java:1063) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.processContents(LazyStackRenderer.java:202) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:80) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:114) + at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:62) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:689) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:148) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:73) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:651) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:685) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1088) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + +!ENTRY org.eclipse.egit.ui 2 0 2026-03-13 14:48:13.967 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\mario'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2026-03-13 14:54:13.015 ----------------------------------------------- +eclipse.buildId=4.39.0.20260305-0817 +java.version=21.0.10 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product -data file:/C:/Projekte/XXX/xxx-game/ + +!ENTRY ch.qos.logback.classic 1 0 2026-03-13 14:54:18.098 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2026-03-13 14:54:20.641 +!MESSAGE Logback config file: C:\Projekte\XXX\xxx-game\.metadata\.plugins\org.eclipse.m2e.logback\logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.ui 2 0 2026-03-13 14:54:21.093 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-13 14:54:21.093 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.ui 2 0 2026-03-13 14:54:21.495 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-13 14:54:21.495 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.egit.ui 2 0 2026-03-13 14:54:28.912 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\mario'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.jface 2 0 2026-03-13 14:55:08.259 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2026-03-13 14:55:08.259 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.jdt.ui.navigate.open.type"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolInWorkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.lsp4e.symbolInWorkspace"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.springframework.tooling.boot.ls 1 0 2026-03-13 14:55:09.908 +!MESSAGE DelegatingStreamConnectionProvider - Stopping Boot LS + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 20:32:09.388 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 2 0 2026-03-15 20:32:09.828 +!MESSAGE Java Index broken - will be automatically deleted to repair: file:/home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index +!STACK 0 +java.io.UTFDataFormatException + at org.eclipse.jdt.internal.core.index.DiskIndex.readStreamChars(DiskIndex.java:997) + at org.eclipse.jdt.internal.core.index.DiskIndex.readCategoryTable(DiskIndex.java:700) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeCategory(DiskIndex.java:489) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeCategories(DiskIndex.java:481) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:582) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.index.MetaIndex.save(MetaIndex.java:98) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveMetaIndex(IndexManager.java:1227) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1203) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 0 2026-03-15 20:32:09.895 +!MESSAGE Failed to update qualified index. +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readCategoryTable(DiskIndex.java:684) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeCategory(DiskIndex.java:489) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeCategories(DiskIndex.java:481) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:582) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.index.MetaIndex.save(MetaIndex.java:98) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveMetaIndex(IndexManager.java:1227) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1203) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 20:34:13.529 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 0 2026-03-15 20:34:13.529 +!MESSAGE Failed to update qualified index. +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.index.MetaIndex.save(MetaIndex.java:98) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveMetaIndex(IndexManager.java:1227) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1203) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 20:34:34.483 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 0 2026-03-15 20:34:34.483 +!MESSAGE Failed to update qualified index. +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.index.MetaIndex.save(MetaIndex.java:98) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveMetaIndex(IndexManager.java:1227) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1203) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 20:39:11.487 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 0 2026-03-15 20:39:11.488 +!MESSAGE Failed to update qualified index. +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.index.MetaIndex.save(MetaIndex.java:98) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveMetaIndex(IndexManager.java:1227) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1203) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 20:42:32.613 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 0 2026-03-15 20:42:32.613 +!MESSAGE Failed to update qualified index. +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.index.MetaIndex.save(MetaIndex.java:98) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveMetaIndex(IndexManager.java:1227) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1203) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 20:42:42.292 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 0 2026-03-15 20:42:42.292 +!MESSAGE Failed to update qualified index. +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.index.MetaIndex.save(MetaIndex.java:98) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveMetaIndex(IndexManager.java:1227) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1203) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 20:44:19.352 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 0 2026-03-15 20:44:19.353 +!MESSAGE Failed to update qualified index. +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.index.MetaIndex.save(MetaIndex.java:98) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveMetaIndex(IndexManager.java:1227) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1203) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 20:44:21.587 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 0 2026-03-15 20:44:21.588 +!MESSAGE Failed to update qualified index. +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.index.MetaIndex.save(MetaIndex.java:98) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveMetaIndex(IndexManager.java:1227) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1203) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) +!SESSION 2026-03-15 20:44:26.258 ----------------------------------------------- +eclipse.buildId=4.38.0.20251204-0849 +java.version=21.0.9 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2026-03-15 20:44:28.945 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY org.eclipse.core.resources 4 567 2026-03-15 20:44:32.917 +!MESSAGE Workspace restored, but some problems occurred. +!SUBENTRY 1 org.eclipse.core.resources 4 567 2026-03-15 20:44:32.917 +!MESSAGE Could not read metadata for '.org.eclipse.egit.core.cmp'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/.org.eclipse.egit.core.cmp)[567]: java.lang.Exception: The project description file (.project) for '.org.eclipse.egit.core.cmp' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:1011) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:1004) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:983) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:825) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1689) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2677) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2369) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:838) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:830) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:780) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1082) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:394) + at org.eclipse.osgi.container.Module.doStart(Module.java:643) + at org.eclipse.osgi.container.Module.start(Module.java:500) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:353) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:418) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:523) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:439) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:195) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:186) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + at org.eclipse.equinox.launcher.Main.main(Main.java:1387) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2026-03-15 20:44:32.918 +!MESSAGE The project description file (.project) for '.org.eclipse.egit.core.cmp' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for '.org.eclipse.egit.core.cmp' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:1011) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:1004) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:983) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:825) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1689) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2677) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2369) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:838) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:830) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:780) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1082) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:394) + at org.eclipse.osgi.container.Module.doStart(Module.java:643) + at org.eclipse.osgi.container.Module.start(Module.java:500) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:353) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:418) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:523) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:439) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:195) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:186) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + at org.eclipse.equinox.launcher.Main.main(Main.java:1387) + +!ENTRY ch.qos.logback.classic 1 0 2026-03-15 20:44:33.711 +!MESSAGE Logback config file: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml + +!ENTRY org.eclipse.ui 2 0 2026-03-15 20:44:34.281 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-15 20:44:34.282 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.ui 2 0 2026-03-15 20:44:34.629 +!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. +!SUBENTRY 1 org.eclipse.ui 2 0 2026-03-15 20:44:34.629 +!MESSAGE Commands should really have a category: plug-in='org.springframework.tooling.boot.ls', id='spring.initializr.addStarters', categoryId='org.eclipse.lsp4e.commandCategory' + +!ENTRY org.eclipse.jface 2 0 2026-03-15 20:44:55.348 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2026-03-15 20:44:55.348 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.jdt.ui.navigate.open.type"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolInWorkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + WorkbenchHandlerServiceHandler("org.eclipse.lsp4e.symbolInWorkspace"), + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 20:57:43.937 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.ui.workbench 4 0 2026-03-15 20:58:56.713 +!MESSAGE Dynamic menu contribution 'DynamicContributionItems(id=org.eclipse.terminal.connector.local.LocalLauncherDynamicContributionItems, visible=true)' threw an unexpected exception +!STACK 0 +org.eclipse.swt.SWTException: i/o error (java.io.FileNotFoundException: C:\Program Files\Git\mingw64\share\git\git-for-windows.ico (Datei oder Verzeichnis nicht gefunden)) + at org.eclipse.swt.SWT.error(SWT.java:4950) + at org.eclipse.swt.SWT.error(SWT.java:4865) + at org.eclipse.swt.graphics.ImageLoader.loadByZoom(ImageLoader.java:207) + at org.eclipse.swt.graphics.ImageLoader.load(ImageLoader.java:198) + at org.eclipse.terminal.view.ui.internal.local.showin.ExternalExecutablesUtils.loadImage(ExternalExecutablesUtils.java:38) + at org.eclipse.terminal.view.ui.internal.local.showin.DynamicContributionItems.getContributionItems(DynamicContributionItems.java:76) + at org.eclipse.ui.actions.CompoundContributionItem.getContributionItemsToFill(CompoundContributionItem.java:83) + at org.eclipse.ui.actions.CompoundContributionItem.fill(CompoundContributionItem.java:57) + at org.eclipse.ui.internal.menus.DynamicMenuContributionItem.fill(DynamicMenuContributionItem.java:194) + at org.eclipse.jface.action.MenuManager.doItemFill(MenuManager.java:727) + at org.eclipse.jface.action.MenuManager.update(MenuManager.java:804) + at org.eclipse.jface.action.MenuManager.update(MenuManager.java:671) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.scheduleManagerUpdate(MenuManagerRenderer.java:1149) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.subscribeUIElementTopicVisible(MenuManagerRenderer.java:211) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:136) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:5999) + at org.eclipse.e4.ui.workbench.swt.DisplayUISynchronize.syncExec(DisplayUISynchronize.java:34) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:65) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:206) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:201) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:73) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:48) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:61) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setVisible(UIElementImpl.java:365) + at org.eclipse.e4.ui.workbench.renderers.swt.ContributionRecord.updateVisibility(ContributionRecord.java:110) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRendererFilter.updateElementVisibility(MenuManagerRendererFilter.java:169) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRendererFilter.updateElementVisibility(MenuManagerRendererFilter.java:179) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerShowProcessor.showMenu(MenuManagerShowProcessor.java:243) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerShowProcessor.menuAboutToHide(MenuManagerShowProcessor.java:111) + at org.eclipse.jface.internal.MenuManagerEventHelper.showEventPostHelper(MenuManagerEventHelper.java:89) + at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:467) + at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:493) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:297) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5894) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1656) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1682) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1661) + at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:290) + at org.eclipse.swt.widgets.Display.runPopups(Display.java:5151) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4537) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1147) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1038) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:677) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + at org.eclipse.equinox.launcher.Main.main(Main.java:1387) +Caused by: java.io.FileNotFoundException: C:\Program Files\Git\mingw64\share\git\git-for-windows.ico (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at java.base/java.io.FileInputStream.(FileInputStream.java:106) + at org.eclipse.swt.graphics.ImageLoader.loadByZoom(ImageLoader.java:204) + ... 68 more + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 20:59:07.351 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 20:59:33.718 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 21:00:17.392 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.ui 4 0 2026-03-15 21:04:07.564 +!MESSAGE NullPointerException computing hover information in CardLockService.java at offset 2505 +!STACK 0 +java.lang.NullPointerException: Cannot invoke "org.eclipse.jdt.internal.compiler.lookup.TypeBinding.signableName()" because "binding.type" is null + at org.eclipse.jdt.internal.core.SelectionRequestor.acceptLocalVariable(SelectionRequestor.java:422) + at org.eclipse.jdt.internal.codeassist.SelectionEngine.selectFrom(SelectionEngine.java:1353) + at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:1043) + at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:171) + at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:476) + at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:466) + at org.eclipse.jdt.internal.ui.text.java.hover.AbstractJavaEditorTextHover.getJavaElementsAt(AbstractJavaEditorTextHover.java:122) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.lambda$0(JavadocHover.java:708) + at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709) + at org.eclipse.jdt.internal.core.JavaModelManager.callReadOnly(JavaModelManager.java:5698) + at org.eclipse.jdt.core.JavaCore.callReadOnly(JavaCore.java:6186) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:708) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:704) + at org.eclipse.lsp4e.jdt.LSJavaHoverProvider.lambda$0(LSJavaHoverProvider.java:64) + at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) + at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) + at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387) + at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312) + at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843) + at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808) + at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188) + Suppressed: java.lang.Throwable: Source line 68 : +----- + lock.setAvailableCards(lock.getInitialCards()); + return ""; + } + + public String unlock() { + this.lock.setUnlockTime(LocalDateTime.now()); + boolean valid = true; + if (!this.lock.isTestLock()) { + if (Duration.between(lock.getStartTime(), lock.getUnlockTime()).toHours() > 24) { + Set verifications = verificationRepository.findByLockId(this.lock.getLockId()).stream() + .filter(|verification -> isValid(verification)) +----- + at org.eclipse.jdt.internal.ui.util.SelectionUtil.logException(SelectionUtil.java:157) + at org.eclipse.jdt.internal.ui.text.java.hover.AbstractJavaEditorTextHover.getJavaElementsAt(AbstractJavaEditorTextHover.java:124) + ... 14 more + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 21:09:05.453 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 21:12:14.412 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 21:12:43.739 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 21:13:31.748 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 21:19:55.443 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.ui.workbench 4 0 2026-03-15 21:21:02.769 +!MESSAGE Dynamic menu contribution 'DynamicContributionItems(id=org.eclipse.terminal.connector.local.LocalLauncherDynamicContributionItems, visible=true)' threw an unexpected exception +!STACK 0 +org.eclipse.swt.SWTException: i/o error (java.io.FileNotFoundException: C:\Program Files\Git\mingw64\share\git\git-for-windows.ico (Datei oder Verzeichnis nicht gefunden)) + at org.eclipse.swt.SWT.error(SWT.java:4950) + at org.eclipse.swt.SWT.error(SWT.java:4865) + at org.eclipse.swt.graphics.ImageLoader.loadByZoom(ImageLoader.java:207) + at org.eclipse.swt.graphics.ImageLoader.load(ImageLoader.java:198) + at org.eclipse.terminal.view.ui.internal.local.showin.ExternalExecutablesUtils.loadImage(ExternalExecutablesUtils.java:38) + at org.eclipse.terminal.view.ui.internal.local.showin.DynamicContributionItems.getContributionItems(DynamicContributionItems.java:76) + at org.eclipse.ui.actions.CompoundContributionItem.getContributionItemsToFill(CompoundContributionItem.java:83) + at org.eclipse.ui.actions.CompoundContributionItem.fill(CompoundContributionItem.java:57) + at org.eclipse.ui.internal.menus.DynamicMenuContributionItem.fill(DynamicMenuContributionItem.java:194) + at org.eclipse.jface.action.MenuManager.doItemFill(MenuManager.java:727) + at org.eclipse.jface.action.MenuManager.update(MenuManager.java:804) + at org.eclipse.jface.action.MenuManager.update(MenuManager.java:671) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.scheduleManagerUpdate(MenuManagerRenderer.java:1149) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.subscribeUIElementTopicVisible(MenuManagerRenderer.java:211) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:136) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:5999) + at org.eclipse.e4.ui.workbench.swt.DisplayUISynchronize.syncExec(DisplayUISynchronize.java:34) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:65) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:206) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:201) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:73) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:48) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:61) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setVisible(UIElementImpl.java:365) + at org.eclipse.e4.ui.workbench.renderers.swt.ContributionRecord.updateVisibility(ContributionRecord.java:110) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRendererFilter.updateElementVisibility(MenuManagerRendererFilter.java:169) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRendererFilter.updateElementVisibility(MenuManagerRendererFilter.java:179) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerShowProcessor.showMenu(MenuManagerShowProcessor.java:243) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerShowProcessor.menuAboutToHide(MenuManagerShowProcessor.java:111) + at org.eclipse.jface.internal.MenuManagerEventHelper.showEventPostHelper(MenuManagerEventHelper.java:89) + at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:467) + at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:493) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:297) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5894) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1656) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1682) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1661) + at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:290) + at org.eclipse.swt.widgets.Display.runPopups(Display.java:5151) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4537) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1147) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1038) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:677) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + at org.eclipse.equinox.launcher.Main.main(Main.java:1387) +Caused by: java.io.FileNotFoundException: C:\Program Files\Git\mingw64\share\git\git-for-windows.ico (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at java.base/java.io.FileInputStream.(FileInputStream.java:106) + at org.eclipse.swt.graphics.ImageLoader.loadByZoom(ImageLoader.java:204) + ... 68 more + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 21:26:50.841 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 21:30:23.784 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 22:03:17.247 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 22:12:07.039 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 22:15:29.952 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 22:18:10.719 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.ui.workbench 4 0 2026-03-15 22:35:15.430 +!MESSAGE Dynamic menu contribution 'DynamicContributionItems(id=org.eclipse.terminal.connector.local.LocalLauncherDynamicContributionItems, visible=true)' threw an unexpected exception +!STACK 0 +org.eclipse.swt.SWTException: i/o error (java.io.FileNotFoundException: C:\Program Files\Git\mingw64\share\git\git-for-windows.ico (Datei oder Verzeichnis nicht gefunden)) + at org.eclipse.swt.SWT.error(SWT.java:4950) + at org.eclipse.swt.SWT.error(SWT.java:4865) + at org.eclipse.swt.graphics.ImageLoader.loadByZoom(ImageLoader.java:207) + at org.eclipse.swt.graphics.ImageLoader.load(ImageLoader.java:198) + at org.eclipse.terminal.view.ui.internal.local.showin.ExternalExecutablesUtils.loadImage(ExternalExecutablesUtils.java:38) + at org.eclipse.terminal.view.ui.internal.local.showin.DynamicContributionItems.getContributionItems(DynamicContributionItems.java:76) + at org.eclipse.ui.actions.CompoundContributionItem.getContributionItemsToFill(CompoundContributionItem.java:83) + at org.eclipse.ui.actions.CompoundContributionItem.fill(CompoundContributionItem.java:57) + at org.eclipse.ui.internal.menus.DynamicMenuContributionItem.fill(DynamicMenuContributionItem.java:194) + at org.eclipse.jface.action.MenuManager.doItemFill(MenuManager.java:727) + at org.eclipse.jface.action.MenuManager.update(MenuManager.java:804) + at org.eclipse.jface.action.MenuManager.update(MenuManager.java:671) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.scheduleManagerUpdate(MenuManagerRenderer.java:1149) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.subscribeUIElementTopicVisible(MenuManagerRenderer.java:211) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:136) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:5999) + at org.eclipse.e4.ui.workbench.swt.DisplayUISynchronize.syncExec(DisplayUISynchronize.java:34) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:65) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:206) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:201) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:73) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:48) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:61) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setVisible(UIElementImpl.java:365) + at org.eclipse.e4.ui.workbench.renderers.swt.ContributionRecord.updateVisibility(ContributionRecord.java:110) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRendererFilter.updateElementVisibility(MenuManagerRendererFilter.java:169) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRendererFilter.updateElementVisibility(MenuManagerRendererFilter.java:179) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerShowProcessor.showMenu(MenuManagerShowProcessor.java:243) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerShowProcessor.menuAboutToHide(MenuManagerShowProcessor.java:111) + at org.eclipse.jface.internal.MenuManagerEventHelper.showEventPostHelper(MenuManagerEventHelper.java:89) + at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:467) + at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:493) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:297) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5894) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1656) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1682) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1661) + at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:290) + at org.eclipse.swt.widgets.Display.runPopups(Display.java:5151) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4537) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1147) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1038) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:677) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + at org.eclipse.equinox.launcher.Main.main(Main.java:1387) +Caused by: java.io.FileNotFoundException: C:\Program Files\Git\mingw64\share\git\git-for-windows.ico (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at java.base/java.io.FileInputStream.(FileInputStream.java:106) + at org.eclipse.swt.graphics.ImageLoader.loadByZoom(ImageLoader.java:204) + ... 68 more + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 22:36:00.123 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.ui.workbench 4 0 2026-03-15 22:36:53.176 +!MESSAGE Dynamic menu contribution 'DynamicContributionItems(id=org.eclipse.terminal.connector.local.LocalLauncherDynamicContributionItems, visible=true)' threw an unexpected exception +!STACK 0 +org.eclipse.swt.SWTException: i/o error (java.io.FileNotFoundException: C:\Program Files\Git\mingw64\share\git\git-for-windows.ico (Datei oder Verzeichnis nicht gefunden)) + at org.eclipse.swt.SWT.error(SWT.java:4950) + at org.eclipse.swt.SWT.error(SWT.java:4865) + at org.eclipse.swt.graphics.ImageLoader.loadByZoom(ImageLoader.java:207) + at org.eclipse.swt.graphics.ImageLoader.load(ImageLoader.java:198) + at org.eclipse.terminal.view.ui.internal.local.showin.ExternalExecutablesUtils.loadImage(ExternalExecutablesUtils.java:38) + at org.eclipse.terminal.view.ui.internal.local.showin.DynamicContributionItems.getContributionItems(DynamicContributionItems.java:76) + at org.eclipse.ui.actions.CompoundContributionItem.getContributionItemsToFill(CompoundContributionItem.java:83) + at org.eclipse.ui.actions.CompoundContributionItem.fill(CompoundContributionItem.java:57) + at org.eclipse.ui.internal.menus.DynamicMenuContributionItem.fill(DynamicMenuContributionItem.java:194) + at org.eclipse.jface.action.MenuManager.doItemFill(MenuManager.java:727) + at org.eclipse.jface.action.MenuManager.update(MenuManager.java:804) + at org.eclipse.jface.action.MenuManager.update(MenuManager.java:671) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.scheduleManagerUpdate(MenuManagerRenderer.java:1149) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.subscribeUIElementTopicVisible(MenuManagerRenderer.java:211) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:136) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:5999) + at org.eclipse.e4.ui.workbench.swt.DisplayUISynchronize.syncExec(DisplayUISynchronize.java:34) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:65) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:206) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:201) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:73) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:48) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:61) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setVisible(UIElementImpl.java:365) + at org.eclipse.e4.ui.workbench.renderers.swt.ContributionRecord.updateVisibility(ContributionRecord.java:110) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRendererFilter.updateElementVisibility(MenuManagerRendererFilter.java:169) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRendererFilter.updateElementVisibility(MenuManagerRendererFilter.java:179) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerShowProcessor.showMenu(MenuManagerShowProcessor.java:243) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerShowProcessor.menuAboutToHide(MenuManagerShowProcessor.java:111) + at org.eclipse.jface.internal.MenuManagerEventHelper.showEventPostHelper(MenuManagerEventHelper.java:89) + at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:467) + at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:493) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:297) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5894) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1656) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1682) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1661) + at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:290) + at org.eclipse.swt.widgets.Display.runPopups(Display.java:5151) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4537) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1147) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1038) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:677) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563) + at org.eclipse.equinox.launcher.Main.run(Main.java:1415) + at org.eclipse.equinox.launcher.Main.main(Main.java:1387) +Caused by: java.io.FileNotFoundException: C:\Program Files\Git\mingw64\share\git\git-for-windows.ico (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at java.base/java.io.FileInputStream.(FileInputStream.java:106) + at org.eclipse.swt.graphics.ImageLoader.loadByZoom(ImageLoader.java:204) + ... 68 more + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 22:37:45.430 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 22:42:14.905 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) + +!ENTRY org.eclipse.jdt.core 4 4 2026-03-15 22:46:40.546 +!MESSAGE Failed to save JDT index: Index for /xxxthegame +!STACK 0 +java.io.FileNotFoundException: /home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core/9341915.index (Datei oder Verzeichnis nicht gefunden) + at java.base/java.io.FileInputStream.open0(Native Method) + at java.base/java.io.FileInputStream.open(FileInputStream.java:213) + at java.base/java.io.FileInputStream.(FileInputStream.java:152) + at org.eclipse.jdt.internal.core.index.FileIndexLocation.getInputStream(FileIndexLocation.java:83) + at org.eclipse.jdt.internal.core.index.DiskIndex.readAllDocumentNames(DiskIndex.java:633) + at org.eclipse.jdt.internal.core.index.DiskIndex.mergeWith(DiskIndex.java:536) + at org.eclipse.jdt.internal.core.index.Index.save(Index.java:229) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndex(IndexManager.java:1135) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.saveIndexes(IndexManager.java:1178) + at org.eclipse.jdt.internal.core.search.indexing.IndexManager.notifyIdle(IndexManager.java:822) + at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:508) + at java.base/java.lang.Thread.run(Thread.java:1583) diff --git a/.metadata/.mylyn/repositories.xml.zip b/.metadata/.mylyn/repositories.xml.zip new file mode 100644 index 0000000..28c94b4 Binary files /dev/null and b/.metadata/.mylyn/repositories.xml.zip differ diff --git a/.metadata/.plugins/org.eclipse.buildship.core/gradle/versions.json b/.metadata/.plugins/org.eclipse.buildship.core/gradle/versions.json new file mode 100644 index 0000000..6ebccd5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.buildship.core/gradle/versions.json @@ -0,0 +1,8169 @@ +[ { + "version" : "9.5.0-milestone-7", + "buildTime" : "20260315084051+0000", + "commitId" : "812c56a2fbbd51caf1865e37dbfb8e169137ab13", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.5.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-7-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-7-bin.zip.sha256", + "checksum" : "be0a8f2e9f1c0f4d4764cc8903afcbce6c1134df8b980ae517583b18a0fce57b", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-7-wrapper.jar.sha256", + "wrapperChecksum" : "7ef3d73bd95c047814d76ec8324f72deefb96593eb9ce87aa06ecdcdaba7ffe8" +}, { + "version" : "9.5.0-20260315004708+0000", + "buildTime" : "20260315004708+0000", + "commitId" : "812c56a2fbbd51caf1865e37dbfb8e169137ab13", + "current" : false, + "snapshot" : true, + "nightly" : true, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.5.0-20260315004708+0000-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.5.0-20260315004708+0000-bin.zip.sha256", + "checksum" : "b03aacbf6e12d1fc7e4c9b041ae836bc419aa2dce2e18828a270b73e8aea9d9b", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.5.0-20260315004708+0000-wrapper.jar.sha256", + "wrapperChecksum" : "7ef3d73bd95c047814d76ec8324f72deefb96593eb9ce87aa06ecdcdaba7ffe8" +}, { + "version" : "9.4.1-20260314013640+0000", + "buildTime" : "20260314013640+0000", + "commitId" : "3617ca1ff081ef571cad11ac23c040bf75d40cfc", + "current" : false, + "snapshot" : true, + "nightly" : false, + "releaseNightly" : true, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.4.1-20260314013640+0000-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.4.1-20260314013640+0000-bin.zip.sha256", + "checksum" : "ca4bbffa4c88b0cfbf6598b815d963b8f1ec9bf3e7848dc0652d7cac292a63f2", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.4.1-20260314013640+0000-wrapper.jar.sha256", + "wrapperChecksum" : "55243ef57851f12b070ad14f7f5bb8302daceeebc5bce5ece5fa6edb23e1145c" +}, { + "version" : "9.4.0", + "buildTime" : "20260304103600+0000", + "commitId" : "b631911858264c0b6e4d6603d677ff5218766cee", + "current" : true, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-bin.zip.sha256", + "checksum" : "60ea723356d81263e8002fec0fcf9e2b0eee0c0850c7a3d7ab0a63f2ccc601f3", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-wrapper.jar.sha256", + "wrapperChecksum" : "55243ef57851f12b070ad14f7f5bb8302daceeebc5bce5ece5fa6edb23e1145c" +}, { + "version" : "9.4.0-rc-2", + "buildTime" : "20260227092055+0000", + "commitId" : "b5fe9efed6cae7b9f2fbdb2d380fb69af16bb752", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.4.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-rc-2-bin.zip.sha256", + "checksum" : "1386475e18bc4b8f885d9573b1194b44462e7ab2b9afb6d70ad9f39cdfaf2d6e", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "55243ef57851f12b070ad14f7f5bb8302daceeebc5bce5ece5fa6edb23e1145c" +}, { + "version" : "9.5.0-milestone-6", + "buildTime" : "20260306150512+0000", + "commitId" : "56c1a30b99058762ff8e655058dcf0404e20d0ad", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.5.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-6-bin.zip.sha256", + "checksum" : "b159ac78e31ec3ac1ea6c32457b136c0d6d85c8bde533054d919be768d205866", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-6-wrapper.jar.sha256", + "wrapperChecksum" : "7ef3d73bd95c047814d76ec8324f72deefb96593eb9ce87aa06ecdcdaba7ffe8" +}, { + "version" : "9.5.0-milestone-5", + "buildTime" : "20260227090120+0000", + "commitId" : "7928ff898563f1f324eb29a5b1d40d43798fe992", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.5.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-5-bin.zip.sha256", + "checksum" : "1bacc1c689e2c1e109208ce941a7695d2edeba5cbfc4bc2a99524147c02e6e35", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-5-wrapper.jar.sha256", + "wrapperChecksum" : "55243ef57851f12b070ad14f7f5bb8302daceeebc5bce5ece5fa6edb23e1145c" +}, { + "version" : "9.5.0-milestone-4", + "buildTime" : "20260226092909+0000", + "commitId" : "84fcf1dafd5cd2c8502c58c2fdbbca9bb2468257", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.5.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-4-bin.zip.sha256", + "checksum" : "56d75507accf46250ab19d11eb222bcb72a2a8bc70a7abea23c4edbaa7f2b2ad", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-4-wrapper.jar.sha256", + "wrapperChecksum" : "55243ef57851f12b070ad14f7f5bb8302daceeebc5bce5ece5fa6edb23e1145c" +}, { + "version" : "9.5.0-milestone-3", + "buildTime" : "20260216080935+0000", + "commitId" : "8e03e4fe12db77236cde88285c9fc04f4e89d0c1", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.5.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-3-bin.zip.sha256", + "checksum" : "3721d2a837d9836a104a5e47fcf644fafed81eb14f4405ecebf9044d6a44a2c4", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-3-wrapper.jar.sha256", + "wrapperChecksum" : "55243ef57851f12b070ad14f7f5bb8302daceeebc5bce5ece5fa6edb23e1145c" +}, { + "version" : "9.5.0-milestone-2", + "buildTime" : "20260211140745+0000", + "commitId" : "c6762aa64d21254851c842b7d89f9d08e33a5344", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.5.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-2-bin.zip.sha256", + "checksum" : "afcaf8f53216d213ffca406d913fd651678397ff1ff9a0e0cd165c55c35c1954", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "55243ef57851f12b070ad14f7f5bb8302daceeebc5bce5ece5fa6edb23e1145c" +}, { + "version" : "9.4.0-rc-1", + "buildTime" : "20260208025655+0000", + "commitId" : "a2da7f311fe4699328dbcef381bc459c2f757e3e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.4.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-rc-1-bin.zip.sha256", + "checksum" : "2341e5f62ce4ce9d1f51395b47428a6d53e972bc0a3f9d2bf2da5a294610c703", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "55243ef57851f12b070ad14f7f5bb8302daceeebc5bce5ece5fa6edb23e1145c" +}, { + "version" : "9.3.1", + "buildTime" : "20260129141501+0000", + "commitId" : "44f4e8d3122ee6e7cbf5a248d7e20b4ca666bda3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.3.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.1-bin.zip.sha256", + "checksum" : "b266d5ff6b90eada6dc3b20cb090e3731302e553a27c5d3e4df1f0d76beaff06", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.1-wrapper.jar.sha256", + "wrapperChecksum" : "b3a875ddc1f044746e1b1a55f645584505f4a10438c1afea9f15e92a7c42ec13" +}, { + "version" : "9.5.0-milestone-1", + "buildTime" : "20260129132921+0000", + "commitId" : "6e1fb6d39530a68fd3d52eb274324eab142baa5b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.5.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-1-bin.zip.sha256", + "checksum" : "aa937f5607d8729dbcd99cfb923c73cf7d54051cb1d73be41566e3865c876269", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.5.0-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "55243ef57851f12b070ad14f7f5bb8302daceeebc5bce5ece5fa6edb23e1145c" +}, { + "version" : "8.14.4", + "buildTime" : "20260123163023+0000", + "commitId" : "ad5ff774b4b0e9a8a0cf1a14ca70d7230003c3ad", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14.4-bin.zip.sha256", + "checksum" : "f1771298a70f6db5a29daf62378c4e18a17fc33c9ba6b14362e0cdf40610380d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14.4-wrapper.jar.sha256", + "wrapperChecksum" : "7d3a4ac4de1c32b59bc6a4eb8ecb8e612ccd0cf1ae1e99f66902da64df296172" +}, { + "version" : "9.4.0-milestone-5", + "buildTime" : "20260123123336+0000", + "commitId" : "dd2cf7f3826b2da07d8d6de488a2d1bc5651ca7d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.4.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-5-bin.zip.sha256", + "checksum" : "9426691ebe1a0db4729a181d86b38234b44ed48a013b4f106fa090eacb13c2eb", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-5-wrapper.jar.sha256", + "wrapperChecksum" : "55243ef57851f12b070ad14f7f5bb8302daceeebc5bce5ece5fa6edb23e1145c" +}, { + "version" : "9.3.0", + "buildTime" : "20260116111422+0000", + "commitId" : "701205ed2f78811508466c8e1952304c2ea869f5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-bin.zip.sha256", + "checksum" : "0d585f69da091fc5b2beced877feab55a3064d43b8a1d46aeb07996b0915e0e0", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-wrapper.jar.sha256", + "wrapperChecksum" : "b3a875ddc1f044746e1b1a55f645584505f4a10438c1afea9f15e92a7c42ec13" +}, { + "version" : "9.3.0-rc-3", + "buildTime" : "20260112110023+0000", + "commitId" : "8dd290bb13b269e80427d1c5ac5ba071dd77c211", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.3.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-rc-3-bin.zip.sha256", + "checksum" : "d18ae4e38c4572d1e1546d585110c807f13476223e063b40324f891bf7b5e39c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "b3a875ddc1f044746e1b1a55f645584505f4a10438c1afea9f15e92a7c42ec13" +}, { + "version" : "9.4.0-milestone-4", + "buildTime" : "20251226090225+0000", + "commitId" : "5478a4a62071a9f97660cb5f99abac82cb85eab7", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.4.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-4-bin.zip.sha256", + "checksum" : "599f4cb180b3780ca83859e84b072b951156f0af4554d7d21654cc4429c47284", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-4-wrapper.jar.sha256", + "wrapperChecksum" : "08f6dc44dc11cd44fdf485274f3262acd459acbcbc3c1160da2d530cecc9d1ad" +}, { + "version" : "9.3.0-rc-2", + "buildTime" : "20251224090548+0000", + "commitId" : "02c7d66609684db888d7324300770ad59c295291", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.3.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-rc-2-bin.zip.sha256", + "checksum" : "a3c1f84c0519f57a3cf6b0c8f9e2a80ece6e75aadb554ead218a4c71d4f2a901", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "b3a875ddc1f044746e1b1a55f645584505f4a10438c1afea9f15e92a7c42ec13" +}, { + "version" : "9.4.0-milestone-3", + "buildTime" : "20251202075550+0000", + "commitId" : "8d9cbbb408ff3c4cd499ac46c358cff1fc490227", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.4.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-3-bin.zip.sha256", + "checksum" : "2c2402e0741735bf96742d834ccc236d1b6ebef8f3b249df059a0f19cce07efc", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-3-wrapper.jar.sha256", + "wrapperChecksum" : "b3a875ddc1f044746e1b1a55f645584505f4a10438c1afea9f15e92a7c42ec13" +}, { + "version" : "9.3.0-rc-1", + "buildTime" : "20251128163838+0000", + "commitId" : "7103de78a66088931f83b1eea19b299af989c114", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.3.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-rc-1-bin.zip.sha256", + "checksum" : "e03f4a72f4fa7160823cf9d602c8e06f9be818c454536bdf13739fe96902c21c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "b3a875ddc1f044746e1b1a55f645584505f4a10438c1afea9f15e92a7c42ec13" +}, { + "version" : "9.3.0-milestone-2", + "buildTime" : "20251126100558+0000", + "commitId" : "590ab5b91ff01acdafce939cdf6a6c8a21c0760a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.3.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-milestone-2-bin.zip.sha256", + "checksum" : "aefd1d28321c1c5f700f11c697acfb7d0318ae88f3f1b71d0ecbdadfd7eadbb6", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "b3a875ddc1f044746e1b1a55f645584505f4a10438c1afea9f15e92a7c42ec13" +}, { + "version" : "9.4.0-milestone-2", + "buildTime" : "20251121214025+0000", + "commitId" : "9fe2118fed52d1925a19acf16fed9be083cd449a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.4.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-2-bin.zip.sha256", + "checksum" : "279f47796403c4dc7660a4e126948ba9813fa0ae776762f1b28f32b4fce46625", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "b3a875ddc1f044746e1b1a55f645584505f4a10438c1afea9f15e92a7c42ec13" +}, { + "version" : "9.4.0-milestone-1", + "buildTime" : "20251119221522+0000", + "commitId" : "ad03b1c1840b420d7bd866835e399610c2f31510", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.4.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-1-bin.zip.sha256", + "checksum" : "12d4bad5c207a83f8a28a9939bafead9bf37225b3cb2a15c774422eaa5246419", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.4.0-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "b3a875ddc1f044746e1b1a55f645584505f4a10438c1afea9f15e92a7c42ec13" +}, { + "version" : "9.2.1", + "buildTime" : "20251117134048+0000", + "commitId" : "30ecdc708db275e8f8769ea0620f6dd919a58f76", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.2.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.1-bin.zip.sha256", + "checksum" : "72f44c9f8ebcb1af43838f45ee5c4aa9c5444898b3468ab3f4af7b6076c5bc3f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.1-wrapper.jar.sha256", + "wrapperChecksum" : "423cb469ccc0ecc31f0e4e1c309976198ccb734cdcbb7029d4bda0f18f57e8d9" +}, { + "version" : "9.3.0-milestone-1", + "buildTime" : "20251104131839+0000", + "commitId" : "d28b435db30c93c2501d0434266a9026fc4d2483", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.3.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-milestone-1-bin.zip.sha256", + "checksum" : "b53d70b79bc4652f66e7f85a50b8a12537171ddee64b3fdc761921bde7761c19", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.3.0-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "d652a0436e78e0cd4d00f52057fcf2179163762a71a02370ec7623ab8f84c334" +}, { + "version" : "9.2.0", + "buildTime" : "20251029135323+0000", + "commitId" : "d9d6bbce03b3d88c67ef5a0ff31f7ae5e332d6bf", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-bin.zip.sha256", + "checksum" : "df67a32e86e3276d011735facb1535f64d0d88df84fa87521e90becc2d735444", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-wrapper.jar.sha256", + "wrapperChecksum" : "423cb469ccc0ecc31f0e4e1c309976198ccb734cdcbb7029d4bda0f18f57e8d9" +}, { + "version" : "9.2.0-rc-3", + "buildTime" : "20251024101831+0000", + "commitId" : "8a6b6c9294de54f1eae1b62e4155ee02153f1f6c", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.2.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-rc-3-bin.zip.sha256", + "checksum" : "8f29578613e216bde733f1a160076ae7b889b46f9802c731e20f0c43c4586fae", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "423cb469ccc0ecc31f0e4e1c309976198ccb734cdcbb7029d4bda0f18f57e8d9" +}, { + "version" : "9.2.0-rc-2", + "buildTime" : "20251017103705+0000", + "commitId" : "2759e2f4d683d6d48b2da682aee1ed15d5242462", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.2.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-rc-2-bin.zip.sha256", + "checksum" : "054e3862d342ba9965127f80e1c56048bff2228e6d548ddd604b739c329893af", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "423cb469ccc0ecc31f0e4e1c309976198ccb734cdcbb7029d4bda0f18f57e8d9" +}, { + "version" : "9.2.0-rc-1", + "buildTime" : "20251003125514+0000", + "commitId" : "17156c692b5e460d4e68b0b4342c0c7872a4a6d9", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.2.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-rc-1-bin.zip.sha256", + "checksum" : "2fdde961d051e8fc4c9918aa40d3eee24fd9f1d32f705f517af9c89d758af3be", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "423cb469ccc0ecc31f0e4e1c309976198ccb734cdcbb7029d4bda0f18f57e8d9" +}, { + "version" : "9.1.0", + "buildTime" : "20250918130556+0000", + "commitId" : "e45a8dbf2470c2e2474ccc25be9f49331406a07e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-bin.zip.sha256", + "checksum" : "a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "9.2.0-milestone-2", + "buildTime" : "20250918081430+0000", + "commitId" : "136322a57afae21682616403597aeb7b900277a2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.2.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-milestone-2-bin.zip.sha256", + "checksum" : "264492cfe4471ed1290a23af27a94b45343bb548b40f6512a130f4e416ffdc1b", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "423cb469ccc0ecc31f0e4e1c309976198ccb734cdcbb7029d4bda0f18f57e8d9" +}, { + "version" : "9.2.0-milestone-1", + "buildTime" : "20250916093851+0000", + "commitId" : "fdecc3c95828bb9a1c1bb6114483fe5b16f9159d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.2.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-milestone-1-bin.zip.sha256", + "checksum" : "b4d2b27513235176e11a079aa8afa5a1d858c14a02130cc9754b20071d244fa7", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.2.0-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "423cb469ccc0ecc31f0e4e1c309976198ccb734cdcbb7029d4bda0f18f57e8d9" +}, { + "version" : "9.1.0-rc-4", + "buildTime" : "20250915153701+0000", + "commitId" : "769a0dee8eb81a087a64b7286b5e0ef3ca945723", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.1.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-4-bin.zip.sha256", + "checksum" : "91b3bb52f09bab37df8f922d47d7df6ba76c00a52494a75feafad956f4d2a360", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "9.1.0-rc-3", + "buildTime" : "20250908083750+0000", + "commitId" : "e8b16b23493d8480116e5cf66a06296794c3d1f5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.1.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-3-bin.zip.sha256", + "checksum" : "6f13d82a9943498b6651a1d8b9903a663dee9a752be8e3480b6c44f0c89d9dac", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "9.1.0-rc-2", + "buildTime" : "20250902143701+0000", + "commitId" : "80fea90a8e4c089ceb397f17f935538c00398324", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.1.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-2-bin.zip.sha256", + "checksum" : "366fb4c50aa898723a9d5f07a164d4134eb264c1749a07766819be8649792be9", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "9.1.0-rc-1", + "buildTime" : "20250813123732+0000", + "commitId" : "d99e08080200de174ff11b3a06689d996d338ad7", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.1.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-1-bin.zip.sha256", + "checksum" : "f80a20ef870555c9aae51c4d1868b6a31608296a0fd4f8de69a2687243b90f6f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.1.0-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "9.0.0", + "buildTime" : "20250731163512+0000", + "commitId" : "328772c6bae126949610a8beb59cb227ee580241", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-bin.zip.sha256", + "checksum" : "8fad3d78296ca518113f3d29016617c7f9367dc005f932bd9d93bf45ba46072b", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "9.0.0-rc-4", + "buildTime" : "20250728151002+0000", + "commitId" : "a0a6deb6f9937f9e9894a4460f4158267a13ad03", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.0.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-4-bin.zip.sha256", + "checksum" : "f09991ce63e889bf8a5f579a467a82bdf7621bc93d59cd2f8fe5982f39f28e2a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "9.0.0-rc-3", + "buildTime" : "20250717124800+0000", + "commitId" : "2db9560bb68c367a265b10516c856c840f9bed8d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.0.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-3-bin.zip.sha256", + "checksum" : "19ce31d8a4f2e59a99931cc13834c70c0e502804851c0640f31a1af9a7d5b003", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "9.0.0-rc-2", + "buildTime" : "20250711152331+0000", + "commitId" : "2ae39f19925c59560b0b708b9eda586857cddb81", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.0.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-2-bin.zip.sha256", + "checksum" : "4223eafcc72c463e99bad60333a90c974a89aa359ee683e4f329330e513a3736", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "9.0.0-milestone-10", + "buildTime" : "20250708052607+0000", + "commitId" : "fd90cd1f4415bd77322abacfd66147724c432cde", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.0.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-milestone-10-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-milestone-10-bin.zip.sha256", + "checksum" : "0e2ac1877ee872cf65c2d8aa6a6aefcfd57226421d54c29937d21f492fdbde86", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-milestone-10-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "8.14.3", + "buildTime" : "20250704131544+0000", + "commitId" : "e5ee1df3d88b8ca3a8074787a94f373e3090e1db", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14.3-bin.zip.sha256", + "checksum" : "bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14.3-wrapper.jar.sha256", + "wrapperChecksum" : "7d3a4ac4de1c32b59bc6a4eb8ecb8e612ccd0cf1ae1e99f66902da64df296172" +}, { + "version" : "7.6.6", + "buildTime" : "20250704103426+0000", + "commitId" : "c0be2570bd17666c8955ca5b66363f671f50bbd7", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6.6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.6-bin.zip.sha256", + "checksum" : "673d9776f303bc7048fc3329d232d6ebf1051b07893bd9d11616fad9a8673be0", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.6-wrapper.jar.sha256", + "wrapperChecksum" : "14dfa961b6704bb3decdea06502781edaa796a82e6da41cd2e1962b14fbe21a3" +}, { + "version" : "9.0.0-rc-1", + "buildTime" : "20250618075324+0000", + "commitId" : "8493ac58b4a7baddb64080d415b11659be78dbea", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "9.0.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-1-bin.zip.sha256", + "checksum" : "5086034b0656a79fee07a04cfadc103984b075ac85d3a20748649671283be1bb", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "8.14.2", + "buildTime" : "20250605133201+0000", + "commitId" : "30db2a3bdfffa9f8b40e798095675f9dab990a9a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14.2-bin.zip.sha256", + "checksum" : "7197a12f450794931532469d4ff21a59ea2c1cd59a3ec3f89c035c3c420a6999", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14.2-wrapper.jar.sha256", + "wrapperChecksum" : "7d3a4ac4de1c32b59bc6a4eb8ecb8e612ccd0cf1ae1e99f66902da64df296172" +}, { + "version" : "7.6.5", + "buildTime" : "20250604130222+0000", + "commitId" : "13a09d0cc61025596acd4acf05d1980a79838906", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6.5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.5-bin.zip.sha256", + "checksum" : "b812fec0edb7d27e0ae35955887bb2954536fa3e44edaf481150da058e154d9a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.5-wrapper.jar.sha256", + "wrapperChecksum" : "14dfa961b6704bb3decdea06502781edaa796a82e6da41cd2e1962b14fbe21a3" +}, { + "version" : "9.0.0-milestone-9", + "buildTime" : "20250526083131+0000", + "commitId" : "1ceb6a55a8b9f772540ea2655f7ec71cf71e773d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.0.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-milestone-9-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-milestone-9-bin.zip.sha256", + "checksum" : "f682abba2db33587373c58f558c9387b25f7ea592298b57defbf33fc5488c43d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-milestone-9-wrapper.jar.sha256", + "wrapperChecksum" : "76805e32c009c0cf0dd5d206bddc9fb22ea42e84db904b764f3047de095493f3" +}, { + "version" : "8.14.1", + "buildTime" : "20250522134409+0000", + "commitId" : "c174b82566a79e3575bac8c7648c7b36cd815e94", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14.1-bin.zip.sha256", + "checksum" : "845952a9d6afa783db70bb3b0effaae45ae5542ca2bb7929619e8af49cb634cf", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14.1-wrapper.jar.sha256", + "wrapperChecksum" : "7d3a4ac4de1c32b59bc6a4eb8ecb8e612ccd0cf1ae1e99f66902da64df296172" +}, { + "version" : "9.0.0-milestone-8", + "buildTime" : "20250516073511+0000", + "commitId" : "2de7d5ba412c2a9e33f43076dfc4560488359ad2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.0.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-milestone-8-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-milestone-8-bin.zip.sha256", + "checksum" : "9a69d11f90bb8b689b171889437d99a5925d17e7507413472ab45fbbc3949ef9", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0.0-milestone-8-wrapper.jar.sha256", + "wrapperChecksum" : "f98ed44dd3f067fa699b5c34661be67c7f0097ea58b0017255141a08d2eb5f87" +}, { + "version" : "9.0-milestone-7", + "buildTime" : "20250513065613+0000", + "commitId" : "3c890746756262d3778e12eaa5155d661d7cbdf2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-7-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-7-bin.zip.sha256", + "checksum" : "8e8fc68b78a272aa8da4e6fd608502874f7b9d29257fe1345c7209b725cb7565", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-7-wrapper.jar.sha256", + "wrapperChecksum" : "f98ed44dd3f067fa699b5c34661be67c7f0097ea58b0017255141a08d2eb5f87" +}, { + "version" : "9.0-milestone-6", + "buildTime" : "20250508062448+0000", + "commitId" : "0436db0122ff0c2c8f9ae3db45371f2c067ebfbd", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-6-bin.zip.sha256", + "checksum" : "47177c00fc3574e3557902ed9f4bab073597d22c6d9a3fcde8bf8bbc8286f220", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-6-wrapper.jar.sha256", + "wrapperChecksum" : "f98ed44dd3f067fa699b5c34661be67c7f0097ea58b0017255141a08d2eb5f87" +}, { + "version" : "9.0-milestone-5", + "buildTime" : "20250429093659+0000", + "commitId" : "34d31f8f53af29e93357bc88a9a47a1a8001a4ef", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-5-bin.zip.sha256", + "checksum" : "d9f0549d640c07389b2d83717a9ae4ca9a49ed2120f95d14015da227ecba16fc", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-5-wrapper.jar.sha256", + "wrapperChecksum" : "c605ee1b011c0da3bc468735530c1d43ea3ede0fb8ce978b5479c7f688343ef5" +}, { + "version" : "9.0-milestone-4", + "buildTime" : "20250428144937+0000", + "commitId" : "ad8b92fc649c0f2efe95287bc43e61a5c0cf618a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-4-bin.zip.sha256", + "checksum" : "ad3873e76d4127629e605d8551fa2b1f893b59d9171138c9463bd5c2001981a9", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-4-wrapper.jar.sha256", + "wrapperChecksum" : "c605ee1b011c0da3bc468735530c1d43ea3ede0fb8ce978b5479c7f688343ef5" +}, { + "version" : "8.14", + "buildTime" : "20250425092908+0000", + "commitId" : "34c560e3be961658a6fbcd7170ec2443a228b109", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-bin.zip.sha256", + "checksum" : "61ad310d3c7d3e5da131b76bbf22b5a4c0786e9d892dae8c1658d4b484de3caa", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-wrapper.jar.sha256", + "wrapperChecksum" : "7d3a4ac4de1c32b59bc6a4eb8ecb8e612ccd0cf1ae1e99f66902da64df296172" +}, { + "version" : "8.14-rc-3", + "buildTime" : "20250423120032+0000", + "commitId" : "8afb1d3427f2721ac7aaa95c1b82c73651870d49", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.14", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-rc-3-bin.zip.sha256", + "checksum" : "d6442642e2f9d920bad96115c91e30a38afd6cdce61f9043ee45e2ab1e1a2972", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "7d3a4ac4de1c32b59bc6a4eb8ecb8e612ccd0cf1ae1e99f66902da64df296172" +}, { + "version" : "9.0-milestone-3", + "buildTime" : "20250422030543+0000", + "commitId" : "b86fa516155d1d3baef664ba5288ad578b337b07", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-3-bin.zip.sha256", + "checksum" : "d9a2c448ef8adb196c65deda1b9680060372528946aed78c7bf24c0ab6443518", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-3-wrapper.jar.sha256", + "wrapperChecksum" : "c605ee1b011c0da3bc468735530c1d43ea3ede0fb8ce978b5479c7f688343ef5" +}, { + "version" : "8.14-rc-2", + "buildTime" : "20250417124738+0000", + "commitId" : "c6a073de26dd590617441ea3805bc2743fb315eb", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.14", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-rc-2-bin.zip.sha256", + "checksum" : "64caf15a08354b01c3c32de0e433179e6678041e8dfe8aa2a27da06ec81c7e35", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "7d3a4ac4de1c32b59bc6a4eb8ecb8e612ccd0cf1ae1e99f66902da64df296172" +}, { + "version" : "9.0-milestone-2", + "buildTime" : "20250414083159+0000", + "commitId" : "ce1ff4a2ca36b5f7959f30e211eb2025b9433c89", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-2-bin.zip.sha256", + "checksum" : "19507539796ff63011c87493b926038e2028b94f200f3ba02e5c776e1cdc20ca", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "c605ee1b011c0da3bc468735530c1d43ea3ede0fb8ce978b5479c7f688343ef5" +}, { + "version" : "9.0-milestone-1", + "buildTime" : "20250410115011+0000", + "commitId" : "db647b24a4039507bbcac1273883745322ae84c3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "9.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-1-bin.zip.sha256", + "checksum" : "6963d0abe43cacb1e159bbc28a0e4e80c1622c0384549c3792257981d89d37ed", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-9.0-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "9687bf4e8beb2c293cfd1393cbf2854ef68f921757302116033f476289abf7b0" +}, { + "version" : "8.14-rc-1", + "buildTime" : "20250409084650+0000", + "commitId" : "266969fceec7f1ad8c1d39e1354d963ce2857269", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.14", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-rc-1-bin.zip.sha256", + "checksum" : "ea87df6204bb94a432cf58d9a915408b1588a8bf146643a347e31fabd7b0e5a8", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "7d3a4ac4de1c32b59bc6a4eb8ecb8e612ccd0cf1ae1e99f66902da64df296172" +}, { + "version" : "8.14-milestone-8", + "buildTime" : "20250408011208+0000", + "commitId" : "31bca59472c3050181a775f6ca54e5337b8a75e3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.14", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-8-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-8-bin.zip.sha256", + "checksum" : "6b6e36374f80d3e5594d9fda7040bf45e1e4617ecb95529f4f5cae77d4c6cd8f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-8-wrapper.jar.sha256", + "wrapperChecksum" : "81a82aaea5abcc8ff68b3dfcb58b3c3c429378efd98e7433460610fecd7ae45f" +}, { + "version" : "8.14-milestone-7", + "buildTime" : "20250324073617+0000", + "commitId" : "48de48758fc3bc62eccebd723f68f9b8d8173e66", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.14", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-7-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-7-bin.zip.sha256", + "checksum" : "13c012a0343d1d310966e6ee1347b3a9b90f210f06a1b1e54ce57fbea8a1233d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-7-wrapper.jar.sha256", + "wrapperChecksum" : "81a82aaea5abcc8ff68b3dfcb58b3c3c429378efd98e7433460610fecd7ae45f" +}, { + "version" : "8.14-milestone-5", + "buildTime" : "20250320082137+0000", + "commitId" : "9728ad5ef05b47255083a31f83ed0fbc3f5035e3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.14", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-5-bin.zip.sha256", + "checksum" : "4d7f406f60d84969fb10722f627067cd7a505da593a64afc5769ca7b96b65109", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-5-wrapper.jar.sha256", + "wrapperChecksum" : "81a82aaea5abcc8ff68b3dfcb58b3c3c429378efd98e7433460610fecd7ae45f" +}, { + "version" : "8.14-milestone-4", + "buildTime" : "20250306073633+0000", + "commitId" : "2f19ff9006b6e7d3d81d614ee87ee6a1f251a3b0", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.14", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-4-bin.zip.sha256", + "checksum" : "c348e50e30d188490f99bc7bd9a27262f2bf2b63b6df29a126660fbf8dc64a10", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-4-wrapper.jar.sha256", + "wrapperChecksum" : "81a82aaea5abcc8ff68b3dfcb58b3c3c429378efd98e7433460610fecd7ae45f" +}, { + "version" : "8.13", + "buildTime" : "20250225092214+0000", + "commitId" : "073314332697ba45c16c0a0ce1891fa6794179ff", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.13-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-bin.zip.sha256", + "checksum" : "20f1b1176237254a6fc204d8434196fa11a4cfb387567519c61556e8710aed78", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-wrapper.jar.sha256", + "wrapperChecksum" : "81a82aaea5abcc8ff68b3dfcb58b3c3c429378efd98e7433460610fecd7ae45f" +}, { + "version" : "8.14-milestone-3", + "buildTime" : "20250221141330+0000", + "commitId" : "8b48d0ed4b1711a8c7a8ce63183970b23c1e9490", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.14", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-3-bin.zip.sha256", + "checksum" : "b232697f41807f172f991dfb78e5013b6ed71d8c7d0256b2d93df41eba18c5cd", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-3-wrapper.jar.sha256", + "wrapperChecksum" : "81a82aaea5abcc8ff68b3dfcb58b3c3c429378efd98e7433460610fecd7ae45f" +}, { + "version" : "8.13-rc-2", + "buildTime" : "20250220142623+0000", + "commitId" : "160d52df5c7663f9854ab7fddf0123a8f044c530", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.13", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.13-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-rc-2-bin.zip.sha256", + "checksum" : "264353f17a13391626fc8d0e86ae8023f30ea334a470caae0cfee02fe6cd1f3d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "81a82aaea5abcc8ff68b3dfcb58b3c3c429378efd98e7433460610fecd7ae45f" +}, { + "version" : "8.14-milestone-2", + "buildTime" : "20250220124058+0000", + "commitId" : "affa639ae530da704951a05c80cef66583558ace", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.14", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-2-bin.zip.sha256", + "checksum" : "2db4c39174c3dc0ced756b60b2b8d151eb0d12b65e539c91ac7f7d36b7e7dd2d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "81a82aaea5abcc8ff68b3dfcb58b3c3c429378efd98e7433460610fecd7ae45f" +}, { + "version" : "8.14-milestone-1", + "buildTime" : "20250214133101+0000", + "commitId" : "dc47699e834411a85029a51a0723e2381afced09", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.14", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-1-bin.zip.sha256", + "checksum" : "0978afc2b32e0f05dbe881681de850a2413f85f6ebe96848719e2b710b9fbde7", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "81a82aaea5abcc8ff68b3dfcb58b3c3c429378efd98e7433460610fecd7ae45f" +}, { + "version" : "8.13-rc-1", + "buildTime" : "20250212094604+0000", + "commitId" : "e1568ff83ddecf64248260376da957b986d625e7", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.13", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.13-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-rc-1-bin.zip.sha256", + "checksum" : "3b3565efd2df2dd999774b6ef8ea571878c5532cbac6dbaaeb4b2731f42e6704", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "81a82aaea5abcc8ff68b3dfcb58b3c3c429378efd98e7433460610fecd7ae45f" +}, { + "version" : "8.12.1", + "buildTime" : "20250124125512+0000", + "commitId" : "0b1ee1ff81d1f4a26574ff4a362ac9180852b140", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.12.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.12.1-bin.zip.sha256", + "checksum" : "8d97a97984f6cbd2b85fe4c60a743440a347544bf18818048e611f5288d46c94", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.12.1-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.13-milestone-3", + "buildTime" : "20250121164636+0000", + "commitId" : "008d02e96f845b2d5a628758831c97d305983d68", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.13", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.13-milestone-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-milestone-3-bin.zip.sha256", + "checksum" : "f22cfbc3bd7e2e762910ed22926614b11af5af23456cec8730cde390b3e6da58", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-milestone-3-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.12.1-milestone-1", + "buildTime" : "20250121110021+0000", + "commitId" : "6d9f96d13ea6d230832feb4bf74b71af5df083d6", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.12.1", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.12.1-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.12.1-milestone-1-bin.zip.sha256", + "checksum" : "003255422dfe4b7306412cd39a120a4382d5db51df9acac33f997b2cb54c4ccd", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.12.1-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.13-milestone-2", + "buildTime" : "20250110085439+0000", + "commitId" : "bf974bdd5b1a046611eb50a5ec863c07f7630bfd", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.13", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.13-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-milestone-2-bin.zip.sha256", + "checksum" : "e8b04d5491ad67bb5e2cd6a3168631dde9b5ab8d0faf5ed1fd3081526cded0ea", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.13-milestone-1", + "buildTime" : "20250109202014+0000", + "commitId" : "017df4898587f8decd1ee7dae2dd33f94c9f5a8a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.13", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.13-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-milestone-1-bin.zip.sha256", + "checksum" : "524079334d60703b233cab4a467574eac0208783ae00c70ef722d349e3db3623", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.13-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.12", + "buildTime" : "20241220154653+0000", + "commitId" : "a3cacb207fec727859be9354c1937da2e59004c1", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.12-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.12-bin.zip.sha256", + "checksum" : "7a00d51fb93147819aab76024feece20b6b84e420694101f276be952e08bef03", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.12-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.12-rc-2", + "buildTime" : "20241217162852+0000", + "commitId" : "98f15d7fbb920b0d3b5388dd0a3e6fb244302f8f", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.12", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.12-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.12-rc-2-bin.zip.sha256", + "checksum" : "4c403eac4e3957107a6e954ae2b59ba6cf9823f683276f1f9e20ef79b8d350a2", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.12-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.12-rc-1", + "buildTime" : "20241212152352+0000", + "commitId" : "e385beb86216461fe39ad37767b95bb0fa6ff777", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.12", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.12-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.12-rc-1-bin.zip.sha256", + "checksum" : "4d9d7ad4cf8842f279649213d2f87d8f7e9a03ae75ac4389517aa574b1404b2a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.12-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.11.1", + "buildTime" : "20241120165646+0000", + "commitId" : "481cb05a490e0ef9f8620f7873b83bd8a72e7c39", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.11.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.11.1-bin.zip.sha256", + "checksum" : "f397b287023acdba1e9f6fc5ea72d22dd63669d59ed4a289a29b1a76eee151c6", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.11.1-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.11", + "buildTime" : "20241111135801+0000", + "commitId" : "b2ef976169a05b3c76d04f0fa76a940859f96fa4", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.11-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.11-bin.zip.sha256", + "checksum" : "57dafb5c2622c6cc08b993c85b7c06956a2f53536432a30ead46166dbca0f1e9", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.11-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.11-rc-3", + "buildTime" : "20241107134628+0000", + "commitId" : "ca3040e548f099c5c879ec2ef93f2f0496551d4b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.11", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.11-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.11-rc-3-bin.zip.sha256", + "checksum" : "8e4b38e068e5d73272498ce4743d86adccebfdadaa4233dd15bfb6c6b82b9152", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.11-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.11-rc-2", + "buildTime" : "20241031150259+0000", + "commitId" : "484cebf8e46e7e0150107705c7ef8d62d72af447", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.11", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.11-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.11-rc-2-bin.zip.sha256", + "checksum" : "7565ee2f3d2193fce6e752f474be66eb0c6252f0c9ef792a8bffda6e7fd31b36", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.11-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.11-rc-1", + "buildTime" : "20241017104024+0000", + "commitId" : "4eab5987e618554d2d5e51fbc7b1dd1a3c7e8cb8", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.11", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.11-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.11-rc-1-bin.zip.sha256", + "checksum" : "2522b1593704b6b26e03cb2dec86d792b1c6ca5c33d10e078fab7a146354130e", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.11-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.11-milestone-1", + "buildTime" : "20241006083426+0000", + "commitId" : "4a6676a6310b36abe94e9451436a8621e113728a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.11", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.11-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.11-milestone-1-bin.zip.sha256", + "checksum" : "2c406ba10eaed701b69d01de924dfaf36106d4764e2090175d103b2e7acba211", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.11-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.10.2", + "buildTime" : "20240923212839+0000", + "commitId" : "415adb9e06a516c44b391edff552fd42139443f7", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.10.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.10.2-bin.zip.sha256", + "checksum" : "31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.10.2-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.10.2-milestone-1", + "buildTime" : "20240919234735+0000", + "commitId" : "c3ea2131e78003a1506533a3ddc952014217cee3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.10.2", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.10.2-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.10.2-milestone-1-bin.zip.sha256", + "checksum" : "b6650db1f41b146b4a780c2a183e14602a6cf861a7797d97ea530fb1384d6336", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.10.2-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.10.1", + "buildTime" : "20240909074256+0000", + "commitId" : "8716158d3ec8c59e38f87a67f1f311f297b79576", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.10.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.10.1-bin.zip.sha256", + "checksum" : "1541fa36599e12857140465f3c91a97409b4512501c26f9631fb113e392c5bd1", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.10.1-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.10", + "buildTime" : "20240814110745+0000", + "commitId" : "fef2edbed8af1022cefaf44d4c0514c5f89d7b78", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.10-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.10-bin.zip.sha256", + "checksum" : "5b9c5eb3f9fc2c94abaea57d90bd78747ca117ddbbf96c859d3741181a12bf2a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.10-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.10-rc-1", + "buildTime" : "20240808060755+0000", + "commitId" : "4f143ee84909970e5148c38b3ac7db3ff826a022", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.10", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.10-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.10-rc-1-bin.zip.sha256", + "checksum" : "de2ad3b249d89af001ce3dace548f8149675c692ef8bccf271444985b590d284", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.10-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "2db75c40782f5e8ba1fc278a5574bab070adccb2d21ca5a6e5ed840888448046" +}, { + "version" : "8.9", + "buildTime" : "20240711143741+0000", + "commitId" : "d536ef36a19186ccc596d8817123e5445f30fef8", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.9-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.9-bin.zip.sha256", + "checksum" : "d725d707bfabd4dfdc958c624003b3c80accc03f7037b5122c4b1d0ef15cecab", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.9-wrapper.jar.sha256", + "wrapperChecksum" : "498495120a03b9a6ab5d155f5de3c8f0d986a449153702fb80fc80e134484f17" +}, { + "version" : "8.9-rc-2", + "buildTime" : "20240705153825+0000", + "commitId" : "fcee8d48f54051165ef816487636dfc0aa4c88a0", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.9-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.9-rc-2-bin.zip.sha256", + "checksum" : "c2b58a752b82346a89a9d5384ba0882d9c3f0c29e0700c8e050002b81d6d4ff9", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.9-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "498495120a03b9a6ab5d155f5de3c8f0d986a449153702fb80fc80e134484f17" +}, { + "version" : "8.9-rc-1", + "buildTime" : "20240621131308+0000", + "commitId" : "a667c19ff4d039304aa43268948139dc9ca6baa6", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.9-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.9-rc-1-bin.zip.sha256", + "checksum" : "3ae7f7d3d433936b546c13505bb55adbae7708e715bfc4cf36cfc22650e6a881", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.9-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "498495120a03b9a6ab5d155f5de3c8f0d986a449153702fb80fc80e134484f17" +}, { + "version" : "8.8", + "buildTime" : "20240531214656+0000", + "commitId" : "4bd1b3d3fc3f31db5a26eecb416a165b8cc36082", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.8-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.8-bin.zip.sha256", + "checksum" : "a4b4158601f8636cdeeab09bd76afb640030bb5b144aafe261a5e8af027dc612", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.8-wrapper.jar.sha256", + "wrapperChecksum" : "cb0da6751c2b753a16ac168bb354870ebb1e162e9083f116729cec9c781156b8" +}, { + "version" : "8.8-rc-2", + "buildTime" : "20240527070937+0000", + "commitId" : "d0f4982aba27e390b46c383277db130abfc1b44e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.8-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.8-rc-2-bin.zip.sha256", + "checksum" : "b50250702d1b238f797c0778259f8b58714d5d16fbfec41fb19135bf86c64fe8", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.8-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "cb0da6751c2b753a16ac168bb354870ebb1e162e9083f116729cec9c781156b8" +}, { + "version" : "8.8-rc-1", + "buildTime" : "20240426151958+0000", + "commitId" : "000ef8587278729b8ea91c89b1c527ba0164338a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.8-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.8-rc-1-bin.zip.sha256", + "checksum" : "a2e1cfee7ffdeee86015b85b2dd2a435032c40eedc01d8172285556c7d8fea13", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.8-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "cb0da6751c2b753a16ac168bb354870ebb1e162e9083f116729cec9c781156b8" +}, { + "version" : "8.7", + "buildTime" : "20240322155246+0000", + "commitId" : "650af14d7653aa949fce5e886e685efc9cf97c10", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.7-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.7-bin.zip.sha256", + "checksum" : "544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.7-wrapper.jar.sha256", + "wrapperChecksum" : "cb0da6751c2b753a16ac168bb354870ebb1e162e9083f116729cec9c781156b8" +}, { + "version" : "8.7-rc-4", + "buildTime" : "20240320140334+0000", + "commitId" : "b9db7ce7ad5d1f2adf1928955ae926329262cf82", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-4-bin.zip.sha256", + "checksum" : "a14ad975075d5d2dcc1fa1667e622597c6f8721e2ca42dff54ebe40c07eb1bc5", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "cb0da6751c2b753a16ac168bb354870ebb1e162e9083f116729cec9c781156b8" +}, { + "version" : "8.7-rc-3", + "buildTime" : "20240311171310+0000", + "commitId" : "ab30a66001c3476658e07c46e1a9c5e862aed438", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-3-bin.zip.sha256", + "checksum" : "f0183d411f68b72d37112e47b539c6d91d1870842f5f2ce9cffefa0a7756ae52", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "cb0da6751c2b753a16ac168bb354870ebb1e162e9083f116729cec9c781156b8" +}, { + "version" : "8.7-rc-2", + "buildTime" : "20240229125337+0000", + "commitId" : "cf4549b56c9b4d7c453795158e19a544b2a0dd60", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-2-bin.zip.sha256", + "checksum" : "3348170800c324fc97ff201fdc139ad465c073ab19760cfe22a872b5b858560f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "cb0da6751c2b753a16ac168bb354870ebb1e162e9083f116729cec9c781156b8" +}, { + "version" : "8.7-rc-1", + "buildTime" : "20240222213949+0000", + "commitId" : "6cd7d3cf5929e1bd9f917b7dc67d03cd65d22d08", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-1-bin.zip.sha256", + "checksum" : "4354bc6c46d1f1e1e37cb371b7c31556a4427eb3f57d03c23e5aae8aa606aedb", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.7-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "cb0da6751c2b753a16ac168bb354870ebb1e162e9083f116729cec9c781156b8" +}, { + "version" : "7.6.4", + "buildTime" : "20240205142918+0000", + "commitId" : "e0bb3fc8cefad8432c9033cdfb12dc14facc9dd9", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.4-bin.zip.sha256", + "checksum" : "bed1da33cca0f557ab13691c77f38bb67388119e4794d113e051039b80af9bb1", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.4-wrapper.jar.sha256", + "wrapperChecksum" : "14dfa961b6704bb3decdea06502781edaa796a82e6da41cd2e1962b14fbe21a3" +}, { + "version" : "8.6", + "buildTime" : "20240202164716+0000", + "commitId" : "d55c486870a0dc6f6278f53d21381396d0741c6e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-bin.zip.sha256", + "checksum" : "9631d53cf3e74bfa726893aee1f8994fee4e060c401335946dba2156f440f24c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-wrapper.jar.sha256", + "wrapperChecksum" : "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd" +}, { + "version" : "8.6-rc-4", + "buildTime" : "20240131130628+0000", + "commitId" : "f1b03c0a136f87f0d33406b8ea3f2039caec2a32", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-4-bin.zip.sha256", + "checksum" : "1fb8db52c64b78eb27358dbe7119040090d227cb7de0436c0a657863c44b84c6", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd" +}, { + "version" : "8.6-rc-3", + "buildTime" : "20240123150619+0000", + "commitId" : "40b1a053f84abb1d167d88142af835c96eb4c3d7", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-3-bin.zip.sha256", + "checksum" : "281b47656267472c9f853e7ed54002bfd435bfdcd292286709705324fd96f5dc", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd" +}, { + "version" : "8.6-rc-2", + "buildTime" : "20240112144903+0000", + "commitId" : "cee3a34b18b771fe4174800920b5a0009a980034", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-2-bin.zip.sha256", + "checksum" : "3a36cedd25c02335d991e3684e17985239150e24b744a8513d466543083ca250", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd" +}, { + "version" : "8.6-rc-1", + "buildTime" : "20231228064048+0000", + "commitId" : "19db0f499fd22a228355c1a6594b9159176a466e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-1-bin.zip.sha256", + "checksum" : "a2da4ba435f6728b43554c5845f6f88f79589c3e0018c29ab33eb23bd781255b", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd" +}, { + "version" : "8.6-milestone-1", + "buildTime" : "20231208093905+0000", + "commitId" : "68a2e7c3355e027b514e59fe9e4671d780409535", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.6", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.6-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-milestone-1-bin.zip.sha256", + "checksum" : "0bd40db84cb02df49bde4c3f45b6fa7267f78c075447cb70bac3cc79aed233b7", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.6-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd" +}, { + "version" : "8.5", + "buildTime" : "20231129140857+0000", + "commitId" : "28aca86a7180baa17117e0e5ba01d8ea9feca598", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.5-bin.zip.sha256", + "checksum" : "9d926787066a081739e8200858338b4a69e837c3a821a33aca9db09dd4a41026", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.5-wrapper.jar.sha256", + "wrapperChecksum" : "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd" +}, { + "version" : "8.5-rc-4", + "buildTime" : "20231124091900+0000", + "commitId" : "ff7bf18d018392c80aead72f93d4530726e9504d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-4-bin.zip.sha256", + "checksum" : "614587c584e4d97a00368c8f5e6749d3e38345b7810bcfef1c7b8e002127b3a3", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd" +}, { + "version" : "8.5-rc-3", + "buildTime" : "20231117134310+0000", + "commitId" : "d8463b2b64aa2952b741fcb1a7da11710ffc2c5a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-3-bin.zip.sha256", + "checksum" : "7207f771dac48bfe19d5990c8f1e7e5f3d5e8b2b98e09ad9a4c484af537f86b2", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd" +}, { + "version" : "8.5-rc-2", + "buildTime" : "20231114141630+0000", + "commitId" : "9bfdf5b90ff69b6775c2fe163808a99eac2dc543", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-2-bin.zip.sha256", + "checksum" : "547d33f88a30b6d9666c79fde614b1e5a1a3e2f86216bc70c4c7e3421f0d4627", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd" +}, { + "version" : "8.5-rc-1", + "buildTime" : "20231107155056+0000", + "commitId" : "3dc993b32164f697b540e88c2426977e097d3aff", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-1-bin.zip.sha256", + "checksum" : "8c74462b1d83f8b17c4838c925fc4c46d1fbb4467b18b8a17f5cdaaee45b7f09", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.5-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd" +}, { + "version" : "8.4", + "buildTime" : "20231004205213+0000", + "commitId" : "e9251e572c9bd1d01e503a0dfdf43aedaeecdc3f", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.4-bin.zip.sha256", + "checksum" : "3e1af3ae886920c3ac87f7a91f816c0c7c436f276a6eefdb3da152100fef72ae", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.4-wrapper.jar.sha256", + "wrapperChecksum" : "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15" +}, { + "version" : "7.6.3", + "buildTime" : "20231004155947+0000", + "commitId" : "1694251d59e0d4752d547e1fd5b5020b798a7e71", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.3-bin.zip.sha256", + "checksum" : "740c2e472ee4326c33bf75a5c9f5cd1e69ecf3f9b580f6e236c86d1f3d98cfac", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.3-wrapper.jar.sha256", + "wrapperChecksum" : "14dfa961b6704bb3decdea06502781edaa796a82e6da41cd2e1962b14fbe21a3" +}, { + "version" : "8.4-rc-3", + "buildTime" : "20230929135700+0000", + "commitId" : "7788100a0736a67692b30f53fe3b2442dbb9816d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.4-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.4-rc-3-bin.zip.sha256", + "checksum" : "cb1945fa73552ddf99cf32ec2fcd065771fcb6bf4a366b9408e79f9561601853", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.4-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15" +}, { + "version" : "8.4-rc-2", + "buildTime" : "20230926114721+0000", + "commitId" : "21dd48a6b94a5dfff7fa19c4e3c65b5522c75cb3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.4-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.4-rc-2-bin.zip.sha256", + "checksum" : "f7dca5ae44f1a45ee7950fa3e01418a664eaa04136ff594a99bebf7ee353a943", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.4-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15" +}, { + "version" : "8.4-rc-1", + "buildTime" : "20230920065917+0000", + "commitId" : "ebdfd04b7e181147b7ce87af0f72b950261085f7", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.4-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.4-rc-1-bin.zip.sha256", + "checksum" : "7eec87a597388fb67df02d0cc4f8bc566abd5adf5838dab1f4db0e83fa96bd4f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.4-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15" +}, { + "version" : "8.3", + "buildTime" : "20230817070647+0000", + "commitId" : "8afbf24b469158b714b36e84c6f4d4976c86fcd5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.3-bin.zip.sha256", + "checksum" : "591855b517fc635b9e04de1d05d5e76ada3f89f5fc76f87978d1b245b4f69225", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.3-wrapper.jar.sha256", + "wrapperChecksum" : "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15" +}, { + "version" : "8.3-rc-4", + "buildTime" : "20230814082841+0000", + "commitId" : "45d5bd72d0d837799c297e94bc1fbca9fee637eb", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-4-bin.zip.sha256", + "checksum" : "e4d88e0e636799134179376b5b058b0c691e58a1e9150c1d0a3898ffd402abaa", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15" +}, { + "version" : "8.3-rc-3", + "buildTime" : "20230802172145+0000", + "commitId" : "5137ec0e9b3df9f4d40bc9e055d5f0b1024d9327", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-3-bin.zip.sha256", + "checksum" : "7af08310663d2849d8288d075cc2b74ca56dbacfa7ae60257c02aab0e8fe3111", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15" +}, { + "version" : "8.3-rc-2", + "buildTime" : "20230726152039+0000", + "commitId" : "c48101dc7f9c766efa8206574aa9c2195d2b7960", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-2-bin.zip.sha256", + "checksum" : "222818637ce0a4cb82e322bf847ea49ac319aecdb363d81acabd9e81315d08f6", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15" +}, { + "version" : "8.3-rc-1", + "buildTime" : "20230719075404+0000", + "commitId" : "d036e6078ed80de7a7e1ad6a17aae6be115b5d0d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-1-bin.zip.sha256", + "checksum" : "05d10c69f03ef1ed1569171e637fc1737828bceaf4bb4a1e87407a4a7d1c01e6", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.3-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15" +}, { + "version" : "8.2.1", + "buildTime" : "20230710121235+0000", + "commitId" : "a38ec64d3c4612da9083cc506a1ccb212afeecaa", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.2.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.2.1-bin.zip.sha256", + "checksum" : "03ec176d388f2aa99defcadc3ac6adf8dd2bce5145a129659537c0874dea5ad1", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.2.1-wrapper.jar.sha256", + "wrapperChecksum" : "a8451eeda314d0568b5340498b36edf147a8f0d692c5ff58082d477abe9146e4" +}, { + "version" : "8.2", + "buildTime" : "20230630180230+0000", + "commitId" : "5f4a070a62a31a17438ac998c2b849f4f6892877", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.2-bin.zip.sha256", + "checksum" : "38f66cd6eef217b4c35855bb11ea4e9fbc53594ccccb5fb82dfd317ef8c2c5a3", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.2-wrapper.jar.sha256", + "wrapperChecksum" : "a8451eeda314d0568b5340498b36edf147a8f0d692c5ff58082d477abe9146e4" +}, { + "version" : "7.6.2", + "buildTime" : "20230630154251+0000", + "commitId" : "dab132169006b16e7ada4ab2456e0c9d6415b52a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.2-bin.zip.sha256", + "checksum" : "a01b6587e15fe7ed120a0ee299c25982a1eee045abd6a9dd5e216b2f628ef9ac", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.2-wrapper.jar.sha256", + "wrapperChecksum" : "14dfa961b6704bb3decdea06502781edaa796a82e6da41cd2e1962b14fbe21a3" +}, { + "version" : "8.2-rc-3", + "buildTime" : "20230628070204+0000", + "commitId" : "66d698f44a1d71c01e80664f984a5c86a83bd28d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.2-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.2-rc-3-bin.zip.sha256", + "checksum" : "345389a51e2ec796b1102c1ce513ac8f571978fd698e3fb10b6e0457091b6edc", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.2-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "a8451eeda314d0568b5340498b36edf147a8f0d692c5ff58082d477abe9146e4" +}, { + "version" : "8.2-rc-2", + "buildTime" : "20230606183136+0000", + "commitId" : "5b4d99e3745b5e4c9929621c9377b6f8fb97f3fd", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.2-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.2-rc-2-bin.zip.sha256", + "checksum" : "0906569bf96e8ebefbc1aa56318c74aeafd9710455b2817c70d709c5d77785c4", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.2-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "5c9a1a6f50b4f8c0264b1ac69013bef9f8363733275fafa56c70c84be3276bb8" +}, { + "version" : "8.2-rc-1", + "buildTime" : "20230531181205+0000", + "commitId" : "2a2778f51363d9574f808ae80d34d8b5bd99d98b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.2-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.2-rc-1-bin.zip.sha256", + "checksum" : "f93546eb9b9ca57eb1d22f6e6d50a181e70720d4ba6d6af8fc96037fe4c8daf6", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.2-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "55e949185c26ba3ddcd2c6a4217d043bfa0ce3cc002bbbb52b709a181a513e81" +}, { + "version" : "8.2-milestone-1", + "buildTime" : "20230426164225+0000", + "commitId" : "0f7d6b14b563ca06bfd34d2dde25d0f1f93279e3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.2", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.2-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.2-milestone-1-bin.zip.sha256", + "checksum" : "4d06de8a5bfe1d53646d78cbe193ceae1d16b2145f522b3724b69d394c38e44f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.2-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "55e949185c26ba3ddcd2c6a4217d043bfa0ce3cc002bbbb52b709a181a513e81" +}, { + "version" : "8.1.1", + "buildTime" : "20230421123126+0000", + "commitId" : "1cf537a851c635c364a4214885f8b9798051175b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.1.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.1.1-bin.zip.sha256", + "checksum" : "e111cb9948407e26351227dabce49822fb88c37ee72f1d1582a69c68af2e702f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.1.1-wrapper.jar.sha256", + "wrapperChecksum" : "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58" +}, { + "version" : "8.1", + "buildTime" : "20230412120745+0000", + "commitId" : "40ba32cde9d6daf2b92c39376d2758909dd6b813", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.1-bin.zip.sha256", + "checksum" : "a62c5f99585dd9e1f95dab7b9415a0e698fa9dd1e6c38537faa81ac078f4d23e", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.1-wrapper.jar.sha256", + "wrapperChecksum" : "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58" +}, { + "version" : "8.1-rc-4", + "buildTime" : "20230411093751+0000", + "commitId" : "a63ac23cdbaf9c9e5e43b9fdb7fa478780fc40b2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-4-bin.zip.sha256", + "checksum" : "75cbca1c36f3695ec15b39ac1f22103e5c84ba949b672497e70e9a99dc2ca195", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58" +}, { + "version" : "8.1-rc-3", + "buildTime" : "20230404095841+0000", + "commitId" : "7eb689e589a42dcabd23aa8ccffa9a020c2010d2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-3-bin.zip.sha256", + "checksum" : "4087d4c8eb90335f7c635082424cf34480721544ad36b595dcf8c143c653c149", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58" +}, { + "version" : "8.1-rc-2", + "buildTime" : "20230329080943+0000", + "commitId" : "b7cde67fa9c3fcbf03a4cefdb2214d52963a8678", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-2-bin.zip.sha256", + "checksum" : "c8e041dcbf7b747bf967b607942d8cf9a7cf992f4c05c90b1c8826901c183617", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58" +}, { + "version" : "8.1-rc-1", + "buildTime" : "20230320143921+0000", + "commitId" : "cd44247d421f76903decf83a0efad7bbc1552dc1", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-1-bin.zip.sha256", + "checksum" : "0a0143227c5a1699753e5e37f0c03bd784b3bd6c617d19e4f0c4df12c32b0fe2", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.1-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58" +}, { + "version" : "8.0.2", + "buildTime" : "20230303164137+0000", + "commitId" : "7d6581558e226a580d91d399f7dfb9e3095c2b1d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0.2-bin.zip.sha256", + "checksum" : "ff7bf6a86f09b9b2c40bb8f48b25fc19cf2b2664fd1d220cd7ab833ec758d0d7", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0.2-wrapper.jar.sha256", + "wrapperChecksum" : "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5" +}, { + "version" : "7.6.1", + "buildTime" : "20230224135442+0000", + "commitId" : "3905fe8ac072bbd925c70ddbddddf4463341f4b4", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.1-bin.zip.sha256", + "checksum" : "6147605a23b4eff6c334927a86ff3508cb5d6722cd624c97ded4c2e8640f1f87", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6.1-wrapper.jar.sha256", + "wrapperChecksum" : "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a" +}, { + "version" : "6.9.4", + "buildTime" : "20230222084312+0000", + "commitId" : "7f9380f27d6dc6a1ee6dfc466b834b0408d0b0c4", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.9.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.9.4-bin.zip.sha256", + "checksum" : "3e240228538de9f18772a574e99a0ba959e83d6ef351014381acd9631781389a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.9.4-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "8.0.1", + "buildTime" : "20230217200948+0000", + "commitId" : "68959bf76cef4d28c678f2e2085ee84e8647b77a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0.1-bin.zip.sha256", + "checksum" : "1b6b558be93f29438d3df94b7dfee02e794b94d9aca4611a92cdb79b6b88e909", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0.1-wrapper.jar.sha256", + "wrapperChecksum" : "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5" +}, { + "version" : "8.0", + "buildTime" : "20230213131521+0000", + "commitId" : "62ab9b7c7f884426cf79fbedcf07658b2dbe9e97", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-bin.zip.sha256", + "checksum" : "4159b938ec734a8388ce03f52aa8f3c7ed0d31f5438622545de4f83a89b79788", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-wrapper.jar.sha256", + "wrapperChecksum" : "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5" +}, { + "version" : "8.0-rc-5", + "buildTime" : "20230209233943+0000", + "commitId" : "47a354e154889b2656373419e3571410291404a7", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-5-bin.zip.sha256", + "checksum" : "c01b46042141d23aea23ae5b09a12410a7996bac8c7fdf367547acd1b3c772d9", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-5-wrapper.jar.sha256", + "wrapperChecksum" : "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5" +}, { + "version" : "8.0-rc-4", + "buildTime" : "20230209172637+0000", + "commitId" : "5eb67a82c4283959484a3b93cb3ede1a08a2504b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-4-bin.zip.sha256", + "checksum" : "c1e2a61fd7257fdb869020808930487a69179488490a27664b06e472ecbf4ed7", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5" +}, { + "version" : "8.0-rc-3", + "buildTime" : "20230206094910+0000", + "commitId" : "0acb34c510be84f8fad1923e3a62c17eecbc886a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-3-bin.zip.sha256", + "checksum" : "9fb87bbe73f963a4c23daede3a5ed78e7ae770f3e980d3cb15d8df04518b542d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5" +}, { + "version" : "8.0-rc-2", + "buildTime" : "20230117102518+0000", + "commitId" : "8dcd942c9efaac6cb7f577f3b7a7521d0801704d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-2-bin.zip.sha256", + "checksum" : "28ebe9afc20564bcdc39bfe36f6b60a373e40be2c3c307a0028b545b8ccf6ba0", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5" +}, { + "version" : "8.0-rc-1", + "buildTime" : "20221229123250+0000", + "commitId" : "ae81f85f0e184196c188b96016eb3d9e38f60673", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "8.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-1-bin.zip.sha256", + "checksum" : "d5bb29e784426547e4f455fbc0e6512d7a6a67d7d890cf24d601309287128b79", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5" +}, { + "version" : "8.0-milestone-6", + "buildTime" : "20221220081158+0000", + "commitId" : "6abc8d20bdd7b25edb3a24f62454f0e56257f552", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-6-bin.zip.sha256", + "checksum" : "5db785194950909ded9d2bcad3cd6874e7578bc93c11bf1aaa2d3e89aa8c9deb", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-6-wrapper.jar.sha256", + "wrapperChecksum" : "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5" +}, { + "version" : "8.0-milestone-5", + "buildTime" : "20221208181122+0000", + "commitId" : "3fb0faa58efc3d984465da3316663a0b89e0b728", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-5-bin.zip.sha256", + "checksum" : "0288540bc5ad21c4c921743464da8b7c8c8403750ddb20d050dc088282814664", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-5-wrapper.jar.sha256", + "wrapperChecksum" : "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5" +}, { + "version" : "8.0-milestone-4", + "buildTime" : "20221201090656+0000", + "commitId" : "d06a65fb5320997b66461bbfa74266aa050a3b1d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-4-bin.zip.sha256", + "checksum" : "8ecb39c34977c75381299045cb238f6e4d3368e67b7221fcd9ac34ad344e4b63", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-4-wrapper.jar.sha256", + "wrapperChecksum" : "577b2de036000db2e0f04f2ec842a4f1e648c8b6f9c87f29a8d896acb1732538" +}, { + "version" : "7.6", + "buildTime" : "20221125133510+0000", + "commitId" : "daece9dbc5b79370cc8e4fd6fe4b2cd400e150a8", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-bin.zip.sha256", + "checksum" : "7ba68c54029790ab444b39d7e293d3236b2632631fb5f2e012bb28b4ff669e4b", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-wrapper.jar.sha256", + "wrapperChecksum" : "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a" +}, { + "version" : "7.6-rc-4", + "buildTime" : "20221122094210+0000", + "commitId" : "87a8037940defe7c18ef332efac18f0405baa37b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-4-bin.zip.sha256", + "checksum" : "eb93e4f8abf8db59d5bd1bbdd716f971d010bfc82fd01fe46905d499305718a0", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a" +}, { + "version" : "7.6-rc-3", + "buildTime" : "20221111142340+0000", + "commitId" : "6c339330ec227cafd6049ff3245ccef45ae8c7d4", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-3-bin.zip.sha256", + "checksum" : "21e2bf8e6c6ac310182c817776ffc6cca80142f5de4b2b4151f9f72b9ec35b50", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a" +}, { + "version" : "7.6-rc-2", + "buildTime" : "20221108130606+0000", + "commitId" : "9e7785b963b6627bf6a0d8599d971f4c56f22a5a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-2-bin.zip.sha256", + "checksum" : "1a0c892659d3eec2a33ab23857784ee3c9674b681cab068f67780da412d3f61f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a" +}, { + "version" : "8.0-milestone-3", + "buildTime" : "20221028140616+0000", + "commitId" : "fbe9699332c66d9dc7d28aaa4982f7ffc7aab81a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-3-bin.zip.sha256", + "checksum" : "ad9460264653b6ed16cc8aebf9ee4dc12d1a301351323233eb905fce5d522ab4", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-3-wrapper.jar.sha256", + "wrapperChecksum" : "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a" +}, { + "version" : "7.6-rc-1", + "buildTime" : "20221028075211+0000", + "commitId" : "62973455a8df25d003949f3f573593cd10d083a3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-1-bin.zip.sha256", + "checksum" : "458550f35b74ad9fbbdf3a1eb69c3f4faef7944cffa3d7fb91b46327875b0b17", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a" +}, { + "version" : "6.9.3", + "buildTime" : "20221017074402+0000", + "commitId" : "a6198e44749b18b37e26b3b3467db17e034bcff4", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.9.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.9.3-bin.zip.sha256", + "checksum" : "dcf350b8ae1aa192fc299aed6efc77b43825d4fedb224c94118ae7faf5fb035d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.9.3-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "8.0-milestone-2", + "buildTime" : "20221009102113+0000", + "commitId" : "2fa96f7c0db3ece3385edf57f44e89589cd59486", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-2-bin.zip.sha256", + "checksum" : "7fe8e8147543e80b4e1a11dfaf819d80d5bd32d1d922b11944e768a15c7c6a7b", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a" +}, { + "version" : "8.0-milestone-1", + "buildTime" : "20220923110128+0000", + "commitId" : "60cd44b5204ccedca6bf0f194bc4b17b8a3a7ad5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "8.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-1-bin.zip.sha256", + "checksum" : "573715e1f25829fc3c2ad2e97578e9f8433050da87ddab5413e587663a621ebe", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.0-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a" +}, { + "version" : "7.6-milestone-1", + "buildTime" : "20220923093944+0000", + "commitId" : "d4f94bd96c2dfb7374cd71abbc4b1f628a2d6a2b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "7.6", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.6-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-milestone-1-bin.zip.sha256", + "checksum" : "9ca7bc6d09c52b365cc61f4ef9e0410f79f6122bc126786c76847b987a4b7cbe", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.6-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a" +}, { + "version" : "7.5.1", + "buildTime" : "20220805211756+0000", + "commitId" : "d1daa0cbf1a0103000b71484e1dbfe096e095918", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.5.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.5.1-bin.zip.sha256", + "checksum" : "f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.5.1-wrapper.jar.sha256", + "wrapperChecksum" : "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60" +}, { + "version" : "7.5", + "buildTime" : "20220714124815+0000", + "commitId" : "c7db7b958189ad2b0c1472b6fe663e6d654a5103", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-bin.zip.sha256", + "checksum" : "cb87f222c5585bd46838ad4db78463a5c5f3d336e5e2b98dc7c0c586527351c2", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-wrapper.jar.sha256", + "wrapperChecksum" : "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60" +}, { + "version" : "7.5-rc-5", + "buildTime" : "20220712114039+0000", + "commitId" : "0da5e9cce20a3cb79ede91fbc52d3efec9e309a9", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-5-bin.zip.sha256", + "checksum" : "c0bbfe570634634271f472aa30ec8d059a2e97b920be687d4c6446efbad9cc58", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-5-wrapper.jar.sha256", + "wrapperChecksum" : "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60" +}, { + "version" : "7.5-rc-4", + "buildTime" : "20220706171202+0000", + "commitId" : "a641d1caebe02ea109a69ca5fc0f59c20bceb9de", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-4-bin.zip.sha256", + "checksum" : "d98c4322d882e7b115fbf2a33ccd3e03677653b88c4f245e33cbea28b531a173", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60" +}, { + "version" : "7.5-rc-3", + "buildTime" : "20220629120328+0000", + "commitId" : "db02cfd2c0a9d1503dec236222fcc5b545413102", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-3-bin.zip.sha256", + "checksum" : "d10d8e6206d613313379834f3ed94ec7b781790f22edd44b0f2afa76708e2050", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60" +}, { + "version" : "7.5-rc-2", + "buildTime" : "20220610165005+0000", + "commitId" : "e97f154bbdce2d3da1d46161417f7a7eaa9e00f2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-2-bin.zip.sha256", + "checksum" : "ba761aa1563f5d893d1a6e7ddca48bbdc4385fdd527974e6472b873b7eae9a32", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60" +}, { + "version" : "7.5-rc-1", + "buildTime" : "20220512190923+0000", + "commitId" : "8d531f6b22fb3a97fb623f949c5e7bae8a2e1fe2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-1-bin.zip.sha256", + "checksum" : "8ba57a37e1e0b8c415e4d91718d51035223aa73131cf719a50c95a2a88269eb2", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.5-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60" +}, { + "version" : "7.4.2", + "buildTime" : "20220331152529+0000", + "commitId" : "540473b8118064efcc264694cbcaa4b677f61041", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.4.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.4.2-bin.zip.sha256", + "checksum" : "29e49b10984e585d8118b7d0bc452f944e386458df27371b49b4ac1dec4b7fda", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.4.2-wrapper.jar.sha256", + "wrapperChecksum" : "575098db54a998ff1c6770b352c3b16766c09848bee7555dab09afc34e8cf590" +}, { + "version" : "7.4.1", + "buildTime" : "20220309150447+0000", + "commitId" : "36dc52588e09b4b72f2010bc07599e0ee0434e2e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.4.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.4.1-bin.zip.sha256", + "checksum" : "e5444a57cda4a95f90b0c9446a9e1b47d3d7f69057765bfb54bd4f482542d548", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.4.1-wrapper.jar.sha256", + "wrapperChecksum" : "575098db54a998ff1c6770b352c3b16766c09848bee7555dab09afc34e8cf590" +}, { + "version" : "7.4", + "buildTime" : "20220208095838+0000", + "commitId" : "f0d9291c04b90b59445041eaa75b2ee744162586", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.4-bin.zip.sha256", + "checksum" : "8cc27038d5dbd815759851ba53e70cf62e481b87494cc97cfd97982ada5ba634", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.4-wrapper.jar.sha256", + "wrapperChecksum" : "575098db54a998ff1c6770b352c3b16766c09848bee7555dab09afc34e8cf590" +}, { + "version" : "7.4-rc-2", + "buildTime" : "20220202150044+0000", + "commitId" : "88ab9b652933bc3b2e3161b31ad8b8f4f0516351", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.4-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.4-rc-2-bin.zip.sha256", + "checksum" : "21491c9f0656e1529ccb39cbd587d01c33ba00d25f994b10240748ed0d45894a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.4-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "575098db54a998ff1c6770b352c3b16766c09848bee7555dab09afc34e8cf590" +}, { + "version" : "7.4-rc-1", + "buildTime" : "20220117201507+0000", + "commitId" : "693625f25f2210d1a3ca866897d69ac221de6811", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.4-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.4-rc-1-bin.zip.sha256", + "checksum" : "b2a452bc37637aa453f0f3fb526240caed02878c47a9736f3059590605893bdb", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.4-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "575098db54a998ff1c6770b352c3b16766c09848bee7555dab09afc34e8cf590" +}, { + "version" : "7.3.3", + "buildTime" : "20211222123754+0000", + "commitId" : "6f556c80f945dc54b50e0be633da6c62dbe8dc71", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.3.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.3.3-bin.zip.sha256", + "checksum" : "b586e04868a22fd817c8971330fec37e298f3242eb85c374181b12d637f80302", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.3.3-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.3.3-rc-1", + "buildTime" : "20211222090657+0000", + "commitId" : "6f556c80f945dc54b50e0be633da6c62dbe8dc71", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.3.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.3.3-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.3.3-rc-1-bin.zip.sha256", + "checksum" : "07a1cd283d6cfe437eb08fe08936dc1af5f12946e67dc9f5e0a9f4b948ebfd3a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.3.3-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "6.9.2", + "buildTime" : "20211221172537+0000", + "commitId" : "5d94aa68c0fdbe443838bb977080e3b9f273e889", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.9.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.9.2-bin.zip.sha256", + "checksum" : "8b356fd8702d5ffa2e066ed0be45a023a779bba4dd1a68fd11bc2a6bdc981e8f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.9.2-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "7.3.2", + "buildTime" : "20211215112231+0000", + "commitId" : "26c186eb63b2b02e68d83b0dbc6ec69ab118653a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.3.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.3.2-bin.zip.sha256", + "checksum" : "23b89f8eac363f5f4b8336e0530c7295c55b728a9caa5268fdd4a532610d5392", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.3.2-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.3.1", + "buildTime" : "20211201154220+0000", + "commitId" : "2c62cec93e0b15a7d2cd68746f3348796d6d42bd", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.3.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.3.1-bin.zip.sha256", + "checksum" : "9afb3ca688fc12c761a0e9e4321e4d24e977a4a8916c8a768b1fe05ddb4d6b66", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.3.1-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.3", + "buildTime" : "20211109204036+0000", + "commitId" : "96754b8c44399658178a768ac764d727c2addb37", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-bin.zip.sha256", + "checksum" : "de8f52ad49bdc759164f72439a3bf56ddb1589c4cde802d3cec7d6ad0e0ee410", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.3-rc-5", + "buildTime" : "20211105184337+0000", + "commitId" : "426f267f7b768154fd63b27e055ba56b357e6e4e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-5-bin.zip.sha256", + "checksum" : "dca199cee2553ec2497e840bf17969e56d4f99df661a693740b90de7ed0efbeb", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-5-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.3-rc-4", + "buildTime" : "20211105160540+0000", + "commitId" : "426f267f7b768154fd63b27e055ba56b357e6e4e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-4-bin.zip.sha256", + "checksum" : "488d250f4a1ae7744dcdf53fef0708f4a3e373023b8c134eda1be98aba4ed260", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.3-rc-3", + "buildTime" : "20211026162420+0000", + "commitId" : "c49d04ba7bd0708b11bf2ecf2e2d0bbd12a5123a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-3-bin.zip.sha256", + "checksum" : "d57eb720003db00f85915c48ff4a5ac3c7e8a8a34bd34ced16ca0c7a31c10110", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.3-rc-2", + "buildTime" : "20211020220023+0000", + "commitId" : "93609146327efb378cbea19477ed638d03be1e57", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-2-bin.zip.sha256", + "checksum" : "e6a7b81aa2fd2fa05efba3cf7d0c79d629b4d3b189aa4d4b57729933a211af79", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.3-rc-1", + "buildTime" : "20211012072418+0000", + "commitId" : "d71b6cdb688f94d57ff4c27c7b185afbcb338a5f", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-1-bin.zip.sha256", + "checksum" : "d23a3a902b3c4a8cc6952ff236fb83279a266aec1854b01286ed04788a5d3d9a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.3-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "6.9.1", + "buildTime" : "20210820111518+0000", + "commitId" : "f0ddb54aaae0e44f0a7209c3c0274d506ea742a0", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.9.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.9.1-bin.zip.sha256", + "checksum" : "8c12154228a502b784f451179846e518733cf856efc7d45b2e6691012977b2fe", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.9.1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "7.2", + "buildTime" : "20210817095903+0000", + "commitId" : "a773786b58bb28710e3dc96c4d1a7063628952ad", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.2-bin.zip.sha256", + "checksum" : "f581709a9c35e9cb92e16f585d2c4bc99b2b1a5f85d2badbd3dc6bff59e1e6dd", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.2-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.2-rc-3", + "buildTime" : "20210812075909+0000", + "commitId" : "c85cebe8534173e68d3c36cbf78ee1eaaa408301", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.2-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.2-rc-3-bin.zip.sha256", + "checksum" : "12215a4146ab05309893c24fb7d0c32366ab6b548e2de84185d781ec639a6283", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.2-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.2-rc-2", + "buildTime" : "20210805122137+0000", + "commitId" : "9a8406d602d05d95ddea924dd2443954f9b9e0c8", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.2-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.2-rc-2-bin.zip.sha256", + "checksum" : "e7ed72455ea34234ffb244621d384c94e86c4adfcb0bc9e7c60ff4849ee69a77", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.2-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.2-rc-1", + "buildTime" : "20210729075128+0000", + "commitId" : "d25e5bd8039ad18a2d63706b5a97cdc12e906ac3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.2-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.2-rc-1-bin.zip.sha256", + "checksum" : "fb0e3b9890cbe993819154d099b9cbcfdfccb4a6bf78f9b6189871e36663ce44", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.2-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.1.1", + "buildTime" : "20210702121643+0000", + "commitId" : "774525a055494e0ece39f522ac7ad17498ce032c", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.1.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.1.1-bin.zip.sha256", + "checksum" : "bf8b869948901d422e9bb7d1fa61da6a6e19411baa7ad6ee929073df85d6365d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.1.1-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.1", + "buildTime" : "20210614144726+0000", + "commitId" : "989ccc9952b140ee6ab88870e8a12f1b2998369e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.1-bin.zip.sha256", + "checksum" : "2debee19271e1b82c6e41137d78e44e6e841035230a1a169ca47fd3fb09ed87b", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.1-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.1-rc-2", + "buildTime" : "20210608153520+0000", + "commitId" : "79bbe8b8ea2f705f4af44f8e88af0d67fee6a898", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.1-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.1-rc-2-bin.zip.sha256", + "checksum" : "caa8e323577de2fa421b47dded5278e7376c2bb6420221fbaf7908dfa9be8657", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.1-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.1-rc-1", + "buildTime" : "20210531095845+0000", + "commitId" : "c2d15c6444215f4b5a788a110922e3ee48a14f08", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.1-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.1-rc-1-bin.zip.sha256", + "checksum" : "bac27c9878c4aa5b4b35f92105ca71de2ad39c323bc81117e611c65f2dffd941", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.1-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89" +}, { + "version" : "7.0.2", + "buildTime" : "20210514120231+0000", + "commitId" : "1ef1b260d39daacbf9357f9d8594a8a743e2152e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.0.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.0.2-bin.zip.sha256", + "checksum" : "0e46229820205440b48a5501122002842b82886e76af35f0f3a069243dca4b3c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.0.2-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "7.0.1", + "buildTime" : "20210510160858+0000", + "commitId" : "67e618faef187783dadd03a34fdab9dc71b85b19", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.0.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.0.1-bin.zip.sha256", + "checksum" : "dccda8aa069563c8ba2f6cdfd0777df0e34a5b4d15138ca8b9757e94f4e8a8cb", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.0.1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.9", + "buildTime" : "20210507072853+0000", + "commitId" : "afe2e24ababc7b0213ccffff44970aa18035fc0e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.9-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.9-bin.zip.sha256", + "checksum" : "765442b8069c6bee2ea70713861c027587591c6b1df2c857a23361512560894e", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.9-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.9-rc-2", + "buildTime" : "20210505141217+0000", + "commitId" : "56bca94e761b37ff00dfa1afdeda4bed4f15ae45", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.9-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.9-rc-2-bin.zip.sha256", + "checksum" : "ce62238c6f84286a524590cb60706b7e6ecf00c3be5bddfa0c78345b94d0d127", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.9-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.9-rc-1", + "buildTime" : "20210427125445+0000", + "commitId" : "b110653415a762d00576628358f6bf6b9edeff25", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.9-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.9-rc-1-bin.zip.sha256", + "checksum" : "0edea03c77d94adbbb02c77a8f20c73afb8caf206f364727be0517136f6fb347", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.9-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "7.0", + "buildTime" : "20210409222731+0000", + "commitId" : "d5661e3f0e07a8caff705f1badf79fb5df8022c4", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-bin.zip.sha256", + "checksum" : "eb8b89184261025b0430f5b2233701ff1377f96da1ef5e278af6ae8bac5cc305", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "7.0-rc-2", + "buildTime" : "20210401212639+0000", + "commitId" : "912a3368b654b71250dfc92234da35a20d620393", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-rc-2-bin.zip.sha256", + "checksum" : "a5db0c919dfd184f7408ca761b438853b55ceab20d7ebb41ea3f72befd8bfb3f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "7.0-rc-1", + "buildTime" : "20210323010230+0000", + "commitId" : "f5bf7ade373b74058e49f07749083b4c3075549a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "7.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-rc-1-bin.zip.sha256", + "checksum" : "12b807b5d6b065f05e0e47d8d00e9d55fe26d3cfc6cdb22d6825a93940edec90", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "7.0-milestone-3", + "buildTime" : "20210313010321+0000", + "commitId" : "2c491436533ea8ed227f70e9246801d92848ba4a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "7.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.0-milestone-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-milestone-3-bin.zip.sha256", + "checksum" : "2e6b95b41001bd9f099b17a772c3308fe59356f8b7f995ffd7bf74400db0f13c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-milestone-3-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "7.0-milestone-2", + "buildTime" : "20210223230254+0000", + "commitId" : "b3ebdd96f5efa645c12a2b0af93025a715197e86", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "7.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.0-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-milestone-2-bin.zip.sha256", + "checksum" : "a971b1cd25348e0dbeb56e4b7a7bb7dd06d7b092c166116f5247427f32fc4281", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.8.3", + "buildTime" : "20210222161328+0000", + "commitId" : "9e26b4a9ebb910eaa1b8da8ff8575e514bc61c78", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.8.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.8.3-bin.zip.sha256", + "checksum" : "7faa7198769f872826c8ef4f1450f839ec27f0b4d5d1e51bade63667cbccd205", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.8.3-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.8.2", + "buildTime" : "20210205125300+0000", + "commitId" : "b9bd4a5c6026ac52f690eaf2829ee26563cad426", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.8.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.8.2-bin.zip.sha256", + "checksum" : "8de6efc274ab52332a9c820366dd5cf5fc9d35ec7078fd70c8ec6913431ee610", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.8.2-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "7.0-milestone-1", + "buildTime" : "20210203220023+0000", + "commitId" : "d86fce68d4c6d73845da89f55390a3ef594d1767", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "7.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-7.0-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-milestone-1-bin.zip.sha256", + "checksum" : "627fc72166c8a6ae9bf3e6d9b59c0a8cc4efe5cd5417a2fc525b5c7d05409aa5", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-7.0-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.8.1", + "buildTime" : "20210122132008+0000", + "commitId" : "31f14a87d93945024ab7a78de84102a3400fa5b2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.8.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.8.1-bin.zip.sha256", + "checksum" : "fd591a34af7385730970399f473afabdb8b28d57fd97d6625c388d090039d6fd", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.8.1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.8", + "buildTime" : "20210108163846+0000", + "commitId" : "b7e82460c5373e194fb478a998c4fcfe7da53a7e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.8-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-bin.zip.sha256", + "checksum" : "e2774e6fb77c43657decde25542dea710aafd78c4022d19b196e7e78d79d8c6c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.8-rc-5", + "buildTime" : "20210104202203+0000", + "commitId" : "d668fa996848d20ec622982d226fe84a6a538dcf", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-5-bin.zip.sha256", + "checksum" : "569bebddc0c174475cc25d708e54af793f25fd37e5a72e53674f8ef628b6ddfd", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-5-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.8-rc-4", + "buildTime" : "20201222084410+0000", + "commitId" : "b8b010210c7645fd62d2d73ac876445f2c2b94ae", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-4-bin.zip.sha256", + "checksum" : "6cb03b71767b169eda987338091172cbc84eb0cd53a93c17e6661688411e267e", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.8-rc-3", + "buildTime" : "20201217142452+0000", + "commitId" : "183b081d53044028848dab1b00a05506c564dab2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-3-bin.zip.sha256", + "checksum" : "6c929633a439d248413d3d1bff477195ee662ccadc6fdc31f6f50f8059a2be36", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.8-rc-1", + "buildTime" : "20201126092543+0000", + "commitId" : "6817ac1108f950a6ebd6ed3f74e4e86efef9246a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-1-bin.zip.sha256", + "checksum" : "155bafc3a46f81b7af481ad7dba391a3b9c12818f27da8684178ffeaa40e6d7e", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.7.1", + "buildTime" : "20201116170924+0000", + "commitId" : "2972ff02f3210d2ceed2f1ea880f026acfbab5c0", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.7.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.7.1-bin.zip.sha256", + "checksum" : "3239b5ed86c3838a37d983ac100573f64c1f3fd8e1eb6c89fa5f9529b5ec091d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.7.1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.8-milestone-3", + "buildTime" : "20201115200053+0000", + "commitId" : "31e2ecb5fb775e8ec16cbd3fafe61cc29a27fb9d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "6.8", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.8-milestone-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-milestone-3-bin.zip.sha256", + "checksum" : "47fa64cc30ab93a78901bdae68f33410da070c46f750f7e7978a6fb2a7b7ab50", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-milestone-3-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.8-milestone-2", + "buildTime" : "20201028055518+0000", + "commitId" : "d75d27c882fd80a18d853e0eb8aa0a41f9fdf6b0", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "6.8", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.8-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-milestone-2-bin.zip.sha256", + "checksum" : "0e15751be3270c3cbff10742cc259cbd3b92f379204d645397541f676b0667f6", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.7", + "buildTime" : "20201014161312+0000", + "commitId" : "312ba9e0f4f8a02d01854d1ed743b79ed996dfd3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.7-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-bin.zip.sha256", + "checksum" : "8ad57759019a9233dc7dc4d1a530cefe109dc122000d57f7e623f8cf4ba9dfc4", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.8-milestone-1", + "buildTime" : "20201013065906+0000", + "commitId" : "cffde3dcc3794fbe1f08373bf38df91b8a5abbc8", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "6.8", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.8-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-milestone-1-bin.zip.sha256", + "checksum" : "cddca6851af8503eb7c8bf5ba778c4c9e878a7b6cf74708fda09cae1952656fc", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.8-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.7-rc-5", + "buildTime" : "20201012190940+0000", + "commitId" : "e019f250eece15efaddc7c812d56b34583950a40", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-5-bin.zip.sha256", + "checksum" : "c7c33aa33d32e4bd68df71deb5c6d00f2c4675d88b8a14748661196a717dfe2c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-5-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.7-rc-4", + "buildTime" : "20201008165738+0000", + "commitId" : "40a302302ce9adfc1dc21dbc4cecae16dd980e5d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-4-bin.zip.sha256", + "checksum" : "01b4f3804b6c3f15ff3eb39e56efae55e265b6007c9fa3bd58b83b2dc4697dc4", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.7-rc-3", + "buildTime" : "20200930191651+0000", + "commitId" : "836e96a80625c9c48b612e662e3b13bd2e2f4c3b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-3-bin.zip.sha256", + "checksum" : "f4a236ffc777d6a4c25cdf7b1c45fe7024910afc65c88a9c9027aab9a765d295", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.7-rc-2", + "buildTime" : "20200925201444+0000", + "commitId" : "a57db4f9f8ee3f033fd1137d97d351d6b9c637fd", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-2-bin.zip.sha256", + "checksum" : "34d87e1fe52cb50b9670cd7c817843273d40afa572a2d4f1b6f866daedfee8af", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.7-rc-1", + "buildTime" : "20200911161705+0000", + "commitId" : "fe783600075485236c778e073cad5640729cf8f5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-1-bin.zip.sha256", + "checksum" : "77822eaca04dd0e1c59065877ab22b96f0b0c5d5a65df8f63a58ae31f8938c8a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.7-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.6.1", + "buildTime" : "20200825162912+0000", + "commitId" : "f2d1fb54a951d8b11d25748e4711bec8d128d7e3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.6.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.6.1-bin.zip.sha256", + "checksum" : "7873ed5287f47ca03549ab8dcb6dc877ac7f0e3d7b1eb12685161d10080910ac", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.6.1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.6", + "buildTime" : "20200810220619+0000", + "commitId" : "d119144684a0c301aea027b79857815659e431b9", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-bin.zip.sha256", + "checksum" : "e6f83508f0970452f56197f610d13c5f593baaf43c0e3c6a571e5967be754025", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.6-rc-6", + "buildTime" : "20200805195744+0000", + "commitId" : "d4d3dd932ea87b4f1c470c93df56dfe00862d710", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-6-bin.zip.sha256", + "checksum" : "5d24a11971f2324bf55899e9c5cd84e85fe94c63ff0456b10a53f93f7a14d288", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-6-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.6-rc-5", + "buildTime" : "20200803185444+0000", + "commitId" : "899b462147bbdf177c655173433336ffe6a93de9", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-5-bin.zip.sha256", + "checksum" : "076f1c7d463cb8fa5fec51e1818e18fed9e6c5c6dc06ffa6325eef07a9746661", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-5-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.6-rc-4", + "buildTime" : "20200730144824+0000", + "commitId" : "b573ec13e0627bf831dcaa0cfc67403c0a93fb33", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-4-bin.zip.sha256", + "checksum" : "f743d14deb36c6f1cfdf0480452e369d3098f63034c4e2c92fc1154740cb7bce", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.6-rc-3", + "buildTime" : "20200724140409+0000", + "commitId" : "13b5dcc4f294b395e61d937a3601fd47be38e76e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-3-bin.zip.sha256", + "checksum" : "030078a5900466f172f1e59e0f3351280328693929de08ab10747103fb6d9faf", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.6-rc-2", + "buildTime" : "20200720214344+0000", + "commitId" : "ff063bb2d5573aeee22c08133a268c6545195153", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-2-bin.zip.sha256", + "checksum" : "c981f305803093525a64aeee8adb356ef2b909b01b44f11a70c6ed6d6ea92fc5", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.6-rc-1", + "buildTime" : "20200713135325+0000", + "commitId" : "1ed79f4fbe18d90df8cb759235804f95a99b30a2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-1-bin.zip.sha256", + "checksum" : "2253ab246976353b225002ecba04859b5dbad0620f57052ef057fdcfcb888c5c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.6-milestone-3", + "buildTime" : "20200707160951+0000", + "commitId" : "e3fcd2f83cbe862e41a1c12df3213be5698041b5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "6.6", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.6-milestone-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-milestone-3-bin.zip.sha256", + "checksum" : "c85644cecb8276ee7621ed7b7309897f5927b175a3e658b54d25889aaf7cfeb3", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-milestone-3-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.5.1", + "buildTime" : "20200630063247+0000", + "commitId" : "66bc713f7169626a7f0134bf452abde51550ea0a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.5.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.5.1-bin.zip.sha256", + "checksum" : "50a7d30529fa939721fe9268a0205142f3f2302bcac5fb45b27a3902e58db54a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.5.1-wrapper.jar.sha256", + "wrapperChecksum" : "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857" +}, { + "version" : "6.6-milestone-2", + "buildTime" : "20200623122834+0000", + "commitId" : "19fa87a998bd6ec4c21ba50dbf6fe9d12f374193", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "6.6", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.6-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-milestone-2-bin.zip.sha256", + "checksum" : "c7a17a7816572ec0ec3632fcae4e2d877db03cb53b9127e9f5ab60529e1699e2", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.6-milestone-1", + "buildTime" : "20200611202418+0000", + "commitId" : "bc05809b2ebf24012a91dcb7f8a5cab83f94016a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "6.6", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.6-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-milestone-1-bin.zip.sha256", + "checksum" : "287d42827c2da3a27c8826cb791af3788ac7ed3bceed415125512c4140706c14", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.6-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637" +}, { + "version" : "6.5", + "buildTime" : "20200602204621+0000", + "commitId" : "a27f41e4ae5e8a41ab9b19f8dd6d86d7b384dad4", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.5-bin.zip.sha256", + "checksum" : "23e7d37e9bb4f8dabb8a3ea7fdee9dd0428b9b1a71d298aefd65b11dccea220f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.5-wrapper.jar.sha256", + "wrapperChecksum" : "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857" +}, { + "version" : "6.5-rc-1", + "buildTime" : "20200526200448+0000", + "commitId" : "2ce1bc8db4b993f0dd1d8834be5b53e43f657985", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.5-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.5-rc-1-bin.zip.sha256", + "checksum" : "fd64fa437cb3dfb53a037fff72cbe24e1280bc83ceb3bd35b2f96637ab6efeff", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.5-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857" +}, { + "version" : "6.4.1", + "buildTime" : "20200515194340+0000", + "commitId" : "1a04183c502614b5c80e33d603074e0b4a2777c5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.4.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.4.1-bin.zip.sha256", + "checksum" : "e58cdff0cee6d9b422dcd08ebeb3177bc44eaa09bd9a2e838ff74c408fe1cbcd", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.4.1-wrapper.jar.sha256", + "wrapperChecksum" : "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857" +}, { + "version" : "6.5-milestone-2", + "buildTime" : "20200515094006+0000", + "commitId" : "a1fbc4cd16fd3f9c51345111a4bd8a03364e34cd", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "6.5", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.5-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.5-milestone-2-bin.zip.sha256", + "checksum" : "3e269c619d1d19cbbcbd74165487a973d8ad307def9552883e601a93b60ced4b", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.5-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857" +}, { + "version" : "6.5-milestone-1", + "buildTime" : "20200507135506+0000", + "commitId" : "c123669c38bdc112ea577e999a0d6c1bd43af8a1", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "6.5", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.5-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.5-milestone-1-bin.zip.sha256", + "checksum" : "7e6ac72a36af92474ee8c4ddae73cbc3cc5e6be33fb088ff6668465b25addcd9", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.5-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857" +}, { + "version" : "6.4", + "buildTime" : "20200505191855+0000", + "commitId" : "42f7c3d0c3066b7b38bd0726760d4881e86fd19f", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.4-bin.zip.sha256", + "checksum" : "b888659f637887e759749f6226ddfcb1cb04f828c58c41279de73c463fdbacc9", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.4-wrapper.jar.sha256", + "wrapperChecksum" : "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857" +}, { + "version" : "6.4-rc-4", + "buildTime" : "20200430212330+0000", + "commitId" : "9aca99e4db8808881606548487fa98e012fb39e1", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-4-bin.zip.sha256", + "checksum" : "7307d73b87b4e2416eeb6a376ac7f1bcce6c7cff8eb87e6dca2e130f0016858b", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857" +}, { + "version" : "6.4-rc-3", + "buildTime" : "20200428190039+0000", + "commitId" : "87fd55432350f0e70a2498bf643a9be319d3bb4a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-3-bin.zip.sha256", + "checksum" : "b80df15a8398f020e5689233d912704e42c9dc567cd32c539a3c59f8616e8954", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857" +}, { + "version" : "6.4-rc-2", + "buildTime" : "20200422163205+0000", + "commitId" : "20a24c0cf0c107d7560b7656a96bd346bae4947b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-2-bin.zip.sha256", + "checksum" : "a74a1d4ff45e7b6f42c7384546bba2620e23a1172d4b3dcfc1418000ad5d793c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857" +}, { + "version" : "6.4-rc-1", + "buildTime" : "20200415202839+0000", + "commitId" : "4162fd0e34887a8c600495239d421cecaa5f17ff", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-1-bin.zip.sha256", + "checksum" : "f8e14fc40ebc468d578601cfeaef402844048ff8fc727d452e6b28922c53459c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.4-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857" +}, { + "version" : "6.3", + "buildTime" : "20200324195207+0000", + "commitId" : "bacd40b727b0130eeac8855ae3f9fd9a0b207c60", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.3-bin.zip.sha256", + "checksum" : "038794feef1f4745c6347107b6726279d1c824f3fc634b60f86ace1e9fbd1768", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.3-wrapper.jar.sha256", + "wrapperChecksum" : "1cef53de8dc192036e7b0cc47584449b0cf570a00d560bfaa6c9eabe06e1fc06" +}, { + "version" : "6.3-rc-4", + "buildTime" : "20200320053945+0000", + "commitId" : "507eaa2e999827ec256a700ffc413c5e92a9e69d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-4-bin.zip.sha256", + "checksum" : "eb17f321c7892267869541962484de3c375b12dfe98dfe2a55139996d1e71aec", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "1cef53de8dc192036e7b0cc47584449b0cf570a00d560bfaa6c9eabe06e1fc06" +}, { + "version" : "6.3-rc-3", + "buildTime" : "20200318152649+0000", + "commitId" : "da54f723f8f1c5f94526bc72bf78f15b0f1409ec", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-3-bin.zip.sha256", + "checksum" : "492b013ee962016f83a49defd221bd1fdc80003a9d50a9ad3c5f869c8f48c864", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "1cef53de8dc192036e7b0cc47584449b0cf570a00d560bfaa6c9eabe06e1fc06" +}, { + "version" : "6.3-rc-2", + "buildTime" : "20200317124036+0000", + "commitId" : "2cc0a9fd7e59c7876fe2fac480124f07ea31be5b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-2-bin.zip.sha256", + "checksum" : "7431e8b723dbe8fea36b635ec578a676df5458a21faa7aaabc8279dc5f9c86dc", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "1cef53de8dc192036e7b0cc47584449b0cf570a00d560bfaa6c9eabe06e1fc06" +}, { + "version" : "6.3-rc-1", + "buildTime" : "20200311214114+0000", + "commitId" : "7bc8f57a5b03db954a651cf24b5247aa9629e72f", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-1-bin.zip.sha256", + "checksum" : "b72707eb36a9e6fffb8dbe1653c59d8cbd7e4b839f4ef6131c46629dd9fa5686", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.3-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "1cef53de8dc192036e7b0cc47584449b0cf570a00d560bfaa6c9eabe06e1fc06" +}, { + "version" : "6.2.2", + "buildTime" : "20200304084931+0000", + "commitId" : "7d0bf6dcb46c143bcc3b7a0fa40a8e5ca28e5856", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.2.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.2.2-bin.zip.sha256", + "checksum" : "0f6ba231b986276d8221d7a870b4d98e0df76e6daf1f42e7c0baec5032fb7d17", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.2.2-wrapper.jar.sha256", + "wrapperChecksum" : "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6" +}, { + "version" : "6.2.1", + "buildTime" : "20200224202410+0000", + "commitId" : "aacbcb7e587faa6a8e7851751a76183b6187b164", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.2.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.2.1-bin.zip.sha256", + "checksum" : "a68ca7ba57f3404c3f6fc1f70a02d3a7d78652e6b46bbfaff83fc9a17168c279", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.2.1-wrapper.jar.sha256", + "wrapperChecksum" : "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6" +}, { + "version" : "6.2", + "buildTime" : "20200217083201+0000", + "commitId" : "61d3320259a1a0d31519bf208eb13741679a742f", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.2-bin.zip.sha256", + "checksum" : "b93a5f30d01195ec201e240f029c8b42d59c24086b8d1864112c83558e23cf8a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.2-wrapper.jar.sha256", + "wrapperChecksum" : "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6" +}, { + "version" : "6.2-rc-3", + "buildTime" : "20200213012914+0000", + "commitId" : "68b48dea20ab558725a7f61ab1e523253df94495", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.2-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.2-rc-3-bin.zip.sha256", + "checksum" : "3e8db98ac4398938ffcdb95241518eadf8858cee65f951f5f75e22cf5efb4cc2", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.2-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6" +}, { + "version" : "6.2-rc-2", + "buildTime" : "20200211221400+0000", + "commitId" : "8a7f6425a217ceeff6c5a76f8dd533b770606110", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.2-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.2-rc-2-bin.zip.sha256", + "checksum" : "cf53ad90046348ab326f07b77f7362d6e8f101125ddd815e46df2f296ed2a0ee", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.2-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6" +}, { + "version" : "6.2-rc-1", + "buildTime" : "20200203123003+0000", + "commitId" : "3931d0c37f00de3bd45f713520bd47a09b6bad30", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.2-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.2-rc-1-bin.zip.sha256", + "checksum" : "4e40b36d619f5e7a9eb9a97d6652c062a13df828995be79137b7215c062b9139", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.2-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6" +}, { + "version" : "6.1.1", + "buildTime" : "20200124223024+0000", + "commitId" : "a8c3750babb99d1894378073499d6716a1a1fa5d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.1.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.1.1-bin.zip.sha256", + "checksum" : "9d94e6e4a28ad328072ef6e56bce79a810494ae756751fdcedffdeaf27c093b1", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.1.1-wrapper.jar.sha256", + "wrapperChecksum" : "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6" +}, { + "version" : "6.1", + "buildTime" : "20200115235646+0000", + "commitId" : "539d277fdba571ebcc9617a34329c83d7d2b259e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-bin.zip.sha256", + "checksum" : "d0c43d14e1c70a48b82442f435d06186351a2d290d72afd5b8866f15e6d7038a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-wrapper.jar.sha256", + "wrapperChecksum" : "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6" +}, { + "version" : "6.1-rc-3", + "buildTime" : "20200113162324+0000", + "commitId" : "52aebd9acc0e395deba9a17db22f6cffe7d61cf1", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.1-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-rc-3-bin.zip.sha256", + "checksum" : "f150eccc7ab05d14bd89a04cdfc4de94e320d5962828e69d10c43bfff12d176d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6" +}, { + "version" : "6.1-rc-2", + "buildTime" : "20200107211705+0000", + "commitId" : "8ea1a9823c6a4bfe11b14a3fcbed0630992b126f", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.1-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-rc-2-bin.zip.sha256", + "checksum" : "f451724e3f6157893e6efd98f91e26fbed1bac89d43fd248d4535cc918b83ee7", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6" +}, { + "version" : "6.1-rc-1", + "buildTime" : "20191219215643+0000", + "commitId" : "091da954cc24262bb056965f70f172e1e587e9ca", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.1-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-rc-1-bin.zip.sha256", + "checksum" : "8262a8509cdd281ab19b87c79f03d4a5d0629f2a03a28c284203431f12c70960", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6" +}, { + "version" : "6.1-milestone-3", + "buildTime" : "20191203141333+0000", + "commitId" : "b360d725d00cc62bad1e1f95f66077b18b5cf9a0", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "6.1", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.1-milestone-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-milestone-3-bin.zip.sha256", + "checksum" : "31b51f1c7db4aa3927c3621a5732e777f7655f7b4d769225337c251cfbb8cdf6", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-milestone-3-wrapper.jar.sha256", + "wrapperChecksum" : "3888c76faa032ea8394b8a54e04ce2227ab1f4be64f65d450f8509fe112d38ce" +}, { + "version" : "6.1-milestone-2", + "buildTime" : "20191128101755+0000", + "commitId" : "0f4f797500d442efec2e41485029d66470049b4a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "6.1", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.1-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-milestone-2-bin.zip.sha256", + "checksum" : "3c2040ce128a323e96163eb2e87ac7a50475756f767fa7a139e0edc34447548e", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-milestone-2-wrapper.jar.sha256", + "wrapperChecksum" : "3888c76faa032ea8394b8a54e04ce2227ab1f4be64f65d450f8509fe112d38ce" +}, { + "version" : "6.1-milestone-1", + "buildTime" : "20191120132405+0000", + "commitId" : "0e10d43391411ce56234fec67bfa38066df5f191", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "6.1", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.1-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-milestone-1-bin.zip.sha256", + "checksum" : "b13a85987bf9b2b8aa7c24a9b8e68c46a32acb6b623477ac457bca8b0ea9fc04", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.1-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "3888c76faa032ea8394b8a54e04ce2227ab1f4be64f65d450f8509fe112d38ce" +}, { + "version" : "6.0.1", + "buildTime" : "20191118202501+0000", + "commitId" : "fad121066a68c4701acd362daf4287a7c309a0f5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.0.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.0.1-bin.zip.sha256", + "checksum" : "d364b7098b9f2e58579a3603dc0a12a1991353ac58ed339316e6762b21efba44", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.0.1-wrapper.jar.sha256", + "wrapperChecksum" : "28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e" +}, { + "version" : "6.0", + "buildTime" : "20191108181212+0000", + "commitId" : "0a5b531749138f2f983f7c888fa7790bfc52d88a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.0-bin.zip.sha256", + "checksum" : "5a3578b9f0bb162f5e08cf119f447dfb8fa950cedebb4d2a977e912a11a74b91", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.0-wrapper.jar.sha256", + "wrapperChecksum" : "28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e" +}, { + "version" : "6.0-rc-3", + "buildTime" : "20191105175639+0000", + "commitId" : "74fa127e4a6787a1983bd8467e9443662fa0fe3d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.0-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.0-rc-3-bin.zip.sha256", + "checksum" : "d30c88a6644e28ba5a45923ae3a4850d55ba0f35dd14a3108595359cdfb0401e", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.0-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e" +}, { + "version" : "5.6.4", + "buildTime" : "20191101204200+0000", + "commitId" : "dd870424f9bd8e195d614dc14bb140f43c22da98", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.6.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.6.4-bin.zip.sha256", + "checksum" : "1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.6.4-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "6.0-rc-2", + "buildTime" : "20191030160321+0000", + "commitId" : "990710705df1acf6809b5982a37307677a436d6f", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.0-rc-2-bin.zip.sha256", + "checksum" : "dbb366685bd15d08e592e384744bc19715d00203adeacf43dcf4c8c3a46b6b01", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.0-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e" +}, { + "version" : "6.0-rc-1", + "buildTime" : "20191018192416+0000", + "commitId" : "5ed5fea1446b3300afa321c661d6e865ab3157a1", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "6.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-6.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-6.0-rc-1-bin.zip.sha256", + "checksum" : "e73ab0c91f71e051f9798c6c89e0b9c0ecc95f0877e683554425c68835998509", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-6.0-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e" +}, { + "version" : "5.6.3", + "buildTime" : "20191018002836+0000", + "commitId" : "bd168bbf5d152c479186a897f2cea494b7875d13", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.6.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.6.3-bin.zip.sha256", + "checksum" : "60a6d8f687e3e7a4bc901cc6bc3db190efae0f02f0cc697e323e0f9336f224a3", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.6.3-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.6.2", + "buildTime" : "20190905161354+0000", + "commitId" : "55a5e53d855db8fc7b0e494412fc624051a8e781", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.6.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.6.2-bin.zip.sha256", + "checksum" : "32fce6628848f799b0ad3205ae8db67d0d828c10ffe62b748a7c0d9f4a5d9ee0", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.6.2-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.6.1", + "buildTime" : "20190828024934+0000", + "commitId" : "b6bd8e7934ca41d9e52610058aa7cb834df81fc4", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.6.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.6.1-bin.zip.sha256", + "checksum" : "0986244820e4a35d32d91df2ec4b768b5ba5d6c8246753794f85159f9963ec12", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.6.1-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.6", + "buildTime" : "20190814210525+0000", + "commitId" : "f0b9d60906c7b8c42cd6c61a39ae7b74767bb012", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.6-bin.zip.sha256", + "checksum" : "15c02ef5dd3631ec02ac52e8725703e0285d9a7eecbf4e5939aa9e924604d01d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.6-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.6-rc-2", + "buildTime" : "20190807150342+0000", + "commitId" : "19680ca6170bfa0a541cc161004c95fe23bb3e36", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.6-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.6-rc-2-bin.zip.sha256", + "checksum" : "26c4451c7297dd160314fe509273f97c4f1ee68527dc3fda3d87f0973df8eecb", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.6-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.6-rc-1", + "buildTime" : "20190729112626+0000", + "commitId" : "f51e6f079cea308de4ef2fb04bdc3b108db6eeaf", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.6-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.6-rc-1-bin.zip.sha256", + "checksum" : "e09932eeca0e94f08bf81b1b58bc199ee8b8044d553c9ed5e1a906b641ce9c90", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.6-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.5.1", + "buildTime" : "20190710203812+0000", + "commitId" : "3245f748c7061472da4dc184991919810f7935a5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.5.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.5.1-bin.zip.sha256", + "checksum" : "222a03fcf2fcaf3691767ce9549f78ebd4a77e73f9e23a396899fb70b420cd00", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.5.1-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.5", + "buildTime" : "20190628173605+0000", + "commitId" : "83820928f3ada1a3a1dbd9a6c0d47eb3f199378f", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.5-bin.zip.sha256", + "checksum" : "8d78b2ed63e7f07ad169c1186d119761c4773e681f332cfe1901045b1b0141bc", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.5-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.5-rc-4", + "buildTime" : "20190624152432+0000", + "commitId" : "787552139af6f0f19c748ac6a917a54d33f15ab0", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-4-bin.zip.sha256", + "checksum" : "8d0844d974a2da25b741382094cb63d035ad2e9572b978e63bdceb927231e9ea", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-4-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.5-rc-3", + "buildTime" : "20190614231538+0000", + "commitId" : "37d86b7ed068116d20e7a31c88d9dfe3e8ec3bd8", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-3-bin.zip.sha256", + "checksum" : "1d3f37c0b53084ba5e6642691a9b9fb5f588a801f8ca613f15d82042b2c7dad8", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.5-rc-2", + "buildTime" : "20190607090657+0000", + "commitId" : "360949f7e785578195c7fe7e4b6ca2dc566d55c5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-2-bin.zip.sha256", + "checksum" : "440429bd2195030d944b8d148c0d056edb2463813a04132ee7bf7123b471858a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.5-rc-1", + "buildTime" : "20190529115119+0000", + "commitId" : "6c070eb6e47979d5642a181e3efa11bf237dc69c", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-1-bin.zip.sha256", + "checksum" : "7fe31cb63223b292fae0c42b124de3d8d028a3567992e9caf08a240c10d48f6c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.5-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.4.1", + "buildTime" : "20190426081442+0000", + "commitId" : "261d171646b36a6a28d5a19a69676cd098a4c19d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.4.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.4.1-bin.zip.sha256", + "checksum" : "7bdbad1e4f54f13c8a78abc00c26d44dd8709d4aedb704d913fb1bb78ac025dc", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.4.1-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.4", + "buildTime" : "20190416024416+0000", + "commitId" : "a4f3f91a30d4e36d82cc7592c4a0726df52aba0d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.4-bin.zip.sha256", + "checksum" : "c8c17574245ecee9ed7fe4f6b593b696d1692d1adbfef425bef9b333e3a0e8de", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.4-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.4-rc-1", + "buildTime" : "20190410011532+0000", + "commitId" : "efacce4b4916e5709f25141b61fc3ec594d3893d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.4-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.4-rc-1-bin.zip.sha256", + "checksum" : "86dbc7499f0cc0810c2ca8683b5adcd0dd7841bfe14544401de0e49b885542a2", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.4-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.3.1", + "buildTime" : "20190328090923+0000", + "commitId" : "f2fae6ba563cfb772c8bc35d31e43c59a5b620c3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.3.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.3.1-bin.zip.sha256", + "checksum" : "1c59a17a054e9c82f0dd881871c9646e943ec4c71dd52ebc6137d17f82337436", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.3.1-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.3", + "buildTime" : "20190320110329+0000", + "commitId" : "f5c64796748a98efdbf6f99f44b6afe08492c2a0", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.3-bin.zip.sha256", + "checksum" : "bed2bdd3955be5a09ca7e0201e9d131f194f7f6c466e1795a733733ccfb09f25", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.3-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.3-rc-3", + "buildTime" : "20190313202708+0000", + "commitId" : "4b3a8d84d9a8983836f9bb3006c39baec692ca4b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.3-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.3-rc-3-bin.zip.sha256", + "checksum" : "63b7114caa8629f5dc3074aab09b87476fbfba548ea20aefe97068287621acb7", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.3-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.3-rc-2", + "buildTime" : "20190311210726+0000", + "commitId" : "cb19a113017a9351f8d9fa767d50a9a0f590617a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.3-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.3-rc-2-bin.zip.sha256", + "checksum" : "4110201a819b28600bfe06ef02950c6b749616c2197ed0da2514451a378c709b", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.3-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.3-rc-1", + "buildTime" : "20190305205202+0000", + "commitId" : "ec8a8bc2dd4c0761880ccec4f28c5db79c2244bb", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.3-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.3-rc-1-bin.zip.sha256", + "checksum" : "5650e801e191cc8f12f6ea3f27e081ad0a0012d44d53ba226b7c148d3282956c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.3-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f" +}, { + "version" : "5.2.1", + "buildTime" : "20190208190010+0000", + "commitId" : "f02764e074c32ee8851a4e1877dd1fea8ffb7183", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.2.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.2.1-bin.zip.sha256", + "checksum" : "748c33ff8d216736723be4037085b8dc342c6a0f309081acf682c9803e407357", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.2.1-wrapper.jar.sha256", + "wrapperChecksum" : "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae" +}, { + "version" : "5.2", + "buildTime" : "20190204111648+0000", + "commitId" : "840644a429c8b8b9ae399867eb1660e3109bc7a3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.2-bin.zip.sha256", + "checksum" : "ff322863250159595e93b5a4d17a6f0d21c59a1a0497c1e1cf1d53826485503f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.2-wrapper.jar.sha256", + "wrapperChecksum" : "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae" +}, { + "version" : "5.2-rc-1", + "buildTime" : "20190128225604+0000", + "commitId" : "633c8d5c1c568402d7a26e94c1213d747bfa594b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.2-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.2-rc-1-bin.zip.sha256", + "checksum" : "9e882e3899d7ef999f862f71a4a7494505a9a3f87c1cea427a3ae44941b94c70", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.2-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae" +}, { + "version" : "5.1.1", + "buildTime" : "20190110230502+0000", + "commitId" : "3c9abb645fb83932c44e8610642393ad62116807", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.1.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.1.1-bin.zip.sha256", + "checksum" : "4953323605c5d7b89e97d0dc7779e275bccedefcdac090aec123375eae0cc798", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.1.1-wrapper.jar.sha256", + "wrapperChecksum" : "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae" +}, { + "version" : "5.1", + "buildTime" : "20190102185747+0000", + "commitId" : "d09c2e354576ac41078c322815cc6db2b66d976e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.1-bin.zip.sha256", + "checksum" : "7506638a380092a0406364c79d6c87d03d23017fc25a5770379d1ce23c3fcd4d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.1-wrapper.jar.sha256", + "wrapperChecksum" : "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae" +}, { + "version" : "5.1-rc-3", + "buildTime" : "20181221230345+0000", + "commitId" : "bf267654ac894c160b5b6c5e5c06d72f1ecaa23c", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.1-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.1-rc-3-bin.zip.sha256", + "checksum" : "aba05e1d60c4b976e8bb9ea1911aaa8b19783cdc63e788320fcb75e9613ba45d", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.1-rc-3-wrapper.jar.sha256", + "wrapperChecksum" : "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae" +}, { + "version" : "5.1-rc-2", + "buildTime" : "20181217224201+0000", + "commitId" : "4f93941ff2f23ed981b9416a66af36ab0a8ef4de", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.1-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.1-rc-2-bin.zip.sha256", + "checksum" : "a5f43f07530f2e02f4df3b0fe14300586d6302ad4462d0ed95971e6bf107b66a", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.1-rc-2-wrapper.jar.sha256", + "wrapperChecksum" : "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae" +}, { + "version" : "5.1-rc-1", + "buildTime" : "20181213060004+0000", + "commitId" : "0937d57caa43dabc31d331dea6c9c0cf72de8607", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.1-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.1-rc-1-bin.zip.sha256", + "checksum" : "160b5b497b076c8d490fd7f2de6d389db4972dc495d5b86e5713ebdf63bf47fd", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.1-rc-1-wrapper.jar.sha256", + "wrapperChecksum" : "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae" +}, { + "version" : "4.10.3", + "buildTime" : "20181205005054+0000", + "commitId" : "e76905e3a1034e6f724566aeb985621347ff43bc", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.10.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.10.3-bin.zip.sha256", + "checksum" : "8626cbf206b4e201ade7b87779090690447054bc93f052954c78480fa6ed186e", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.10.3-wrapper.jar.sha256", + "wrapperChecksum" : "660ab018b8e319e9ae779fdb1b7ac47d0321bde953bf0eb4545f14952cfdcaa3" +}, { + "version" : "5.1-milestone-1", + "buildTime" : "20181203174147+0000", + "commitId" : "00340d696f2e7161233ac9a363cd4e5238588318", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "5.1", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.1-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.1-milestone-1-bin.zip.sha256", + "checksum" : "f7f38376ef3cf461eaf4da9d7abf4a9a4325cbbc93fbe19efbdb2f35c4171757", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.1-milestone-1-wrapper.jar.sha256", + "wrapperChecksum" : "8ff6bee43c55efc0cce9e1147860a76fc970398fbef587e64b6e7a5a7e0291df" +}, { + "version" : "5.0", + "buildTime" : "20181126114843+0000", + "commitId" : "7fc6e5abf2fc5fe0824aec8a0f5462664dbcd987", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.0-bin.zip.sha256", + "checksum" : "6157ac9f3410bc63644625b3b3e9e96c963afd7910ae0697792db57813ee79a6", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-5.0-wrapper.jar.sha256", + "wrapperChecksum" : "f1a597a1f2b23089deec11d5b924d074f9e4ed810f2093be7021ded01c8073ad" +}, { + "version" : "5.0-rc-5", + "buildTime" : "20181122195845+0000", + "commitId" : "42e59c2484a49702234030881640aa8d8bfa6d43", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.0-rc-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.0-rc-5-bin.zip.sha256", + "checksum" : "369ff446973f5309c550b9ef543d5cdf45470a0db20e3f6c00dcca122faa045d" +}, { + "version" : "5.0-rc-4", + "buildTime" : "20181120092642+0000", + "commitId" : "50c28fc7284c0aa377c8edb49723d9258565780f", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.0-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.0-rc-4-bin.zip.sha256", + "checksum" : "414d6ffa6a4ec14355eb78b7577576ab63d07658ac640ec41b5e63b573400de0" +}, { + "version" : "5.0-rc-3", + "buildTime" : "20181114160147+0000", + "commitId" : "63f11c722124617f7cbe2f95ad5a5e045b8b42f6", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.0-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.0-rc-3-bin.zip.sha256", + "checksum" : "684a20ad90fc0d133c7b03da392c21e2a211b5df32faacb9f72e6847628aea20" +}, { + "version" : "5.0-rc-2", + "buildTime" : "20181112080541+0000", + "commitId" : "bcbd24a720641ddf900df0503def5b5c08c4a8b4", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.0-rc-2-bin.zip.sha256", + "checksum" : "6585344d4a6047bcd19894c9d75e32d62a0a908b6886c3f21049b7d9e3a14d02" +}, { + "version" : "5.0-rc-1", + "buildTime" : "20181030135922+0000", + "commitId" : "0b94d7e5908d1d96b8a353d1f28d9c443d767327", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "5.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.0-rc-1-bin.zip.sha256", + "checksum" : "6494ddd4191b99d1a5e8d31fc179d1cab68631ebbac9adfcaa229f56496c5427" +}, { + "version" : "5.0-milestone-1", + "buildTime" : "20181002224615+0000", + "commitId" : "abaf9d545140f5775f3442e4cfe9c61603d4fb3e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "5.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-5.0-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-5.0-milestone-1-bin.zip.sha256", + "checksum" : "0c4e5366b479934844da39c156c20d509f6b2c40b978c10598221fd591c0cf57" +}, { + "version" : "4.10.2", + "buildTime" : "20180919181015+0000", + "commitId" : "b4d8d5d170bb4ba516e88d7fe5647e2323d791dd", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.10.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.10.2-bin.zip.sha256", + "checksum" : "b49c6da1b2cb67a0caf6c7480630b51c70a11ca2016ff2f555eaeda863143a29", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.10.2-wrapper.jar.sha256", + "wrapperChecksum" : "ad63ba21fb91e490e0f6fd0ca7d4049241f0f68a454b0b3075c041c4554e611c" +}, { + "version" : "4.10.1", + "buildTime" : "20180912113327+0000", + "commitId" : "76c9179ea9bddc32810f9125ad97c3315c544919", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.10.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.10.1-bin.zip.sha256", + "checksum" : "e53ce3a01cf016b5d294eef20977ad4e3c13e761ac1e475f1ffad4c6141a92bd", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.10.1-wrapper.jar.sha256", + "wrapperChecksum" : "d8a69ca8efe271d8de080c42a2ea4b08fc9e85c41aa2d163255c70d9da239db0" +}, { + "version" : "4.10", + "buildTime" : "20180827183506+0000", + "commitId" : "ee3751ed9f2034effc1f0072c2b2ee74b5dce67d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.10-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.10-bin.zip.sha256", + "checksum" : "248cfd92104ce12c5431ddb8309cf713fe58de8e330c63176543320022f59f18", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.10-wrapper.jar.sha256", + "wrapperChecksum" : "778e7f46bd67eaea2de5bcbdbb40878c6614656014ba59a72ce8648eaf43a925" +}, { + "version" : "4.10-rc-3", + "buildTime" : "20180823120756+0000", + "commitId" : "1b827f2119c11123e178e731421ae79d52a8991a", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.10", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.10-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.10-rc-3-bin.zip.sha256", + "checksum" : "4e5f3a2e0c4f1f0313211253d799dd66570afdf0ebb3d785ee97a97d942c632d" +}, { + "version" : "4.10-rc-2", + "buildTime" : "20180814180001+0000", + "commitId" : "7d610b59feb93583b5d19b01ce63477472d87696", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.10", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.10-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.10-rc-2-bin.zip.sha256", + "checksum" : "e90d3c32910e259814bcca82b3911172ecca1ff1ab5ed69b4de3c1df8b378b40" +}, { + "version" : "4.10-rc-1", + "buildTime" : "20180809061937+0000", + "commitId" : "97951b7f541f1da43de291246cc7b17507e75a14", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.10", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.10-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.10-rc-1-bin.zip.sha256", + "checksum" : "f68220df44d943418a49aecccf0d5b8547f52201926bc8f13c2c3e5b81eb763a" +}, { + "version" : "4.9", + "buildTime" : "20180716081403+0000", + "commitId" : "efcf8c1cf533b03c70f394f270f46a174c738efc", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.9-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.9-bin.zip.sha256", + "checksum" : "e66e69dce8173dd2004b39ba93586a184628bc6c28461bc771d6835f7f9b0d28", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.9-wrapper.jar.sha256", + "wrapperChecksum" : "e55e7e47a79e04c26363805b31e2f40b7a9cc89ea12113be7de750a3b2cede85" +}, { + "version" : "4.9-rc-2", + "buildTime" : "20180711004640+0000", + "commitId" : "9b5ff22063b9eb8bab8a2f304d47903b531054c7", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.9-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.9-rc-2-bin.zip.sha256", + "checksum" : "651e3d8c41221e7e767f23a5ead0bbe06ada6abec017e7b6ce99f3cbcb4808e5" +}, { + "version" : "4.9-rc-1", + "buildTime" : "20180703131446+0000", + "commitId" : "c38f1f17599655fc0de0ea44a8d366aebcfdb9f2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.9-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.9-rc-1-bin.zip.sha256", + "checksum" : "52e32ccfa4edc679e6bfad93e0f9fcd6358dc39dfb7bf8f2e1222b8d18ead359" +}, { + "version" : "4.8.1", + "buildTime" : "20180621075306+0000", + "commitId" : "0abdea078047b12df42e7750ccba34d69b516a22", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.8.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.8.1-bin.zip.sha256", + "checksum" : "af334d994b5e69e439ab55b5d2b7d086da5ea6763d78054f49f147b06370ed71", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.8.1-wrapper.jar.sha256", + "wrapperChecksum" : "080e30657661539701b66827b96eb0043191e0a7a73090e8a57bd6735e5af5c5" +}, { + "version" : "4.8", + "buildTime" : "20180604103958+0000", + "commitId" : "9e1261240e412cbf61a5e3a5ab734f232b2f887d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.8-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.8-bin.zip.sha256", + "checksum" : "f3e29692a8faa94eb0b02ebf36fa263a642b3ae8694ef806c45c345b8683f1ba", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.8-wrapper.jar.sha256", + "wrapperChecksum" : "4160d5a6d8d6efc6af336582bbbba8194e4d7a742835f7b0fd3964cbd419c994" +}, { + "version" : "4.8-rc-3", + "buildTime" : "20180531140436+0000", + "commitId" : "9803e11cf1218511e0fd1595bdc66e0a6210a0b6", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.8-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.8-rc-3-bin.zip.sha256", + "checksum" : "459195ae148201ef4c1235cfca08aaa20b1293f280fb643c666499a58e228dac" +}, { + "version" : "4.8-rc-2", + "buildTime" : "20180524092821+0000", + "commitId" : "0b1824635622a85b201776fc1245b6a40f4a5b22", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.8-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.8-rc-2-bin.zip.sha256", + "checksum" : "a89682f4c2ec77a2b49ca139628e95de7b7648552643edd2ea3988cbd0a0a07b" +}, { + "version" : "4.8-rc-1", + "buildTime" : "20180515173233+0000", + "commitId" : "cfb66ee34d37b52c741150a398663618a94d2045", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.8-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.8-rc-1-bin.zip.sha256", + "checksum" : "c6ba15fbb51ac0c8b370dfd3a239c3b48b1cee5bbfdf5597cb586a216f8690b0" +}, { + "version" : "4.7", + "buildTime" : "20180418090912+0000", + "commitId" : "b9a962bf70638332300e7f810689cb2febbd4a6c", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.7-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.7-bin.zip.sha256", + "checksum" : "fca5087dc8b50c64655c000989635664a73b11b9bd3703c7d6cabd31b7dcdb04", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.7-wrapper.jar.sha256", + "wrapperChecksum" : "7d6fe0a055f133226409de2457fb0e887d1f6b096f36c8d5fd76fb7a9357cd45" +}, { + "version" : "4.7-rc-2", + "buildTime" : "20180413125323+0000", + "commitId" : "943291f9d94f68a0172ce7648b6a9dab7711fd47", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.7-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.7-rc-2-bin.zip.sha256", + "checksum" : "b9289ecb1f9ce8bc325ce71805ee779f3e03da22e394deced6e682cd6297d110" +}, { + "version" : "4.7-rc-1", + "buildTime" : "20180403113602+0000", + "commitId" : "2f0b7b15068980c05470af1882d79e9c8ef5c71b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.7-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.7-rc-1-bin.zip.sha256", + "checksum" : "fbf286558c27f6026c0da6daa57750ce1539e6535227e6738a6f4909dc130d12" +}, { + "version" : "4.6", + "buildTime" : "20180228133636+0000", + "commitId" : "8fa6ce7945b640e6168488e4417f9bb96e4ab46c", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.6-bin.zip.sha256", + "checksum" : "98bd5fd2b30e070517e03c51cbb32beee3e2ee1a84003a5a5d748996d4b1b915", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.6-wrapper.jar.sha256", + "wrapperChecksum" : "381dff8aa434499aa93bc25572b049c8c586a67faff2c02f375e4f23e17e49de" +}, { + "version" : "4.6-rc-2", + "buildTime" : "20180221152842+0000", + "commitId" : "819e0059da49f469d3e9b2896dc4e72537c4847d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.6-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.6-rc-2-bin.zip.sha256", + "checksum" : "1fab26f72fe5f52d5773c2cf4bb0beaec60c3b24a5f49d09be5a092a7473bfdd" +}, { + "version" : "4.6-rc-1", + "buildTime" : "20180216162807+0000", + "commitId" : "ac6267d33138856ffe71b159ab8154e71e9da72e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.6-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.6-rc-1-bin.zip.sha256", + "checksum" : "f8ed6380bcc3db71ec524950aa53d78ccf1da0ead900f379f3573dfef60500c9" +}, { + "version" : "4.5.1", + "buildTime" : "20180205132249+0000", + "commitId" : "37007e1c012001ff09973e0bd095139239ecd3b3", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.5.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.5.1-bin.zip.sha256", + "checksum" : "3e2ea0d8b96605b7c528768f646e0975bd9822f06df1f04a64fd279b1a17805e", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.5.1-wrapper.jar.sha256", + "wrapperChecksum" : "3bf04e39ed259ff0a1217a875199a11775855d2a29207b98318ac79178249de8" +}, { + "version" : "4.5", + "buildTime" : "20180124170452+0000", + "commitId" : "77d0ec90636f43669dc794ca17ef80dd65457bec", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.5-bin.zip.sha256", + "checksum" : "03f2a43a314ff0fb843a85ef68078e06d181c4549c1e5fb983f289382b59b5e3", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.5-wrapper.jar.sha256", + "wrapperChecksum" : "d283a04caee0e97b666b09e50ab394834934bee6225c2e9cd4650afdeac43828" +}, { + "version" : "4.5-rc-2", + "buildTime" : "20180122164244+0000", + "commitId" : "459d2caa04b8145b40955950cc6037034e9123b1", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.5-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.5-rc-2-bin.zip.sha256", + "checksum" : "401363cc3491055b878bba54463129c3bb0d3a76e337e5e515729a6b6fa4c883" +}, { + "version" : "4.5-rc-1", + "buildTime" : "20180109010527+0000", + "commitId" : "d6e5a1c698884ebc887980c82687c8c11ad22dd6", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.5-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.5-rc-1-bin.zip.sha256", + "checksum" : "fa8f4721d121d4501871877a9c1bf83db5ba44bb0ee9dd177a4981c11cede7c6" +}, { + "version" : "4.4.1", + "buildTime" : "20171220154523+0000", + "commitId" : "10ed9dc355dc39f6307cc98fbd8cea314bdd381c", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.4.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.4.1-bin.zip.sha256", + "checksum" : "e7cf7d1853dfc30c1c44f571d3919eeeedef002823b66b6a988d27e919686389", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.4.1-wrapper.jar.sha256", + "wrapperChecksum" : "4e318d74d06aa7b998091345c397a3c7c4b291b59da31e6f9c772a596711acac" +}, { + "version" : "4.4", + "buildTime" : "20171206090506+0000", + "commitId" : "cf7821a6f79f8e2a598df21780e3ff7ce8db2b82", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.4-bin.zip.sha256", + "checksum" : "fa4873ae2c7f5e8c02ec6948ba95848cedced6134772a0169718eadcb39e0a2f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.4-wrapper.jar.sha256", + "wrapperChecksum" : "88b5b31f390a268ab3773df580d83fd1e388f49c2b685f78a16600577bd72fe2" +}, { + "version" : "4.4-rc-6", + "buildTime" : "20171204084815+0000", + "commitId" : "cf7821a6f79f8e2a598df21780e3ff7ce8db2b82", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-6-bin.zip.sha256", + "checksum" : "03480998491b94e27d95759c47ae6ac864e95b9db17cd5890cd37ff536431ba0" +}, { + "version" : "4.4-rc-5", + "buildTime" : "20171130152137+0000", + "commitId" : "f4daa310b16df9abd4f37257bae8312b5293a251", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-5-bin.zip.sha256", + "checksum" : "b52d338f285dd255f3abf6bcd3e0b447cc62aa8dc83a281c42f8ec1aec10dc89" +}, { + "version" : "4.4-rc-4", + "buildTime" : "20171128123659+0000", + "commitId" : "f0a427cdb7eaa95779c9ccd8147878970fbb53fb", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-4-bin.zip.sha256", + "checksum" : "d663fe846e3b2e30285b578e0bb957c4fb846cca0f36694ab32d5e5ba25c0cb8" +}, { + "version" : "4.4-rc-3", + "buildTime" : "20171127103138+0000", + "commitId" : "340c20678da78bf34d58da72071f95bb60d037e9", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-3-bin.zip.sha256", + "checksum" : "607b5c3493dc78da8d6207edd43c680132d9b69912fa1de2fa42f24be72f30cd" +}, { + "version" : "4.4-rc-2", + "buildTime" : "20171124103528+0000", + "commitId" : "9ab11aefa43e1dedcf68294d5f15f246bbe54221", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-2-bin.zip.sha256", + "checksum" : "939ec641887df3677dd3ac1ed8cb6e2815dae0f33bf36db8ae64a71b4c32f8f8" +}, { + "version" : "4.4-rc-1", + "buildTime" : "20171121153105+0000", + "commitId" : "089fe1e08ca477b49583c6e00abf87f4675d0c06", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.4-rc-1-bin.zip.sha256", + "checksum" : "3b5d35b41d5807f6471e90ca81e4d1bf4fee48deca7d99e0e579f758b4db85b1" +}, { + "version" : "4.3.1", + "buildTime" : "20171108085945+0000", + "commitId" : "e4f4804807ef7c2829da51877861ff06e07e006d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.3.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.3.1-bin.zip.sha256", + "checksum" : "15ebe098ce0392a2d06d252bff24143cc88c4e963346582c8d88814758d93ac7", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.3.1-wrapper.jar.sha256", + "wrapperChecksum" : "383f4efa709b52632a520708e8a07353961970941ab3867ab8ac182132ce1c54" +}, { + "version" : "4.3", + "buildTime" : "20171030154329+0000", + "commitId" : "c684c202534c4138b51033b52d871939b8d38d72", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.3-bin.zip.sha256", + "checksum" : "8dcbf44eef92575b475dcb1ce12b5f19d38dc79e84c662670248dc8b8247654c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.3-wrapper.jar.sha256", + "wrapperChecksum" : "ba496e7e0e03ffa432eaf715bb1466fac2ffc8491a71e7164a5438c48c79d8ea" +}, { + "version" : "4.3-rc-4", + "buildTime" : "20171026162557+0000", + "commitId" : "89af43c4d0506f69980f00dde78c97b2f81437f8", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.3-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.3-rc-4-bin.zip.sha256", + "checksum" : "6615d3d67b7c5ca936ef34464495aeac4145dcac8df65d8fdd20f4085e48fbb6" +}, { + "version" : "4.3-rc-3", + "buildTime" : "20171024142633+0000", + "commitId" : "d13daf4f8c434761df3ba0af55fb1f3d9513624e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.3-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.3-rc-3-bin.zip.sha256", + "checksum" : "3e3fad053c2d14a7dbe49006d09034576517e1f6c3f15aca7e5c594f17d08bbf" +}, { + "version" : "4.3-rc-2", + "buildTime" : "20171018073714+0000", + "commitId" : "3fb6d5b8810eeecce1472faa7f12ef1318870d9d", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.3-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.3-rc-2-bin.zip.sha256", + "checksum" : "e55a78b879a5d45840003a1692fb00d1d1780298bcd696c7f10370e7922aad4f" +}, { + "version" : "4.3-rc-1", + "buildTime" : "20171012161416+0000", + "commitId" : "168523089264845c0560d994b565cae4c6e93563", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.3-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.3-rc-1-bin.zip.sha256", + "checksum" : "a2fbaa80f98b59509e3f956c9fdaeb593516ea633ce80946735fa7cb7dd74a55" +}, { + "version" : "4.2.1", + "buildTime" : "20171002153621+0000", + "commitId" : "a88ebd6be7840c2e59ae4782eb0f27fbe3405ddf", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.2.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.2.1-bin.zip.sha256", + "checksum" : "b551cc04f2ca51c78dd14edb060621f0e5439bdfafa6fd167032a09ac708fbc0", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.2.1-wrapper.jar.sha256", + "wrapperChecksum" : "c536e519e65a4bb787e071c6a90d23bd219c9d409a2123db649d3684acbf3ae7" +}, { + "version" : "4.2", + "buildTime" : "20170920144823+0000", + "commitId" : "5ba503cc17748671c83ce35d7da1cffd6e24dfbd", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.2-bin.zip.sha256", + "checksum" : "515dd63d32e55a9c05667809c5e40a947529de3054444ad274b3b75af5582eae", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.2-wrapper.jar.sha256", + "wrapperChecksum" : "53aa048fef3c06a8442c6a44df5edd2e8c791ee883e42ded6189c7eed112095d" +}, { + "version" : "4.2-rc-2", + "buildTime" : "20170913122310+0000", + "commitId" : "e7e9502dbcf5bf8e4ca5e0c1763a301372a9ed83", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.2-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.2-rc-2-bin.zip.sha256", + "checksum" : "e32c378a7e49e074647c59a2a618444db3871ca05e4a151122041252f2dcb640" +}, { + "version" : "4.2-rc-1", + "buildTime" : "20170907081216+0000", + "commitId" : "73d54c86eca92ae26decccd774f49bfc2b01c314", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.2-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.2-rc-1-bin.zip.sha256", + "checksum" : "7d4f7ebe327047eeb713566de36b466f6f966aa9fd471d0b5a89f76337845829" +}, { + "version" : "4.1", + "buildTime" : "20170807143848+0000", + "commitId" : "941559e020f6c357ebb08d5c67acdb858a3defc2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.1-bin.zip.sha256", + "checksum" : "d55dfa9cfb5a3da86a1c9e75bb0b9507f9a8c8c100793ccec7beb6e259f9ed43", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-4.1-wrapper.jar.sha256", + "wrapperChecksum" : "f4d953f31fbf6c38a8c330d19171c8ba6e0d1ff59d4d5c5c2d3ed821c9f3d5a3" +}, { + "version" : "4.1-rc-2", + "buildTime" : "20170731142943+0000", + "commitId" : "941559e020f6c357ebb08d5c67acdb858a3defc2", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.1-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.1-rc-2-bin.zip.sha256", + "checksum" : "c3ea162956646b681bdbf697e45737e654492c825b7958892b44be286a4594f6" +}, { + "version" : "4.0.2", + "buildTime" : "20170726161918+0000", + "commitId" : "108c593aa7b43852f39045337ee84ee1d87c87fd", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.0.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.0.2-bin.zip.sha256", + "checksum" : "79ac421342bd11f6a4f404e0988baa9c1f5fabf07e3c6fa65b0c15c1c31dda22" +}, { + "version" : "4.1-rc-1", + "buildTime" : "20170720152215+0000", + "commitId" : "e9f4cb3be4b0a16506ad54b44485b7f0862f6c59", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.1-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.1-rc-1-bin.zip.sha256", + "checksum" : "782866e286d0e7d527f8110337e96e7e0c886376d9a35966d74ca4024ede7153" +}, { + "version" : "4.0.1", + "buildTime" : "20170707140241+0000", + "commitId" : "38e5dc0f772daecca1d2681885d3d85414eb6826", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.0.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.0.1-bin.zip.sha256", + "checksum" : "d717e46200d1359893f891dab047fdab98784143ac76861b53c50dbd03b44fd4" +}, { + "version" : "4.1-milestone-1", + "buildTime" : "20170620170546+0000", + "commitId" : "3ad5af92d482b963cc6b00fb5ad53b608606d657", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "4.1", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.1-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.1-milestone-1-bin.zip.sha256", + "checksum" : "48edfe37620b5de2fd6e111a65b384dd730c377890c26a01a1ae55ae0220abc1" +}, { + "version" : "3.5.1", + "buildTime" : "20170616143627+0000", + "commitId" : "d4c3bb4eac74bd0a3c70a0d213709e484193e251", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.5.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.5.1-bin.zip.sha256", + "checksum" : "8dce35f52d4c7b4a4946df73aa2830e76ba7148850753d8b5e94c5dc325ceef8" +}, { + "version" : "4.0", + "buildTime" : "20170614151108+0000", + "commitId" : "316546a5fcb4e2dfe1d6aa0b73a4e09e8cecb5a5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.0-bin.zip.sha256", + "checksum" : "56bd2dde29ba2a93903c557da1745cafd72cdd8b6b0b83c05a40ed7896b79dfe" +}, { + "version" : "4.0-rc-3", + "buildTime" : "20170612150444+0000", + "commitId" : "78d6b5b1e5cdb3dd4e233eb2f2e2bf721c53ca9e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.0-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.0-rc-3-bin.zip.sha256", + "checksum" : "f4229169204b98dbc2718386b36538cef2fd28e249aec4e9472eb820a93beeb3" +}, { + "version" : "4.0-rc-2", + "buildTime" : "20170607152236+0000", + "commitId" : "14679a04a9d5afc2038c57d9392a36d8cc2e850e", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.0-rc-2-bin.zip.sha256", + "checksum" : "35f92e48b73f6f6d99997094c7dec298fbdae5a3ee989805c6cde0abe24ff6fe" +}, { + "version" : "4.0-rc-1", + "buildTime" : "20170530162617+0000", + "commitId" : "f114de85c48350feb8cf352522f1af471e832a33", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "4.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.0-rc-1-bin.zip.sha256", + "checksum" : "19d7be3fd349bcf0d36d5a29ded4dd704e5d391e8e8751f32d5bb199636df053" +}, { + "version" : "4.0-milestone-2", + "buildTime" : "20170517143324+0000", + "commitId" : "0e3bb607e7ee1e805455d1c6388f6830f0ab9eca", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "4.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.0-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.0-milestone-2-bin.zip.sha256", + "checksum" : "87120d217d97704702136984e51002d979fec49ee2ff1524ed2769d98dd1f5c5" +}, { + "version" : "4.0-milestone-1", + "buildTime" : "20170428074509+0000", + "commitId" : "c1e7532b308e20803a3678ad5b4cfbe682dbb9fc", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "4.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-4.0-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-4.0-milestone-1-bin.zip.sha256", + "checksum" : "56a98b39db79d947e9227646b3fc72376bdc3daf09ce4d885973510057841738" +}, { + "version" : "3.5", + "buildTime" : "20170410133725+0000", + "commitId" : "b762622a185d59ce0cfc9cbc6ab5dd22469e18a6", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.5-bin.zip.sha256", + "checksum" : "0b7450798c190ff76b9f9a3d02e18b33d94553f708ebc08ebe09bdf99111d110" +}, { + "version" : "3.5-rc-3", + "buildTime" : "20170404150413+0000", + "commitId" : "b762622a185d59ce0cfc9cbc6ab5dd22469e18a6", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.5-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.5-rc-3-bin.zip.sha256", + "checksum" : "add85f5073e3051a23008e9d371fc49bbb6719b503c9f43a7cf6ab61337e05b9" +}, { + "version" : "3.5-rc-2", + "buildTime" : "20170327155623+0000", + "commitId" : "ec63970cd167993d3dcda346a1d00a286a23b1c9", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.5-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.5-rc-2-bin.zip.sha256", + "checksum" : "c23b319547d87b35f16d0bd251a13495b8bc26fe8c7356f678bae766bb5f6ab7" +}, { + "version" : "3.5-rc-1", + "buildTime" : "20170322151607+0000", + "commitId" : "f1f4d6c61299f1225fb2190ca02802c8b821c5ec", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.5-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.5-rc-1-bin.zip.sha256", + "checksum" : "ed17b488dcc8969503aabcce7e1462fb99518e2dddd6e766b0a18e99685dad50" +}, { + "version" : "3.4.1", + "buildTime" : "20170303194541+0000", + "commitId" : "9eb76efdd3d034dc506c719dac2955efb5ff9a93", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.4.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.4.1-bin.zip.sha256", + "checksum" : "db1db193d479cc1202be843f17e4526660cfb0b21b57d62f3a87f88c878af9b2" +}, { + "version" : "3.4", + "buildTime" : "20170220144926+0000", + "commitId" : "73f32d68824582945f5ac1810600e8d87794c3d4", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.4-bin.zip.sha256", + "checksum" : "72d0cd4dcdd5e3be165eb7cd7bbd25cf8968baf400323d9ab1bba622c3f72205" +}, { + "version" : "3.4-rc-3", + "buildTime" : "20170213145527+0000", + "commitId" : "6e76fb227406ebcf649a0cb109747149677c4f27", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.4-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.4-rc-3-bin.zip.sha256", + "checksum" : "c492b318d35f65ba1038289067e04d08598d85e0ea98b33430effd0f1b04bc7c" +}, { + "version" : "3.4-rc-2", + "buildTime" : "20170206211728+0000", + "commitId" : "4a4d6ae7c800239c63561020194df4d7a5e82cd7", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.4-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.4-rc-2-bin.zip.sha256", + "checksum" : "a6184aab4ea11f0264711e989dabc4486045bc6aaaa30110fff3fd4b5250061f" +}, { + "version" : "3.4-rc-1", + "buildTime" : "20170126154849+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.4-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.4-rc-1-bin.zip.sha256", + "checksum" : "c8323ca48a9f3e7993bce566e3edc464f459a5a8bfcedbd6ce7e8b7d0c45fd46" +}, { + "version" : "3.3", + "buildTime" : "20170103153104+0000", + "commitId" : "075893a3d0798c0c1f322899b41ceca82e4e134b", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.3-bin.zip.sha256", + "checksum" : "c58650c278d8cf0696cab65108ae3c8d95eea9c1938e0eb8b997095d5ca9a292" +}, { + "version" : "3.3-rc-1", + "buildTime" : "20161219160724+0000", + "commitId" : "f381de5273f05b2e7075bbd79f33e8be31247bfc", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.3-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.3-rc-1-bin.zip.sha256", + "checksum" : "845135efa934b533f732cb96a34538f10c5703cea39474c148e18ac69d4db49f" +}, { + "version" : "3.2.1", + "buildTime" : "20161122151954+0000", + "commitId" : "83b485b914fd4f335ad0e66af9d14aad458d2cc5", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.2.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.2.1-bin.zip.sha256", + "checksum" : "9843a3654d3e57dce54db06d05f18b664b95c22bf90c6becccb61fc63ce60689", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-3.2.1-wrapper.jar.sha256", + "wrapperChecksum" : "020ef0245a07b33ca48b12f59415e7e5083cf701ef02690464a8cc2ab3984608" +}, { + "version" : "3.2", + "buildTime" : "20161114123259+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.2-bin.zip.sha256", + "checksum" : "5321b36837226dc0377047a328f12010f42c7bf88ee4a3b1cee0c11040082935", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-3.2-wrapper.jar.sha256", + "wrapperChecksum" : "d2d3abae74e89cc4200f48d4a08a7e5960363c33ee62272ef5ffbb39f4c7f83e" +}, { + "version" : "3.2-rc-3", + "buildTime" : "20161107153233+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.2-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.2-rc-3-bin.zip.sha256", + "checksum" : "dadae3f8ff6c60637ac749693a074ae181315a7f43c5a6d313565371cbcab740" +}, { + "version" : "3.2-rc-2", + "buildTime" : "20161031160822+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.2-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.2-rc-2-bin.zip.sha256", + "checksum" : "45e362f471b9d112f820f3d4cf3901f9c5b112efb309324963078f53a80cff40" +}, { + "version" : "3.2-rc-1", + "buildTime" : "20161024194725+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.2-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.2-rc-1-bin.zip.sha256", + "checksum" : "fe2ec80d91ab79ddb72e30d25e3646091fafa7cac379c1f46b743bcad52ed4f3" +}, { + "version" : "3.1", + "buildTime" : "20160919105353+0000", + "commitId" : "13f38ba699afd86d7cdc4ed8fd7dd3960c0b1f97", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.1-bin.zip.sha256", + "checksum" : "c7de3442432253525902f7e8d7eac8b5fd6ce1623f96d76916af6d0e383010fc", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-3.1-wrapper.jar.sha256", + "wrapperChecksum" : "0f49043be582d7a39b671f924c66bd9337b92fa88ff5951225acc60560053067" +}, { + "version" : "3.1-rc-1", + "buildTime" : "20160912123424+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.1-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.1-rc-1-bin.zip.sha256", + "checksum" : "9d67811a2dee405c920e6bced2d687142e2378eb33c3af960bdbaef39bcb2485" +}, { + "version" : "3.0", + "buildTime" : "20160815131501+0000", + "commitId" : "ad76ba00f59ecb287bd3c037bd25fc3df13ca558", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.0-bin.zip.sha256", + "checksum" : "39c906941a474444afbddc38144ed44166825acb0a57b0551dddb04bbf157f80", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-3.0-wrapper.jar.sha256", + "wrapperChecksum" : "42d7a2f636983aa09d21dfeb6e90d21d7a8dad905351390643ce60cc82c8f8a9" +}, { + "version" : "3.0-rc-2", + "buildTime" : "20160808133410+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.0-rc-2-bin.zip.sha256", + "checksum" : "874e3bb85a85961f17cb371cd1291f9c0015bcc1e4bcc9df6e2c29b249438a73" +}, { + "version" : "3.0-rc-1", + "buildTime" : "20160802061335+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "3.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.0-rc-1-bin.zip.sha256", + "checksum" : "98c51e7f465b61d17578098f9ca8dc081014a551fb4dff66cce52fbfcb23376f" +}, { + "version" : "2.14.1", + "buildTime" : "20160718063837+0000", + "commitId" : "d9e2113d9fb05a5caabba61798bdb8dfdca83719", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.14.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.14.1-bin.zip.sha256", + "checksum" : "cfc61eda71f2d12a572822644ce13d2919407595c2aec3e3566d2aab6f97ef39", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.14.1-wrapper.jar.sha256", + "wrapperChecksum" : "8e47da0b2656354d059609cae9d44b196d4f9b14512e688ffee4e0eb7e723ae9" +}, { + "version" : "2.14.1-rc-2", + "buildTime" : "20160711105827+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.14.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.14.1-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.14.1-rc-2-bin.zip.sha256", + "checksum" : "784175796a5dc8180c90f3e26249e858f62d400aaec3db81153992f9d749cda6" +}, { + "version" : "2.14.1-rc-1", + "buildTime" : "20160629051303+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.14.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.14.1-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.14.1-rc-1-bin.zip.sha256", + "checksum" : "c20590dc930c78d21218d10ddf2c637ca0a2ee895e9c3476b670789aa60b5da4" +}, { + "version" : "3.0-milestone-2", + "buildTime" : "20160621224128+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "3.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.0-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.0-milestone-2-bin.zip.sha256", + "checksum" : "5c3e8e9a38c92ae85e05df609c6c1b6f51e5a08b39a26d61bd8a7044268135e7" +}, { + "version" : "2.14", + "buildTime" : "20160614071637+0000", + "commitId" : "cba5fea19f1e0c6a00cc904828a6ec4e11739abc", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.14-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.14-bin.zip.sha256", + "checksum" : "993b4f33b652c689e9721917d8e021cab6bbd3eae81b39ab2fd46fdb19a928d5", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.14-wrapper.jar.sha256", + "wrapperChecksum" : "b5ca811c057b3eb4164c78f4155d667c6092ff98ba91a4c90d29e127426f37a7" +}, { + "version" : "2.14-rc-6", + "buildTime" : "20160610181946+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.14", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-6-bin.zip.sha256", + "checksum" : "f26dd25087dc68bd41ab5fdf31532eaf682c3b2693052d4cf9f7c727e2a47231" +}, { + "version" : "3.0-milestone-1", + "buildTime" : "20160608013148+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "3.0", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-3.0-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-3.0-milestone-1-bin.zip.sha256", + "checksum" : "dfff9f7fbf75d025cf5b4f7b61ea9e24757f74a6934ba7249658e7e2de9d329f" +}, { + "version" : "2.14-rc-5", + "buildTime" : "20160607135817+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.14", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-5-bin.zip.sha256", + "checksum" : "dcdd1021345cfabd2c06a345700afe537bde5478cfb8c3ac59d6348eeb0647e9" +}, { + "version" : "2.14-rc-4", + "buildTime" : "20160603110827+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.14", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-4-bin.zip.sha256", + "checksum" : "471424c0998851572c8b0ac71807215fc717de1373dcb5b64889e0aa5d147d26" +}, { + "version" : "2.14-rc-3", + "buildTime" : "20160530112111+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.14", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-3-bin.zip.sha256", + "checksum" : "6b076728aef0adb281bcc31db7b4f83a061caaa36d61f00dc43e606a3de85578" +}, { + "version" : "2.14-rc-2", + "buildTime" : "20160527175624+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.14", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-2-bin.zip.sha256", + "checksum" : "eb824186223dec65fc3f9bb2755934b38c1cd005a0e6f0d80e282a2390214735" +}, { + "version" : "2.14-rc-1", + "buildTime" : "20160518093824+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.14", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.14-rc-1-bin.zip.sha256", + "checksum" : "2ff85eb9eda60f13bc8debec69849e1e2a72b7bfc5af5d26e61a293b5dcbceba" +}, { + "version" : "2.13", + "buildTime" : "20160425041010+0000", + "commitId" : "3b427b1481e46232107303c90be7b05079b05b1c", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.13-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.13-bin.zip.sha256", + "checksum" : "0f665ec6a5a67865faf7ba0d825afb19c26705ea0597cec80dd191b0f2cbb664", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.13-wrapper.jar.sha256", + "wrapperChecksum" : "0c3c576e28b44eddcab6b8b4854f484363dfbcd047657d41654e839835da2c53" +}, { + "version" : "2.13-rc-2", + "buildTime" : "20160419145240+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.13", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.13-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.13-rc-2-bin.zip.sha256", + "checksum" : "949853dedce0b63898a1aedde39a8e8610ca061a59268a9bc70b496f91e60854" +}, { + "version" : "2.13-rc-1", + "buildTime" : "20160406110211+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.13", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.13-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.13-rc-1-bin.zip.sha256", + "checksum" : "75941a17c6db68b83e82ca27b8d813cc8855b3b8999228b82b1704798f2d4b6b" +}, { + "version" : "2.12", + "buildTime" : "20160314083203+0000", + "commitId" : "b29fbb64ad6b068cb3f05f7e40dc670472129bc0", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.12-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.12-bin.zip.sha256", + "checksum" : "e77064981906cd0476ff1e0de3e6fef747bd18e140960f1915cca8ff6c33ab5c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.12-wrapper.jar.sha256", + "wrapperChecksum" : "4894520b03c007bf38e983bf933320c483a9790010d997029fa8985dc6128559" +}, { + "version" : "2.12-rc-1", + "buildTime" : "20160307174118+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.12", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.12-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.12-rc-1-bin.zip.sha256", + "checksum" : "bb4ccf5399301d34a1d2a6ae6ae6dfb4bd4db61b499581a1bcbd976008a278a2" +}, { + "version" : "2.11", + "buildTime" : "20160208075916+0000", + "commitId" : "584db1c7c90bdd1de1d1c4c51271c665bfcba978", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.11-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.11-bin.zip.sha256", + "checksum" : "8d7437082356c9fd6309a4479c8db307673965546daea445c6c72759cd6b1ed6", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.11-wrapper.jar.sha256", + "wrapperChecksum" : "0bc7b16a0a3fa52af674de44d1fea48abc4dee3431f3d4829cd9ea329836e596" +}, { + "version" : "2.11-rc-3", + "buildTime" : "20160203190922+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.11", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.11-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.11-rc-3-bin.zip.sha256", + "checksum" : "6191865dbe7e2e45125285d6c4316f99d02280dadf8375c290c16e9c995c3188" +}, { + "version" : "2.11-rc-2", + "buildTime" : "20160202162431+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.11", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.11-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.11-rc-2-bin.zip.sha256", + "checksum" : "7112bffc0e69c35040d4f0a6e71c3593a629831d698e8e85797b2afafae18cee" +}, { + "version" : "2.11-rc-1", + "buildTime" : "20160120084154+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.11", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.11-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.11-rc-1-bin.zip.sha256", + "checksum" : "4af1d57f3f3679452944cfeac172949991ff76257b6e511287b2c02951dd7706" +}, { + "version" : "2.10", + "buildTime" : "20151221211504+0000", + "commitId" : "276bdcded730f53aa8c11b479986aafa58e124a6", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.10-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.10-bin.zip.sha256", + "checksum" : "66406247f745fc6f05ab382d3f8d3e120c339f34ef54b86f6dc5f6efc18fbb13", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.10-wrapper.jar.sha256", + "wrapperChecksum" : "16caeaf66d57a0d1d2087fef6a97efa62de8da69afa5b908f40db35afc4342da" +}, { + "version" : "2.10-rc-2", + "buildTime" : "20151218164026+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.10", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.10-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.10-rc-2-bin.zip.sha256", + "checksum" : "49650433ba07e8d1cdcb4a3ee6568fbf82ccff61b8cb76e2e7040a2c2f1a9c7b" +}, { + "version" : "2.10-rc-1", + "buildTime" : "20151208224811+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.10", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.10-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.10-rc-1-bin.zip.sha256", + "checksum" : "f1799317f138612764db1c9cf53638e100038b3494803bf38966d55e8db58cef" +}, { + "version" : "2.9", + "buildTime" : "20151117070217+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.9-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.9-bin.zip.sha256", + "checksum" : "c9159ec4362284c0a38d73237e224deae6139cbde0db4f0f44e1c7691dd3de2f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.9-wrapper.jar.sha256", + "wrapperChecksum" : "b92386e36a96da6be89e91f71087d1394a26c0450231ba0b22e28ee1ee8fa14b" +}, { + "version" : "2.9-rc-1", + "buildTime" : "20151103230218+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.9-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.9-rc-1-bin.zip.sha256", + "checksum" : "d278e80f9f0590f6eaa9c8b9c69c4d66a281c5a9bbb736524fdba5f74c4875a1" +}, { + "version" : "2.8", + "buildTime" : "20151020034636+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.8-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.8-bin.zip.sha256", + "checksum" : "a88db9c2f104defdaa8011c58cf6cda6c114298ae3695ecfb8beb30da3a903cb", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.8-wrapper.jar.sha256", + "wrapperChecksum" : "198159fcd7d29533c0d37423d66c44729982d5280c9e2c7c5f4b7bc6a9317f6b" +}, { + "version" : "2.8-rc-2", + "buildTime" : "20151015124208+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.8-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.8-rc-2-bin.zip.sha256", + "checksum" : "659d6057613a33211f91ce17ce99cfeea03171db771ce842a1968ec49be17696" +}, { + "version" : "2.8-rc-1", + "buildTime" : "20150930171102+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.8-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.8-rc-1-bin.zip.sha256", + "checksum" : "048735c9f06c654b925156e8ca6237c623982ac3b425c3925b8097c13c77dfab" +}, { + "version" : "2.7", + "buildTime" : "20150914072616+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.7-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.7-bin.zip.sha256", + "checksum" : "cde43b90945b5304c43ee36e58aab4cc6fb3a3d5f9bd9449bb1709a68371cb06", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.7-wrapper.jar.sha256", + "wrapperChecksum" : "d7e1975ccf2dc079d4f0b1010febdad466506d1565c5aa8017c88ebc5e471604" +}, { + "version" : "2.7-rc-2", + "buildTime" : "20150905140615+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.7-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.7-rc-2-bin.zip.sha256", + "checksum" : "0854997cd8d77f79a58f3ebc2f19b0b9891d30579fe5392cb5a746b563c20e78" +}, { + "version" : "2.7-rc-1", + "buildTime" : "20150828140928+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.7-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.7-rc-1-bin.zip.sha256", + "checksum" : "5f54dea2792e1c94bbf2f76189a6b8404cc2492a56ffc06bda6dd4aef2d9d8f8" +}, { + "version" : "2.6", + "buildTime" : "20150810131506+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.6-bin.zip.sha256", + "checksum" : "18a98c560af231dfa0d3f8e0802c20103ae986f12428bb0a6f5396e8f14e9c83", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.6-wrapper.jar.sha256", + "wrapperChecksum" : "695089a2b306f55f0bd63140fbcc5ead8c383819018188ce484cd5a055bec6e4" +}, { + "version" : "2.6-rc-2", + "buildTime" : "20150804104806+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.6-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.6-rc-2-bin.zip.sha256", + "checksum" : "82ad20a1c6408176b50e9c07dae8a1c1e2bf9cdd02d11ace8ee92539672f45db" +}, { + "version" : "2.6-rc-1", + "buildTime" : "20150728171643+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.6-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.6-rc-1-bin.zip.sha256", + "checksum" : "5d98379be8076d4c11eaaae8a17c6cbe58cc3d6d76ddd08d962ce8e76c2df67e" +}, { + "version" : "2.5", + "buildTime" : "20150708073837+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.5-bin.zip.sha256", + "checksum" : "3f953e0cb14bb3f9ebbe11946e84071547bf5dfd575d90cfe9cc4e788da38555", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.5-wrapper.jar.sha256", + "wrapperChecksum" : "718d7b25ea60b357fc4cb2212ce10b3f03dfd0e6fe5f23f565b15553ec46bb7e" +}, { + "version" : "2.5-rc-2", + "buildTime" : "20150702151559+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.5-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.5-rc-2-bin.zip.sha256", + "checksum" : "8807bc2e29e215e5d4760fb665815477ff7a07b7fddf3d56c38260e5981a2825" +}, { + "version" : "2.5-rc-1", + "buildTime" : "20150623180452+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.5-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.5-rc-1-bin.zip.sha256", + "checksum" : "1c712b049108d6d0630c78ada345d9adbfc3e1ca4fc6a2bcaecca25634292809" +}, { + "version" : "2.4", + "buildTime" : "20150505080924+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.4-bin.zip.sha256", + "checksum" : "c4eaecc621a81f567ded1aede4a5ddb281cc02a03a6a87c4f5502add8fc2f16f", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.4-wrapper.jar.sha256", + "wrapperChecksum" : "98420079ffe3e24b1013180d9b9bc2e2ee6a9d867ee232004b75a961d9c18e27" +}, { + "version" : "2.4-rc-2", + "buildTime" : "20150429045020+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.4-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.4-rc-2-bin.zip.sha256", + "checksum" : "f36496775b847302e7081b6b051086296882804c7365c0b5e073227ff1cec8ac" +}, { + "version" : "2.4-rc-1", + "buildTime" : "20150423031523+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.4-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.4-rc-1-bin.zip.sha256", + "checksum" : "ebd8ebc8954b0fb30696d561e41d6a717db42af6c0640099af8e688b10813135" +}, { + "version" : "2.3", + "buildTime" : "20150216050933+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.3-bin.zip.sha256", + "checksum" : "010dd9f31849abc3d5644e282943b1c1c355f8e2635c5789833979ce590a3774", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.3-wrapper.jar.sha256", + "wrapperChecksum" : "b18a1114ebe81fb7502d40ad9a4f86cef82fff244a865ad45533b4d5e7ff0cc8" +}, { + "version" : "2.3-rc-4", + "buildTime" : "20150211163922+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.3-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.3-rc-4-bin.zip.sha256", + "checksum" : "34878db3896bd7d2b29406cbdb0c156078ab62f3361f9b4df689cfb3814d8906" +}, { + "version" : "2.3-rc-3", + "buildTime" : "20150208183759+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.3-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.3-rc-3-bin.zip.sha256", + "checksum" : "6ce92b77f67f3bf0f543cfb723796919964b969b454e630c8e8b882692e90f23" +}, { + "version" : "2.3-rc-2", + "buildTime" : "20150204105413+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.3-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.3-rc-2-bin.zip.sha256", + "checksum" : "1a90fbaf3db2b0b86d7b8b7df5c1760732ef94f984ffd71264b1821076e268c9" +}, { + "version" : "2.3-rc-1", + "buildTime" : "20150127140232+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.3-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.3-rc-1-bin.zip.sha256", + "checksum" : "a78846df63ed81971eed2db62efca4ce0d595a53a9f1d08e341c7ddae0c04b56" +}, { + "version" : "2.2.1", + "buildTime" : "20141124094535+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.2.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.2.1-bin.zip.sha256", + "checksum" : "420aa50738299327b611c10b8304b749e8d3a579407ee9e755b15921d95ff418", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.2.1-wrapper.jar.sha256", + "wrapperChecksum" : "5f73d431fd1c5dcc2cf11555b8e486c43249c1099f678ccc6088b05be600a2e1" +}, { + "version" : "2.2.1-rc-1", + "buildTime" : "20141117101237+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.2.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.2.1-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.2.1-rc-1-bin.zip.sha256", + "checksum" : "65b87391af213341f19bf74b15f2a506a0136bb8aa466d87ac2b7d55d3ddab71" +}, { + "version" : "2.2", + "buildTime" : "20141110133144+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.2-bin.zip.sha256", + "checksum" : "91e5655fe11ef414449f218c4fa2985b3a49b7903c57556da109c84fa26e1dfb", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.2-wrapper.jar.sha256", + "wrapperChecksum" : "fa9b4294d47cf8db7039cb9b2435de3dd1accb0d3d67926705775a0579dfa397" +}, { + "version" : "2.2-rc-2", + "buildTime" : "20141103170404+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.2-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.2-rc-2-bin.zip.sha256", + "checksum" : "d430d7e508116a7c917c394879f85c29e1bdce921f15d12ddf8473fab0564d92" +}, { + "version" : "2.2-rc-1", + "buildTime" : "20141020163257+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.2-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.2-rc-1-bin.zip.sha256", + "checksum" : "58292023856cc9ceb7e6376efece7ee3c2f95b7d1986d7f5f95b7db5f2120767" +}, { + "version" : "2.1", + "buildTime" : "20140908104039+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.1-bin.zip.sha256", + "checksum" : "3eee4f9ea2ab0221b89f8e4747a96d4554d00ae46d8d633f11cfda60988bf878", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.1-wrapper.jar.sha256", + "wrapperChecksum" : "5e27c39c2336c25748f279d8b105162d14b1a39eb7839d0b658432282d0ce79f" +}, { + "version" : "2.1-rc-4", + "buildTime" : "20140903092053+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.1-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.1-rc-4-bin.zip.sha256", + "checksum" : "9894bc2d60e5a1cca564313f6e68af0b57cd21b95cd68e96c8bd215cab8a944d" +}, { + "version" : "2.1-rc-3", + "buildTime" : "20140901103549+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.1-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.1-rc-3-bin.zip.sha256", + "checksum" : "8a6839bac38e97d2b55fa1ad1e10c0223f3a1e39f4ced9178a8f666fd017829f" +}, { + "version" : "2.1-rc-2", + "buildTime" : "20140828023229+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.1-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.1-rc-2-bin.zip.sha256", + "checksum" : "6a641aa38dd88b572d1baa35ac14858b4d7f0f4b83f1677fbb3adfe4391950ce" +}, { + "version" : "2.1-rc-1", + "buildTime" : "20140819194409+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.1-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.1-rc-1-bin.zip.sha256", + "checksum" : "eeff5d7f43b4ef1c1c29916b29c50c4d8cda32b65ab4e322a6d50f04b7601ae1" +}, { + "version" : "2.0", + "buildTime" : "20140701074534+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.0-bin.zip.sha256", + "checksum" : "a1eb880c8755333c4d33c4351b269bebe517002532d3142c0b6164c9e8c081c3", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-2.0-wrapper.jar.sha256", + "wrapperChecksum" : "80a33ca14e3bca3116bc8749550397f739f126190c82bb6399fdc8d10f49661f" +}, { + "version" : "2.0-rc-2", + "buildTime" : "20140623080236+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.0-rc-2-bin.zip.sha256", + "checksum" : "932fbabf535876be50ff1d07a4d7fab7f7ae03275a2c5615da2e8add5d4b7c76" +}, { + "version" : "2.0-rc-1", + "buildTime" : "20140606070241+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "2.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-2.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-2.0-rc-1-bin.zip.sha256", + "checksum" : "8240c8f325d0233146e1e21dab31de6b7e653870111187d911eaf4704798faec" +}, { + "version" : "1.12", + "buildTime" : "20140429092431+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.12-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.12-bin.zip.sha256", + "checksum" : "8734b13a401f4311ee418173ed6ca8662d2b0a535be8ff2a43ecb1c13cd406ea", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.12-wrapper.jar.sha256", + "wrapperChecksum" : "dea5ceba47b58df0b7f69a65b24357527c1927ccc72b6d4ed90658d39e461b29" +}, { + "version" : "1.12-rc-2", + "buildTime" : "20140423112055+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.12", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.12-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.12-rc-2-bin.zip.sha256", + "checksum" : "886e40b53d772cacc0cf0a145d464790c125d2cf19c28d93f534eb2ae86186bc" +}, { + "version" : "1.12-rc-1", + "buildTime" : "20140416084626+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.12", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.12-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.12-rc-1-bin.zip.sha256", + "checksum" : "3f9f970be1b02e9d05c95344fb7fd468be7285d38f2e22ea194bc3e12207a250" +}, { + "version" : "1.11", + "buildTime" : "20140211113439+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.11-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.11-bin.zip.sha256", + "checksum" : "07e235df824964f0e19e73ea2327ce345c44bcd06d44a0123d29ab287fc34091", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.11-wrapper.jar.sha256", + "wrapperChecksum" : "a14b54dd3790f5ce1dc08ebbf4b5bcc05f76c4554b43accb84696c970f29aba0" +}, { + "version" : "1.11-rc-1", + "buildTime" : "20140131033453+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.11", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.11-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.11-rc-1-bin.zip.sha256", + "checksum" : "d16d91f5081ce7665dca6562fb200d181f2abbb8c8ffef4ea8b9a3bad4079db4" +}, { + "version" : "1.10", + "buildTime" : "20131217092815+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.10-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.10-bin.zip.sha256", + "checksum" : "6e6db4fc595f27ceda059d23693b6f6848583950606112b37dfd0e97a0a0a4fe", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.10-wrapper.jar.sha256", + "wrapperChecksum" : "6a6c15e222a0458aa33985b87f67954f4222410b43b1e26866197d0a77d93cbc" +}, { + "version" : "1.10-rc-2", + "buildTime" : "20131211105454+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.10", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.10-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.10-rc-2-bin.zip.sha256", + "checksum" : "6930c2882cf984a7c3ad49b31ed179224ff956d5844d228c814055ae88afa78e" +}, { + "version" : "1.10-rc-1", + "buildTime" : "20131204154128+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.10", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.10-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.10-rc-1-bin.zip.sha256", + "checksum" : "25ca44dbfe099013a0a94ebe098da8b8b279d2d38bcc3737039067f5fc88c1f1" +}, { + "version" : "1.9", + "buildTime" : "20131119082002+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.9-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.9-bin.zip.sha256", + "checksum" : "097ddc2bcbc9da2bb08cbf6bf8079585e35ad088bafd42e8716bc96405db98e9", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.9-wrapper.jar.sha256", + "wrapperChecksum" : "134337ea7c13221f9d1a1c14288a5cf8af9f6060167b903b724b115cf5a0cf73" +}, { + "version" : "1.9-rc-4", + "buildTime" : "20131118093242+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.9-rc-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.9-rc-4-bin.zip.sha256", + "checksum" : "5bdcf356f795ee85607d6aaa5534c26423ce8bf6f2bbd1eda0fb04ae8eebd943" +}, { + "version" : "1.9-rc-3", + "buildTime" : "20131107122642+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.9-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.9-rc-3-bin.zip.sha256", + "checksum" : "4690509db43b713764ce869977414df97c692594c7ba2fa7e421ad5757b256a7" +}, { + "version" : "1.9-rc-2", + "buildTime" : "20131028093320+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.9-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.9-rc-2-bin.zip.sha256", + "checksum" : "356844c3e7f7b16d620348f64fdbc8c39455d805855f6975c6f9cc6a357cc89c" +}, { + "version" : "1.9-rc-1", + "buildTime" : "20131023094618+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.9-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.9-rc-1-bin.zip.sha256", + "checksum" : "667fa5360aea327f57df76a471886791756a0afb2f80fceef15efba1b1588b41" +}, { + "version" : "1.8", + "buildTime" : "20130924073233+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.8-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.8-bin.zip.sha256", + "checksum" : "a342bbfa15fd18e2482287da4959588f45a41b60910970a16e6d97959aea5703", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.8-wrapper.jar.sha256", + "wrapperChecksum" : "13f23a24252ddca0a0fabef212e3c854f5895b081c09d015c91587a5df9bf9f7" +}, { + "version" : "1.8-rc-2", + "buildTime" : "20130919053314+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.8-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.8-rc-2-bin.zip.sha256", + "checksum" : "7280197f1cdfdd00616cbbbcf16b078c1ed2bc92ec00c6b3a06b790d020995f8" +}, { + "version" : "1.8-rc-1", + "buildTime" : "20130910130452+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.8", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.8-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.8-rc-1-bin.zip.sha256", + "checksum" : "b4aaf215b700adbe6d4057bfb86361d3d1f9edc45f8ddc5a985cd5c65a6df35f" +}, { + "version" : "1.7", + "buildTime" : "20130806111956+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.7-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.7-bin.zip.sha256", + "checksum" : "360c97d51621b5a1ecf66748c718594e5f790ae4fbc1499543e0c006033c9d30", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.7-wrapper.jar.sha256", + "wrapperChecksum" : "7af529cc3331d38b3d8f8344ddd9b2d3744542b55b68318abd8bb1a6f3812a1c" +}, { + "version" : "1.7-rc-2", + "buildTime" : "20130729120421+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.7-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.7-rc-2-bin.zip.sha256", + "checksum" : "db40dbf3ac4545372fdabafbb993344a2cef44ba6ff7436573bca2aba21fc611" +}, { + "version" : "1.7-rc-1", + "buildTime" : "20130702145630+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.7", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.7-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.7-rc-1-bin.zip.sha256", + "checksum" : "d69df2d9b36d0a9c72b0975e791a50f0639cdca8e48e7df7e9aaf6c9d87f176f" +}, { + "version" : "1.6", + "buildTime" : "20130507091214+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.6-bin.zip.sha256", + "checksum" : "de3e89d2113923dcc2e0def62d69be0947ceac910abd38b75ec333230183fac4", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.6-wrapper.jar.sha256", + "wrapperChecksum" : "66dbcc9f0bc33789ea0bdb4d49c8ea037047bda5647ef696c47bdca65f785159" +}, { + "version" : "1.6-rc-1", + "buildTime" : "20130430131900+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.6", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.6-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.6-rc-1-bin.zip.sha256", + "checksum" : "3fdbb2d087d4916cb4162a6b87d0a1ffb6efcd296d9761001646fa0e21881629" +}, { + "version" : "1.5", + "buildTime" : "20130327140935+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.5-bin.zip.sha256", + "checksum" : "a5511a0659caa47d9d74fd2844c9da43157d2f78e63a0223c6289d88f5aaecbe", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.5-wrapper.jar.sha256", + "wrapperChecksum" : "9598ffdf7ee26949d8b861ece267c70c802f21f7fc52596693834792d155195a" +}, { + "version" : "1.5-rc-3", + "buildTime" : "20130321155709+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.5-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.5-rc-3-bin.zip.sha256", + "checksum" : "7c99d43ccaea8215df7c5e82a3c1378908197925f4f4748315c75f69ae1dffbe" +}, { + "version" : "1.5-rc-2", + "buildTime" : "20130317011516+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.5-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.5-rc-2-bin.zip.sha256", + "checksum" : "f7feac0fc31d919f4f36dc0a6b3450948c40c01e785f590e3991d4178841d415" +}, { + "version" : "1.5-rc-1", + "buildTime" : "20130311120320+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.5", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.5-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.5-rc-1-bin.zip.sha256", + "checksum" : "5e25bf4ac2de6fdd7b0867b14144bd29d16b1e3390f1855b55855e0d7a2f7705" +}, { + "version" : "1.4", + "buildTime" : "20130128034246+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.4-bin.zip.sha256", + "checksum" : "cd99e85fbcd0ae8b99e81c9992a2f10cceb7b5f009c3720ef3a0078f4f92e94e", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.4-wrapper.jar.sha256", + "wrapperChecksum" : "c95985b7b5684e133c5d45044fd90faaf6c8f7cd2493d61a11c2b8c5b71ef514" +}, { + "version" : "1.4-rc-3", + "buildTime" : "20130125035146+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.4-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.4-rc-3-bin.zip.sha256", + "checksum" : "0b7b24ff52d56586d6d3aae6b3ffdff5de279549e3b80105d159556057b11151" +}, { + "version" : "1.4-rc-2", + "buildTime" : "20130122030632+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.4-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.4-rc-2-bin.zip.sha256", + "checksum" : "47a90853ac8eda1294e6dc3334448584a7e48ec2c8e76acadcd05bb6f411424f" +}, { + "version" : "1.4-rc-1", + "buildTime" : "20130117001257+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.4", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.4-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.4-rc-1-bin.zip.sha256", + "checksum" : "133a12cb48dc0383d83ca84e92e8c555b0fdbad8d2b8e636216f739f2ef22921" +}, { + "version" : "1.3", + "buildTime" : "20121120113738+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.3-bin.zip.sha256", + "checksum" : "ada68561efbb9f1cae0f9063974cbde15c180351a2f92bc2f1106e39ddcae5ba", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.3-wrapper.jar.sha256", + "wrapperChecksum" : "95513eccca99e1ae1aeadc4f69cabd0e7fb64821d3f26c46a489df844c8a7353" +}, { + "version" : "1.3-rc-2", + "buildTime" : "20121115155343+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.3-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.3-rc-2-bin.zip.sha256", + "checksum" : "46b3ff676c2a71f8aa4d5345e0b206920d7669f9b777d346dcebd85638afd3d0" +}, { + "version" : "1.3-rc-1", + "buildTime" : "20121112135252+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.3", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.3-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.3-rc-1-bin.zip.sha256", + "checksum" : "f699e313f4e4681c18e1f63074af1d011dd775d8de5ec39bbaab6ce3e2a1e1ee" +}, { + "version" : "1.2", + "buildTime" : "20120912104602+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.2-bin.zip.sha256", + "checksum" : "eb53da3704d24cabb7565f34a3bf16bcd863c4b0c139917606fb15d4f27c7bdf", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.2-wrapper.jar.sha256", + "wrapperChecksum" : "5c91fa893665f3051eae14578fac2df14e737423387e75ffbeccd35f335a3d8b" +}, { + "version" : "1.2-rc-1", + "buildTime" : "20120904174954+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.2", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.2-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.2-rc-1-bin.zip.sha256", + "checksum" : "167410b26ff883d6531f74c13a6c0683f3f21013c8445f35db58ccac9613b788" +}, { + "version" : "1.1", + "buildTime" : "20120731132432+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.1-bin.zip.sha256", + "checksum" : "552c1fc9f3a1b9668b79cc447370f0263e664ffb6d5c6e1c21e77ce0c8a20d4c", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.1-wrapper.jar.sha256", + "wrapperChecksum" : "22c56a9780daeee00e5bf31621f991b68e73eff6fe8afca628a1fe2c50c6038e" +}, { + "version" : "1.1-rc-2", + "buildTime" : "20120726075103+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.1-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.1-rc-2-bin.zip.sha256", + "checksum" : "78d904a6f0ec3231c4d032beddcfcee27046075624d724a9d087e0ad7e58d01d" +}, { + "version" : "1.1-rc-1", + "buildTime" : "20120724134404+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.1", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.1-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.1-rc-1-bin.zip.sha256", + "checksum" : "655c3b09260b0db10fa0563bc72fc05d5165b67734a87baa7aa9f708eeeb71ca" +}, { + "version" : "1.0", + "buildTime" : "20120612025621+0200", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-bin.zip.sha256", + "checksum" : "894bca0360a7e2040815096788f118a2dd106ff6694221b274efb9c32bce0384", + "wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-wrapper.jar.sha256", + "wrapperChecksum" : "87e50531ca7aab675f5bb65755ef78328afd64cf0877e37ad876047a8a014055" +}, { + "version" : "1.0-rc-3", + "buildTime" : "20120430015152+0200", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-rc-3-bin.zip.sha256", + "checksum" : "a4b2a83bd7c173efc8722c111347283d26774a81508a445e4f234df98f711824" +}, { + "version" : "1.0-rc-2", + "buildTime" : "20120425015237+0200", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-rc-2-bin.zip.sha256", + "checksum" : "3ebb5367ede52e0f21246c3d06be70b7b66a96f078b2a139fa5c8269d5076911" +}, { + "version" : "1.0-rc-1", + "buildTime" : "20120411121324+0100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "1.0", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-rc-1-bin.zip.sha256", + "checksum" : "ae4ae81fb46b108f359efad5fbbcbec50940a793e5b2bfb9929d1e82f2e10c49" +}, { + "version" : "1.0-milestone-9", + "buildTime" : "20120313171009+0100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-9-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-9-bin.zip.sha256", + "checksum" : "3499b262c1407d3965250aa40f5a154e77672a5f904e7d82e704ce9fa82719bc" +}, { + "version" : "1.0-milestone-8a", + "buildTime" : "20120220185357+0100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-8a-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-8a-bin.zip.sha256", + "checksum" : "9dbace7ad2be4f4afdfde9aa495ff7a5f4cb2666ba5c7c21f01c119d9bbf6bc7" +}, { + "version" : "1.0-milestone-8", + "buildTime" : "20120214022451+0100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-8-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-8-bin.zip.sha256", + "checksum" : "480c3fe8c832c16c0d1e0f53b33b6401827baebd73eae2d7a3e89102c1dd8603" +}, { + "version" : "1.0-milestone-7", + "buildTime" : "20120105102443+0000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-7-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-7-bin.zip.sha256", + "checksum" : "074c37682e560d398cefa857dcd8fc67c318297d6d5dcd25d9f090332cd7564c" +}, { + "version" : "1.0-milestone-6", + "buildTime" : "20111117065412+0100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-6-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-6-bin.zip.sha256", + "checksum" : "9a2c3fca6aad82002a47cf6c721e6e5a45e0cbde3e280c8ef4eebefbe6797b1c" +}, { + "version" : "1.0-milestone-5", + "buildTime" : "20111025055608+0200", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-5-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-5-bin.zip.sha256", + "checksum" : "b00acd0fef3e6b014e43d62e7a3e6159eac037df28e18057a04dddc6728f2362" +}, { + "version" : "1.0-milestone-4", + "buildTime" : "20110728103822+0200", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : true, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-4-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-4-bin.zip.sha256", + "checksum" : "882c8115a214495f5b6b9df3ba70dec9345698651e8c320036eed272be55ae6a" +}, { + "version" : "1.0-milestone-3", + "buildTime" : "20110425174011+1000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-3-bin.zip.sha256", + "checksum" : "06d2ee96e45a62fce8ba1f964b083876b789c3f97932b189d57c5f545000d461" +}, { + "version" : "1.0-milestone-2", + "buildTime" : "20110407163255+1000", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-2-bin.zip.sha256", + "checksum" : "4fff2aa96eed3cec23537c807154ef3595ebaa99aa46d13dc479610ffcaa0574" +}, { + "version" : "1.0-milestone-1", + "buildTime" : "20110227141320+1100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-1.0-milestone-1-bin.zip.sha256", + "checksum" : "c2153f01eabba7abd874e8ebad42b7cfe76c4fb978bdbe288757b522a8755d8c" +}, { + "version" : "0.9.2", + "buildTime" : "20110123133421+1100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-0.9.2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-0.9.2-bin.zip.sha256", + "checksum" : "f94d7642348c558fc05ab5fd6fb947fb1ed8fed5931ddb73dd04fb0de22d669b" +}, { + "version" : "0.9.1", + "buildTime" : "20110102114057+1100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-0.9.1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-0.9.1-bin.zip.sha256", + "checksum" : "5d48cba95db031ec109ae9ab60561e960b6507046036e8191aa78572ec27e2a5" +}, { + "version" : "0.9", + "buildTime" : "20101219125006+1100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-0.9-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-0.9-bin.zip.sha256", + "checksum" : "994e46d4b467254a0f25ce92b602618331b9b3ac8b32a094fd84ff0e0ceec135" +}, { + "version" : "0.9-rc-3", + "buildTime" : "20101120131750+1100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "0.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-0.9-rc-3-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-0.9-rc-3-bin.zip.sha256", + "checksum" : "3d07a0de2d8aa1c8ef7e6974c8eb84f47d0300d978c905d046a7d1087a0cb1a8" +}, { + "version" : "0.9-rc-2", + "buildTime" : "20101027082405+1100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "0.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-0.9-rc-2-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-0.9-rc-2-bin.zip.sha256", + "checksum" : "94c0b7d51514062c8bdb7d1435a130f4eafda99214274b4330fb77a41b466a01" +}, { + "version" : "0.9-rc-1", + "buildTime" : "20100804080433+1100", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "0.9", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-0.9-rc-1-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-0.9-rc-1-bin.zip.sha256", + "checksum" : "344b93a2825d29ecacd8c9e9c69037b5badd87b219ef56d88b35b3ba07f9e714" +}, { + "version" : "0.8", + "buildTime" : "20090928140159+0200", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-0.8-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-0.8-bin.zip.sha256", + "checksum" : "940e623ea98e40ea9ad398770a6ebb91a61c0869d394dda81aa86b0f4f0025e7" +}, { + "version" : "0.7", + "buildTime" : "20090720085013+0200", + "commitId" : "", + "current" : false, + "snapshot" : false, + "nightly" : false, + "releaseNightly" : false, + "activeRc" : false, + "rcFor" : "", + "milestoneFor" : "", + "broken" : false, + "downloadUrl" : "https://services.gradle.org/distributions/gradle-0.7-bin.zip", + "checksumUrl" : "https://services.gradle.org/distributions/gradle-0.7-bin.zip.sha256", + "checksum" : "4e354fcb0d5c0b0e7789cd6ee900456edaf993f6dd890c4a1c217d90d2a6a6ad" +} ] \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.buildship.core/init.d/eclipsePlugin.gradle b/.metadata/.plugins/org.eclipse.buildship.core/init.d/eclipsePlugin.gradle new file mode 100644 index 0000000..6153e78 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.buildship.core/init.d/eclipsePlugin.gradle @@ -0,0 +1,14 @@ +/******************************************************************************* + * Copyright (c) 2023 Gradle Inc. and others + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + ******************************************************************************/ +initscript { + allprojects { + apply plugin: "eclipse" + } +} \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.buildship.core/project-preferences/xxxthegame b/.metadata/.plugins/org.eclipse.buildship.core/project-preferences/xxxthegame new file mode 100644 index 0000000..add982e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.buildship.core/project-preferences/xxxthegame @@ -0,0 +1,12 @@ +# +#Sun Mar 15 20:44:20 CET 2026 +buildDir=build +buildScriptPath=build.gradle.kts +classpath=\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\t\t\n\t\t\n\t\n\n\n +derivedResources=.gradle\:build +gradleVersion=8.9 +hasAutoBuildTasks=false +linkedResources= +managedBuilders= +managedNatures= +subprojectPaths= diff --git a/.metadata/.plugins/org.eclipse.buildship.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.buildship.ui/dialog_settings.xml new file mode 100644 index 0000000..8a24ab8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.buildship.ui/dialog_settings.xml @@ -0,0 +1,24 @@ + +
+
+ + +
+ + + + + +
+
+
+ +
+ + + + + +
+
+
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/.location new file mode 100644 index 0000000..d4c4ef5 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/xxxthegame/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/xxxthegame/.location new file mode 100644 index 0000000..9ca6909 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/xxxthegame/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/xxxthegame/.markers b/.metadata/.plugins/org.eclipse.core.resources/.projects/xxxthegame/.markers new file mode 100644 index 0000000..7c49af7 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/xxxthegame/.markers differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version new file mode 100644 index 0000000..25cb955 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index new file mode 100644 index 0000000..e76618d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources new file mode 100644 index 0000000..fb35845 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ diff --git a/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml new file mode 100644 index 0000000..8276edc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml @@ -0,0 +1,18 @@ + +
+ + +
+ + + + + + +
+
+ + + +
+
diff --git a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi new file mode 100644 index 0000000..28cd1ae --- /dev/null +++ b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi @@ -0,0 +1,2892 @@ + + + + activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration + + + + + + + + topLevel + shellMaximized + + + + + persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.text.quicksearch.actionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.springsource.ide.eclipse.commons.launch.actionSet + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaElementCreationActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.jdt.ui.PackageExplorer + persp.viewSC:org.eclipse.jdt.ui.TypeHierarchy + persp.viewSC:org.eclipse.jdt.ui.SourceView + persp.viewSC:org.eclipse.jdt.ui.JavadocView + persp.viewSC:org.eclipse.search.ui.views.SearchView + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.ui.views.TaskList + persp.viewSC:org.eclipse.ui.views.ProgressView + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.ui.texteditor.TemplatesView + persp.viewSC:org.eclipse.pde.runtime.LogView + persp.newWizSC:org.eclipse.jdt.ui.wizards.JavaProjectWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewPackageCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewClassCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewEnumCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewRecordCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewJavaWorkingSetWizard + persp.newWizSC:org.eclipse.ui.wizards.new.folder + persp.newWizSC:org.eclipse.ui.wizards.new.file + persp.newWizSC:org.eclipse.ui.editors.wizards.UntitledTextFileWizard + persp.perspSC:org.eclipse.jdt.ui.JavaBrowsingPerspective + persp.perspSC:org.eclipse.debug.ui.DebugPerspective + persp.showIn:org.eclipse.jdt.ui.PackageExplorer + persp.showIn:org.eclipse.team.ui.GenericHistoryView + persp.showIn:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.mylyn.tasks.ui.views.tasks + persp.newWizSC:org.eclipse.mylyn.tasks.ui.wizards.new.repository.task + persp.viewSC:org.eclipse.terminal.view.ui.TerminalsView + persp.showIn:org.eclipse.terminal.view.ui.TerminalsView + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.actionSet:org.eclipse.jdt.debug.ui.JDTDebugActionSet + persp.newWizSC:org.eclipse.m2e.core.wizards.Maven2ProjectWizard + persp.newWizSC:org.springsource.ide.eclipse.commons.gettingstarted.wizard.boot.NewSpringBootWizard + persp.newWizSC:org.springsource.ide.eclipse.gettingstarted.wizards.import.generic.newalias + persp.actionSet:org.eclipse.eclemma.ui.CoverageActionSet + persp.showIn:org.eclipse.eclemma.ui.CoverageView + persp.viewSC:org.eclipse.jdt.bcoview.views.BytecodeOutlineView + persp.showIn:org.eclipse.egit.ui.RepositoriesView + persp.newWizSC:org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard + persp.actionSet:org.eclipse.jdt.junit.JUnitActionSet + persp.viewSC:org.eclipse.ant.ui.views.AntView + persp.editorOnboardingImageUri:platform:/plugin/org.eclipse.jdt.ui/$nl$/icons/full/onboarding_jperspective.svg + persp.editorOnboardingText:Open a file or drop files here to open them. + persp.editorOnboardingCommand:Find Actions$$$Ctrl+3 + persp.editorOnboardingCommand:Show Key Assist$$$Shift+Ctrl+L + persp.editorOnboardingCommand:New$$$Ctrl+N + persp.editorOnboardingCommand:Open Type$$$Shift+Ctrl+T + + + + + org.eclipse.e4.primaryNavigationStack + active + noFocus + + View + categoryTag:Java + + + View + categoryTag:Java + + + View + categoryTag:General + + + View + categoryTag:Java + + + + + View + categoryTag:Other + + + + + + View + categoryTag:Git + + + + + + + + org.eclipse.e4.secondaryNavigationStack + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Mylyn + + + View + categoryTag:Java + + + View + categoryTag:Ant + + + + + org.eclipse.e4.secondaryDataStack + Oomph + Gradle + + View + categoryTag:General + + + View + categoryTag:Java + + + View + categoryTag:Java + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Terminal + + + View + categoryTag:Gradle + + + View + categoryTag:Gradle + + + View + categoryTag:Oomph + NoRestore + + + + + + + + + View + categoryTag:Help + + + View + categoryTag:General + + + View + categoryTag:Help + + + + + + + View + categoryTag:Help + + + + + View + categoryTag:General + + + + + View + categoryTag:Help + + + + EditorStack + org.eclipse.e4.primaryDataStack + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.ui.genericeditor.GenericEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + + + + + View + categoryTag:Java + active + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Java + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Terminal + + + + + View + categoryTag:Java + + + + + View + categoryTag:Git + + + + + View + categoryTag:Java + + + + + + View + categoryTag:Other + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Ant + + + + + + View + categoryTag:Gradle + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Gradle + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Oomph + NoRestore + + ViewMenu + menuContribution:menu + + + + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + Draggable + + + + + toolbarSeparator + + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + + toolbarSeparator + + + + Draggable + + + + Draggable + + + Draggable + + + toolbarSeparator + + + + toolbarSeparator + + + + Draggable + + + stretch + SHOW_RESTORE_MENU + + + Draggable + HIDEABLE + SHOW_RESTORE_MENU + + + + + stretch + + + Draggable + + + Draggable + + + + + + + + + + + + + + + + + + + + platform:gtk + + + + + + platform:gtk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + platform:gtk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Editor + removeOnHide + + + + + View + categoryTag:Ant + + + + + View + categoryTag:Gradle + + + + + View + categoryTag:Gradle + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + + + View + categoryTag:Java + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + NoRestore + + + + + View + categoryTag:Git + + + + + View + categoryTag:Help + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java + + + + + View + categoryTag:General + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Language Servers + + + + + View + categoryTag:Language Servers + + + + + View + categoryTag:Language Servers + + + + + View + categoryTag:Maven + + + + + View + categoryTag:Maven + + + + + View + categoryTag:Maven + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Oomph + + + + + View + categoryTag:Oomph + NoRestore + + + + + View + categoryTag:Plug-in Development + + + + + View + categoryTag:General + + + + + View + categoryTag:Version Control (Team) + + + + + View + categoryTag:Version Control (Team) + + + + + View + categoryTag:Terminal + + + View + categoryTag:Help + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Help + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Docker + + + + + View + categoryTag:Docker + + + + + View + categoryTag:Docker + + + + + View + categoryTag:Docker + + + + + View + categoryTag:Other + + + + + View + categoryTag:Other + + + + + View + categoryTag:Other + + + + glue + move_after:PerspectiveSpacer + SHOW_RESTORE_MENU + + + move_after:Spacer Glue + HIDEABLE + SHOW_RESTORE_MENU + + + glue + move_after:SearchField + SHOW_RESTORE_MENU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.epp.mpc.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.epp.mpc.ui/dialog_settings.xml new file mode 100644 index 0000000..5befba5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.epp.mpc.ui/dialog_settings.xml @@ -0,0 +1,10 @@ + +
+
+ + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml new file mode 100644 index 0000000..c5d9f93 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml @@ -0,0 +1,35 @@ + +
+
+ + + + + +
+
+ + + + + + + + + +
+
+ + + + + +
+
+ + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1074122571.index b/.metadata/.plugins/org.eclipse.jdt.core/1074122571.index new file mode 100644 index 0000000..7366255 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1074122571.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1118739196.index b/.metadata/.plugins/org.eclipse.jdt.core/1118739196.index new file mode 100644 index 0000000..ebc92ce Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1118739196.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1205982295.index b/.metadata/.plugins/org.eclipse.jdt.core/1205982295.index new file mode 100644 index 0000000..3d297c2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1205982295.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1241285641.index b/.metadata/.plugins/org.eclipse.jdt.core/1241285641.index new file mode 100644 index 0000000..022928d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1241285641.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1256436118.index b/.metadata/.plugins/org.eclipse.jdt.core/1256436118.index new file mode 100644 index 0000000..f2341dc Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1256436118.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1295630681.index b/.metadata/.plugins/org.eclipse.jdt.core/1295630681.index new file mode 100644 index 0000000..e349009 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1295630681.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1324521365.index b/.metadata/.plugins/org.eclipse.jdt.core/1324521365.index new file mode 100644 index 0000000..a9906fc Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1324521365.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1436262503.index b/.metadata/.plugins/org.eclipse.jdt.core/1436262503.index new file mode 100644 index 0000000..ff6ca2b Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1436262503.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1446719945.index b/.metadata/.plugins/org.eclipse.jdt.core/1446719945.index new file mode 100644 index 0000000..b68e968 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1446719945.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1453089870.index b/.metadata/.plugins/org.eclipse.jdt.core/1453089870.index new file mode 100644 index 0000000..4d0add1 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1453089870.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1455171009.index b/.metadata/.plugins/org.eclipse.jdt.core/1455171009.index new file mode 100644 index 0000000..fb0d941 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1455171009.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1502879287.index b/.metadata/.plugins/org.eclipse.jdt.core/1502879287.index new file mode 100644 index 0000000..8cc3689 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1502879287.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1502997292.index b/.metadata/.plugins/org.eclipse.jdt.core/1502997292.index new file mode 100644 index 0000000..2527871 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1502997292.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1546736044.index b/.metadata/.plugins/org.eclipse.jdt.core/1546736044.index new file mode 100644 index 0000000..656c432 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1546736044.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1633924572.index b/.metadata/.plugins/org.eclipse.jdt.core/1633924572.index new file mode 100644 index 0000000..9de24b6 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1633924572.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1653061733.index b/.metadata/.plugins/org.eclipse.jdt.core/1653061733.index new file mode 100644 index 0000000..40044aa Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1653061733.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1660713777.index b/.metadata/.plugins/org.eclipse.jdt.core/1660713777.index new file mode 100644 index 0000000..f494902 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1660713777.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/167025465.index b/.metadata/.plugins/org.eclipse.jdt.core/167025465.index new file mode 100644 index 0000000..148e8e2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/167025465.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1732769785.index b/.metadata/.plugins/org.eclipse.jdt.core/1732769785.index new file mode 100644 index 0000000..f424407 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1732769785.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1781188320.index b/.metadata/.plugins/org.eclipse.jdt.core/1781188320.index new file mode 100644 index 0000000..333c842 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1781188320.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index b/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index new file mode 100644 index 0000000..da86dd1 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1872440599.index b/.metadata/.plugins/org.eclipse.jdt.core/1872440599.index new file mode 100644 index 0000000..cc2eed0 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1872440599.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1914043487.index b/.metadata/.plugins/org.eclipse.jdt.core/1914043487.index new file mode 100644 index 0000000..ce5dbff Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1914043487.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1965154635.index b/.metadata/.plugins/org.eclipse.jdt.core/1965154635.index new file mode 100644 index 0000000..9a05b1d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1965154635.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/198314732.index b/.metadata/.plugins/org.eclipse.jdt.core/198314732.index new file mode 100644 index 0000000..62ac8e3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/198314732.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1990965588.index b/.metadata/.plugins/org.eclipse.jdt.core/1990965588.index new file mode 100644 index 0000000..68815e7 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1990965588.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2004806901.index b/.metadata/.plugins/org.eclipse.jdt.core/2004806901.index new file mode 100644 index 0000000..fe0f085 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2004806901.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2047888269.index b/.metadata/.plugins/org.eclipse.jdt.core/2047888269.index new file mode 100644 index 0000000..55bdc54 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2047888269.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2070370209.index b/.metadata/.plugins/org.eclipse.jdt.core/2070370209.index new file mode 100644 index 0000000..123b83c Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2070370209.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2181028596.index b/.metadata/.plugins/org.eclipse.jdt.core/2181028596.index new file mode 100644 index 0000000..1ac7b88 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2181028596.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2191830568.index b/.metadata/.plugins/org.eclipse.jdt.core/2191830568.index new file mode 100644 index 0000000..412ff19 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2191830568.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2236377038.index b/.metadata/.plugins/org.eclipse.jdt.core/2236377038.index new file mode 100644 index 0000000..7f78d82 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2236377038.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2237645717.index b/.metadata/.plugins/org.eclipse.jdt.core/2237645717.index new file mode 100644 index 0000000..697b8b3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2237645717.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2240786275.index b/.metadata/.plugins/org.eclipse.jdt.core/2240786275.index new file mode 100644 index 0000000..6a0d1aa Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2240786275.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/225562445.index b/.metadata/.plugins/org.eclipse.jdt.core/225562445.index new file mode 100644 index 0000000..87b29b6 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/225562445.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2318770678.index b/.metadata/.plugins/org.eclipse.jdt.core/2318770678.index new file mode 100644 index 0000000..1d75ca2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2318770678.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2332037983.index b/.metadata/.plugins/org.eclipse.jdt.core/2332037983.index new file mode 100644 index 0000000..3f7b57e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2332037983.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2389383899.index b/.metadata/.plugins/org.eclipse.jdt.core/2389383899.index new file mode 100644 index 0000000..1f6cd32 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2389383899.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2390245932.index b/.metadata/.plugins/org.eclipse.jdt.core/2390245932.index new file mode 100644 index 0000000..685c59d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2390245932.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2398089967.index b/.metadata/.plugins/org.eclipse.jdt.core/2398089967.index new file mode 100644 index 0000000..84059f6 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2398089967.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2403041570.index b/.metadata/.plugins/org.eclipse.jdt.core/2403041570.index new file mode 100644 index 0000000..c42f886 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2403041570.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2455882736.index b/.metadata/.plugins/org.eclipse.jdt.core/2455882736.index new file mode 100644 index 0000000..d8ba316 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2455882736.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2455962971.index b/.metadata/.plugins/org.eclipse.jdt.core/2455962971.index new file mode 100644 index 0000000..5c5ee03 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2455962971.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2488355463.index b/.metadata/.plugins/org.eclipse.jdt.core/2488355463.index new file mode 100644 index 0000000..b5ab7ce Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2488355463.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2503368578.index b/.metadata/.plugins/org.eclipse.jdt.core/2503368578.index new file mode 100644 index 0000000..6160f48 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2503368578.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2519831052.index b/.metadata/.plugins/org.eclipse.jdt.core/2519831052.index new file mode 100644 index 0000000..00bb0b0 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2519831052.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2586591901.index b/.metadata/.plugins/org.eclipse.jdt.core/2586591901.index new file mode 100644 index 0000000..9f2a6e1 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2586591901.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2593736024.index b/.metadata/.plugins/org.eclipse.jdt.core/2593736024.index new file mode 100644 index 0000000..d49e795 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2593736024.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2609698604.index b/.metadata/.plugins/org.eclipse.jdt.core/2609698604.index new file mode 100644 index 0000000..46ead7a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2609698604.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2609856074.index b/.metadata/.plugins/org.eclipse.jdt.core/2609856074.index new file mode 100644 index 0000000..087096c Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2609856074.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2626965509.index b/.metadata/.plugins/org.eclipse.jdt.core/2626965509.index new file mode 100644 index 0000000..35632b0 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2626965509.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/26273648.index b/.metadata/.plugins/org.eclipse.jdt.core/26273648.index new file mode 100644 index 0000000..f98726d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/26273648.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2633787677.index b/.metadata/.plugins/org.eclipse.jdt.core/2633787677.index new file mode 100644 index 0000000..53b84dc Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2633787677.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2655170954.index b/.metadata/.plugins/org.eclipse.jdt.core/2655170954.index new file mode 100644 index 0000000..73d818f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2655170954.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2668411497.index b/.metadata/.plugins/org.eclipse.jdt.core/2668411497.index new file mode 100644 index 0000000..010bb34 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2668411497.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2725629017.index b/.metadata/.plugins/org.eclipse.jdt.core/2725629017.index new file mode 100644 index 0000000..0559ae6 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2725629017.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2769879155.index b/.metadata/.plugins/org.eclipse.jdt.core/2769879155.index new file mode 100644 index 0000000..96f8b44 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2769879155.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2817101718.index b/.metadata/.plugins/org.eclipse.jdt.core/2817101718.index new file mode 100644 index 0000000..35d263a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2817101718.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2838468603.index b/.metadata/.plugins/org.eclipse.jdt.core/2838468603.index new file mode 100644 index 0000000..a40bfda Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2838468603.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2874180664.index b/.metadata/.plugins/org.eclipse.jdt.core/2874180664.index new file mode 100644 index 0000000..3536f74 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2874180664.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2890245412.index b/.metadata/.plugins/org.eclipse.jdt.core/2890245412.index new file mode 100644 index 0000000..149bcab Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2890245412.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2891161224.index b/.metadata/.plugins/org.eclipse.jdt.core/2891161224.index new file mode 100644 index 0000000..3838d82 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2891161224.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/289134298.index b/.metadata/.plugins/org.eclipse.jdt.core/289134298.index new file mode 100644 index 0000000..d8e3ecc Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/289134298.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2927822381.index b/.metadata/.plugins/org.eclipse.jdt.core/2927822381.index new file mode 100644 index 0000000..9045837 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2927822381.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2978566974.index b/.metadata/.plugins/org.eclipse.jdt.core/2978566974.index new file mode 100644 index 0000000..b44c86d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2978566974.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2982788279.index b/.metadata/.plugins/org.eclipse.jdt.core/2982788279.index new file mode 100644 index 0000000..425519f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2982788279.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3108263030.index b/.metadata/.plugins/org.eclipse.jdt.core/3108263030.index new file mode 100644 index 0000000..eb72f6a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3108263030.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3135354350.index b/.metadata/.plugins/org.eclipse.jdt.core/3135354350.index new file mode 100644 index 0000000..1930cef Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3135354350.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3154281632.index b/.metadata/.plugins/org.eclipse.jdt.core/3154281632.index new file mode 100644 index 0000000..19c7955 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3154281632.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3326580390.index b/.metadata/.plugins/org.eclipse.jdt.core/3326580390.index new file mode 100644 index 0000000..a493a52 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3326580390.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3372764815.index b/.metadata/.plugins/org.eclipse.jdt.core/3372764815.index new file mode 100644 index 0000000..34b3eed Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3372764815.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3416862923.index b/.metadata/.plugins/org.eclipse.jdt.core/3416862923.index new file mode 100644 index 0000000..057092e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3416862923.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3514612140.index b/.metadata/.plugins/org.eclipse.jdt.core/3514612140.index new file mode 100644 index 0000000..07eae56 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3514612140.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3515611559.index b/.metadata/.plugins/org.eclipse.jdt.core/3515611559.index new file mode 100644 index 0000000..6ee873b Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3515611559.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3547251881.index b/.metadata/.plugins/org.eclipse.jdt.core/3547251881.index new file mode 100644 index 0000000..76b3265 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3547251881.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3552156823.index b/.metadata/.plugins/org.eclipse.jdt.core/3552156823.index new file mode 100644 index 0000000..735d89b Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3552156823.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3602551868.index b/.metadata/.plugins/org.eclipse.jdt.core/3602551868.index new file mode 100644 index 0000000..b4da3ac Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3602551868.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/363836152.index b/.metadata/.plugins/org.eclipse.jdt.core/363836152.index new file mode 100644 index 0000000..37a0d21 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/363836152.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3662169204.index b/.metadata/.plugins/org.eclipse.jdt.core/3662169204.index new file mode 100644 index 0000000..ee385f8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3662169204.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3718169413.index b/.metadata/.plugins/org.eclipse.jdt.core/3718169413.index new file mode 100644 index 0000000..26c0a37 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3718169413.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3738696963.index b/.metadata/.plugins/org.eclipse.jdt.core/3738696963.index new file mode 100644 index 0000000..6181764 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3738696963.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3758865325.index b/.metadata/.plugins/org.eclipse.jdt.core/3758865325.index new file mode 100644 index 0000000..1c2596e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3758865325.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/380800336.index b/.metadata/.plugins/org.eclipse.jdt.core/380800336.index new file mode 100644 index 0000000..2ac5670 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/380800336.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3842019335.index b/.metadata/.plugins/org.eclipse.jdt.core/3842019335.index new file mode 100644 index 0000000..062affa Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3842019335.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3882180612.index b/.metadata/.plugins/org.eclipse.jdt.core/3882180612.index new file mode 100644 index 0000000..8a75d87 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3882180612.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3912907421.index b/.metadata/.plugins/org.eclipse.jdt.core/3912907421.index new file mode 100644 index 0000000..e980743 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3912907421.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3972616808.index b/.metadata/.plugins/org.eclipse.jdt.core/3972616808.index new file mode 100644 index 0000000..33bdd9d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3972616808.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4123041097.index b/.metadata/.plugins/org.eclipse.jdt.core/4123041097.index new file mode 100644 index 0000000..44fa652 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4123041097.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4134502745.index b/.metadata/.plugins/org.eclipse.jdt.core/4134502745.index new file mode 100644 index 0000000..12a6c13 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4134502745.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4150628576.index b/.metadata/.plugins/org.eclipse.jdt.core/4150628576.index new file mode 100644 index 0000000..55c483a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4150628576.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4158338144.index b/.metadata/.plugins/org.eclipse.jdt.core/4158338144.index new file mode 100644 index 0000000..c41de67 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4158338144.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4195864863.index b/.metadata/.plugins/org.eclipse.jdt.core/4195864863.index new file mode 100644 index 0000000..9656806 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4195864863.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/504781245.index b/.metadata/.plugins/org.eclipse.jdt.core/504781245.index new file mode 100644 index 0000000..c627afb Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/504781245.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/519552992.index b/.metadata/.plugins/org.eclipse.jdt.core/519552992.index new file mode 100644 index 0000000..e7a5d9d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/519552992.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/690321491.index b/.metadata/.plugins/org.eclipse.jdt.core/690321491.index new file mode 100644 index 0000000..5838cc8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/690321491.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/721517855.index b/.metadata/.plugins/org.eclipse.jdt.core/721517855.index new file mode 100644 index 0000000..6f4b152 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/721517855.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/808711116.index b/.metadata/.plugins/org.eclipse.jdt.core/808711116.index new file mode 100644 index 0000000..5a89363 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/808711116.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/815902026.index b/.metadata/.plugins/org.eclipse.jdt.core/815902026.index new file mode 100644 index 0000000..d4dbac7 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/815902026.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/836499050.index b/.metadata/.plugins/org.eclipse.jdt.core/836499050.index new file mode 100644 index 0000000..acd2131 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/836499050.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/89143789.index b/.metadata/.plugins/org.eclipse.jdt.core/89143789.index new file mode 100644 index 0000000..ae02b50 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/89143789.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/958756673.index b/.metadata/.plugins/org.eclipse.jdt.core/958756673.index new file mode 100644 index 0000000..7217855 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/958756673.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/96642630.index b/.metadata/.plugins/org.eclipse.jdt.core/96642630.index new file mode 100644 index 0000000..9fb7843 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/96642630.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/970087405.index b/.metadata/.plugins/org.eclipse.jdt.core/970087405.index new file mode 100644 index 0000000..31cc5e2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/970087405.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/997772539.index b/.metadata/.plugins/org.eclipse.jdt.core/997772539.index new file mode 100644 index 0000000..26405c5 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/997772539.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache b/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache b/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache new file mode 100644 index 0000000..9bbe937 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps b/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps new file mode 100644 index 0000000..8274170 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt b/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt new file mode 100644 index 0000000..8586397 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt @@ -0,0 +1 @@ +java \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache new file mode 100644 index 0000000..7712708 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt b/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt new file mode 100644 index 0000000..db87dd1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt @@ -0,0 +1,105 @@ +INDEX VERSION 1.134+/home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core +690321491.index +1872440599.index +2240786275.index +4150628576.index +2655170954.index +4195864863.index +2982788279.index +2626965509.index +2609856074.index +2769879155.index +4134502745.index +2817101718.index +4158338144.index +519552992.index +2503368578.index +2181028596.index +1453089870.index +2593736024.index +815902026.index +3718169413.index +721517855.index +96642630.index +2488355463.index +1446719945.index +1118739196.index +2891161224.index +2047888269.index +2390245932.index +1205982295.index +1914043487.index +3154281632.index +3972616808.index +808711116.index +2191830568.index +1653061733.index +2586591901.index +2609698604.index +3882180612.index +3758865325.index +2332037983.index +2070370209.index +1732769785.index +2838468603.index +1436262503.index +3662169204.index +2927822381.index +2398089967.index +225562445.index +2668411497.index +1295630681.index +3135354350.index +3602551868.index +504781245.index +2725629017.index +2633787677.index +26273648.index +1455171009.index +3552156823.index +4123041097.index +363836152.index +289134298.index +2455962971.index +3372764815.index +2389383899.index +1865797976.index +3515611559.index +1241285641.index +2978566974.index +958756673.index +3108263030.index +3547251881.index +2236377038.index +2519831052.index +2874180664.index +1781188320.index +970087405.index +380800336.index +167025465.index +1074122571.index +1502997292.index +2237645717.index +3842019335.index +1965154635.index +2403041570.index +2455882736.index +3326580390.index +2004806901.index +836499050.index +3416862923.index +1502879287.index +3912907421.index +89143789.index +1546736044.index +2890245412.index +1990965588.index +3738696963.index +1660713777.index +997772539.index +198314732.index +3514612140.index +1324521365.index +1633924572.index +2318770678.index +1256436118.index diff --git a/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat new file mode 100644 index 0000000..495f48e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat differ diff --git a/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml b/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml new file mode 100644 index 0000000..810f5e9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml @@ -0,0 +1,4 @@ + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml b/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml new file mode 100644 index 0000000..455327d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml new file mode 100644 index 0000000..8dc94c0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml @@ -0,0 +1,4 @@ + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml new file mode 100644 index 0000000..dc2a0b2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml new file mode 100644 index 0000000..f4d9c30 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml @@ -0,0 +1,54 @@ + +
+ +
+ + + + + +
+
+
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+ + + +
+ + + + + +
+
+
+ +
+
+ + + + + +
+
+ + +
+
diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/9/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/9/refactorings.history new file mode 100644 index 0000000..5fbbfc6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/9/refactorings.history @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/9/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/9/refactorings.index new file mode 100644 index 0000000..d6ee30c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/9/refactorings.index @@ -0,0 +1 @@ +1772390182080 Delete resource 'lib' diff --git a/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser b/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser new file mode 100644 index 0000000..abbf8e5 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser differ diff --git a/.metadata/.plugins/org.eclipse.m2e.logback/0.log b/.metadata/.plugins/org.eclipse.m2e.logback/0.log new file mode 100644 index 0000000..6234de3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.m2e.logback/0.log @@ -0,0 +1,15 @@ +2026-03-01 17:27:17,460 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is not available. Remote download required. +2026-03-01 18:42:13,387 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2026-03-01 19:35:44,100 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2026-03-02 07:06:13,818 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2026-03-02 18:52:34,442 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. +2026-03-03 07:39:38,191 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2026-03-04 06:34:40,255 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. +2026-03-05 07:45:55,167 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. +2026-03-05 17:19:02,412 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2026-03-05 17:24:45,367 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2026-03-06 08:05:01,430 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. +2026-03-13 14:17:49,980 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. +2026-03-13 14:48:13,882 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2026-03-13 14:54:28,765 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2026-03-15 20:44:40,067 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. diff --git a/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml b/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml new file mode 100644 index 0000000..9effde7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.m2e.logback/logback.2.7.101.20251017-1242.xml @@ -0,0 +1,41 @@ + + + + %date [%thread] %-5level %logger{35} - %msg%n + + + ${org.eclipse.m2e.log.console.threshold:-OFF} + + + + + ${org.eclipse.m2e.log.dir}/0.log + + ${org.eclipse.m2e.log.dir}/%i.log + 1 + 10 + + + 10MB + + + %date [%thread] %-5level %logger{35} - %msg%n + + + + + + WARN + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.mylyn.github.ui/avatars.ser b/.metadata/.plugins/org.eclipse.mylyn.github.ui/avatars.ser new file mode 100644 index 0000000..1e9a069 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.mylyn.github.ui/avatars.ser differ diff --git a/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup b/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup new file mode 100644 index 0000000..1f73e14 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup @@ -0,0 +1,6 @@ + + diff --git a/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml new file mode 100644 index 0000000..5ca0b77 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml @@ -0,0 +1,3 @@ + +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml new file mode 100644 index 0000000..50f1edb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml @@ -0,0 +1,5 @@ + +
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.intro/introstate b/.metadata/.plugins/org.eclipse.ui.intro/introstate new file mode 100644 index 0000000..02f134f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.intro/introstate @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml new file mode 100644 index 0000000..e074d67 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml @@ -0,0 +1,26 @@ + +
+
+ + + + +
+
+
+
+ + + + + +
+
+ + + + +
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml new file mode 100644 index 0000000..4642108 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.metadata/version.ini b/.metadata/version.ini new file mode 100644 index 0000000..e065c1e --- /dev/null +++ b/.metadata/version.ini @@ -0,0 +1,3 @@ +#Sun Mar 15 20:44:32 CET 2026 +org.eclipse.core.runtime=2 +org.eclipse.platform=4.38.0.v20251201-0920 diff --git a/bilder/card_doubleup.png b/bilder/card_doubleup.png new file mode 100644 index 0000000..7772187 Binary files /dev/null and b/bilder/card_doubleup.png differ diff --git a/bilder/card_freeze.png b/bilder/card_freeze.png new file mode 100644 index 0000000..a046939 Binary files /dev/null and b/bilder/card_freeze.png differ diff --git a/bilder/card_red.png b/bilder/card_red.png new file mode 100644 index 0000000..5e09a93 Binary files /dev/null and b/bilder/card_red.png differ diff --git a/bilder/card_reset.png b/bilder/card_reset.png new file mode 100644 index 0000000..6cd9642 Binary files /dev/null and b/bilder/card_reset.png differ diff --git a/bilder/card_task.png b/bilder/card_task.png new file mode 100644 index 0000000..022fc94 Binary files /dev/null and b/bilder/card_task.png differ diff --git a/bilder/card_yellow.png b/bilder/card_yellow.png new file mode 100644 index 0000000..ca6e293 Binary files /dev/null and b/bilder/card_yellow.png differ diff --git a/xxxthegame-android/.gradle/8.9/checksums/checksums.lock b/xxxthegame-android/.gradle/8.9/checksums/checksums.lock new file mode 100644 index 0000000..cbb13e3 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/checksums/checksums.lock differ diff --git a/xxxthegame-android/.gradle/8.9/checksums/md5-checksums.bin b/xxxthegame-android/.gradle/8.9/checksums/md5-checksums.bin new file mode 100644 index 0000000..4b6998c Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/checksums/md5-checksums.bin differ diff --git a/xxxthegame-android/.gradle/8.9/checksums/sha1-checksums.bin b/xxxthegame-android/.gradle/8.9/checksums/sha1-checksums.bin new file mode 100644 index 0000000..2f9f6c1 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/checksums/sha1-checksums.bin differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidPluginAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidPluginAccessors.class new file mode 100644 index 0000000..448a4db Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidPluginAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxActivityLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxActivityLibraryAccessors.class new file mode 100644 index 0000000..2c0107b Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxActivityLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxComposeLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxComposeLibraryAccessors.class new file mode 100644 index 0000000..b614136 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxComposeLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxCoreLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxCoreLibraryAccessors.class new file mode 100644 index 0000000..95daf8e Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxCoreLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxDatastoreLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxDatastoreLibraryAccessors.class new file mode 100644 index 0000000..b6095df Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxDatastoreLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLibraryAccessors.class new file mode 100644 index 0000000..58ca11f Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleLibraryAccessors.class new file mode 100644 index 0000000..7aa185a Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleRuntimeLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleRuntimeLibraryAccessors.class new file mode 100644 index 0000000..d837670 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleRuntimeLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleViewmodelLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleViewmodelLibraryAccessors.class new file mode 100644 index 0000000..4da35ab Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleViewmodelLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxMaterialIconsLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxMaterialIconsLibraryAccessors.class new file mode 100644 index 0000000..c6bf485 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxMaterialIconsLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxMaterialLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxMaterialLibraryAccessors.class new file mode 100644 index 0000000..90f04d7 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxMaterialLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxNavigationLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxNavigationLibraryAccessors.class new file mode 100644 index 0000000..cd2167d Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxNavigationLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiLibraryAccessors.class new file mode 100644 index 0000000..544835e Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiToolingLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiToolingLibraryAccessors.class new file mode 100644 index 0000000..c9e0c10 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiToolingLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$BundleAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$BundleAccessors.class new file mode 100644 index 0000000..7c3b0c1 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$BundleAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$CoilLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$CoilLibraryAccessors.class new file mode 100644 index 0000000..edd9c79 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$CoilLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$KotlinPluginAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$KotlinPluginAccessors.class new file mode 100644 index 0000000..d479f70 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$KotlinPluginAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$KotlinxCoroutinesLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$KotlinxCoroutinesLibraryAccessors.class new file mode 100644 index 0000000..9c14fe3 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$KotlinxCoroutinesLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$KotlinxLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$KotlinxLibraryAccessors.class new file mode 100644 index 0000000..f603a54 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$KotlinxLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$OkhttpLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$OkhttpLibraryAccessors.class new file mode 100644 index 0000000..43d4e86 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$OkhttpLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$OkhttpLoggingLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$OkhttpLoggingLibraryAccessors.class new file mode 100644 index 0000000..d3cf9ad Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$OkhttpLoggingLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$PluginAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$PluginAccessors.class new file mode 100644 index 0000000..9260dd7 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$PluginAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$RetrofitConverterLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$RetrofitConverterLibraryAccessors.class new file mode 100644 index 0000000..a8ee4a6 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$RetrofitConverterLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$RetrofitLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$RetrofitLibraryAccessors.class new file mode 100644 index 0000000..5c6e9d7 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$RetrofitLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$VersionAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$VersionAccessors.class new file mode 100644 index 0000000..225af83 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs$VersionAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs.class new file mode 100644 index 0000000..4dffd1c Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibs.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidPluginAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidPluginAccessors.class new file mode 100644 index 0000000..30e80fb Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidPluginAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxActivityLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxActivityLibraryAccessors.class new file mode 100644 index 0000000..4890686 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxActivityLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxComposeLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxComposeLibraryAccessors.class new file mode 100644 index 0000000..eac1d31 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxComposeLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxCoreLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxCoreLibraryAccessors.class new file mode 100644 index 0000000..9cda149 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxCoreLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxDatastoreLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxDatastoreLibraryAccessors.class new file mode 100644 index 0000000..d860bc9 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxDatastoreLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLibraryAccessors.class new file mode 100644 index 0000000..9ba4adb Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleLibraryAccessors.class new file mode 100644 index 0000000..73114f0 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleRuntimeLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleRuntimeLibraryAccessors.class new file mode 100644 index 0000000..ae83abb Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleRuntimeLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleViewmodelLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleViewmodelLibraryAccessors.class new file mode 100644 index 0000000..bd9e265 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleViewmodelLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxMaterialIconsLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxMaterialIconsLibraryAccessors.class new file mode 100644 index 0000000..737d8fa Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxMaterialIconsLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxMaterialLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxMaterialLibraryAccessors.class new file mode 100644 index 0000000..659fd16 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxMaterialLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxNavigationLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxNavigationLibraryAccessors.class new file mode 100644 index 0000000..9444ee0 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxNavigationLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiLibraryAccessors.class new file mode 100644 index 0000000..be88af3 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiToolingLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiToolingLibraryAccessors.class new file mode 100644 index 0000000..649e9a7 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiToolingLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$BundleAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$BundleAccessors.class new file mode 100644 index 0000000..4a18b2c Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$BundleAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$CoilLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$CoilLibraryAccessors.class new file mode 100644 index 0000000..db4de11 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$CoilLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$KotlinPluginAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$KotlinPluginAccessors.class new file mode 100644 index 0000000..eda55c6 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$KotlinPluginAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$KotlinxCoroutinesLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$KotlinxCoroutinesLibraryAccessors.class new file mode 100644 index 0000000..163fb37 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$KotlinxCoroutinesLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$KotlinxLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$KotlinxLibraryAccessors.class new file mode 100644 index 0000000..136f9d6 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$KotlinxLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$OkhttpLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$OkhttpLibraryAccessors.class new file mode 100644 index 0000000..1a9bd4c Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$OkhttpLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$OkhttpLoggingLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$OkhttpLoggingLibraryAccessors.class new file mode 100644 index 0000000..64ca183 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$OkhttpLoggingLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$PluginAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$PluginAccessors.class new file mode 100644 index 0000000..66d6b70 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$PluginAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$RetrofitConverterLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$RetrofitConverterLibraryAccessors.class new file mode 100644 index 0000000..f9fd81f Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$RetrofitConverterLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$RetrofitLibraryAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$RetrofitLibraryAccessors.class new file mode 100644 index 0000000..b8a7dbe Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$RetrofitLibraryAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$VersionAccessors.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$VersionAccessors.class new file mode 100644 index 0000000..90c732d Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$VersionAccessors.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.class b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.class new file mode 100644 index 0000000..44b0020 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.class differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/metadata.bin b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/metadata.bin new file mode 100644 index 0000000..5f2cb4b Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/metadata.bin differ diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/sources/org/gradle/accessors/dm/LibrariesForLibs.java b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/sources/org/gradle/accessors/dm/LibrariesForLibs.java new file mode 100644 index 0000000..b91c78e --- /dev/null +++ b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/sources/org/gradle/accessors/dm/LibrariesForLibs.java @@ -0,0 +1,745 @@ +package org.gradle.accessors.dm; + +import org.gradle.api.NonNullApi; +import org.gradle.api.artifacts.MinimalExternalModuleDependency; +import org.gradle.plugin.use.PluginDependency; +import org.gradle.api.artifacts.ExternalModuleDependencyBundle; +import org.gradle.api.artifacts.MutableVersionConstraint; +import org.gradle.api.provider.Provider; +import org.gradle.api.model.ObjectFactory; +import org.gradle.api.provider.ProviderFactory; +import org.gradle.api.internal.catalog.AbstractExternalDependencyFactory; +import org.gradle.api.internal.catalog.DefaultVersionCatalog; +import java.util.Map; +import org.gradle.api.internal.attributes.ImmutableAttributesFactory; +import org.gradle.api.internal.artifacts.dsl.CapabilityNotationParser; +import javax.inject.Inject; + +/** + * A catalog of dependencies accessible via the {@code libs} extension. + */ +@NonNullApi +public class LibrariesForLibs extends AbstractExternalDependencyFactory { + + private final AbstractExternalDependencyFactory owner = this; + private final AndroidxLibraryAccessors laccForAndroidxLibraryAccessors = new AndroidxLibraryAccessors(owner); + private final CoilLibraryAccessors laccForCoilLibraryAccessors = new CoilLibraryAccessors(owner); + private final KotlinxLibraryAccessors laccForKotlinxLibraryAccessors = new KotlinxLibraryAccessors(owner); + private final OkhttpLibraryAccessors laccForOkhttpLibraryAccessors = new OkhttpLibraryAccessors(owner); + private final RetrofitLibraryAccessors laccForRetrofitLibraryAccessors = new RetrofitLibraryAccessors(owner); + private final VersionAccessors vaccForVersionAccessors = new VersionAccessors(providers, config); + private final BundleAccessors baccForBundleAccessors = new BundleAccessors(objects, providers, config, attributesFactory, capabilityNotationParser); + private final PluginAccessors paccForPluginAccessors = new PluginAccessors(providers, config); + + @Inject + public LibrariesForLibs(DefaultVersionCatalog config, ProviderFactory providers, ObjectFactory objects, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) { + super(config, providers, objects, attributesFactory, capabilityNotationParser); + } + + /** + * Dependency provider for gson with com.google.code.gson:gson coordinates and + * with version reference gson + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getGson() { + return create("gson"); + } + + /** + * Group of libraries at androidx + */ + public AndroidxLibraryAccessors getAndroidx() { + return laccForAndroidxLibraryAccessors; + } + + /** + * Group of libraries at coil + */ + public CoilLibraryAccessors getCoil() { + return laccForCoilLibraryAccessors; + } + + /** + * Group of libraries at kotlinx + */ + public KotlinxLibraryAccessors getKotlinx() { + return laccForKotlinxLibraryAccessors; + } + + /** + * Group of libraries at okhttp + */ + public OkhttpLibraryAccessors getOkhttp() { + return laccForOkhttpLibraryAccessors; + } + + /** + * Group of libraries at retrofit + */ + public RetrofitLibraryAccessors getRetrofit() { + return laccForRetrofitLibraryAccessors; + } + + /** + * Group of versions at versions + */ + public VersionAccessors getVersions() { + return vaccForVersionAccessors; + } + + /** + * Group of bundles at bundles + */ + public BundleAccessors getBundles() { + return baccForBundleAccessors; + } + + /** + * Group of plugins at plugins + */ + public PluginAccessors getPlugins() { + return paccForPluginAccessors; + } + + public static class AndroidxLibraryAccessors extends SubDependencyFactory { + private final AndroidxActivityLibraryAccessors laccForAndroidxActivityLibraryAccessors = new AndroidxActivityLibraryAccessors(owner); + private final AndroidxComposeLibraryAccessors laccForAndroidxComposeLibraryAccessors = new AndroidxComposeLibraryAccessors(owner); + private final AndroidxCoreLibraryAccessors laccForAndroidxCoreLibraryAccessors = new AndroidxCoreLibraryAccessors(owner); + private final AndroidxDatastoreLibraryAccessors laccForAndroidxDatastoreLibraryAccessors = new AndroidxDatastoreLibraryAccessors(owner); + private final AndroidxLifecycleLibraryAccessors laccForAndroidxLifecycleLibraryAccessors = new AndroidxLifecycleLibraryAccessors(owner); + private final AndroidxMaterialLibraryAccessors laccForAndroidxMaterialLibraryAccessors = new AndroidxMaterialLibraryAccessors(owner); + private final AndroidxNavigationLibraryAccessors laccForAndroidxNavigationLibraryAccessors = new AndroidxNavigationLibraryAccessors(owner); + private final AndroidxUiLibraryAccessors laccForAndroidxUiLibraryAccessors = new AndroidxUiLibraryAccessors(owner); + + public AndroidxLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for material3 with androidx.compose.material3:material3 coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getMaterial3() { + return create("androidx.material3"); + } + + /** + * Group of libraries at androidx.activity + */ + public AndroidxActivityLibraryAccessors getActivity() { + return laccForAndroidxActivityLibraryAccessors; + } + + /** + * Group of libraries at androidx.compose + */ + public AndroidxComposeLibraryAccessors getCompose() { + return laccForAndroidxComposeLibraryAccessors; + } + + /** + * Group of libraries at androidx.core + */ + public AndroidxCoreLibraryAccessors getCore() { + return laccForAndroidxCoreLibraryAccessors; + } + + /** + * Group of libraries at androidx.datastore + */ + public AndroidxDatastoreLibraryAccessors getDatastore() { + return laccForAndroidxDatastoreLibraryAccessors; + } + + /** + * Group of libraries at androidx.lifecycle + */ + public AndroidxLifecycleLibraryAccessors getLifecycle() { + return laccForAndroidxLifecycleLibraryAccessors; + } + + /** + * Group of libraries at androidx.material + */ + public AndroidxMaterialLibraryAccessors getMaterial() { + return laccForAndroidxMaterialLibraryAccessors; + } + + /** + * Group of libraries at androidx.navigation + */ + public AndroidxNavigationLibraryAccessors getNavigation() { + return laccForAndroidxNavigationLibraryAccessors; + } + + /** + * Group of libraries at androidx.ui + */ + public AndroidxUiLibraryAccessors getUi() { + return laccForAndroidxUiLibraryAccessors; + } + + } + + public static class AndroidxActivityLibraryAccessors extends SubDependencyFactory { + + public AndroidxActivityLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for compose with androidx.activity:activity-compose coordinates and + * with version reference activityCompose + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getCompose() { + return create("androidx.activity.compose"); + } + + } + + public static class AndroidxComposeLibraryAccessors extends SubDependencyFactory { + + public AndroidxComposeLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for bom with androidx.compose:compose-bom coordinates and + * with version reference composeBom + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getBom() { + return create("androidx.compose.bom"); + } + + } + + public static class AndroidxCoreLibraryAccessors extends SubDependencyFactory { + + public AndroidxCoreLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ktx with androidx.core:core-ktx coordinates and + * with version reference coreKtx + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getKtx() { + return create("androidx.core.ktx"); + } + + } + + public static class AndroidxDatastoreLibraryAccessors extends SubDependencyFactory { + + public AndroidxDatastoreLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for preferences with androidx.datastore:datastore-preferences coordinates and + * with version reference datastore + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getPreferences() { + return create("androidx.datastore.preferences"); + } + + } + + public static class AndroidxLifecycleLibraryAccessors extends SubDependencyFactory { + private final AndroidxLifecycleRuntimeLibraryAccessors laccForAndroidxLifecycleRuntimeLibraryAccessors = new AndroidxLifecycleRuntimeLibraryAccessors(owner); + private final AndroidxLifecycleViewmodelLibraryAccessors laccForAndroidxLifecycleViewmodelLibraryAccessors = new AndroidxLifecycleViewmodelLibraryAccessors(owner); + + public AndroidxLifecycleLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Group of libraries at androidx.lifecycle.runtime + */ + public AndroidxLifecycleRuntimeLibraryAccessors getRuntime() { + return laccForAndroidxLifecycleRuntimeLibraryAccessors; + } + + /** + * Group of libraries at androidx.lifecycle.viewmodel + */ + public AndroidxLifecycleViewmodelLibraryAccessors getViewmodel() { + return laccForAndroidxLifecycleViewmodelLibraryAccessors; + } + + } + + public static class AndroidxLifecycleRuntimeLibraryAccessors extends SubDependencyFactory { + + public AndroidxLifecycleRuntimeLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ktx with androidx.lifecycle:lifecycle-runtime-ktx coordinates and + * with version reference lifecycleRuntimeKtx + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getKtx() { + return create("androidx.lifecycle.runtime.ktx"); + } + + } + + public static class AndroidxLifecycleViewmodelLibraryAccessors extends SubDependencyFactory { + + public AndroidxLifecycleViewmodelLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for compose with androidx.lifecycle:lifecycle-viewmodel-compose coordinates and + * with version reference lifecycleRuntimeKtx + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getCompose() { + return create("androidx.lifecycle.viewmodel.compose"); + } + + } + + public static class AndroidxMaterialLibraryAccessors extends SubDependencyFactory { + private final AndroidxMaterialIconsLibraryAccessors laccForAndroidxMaterialIconsLibraryAccessors = new AndroidxMaterialIconsLibraryAccessors(owner); + + public AndroidxMaterialLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Group of libraries at androidx.material.icons + */ + public AndroidxMaterialIconsLibraryAccessors getIcons() { + return laccForAndroidxMaterialIconsLibraryAccessors; + } + + } + + public static class AndroidxMaterialIconsLibraryAccessors extends SubDependencyFactory { + + public AndroidxMaterialIconsLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for extended with androidx.compose.material:material-icons-extended coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getExtended() { + return create("androidx.material.icons.extended"); + } + + } + + public static class AndroidxNavigationLibraryAccessors extends SubDependencyFactory { + + public AndroidxNavigationLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for compose with androidx.navigation:navigation-compose coordinates and + * with version reference navigationCompose + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getCompose() { + return create("androidx.navigation.compose"); + } + + } + + public static class AndroidxUiLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + private final AndroidxUiToolingLibraryAccessors laccForAndroidxUiToolingLibraryAccessors = new AndroidxUiToolingLibraryAccessors(owner); + + public AndroidxUiLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ui with androidx.compose.ui:ui coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider asProvider() { + return create("androidx.ui"); + } + + /** + * Dependency provider for graphics with androidx.compose.ui:ui-graphics coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getGraphics() { + return create("androidx.ui.graphics"); + } + + /** + * Group of libraries at androidx.ui.tooling + */ + public AndroidxUiToolingLibraryAccessors getTooling() { + return laccForAndroidxUiToolingLibraryAccessors; + } + + } + + public static class AndroidxUiToolingLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + + public AndroidxUiToolingLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for tooling with androidx.compose.ui:ui-tooling coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider asProvider() { + return create("androidx.ui.tooling"); + } + + /** + * Dependency provider for preview with androidx.compose.ui:ui-tooling-preview coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getPreview() { + return create("androidx.ui.tooling.preview"); + } + + } + + public static class CoilLibraryAccessors extends SubDependencyFactory { + + public CoilLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for compose with io.coil-kt:coil-compose coordinates and + * with version reference coil + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getCompose() { + return create("coil.compose"); + } + + } + + public static class KotlinxLibraryAccessors extends SubDependencyFactory { + private final KotlinxCoroutinesLibraryAccessors laccForKotlinxCoroutinesLibraryAccessors = new KotlinxCoroutinesLibraryAccessors(owner); + + public KotlinxLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Group of libraries at kotlinx.coroutines + */ + public KotlinxCoroutinesLibraryAccessors getCoroutines() { + return laccForKotlinxCoroutinesLibraryAccessors; + } + + } + + public static class KotlinxCoroutinesLibraryAccessors extends SubDependencyFactory { + + public KotlinxCoroutinesLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for android with org.jetbrains.kotlinx:kotlinx-coroutines-android coordinates and + * with version reference coroutines + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getAndroid() { + return create("kotlinx.coroutines.android"); + } + + } + + public static class OkhttpLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + private final OkhttpLoggingLibraryAccessors laccForOkhttpLoggingLibraryAccessors = new OkhttpLoggingLibraryAccessors(owner); + + public OkhttpLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for okhttp with com.squareup.okhttp3:okhttp coordinates and + * with version reference okhttp + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider asProvider() { + return create("okhttp"); + } + + /** + * Group of libraries at okhttp.logging + */ + public OkhttpLoggingLibraryAccessors getLogging() { + return laccForOkhttpLoggingLibraryAccessors; + } + + } + + public static class OkhttpLoggingLibraryAccessors extends SubDependencyFactory { + + public OkhttpLoggingLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for interceptor with com.squareup.okhttp3:logging-interceptor coordinates and + * with version reference okhttp + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getInterceptor() { + return create("okhttp.logging.interceptor"); + } + + } + + public static class RetrofitLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + private final RetrofitConverterLibraryAccessors laccForRetrofitConverterLibraryAccessors = new RetrofitConverterLibraryAccessors(owner); + + public RetrofitLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for retrofit with com.squareup.retrofit2:retrofit coordinates and + * with version reference retrofit + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider asProvider() { + return create("retrofit"); + } + + /** + * Group of libraries at retrofit.converter + */ + public RetrofitConverterLibraryAccessors getConverter() { + return laccForRetrofitConverterLibraryAccessors; + } + + } + + public static class RetrofitConverterLibraryAccessors extends SubDependencyFactory { + + public RetrofitConverterLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for gson with com.squareup.retrofit2:converter-gson coordinates and + * with version reference retrofit + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getGson() { + return create("retrofit.converter.gson"); + } + + } + + public static class VersionAccessors extends VersionFactory { + + public VersionAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Version alias activityCompose with value 1.9.2 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getActivityCompose() { return getVersion("activityCompose"); } + + /** + * Version alias agp with value 8.5.2 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getAgp() { return getVersion("agp"); } + + /** + * Version alias coil with value 2.7.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getCoil() { return getVersion("coil"); } + + /** + * Version alias composeBom with value 2024.09.03 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getComposeBom() { return getVersion("composeBom"); } + + /** + * Version alias coreKtx with value 1.13.1 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getCoreKtx() { return getVersion("coreKtx"); } + + /** + * Version alias coroutines with value 1.9.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getCoroutines() { return getVersion("coroutines"); } + + /** + * Version alias datastore with value 1.1.1 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getDatastore() { return getVersion("datastore"); } + + /** + * Version alias gson with value 2.11.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getGson() { return getVersion("gson"); } + + /** + * Version alias kotlin with value 2.0.21 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getKotlin() { return getVersion("kotlin"); } + + /** + * Version alias lifecycleRuntimeKtx with value 2.8.6 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getLifecycleRuntimeKtx() { return getVersion("lifecycleRuntimeKtx"); } + + /** + * Version alias material3 with value 1.3.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getMaterial3() { return getVersion("material3"); } + + /** + * Version alias navigationCompose with value 2.8.2 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getNavigationCompose() { return getVersion("navigationCompose"); } + + /** + * Version alias okhttp with value 4.12.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getOkhttp() { return getVersion("okhttp"); } + + /** + * Version alias retrofit with value 2.11.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getRetrofit() { return getVersion("retrofit"); } + + } + + public static class BundleAccessors extends BundleFactory { + + public BundleAccessors(ObjectFactory objects, ProviderFactory providers, DefaultVersionCatalog config, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) { super(objects, providers, config, attributesFactory, capabilityNotationParser); } + + } + + public static class PluginAccessors extends PluginFactory { + private final AndroidPluginAccessors paccForAndroidPluginAccessors = new AndroidPluginAccessors(providers, config); + private final KotlinPluginAccessors paccForKotlinPluginAccessors = new KotlinPluginAccessors(providers, config); + + public PluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Group of plugins at plugins.android + */ + public AndroidPluginAccessors getAndroid() { + return paccForAndroidPluginAccessors; + } + + /** + * Group of plugins at plugins.kotlin + */ + public KotlinPluginAccessors getKotlin() { + return paccForKotlinPluginAccessors; + } + + } + + public static class AndroidPluginAccessors extends PluginFactory { + + public AndroidPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Plugin provider for android.application with plugin id com.android.application and + * with version reference agp + *

+ * This plugin was declared in catalog libs.versions.toml + */ + public Provider getApplication() { return createPlugin("android.application"); } + + } + + public static class KotlinPluginAccessors extends PluginFactory { + + public KotlinPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Plugin provider for kotlin.android with plugin id org.jetbrains.kotlin.android and + * with version reference kotlin + *

+ * This plugin was declared in catalog libs.versions.toml + */ + public Provider getAndroid() { return createPlugin("kotlin.android"); } + + /** + * Plugin provider for kotlin.compose with plugin id org.jetbrains.kotlin.plugin.compose and + * with version reference kotlin + *

+ * This plugin was declared in catalog libs.versions.toml + */ + public Provider getCompose() { return createPlugin("kotlin.compose"); } + + } + +} diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/sources/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.java b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/sources/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.java new file mode 100644 index 0000000..b470f65 --- /dev/null +++ b/xxxthegame-android/.gradle/8.9/dependencies-accessors/c3805386515b7aecc2b3876e9cffd6a8d119b2ac/sources/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.java @@ -0,0 +1,993 @@ +package org.gradle.accessors.dm; + +import org.gradle.api.NonNullApi; +import org.gradle.api.artifacts.MinimalExternalModuleDependency; +import org.gradle.plugin.use.PluginDependency; +import org.gradle.api.artifacts.ExternalModuleDependencyBundle; +import org.gradle.api.artifacts.MutableVersionConstraint; +import org.gradle.api.provider.Provider; +import org.gradle.api.model.ObjectFactory; +import org.gradle.api.provider.ProviderFactory; +import org.gradle.api.internal.catalog.AbstractExternalDependencyFactory; +import org.gradle.api.internal.catalog.DefaultVersionCatalog; +import java.util.Map; +import org.gradle.api.internal.attributes.ImmutableAttributesFactory; +import org.gradle.api.internal.artifacts.dsl.CapabilityNotationParser; +import javax.inject.Inject; + +/** + * A catalog of dependencies accessible via the {@code libs} extension. + */ +@NonNullApi +public class LibrariesForLibsInPluginsBlock extends AbstractExternalDependencyFactory { + + private final AbstractExternalDependencyFactory owner = this; + private final AndroidxLibraryAccessors laccForAndroidxLibraryAccessors = new AndroidxLibraryAccessors(owner); + private final CoilLibraryAccessors laccForCoilLibraryAccessors = new CoilLibraryAccessors(owner); + private final KotlinxLibraryAccessors laccForKotlinxLibraryAccessors = new KotlinxLibraryAccessors(owner); + private final OkhttpLibraryAccessors laccForOkhttpLibraryAccessors = new OkhttpLibraryAccessors(owner); + private final RetrofitLibraryAccessors laccForRetrofitLibraryAccessors = new RetrofitLibraryAccessors(owner); + private final VersionAccessors vaccForVersionAccessors = new VersionAccessors(providers, config); + private final BundleAccessors baccForBundleAccessors = new BundleAccessors(objects, providers, config, attributesFactory, capabilityNotationParser); + private final PluginAccessors paccForPluginAccessors = new PluginAccessors(providers, config); + + @Inject + public LibrariesForLibsInPluginsBlock(DefaultVersionCatalog config, ProviderFactory providers, ObjectFactory objects, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) { + super(config, providers, objects, attributesFactory, capabilityNotationParser); + } + + /** + * Dependency provider for gson with com.google.code.gson:gson coordinates and + * with version reference gson + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getGson() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("gson"); + } + + /** + * Group of libraries at androidx + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxLibraryAccessors getAndroidx() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxLibraryAccessors; + } + + /** + * Group of libraries at coil + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public CoilLibraryAccessors getCoil() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForCoilLibraryAccessors; + } + + /** + * Group of libraries at kotlinx + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public KotlinxLibraryAccessors getKotlinx() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForKotlinxLibraryAccessors; + } + + /** + * Group of libraries at okhttp + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public OkhttpLibraryAccessors getOkhttp() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForOkhttpLibraryAccessors; + } + + /** + * Group of libraries at retrofit + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public RetrofitLibraryAccessors getRetrofit() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForRetrofitLibraryAccessors; + } + + /** + * Group of versions at versions + */ + public VersionAccessors getVersions() { + return vaccForVersionAccessors; + } + + /** + * Group of bundles at bundles + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public BundleAccessors getBundles() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return baccForBundleAccessors; + } + + /** + * Group of plugins at plugins + */ + public PluginAccessors getPlugins() { + return paccForPluginAccessors; + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxLibraryAccessors extends SubDependencyFactory { + private final AndroidxActivityLibraryAccessors laccForAndroidxActivityLibraryAccessors = new AndroidxActivityLibraryAccessors(owner); + private final AndroidxComposeLibraryAccessors laccForAndroidxComposeLibraryAccessors = new AndroidxComposeLibraryAccessors(owner); + private final AndroidxCoreLibraryAccessors laccForAndroidxCoreLibraryAccessors = new AndroidxCoreLibraryAccessors(owner); + private final AndroidxDatastoreLibraryAccessors laccForAndroidxDatastoreLibraryAccessors = new AndroidxDatastoreLibraryAccessors(owner); + private final AndroidxLifecycleLibraryAccessors laccForAndroidxLifecycleLibraryAccessors = new AndroidxLifecycleLibraryAccessors(owner); + private final AndroidxMaterialLibraryAccessors laccForAndroidxMaterialLibraryAccessors = new AndroidxMaterialLibraryAccessors(owner); + private final AndroidxNavigationLibraryAccessors laccForAndroidxNavigationLibraryAccessors = new AndroidxNavigationLibraryAccessors(owner); + private final AndroidxUiLibraryAccessors laccForAndroidxUiLibraryAccessors = new AndroidxUiLibraryAccessors(owner); + + public AndroidxLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for material3 with androidx.compose.material3:material3 coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getMaterial3() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.material3"); + } + + /** + * Group of libraries at androidx.activity + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxActivityLibraryAccessors getActivity() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxActivityLibraryAccessors; + } + + /** + * Group of libraries at androidx.compose + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxComposeLibraryAccessors getCompose() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxComposeLibraryAccessors; + } + + /** + * Group of libraries at androidx.core + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxCoreLibraryAccessors getCore() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxCoreLibraryAccessors; + } + + /** + * Group of libraries at androidx.datastore + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxDatastoreLibraryAccessors getDatastore() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxDatastoreLibraryAccessors; + } + + /** + * Group of libraries at androidx.lifecycle + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxLifecycleLibraryAccessors getLifecycle() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxLifecycleLibraryAccessors; + } + + /** + * Group of libraries at androidx.material + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxMaterialLibraryAccessors getMaterial() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxMaterialLibraryAccessors; + } + + /** + * Group of libraries at androidx.navigation + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxNavigationLibraryAccessors getNavigation() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxNavigationLibraryAccessors; + } + + /** + * Group of libraries at androidx.ui + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxUiLibraryAccessors getUi() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxUiLibraryAccessors; + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxActivityLibraryAccessors extends SubDependencyFactory { + + public AndroidxActivityLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for compose with androidx.activity:activity-compose coordinates and + * with version reference activityCompose + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getCompose() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.activity.compose"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxComposeLibraryAccessors extends SubDependencyFactory { + + public AndroidxComposeLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for bom with androidx.compose:compose-bom coordinates and + * with version reference composeBom + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getBom() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.compose.bom"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxCoreLibraryAccessors extends SubDependencyFactory { + + public AndroidxCoreLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ktx with androidx.core:core-ktx coordinates and + * with version reference coreKtx + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getKtx() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.core.ktx"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxDatastoreLibraryAccessors extends SubDependencyFactory { + + public AndroidxDatastoreLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for preferences with androidx.datastore:datastore-preferences coordinates and + * with version reference datastore + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getPreferences() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.datastore.preferences"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxLifecycleLibraryAccessors extends SubDependencyFactory { + private final AndroidxLifecycleRuntimeLibraryAccessors laccForAndroidxLifecycleRuntimeLibraryAccessors = new AndroidxLifecycleRuntimeLibraryAccessors(owner); + private final AndroidxLifecycleViewmodelLibraryAccessors laccForAndroidxLifecycleViewmodelLibraryAccessors = new AndroidxLifecycleViewmodelLibraryAccessors(owner); + + public AndroidxLifecycleLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Group of libraries at androidx.lifecycle.runtime + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxLifecycleRuntimeLibraryAccessors getRuntime() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxLifecycleRuntimeLibraryAccessors; + } + + /** + * Group of libraries at androidx.lifecycle.viewmodel + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxLifecycleViewmodelLibraryAccessors getViewmodel() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxLifecycleViewmodelLibraryAccessors; + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxLifecycleRuntimeLibraryAccessors extends SubDependencyFactory { + + public AndroidxLifecycleRuntimeLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ktx with androidx.lifecycle:lifecycle-runtime-ktx coordinates and + * with version reference lifecycleRuntimeKtx + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getKtx() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.lifecycle.runtime.ktx"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxLifecycleViewmodelLibraryAccessors extends SubDependencyFactory { + + public AndroidxLifecycleViewmodelLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for compose with androidx.lifecycle:lifecycle-viewmodel-compose coordinates and + * with version reference lifecycleRuntimeKtx + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getCompose() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.lifecycle.viewmodel.compose"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxMaterialLibraryAccessors extends SubDependencyFactory { + private final AndroidxMaterialIconsLibraryAccessors laccForAndroidxMaterialIconsLibraryAccessors = new AndroidxMaterialIconsLibraryAccessors(owner); + + public AndroidxMaterialLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Group of libraries at androidx.material.icons + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxMaterialIconsLibraryAccessors getIcons() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxMaterialIconsLibraryAccessors; + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxMaterialIconsLibraryAccessors extends SubDependencyFactory { + + public AndroidxMaterialIconsLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for extended with androidx.compose.material:material-icons-extended coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getExtended() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.material.icons.extended"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxNavigationLibraryAccessors extends SubDependencyFactory { + + public AndroidxNavigationLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for compose with androidx.navigation:navigation-compose coordinates and + * with version reference navigationCompose + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getCompose() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.navigation.compose"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxUiLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + private final AndroidxUiToolingLibraryAccessors laccForAndroidxUiToolingLibraryAccessors = new AndroidxUiToolingLibraryAccessors(owner); + + public AndroidxUiLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ui with androidx.compose.ui:ui coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider asProvider() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.ui"); + } + + /** + * Dependency provider for graphics with androidx.compose.ui:ui-graphics coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getGraphics() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.ui.graphics"); + } + + /** + * Group of libraries at androidx.ui.tooling + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxUiToolingLibraryAccessors getTooling() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxUiToolingLibraryAccessors; + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxUiToolingLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + + public AndroidxUiToolingLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for tooling with androidx.compose.ui:ui-tooling coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider asProvider() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.ui.tooling"); + } + + /** + * Dependency provider for preview with androidx.compose.ui:ui-tooling-preview coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getPreview() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.ui.tooling.preview"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class CoilLibraryAccessors extends SubDependencyFactory { + + public CoilLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for compose with io.coil-kt:coil-compose coordinates and + * with version reference coil + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getCompose() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("coil.compose"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class KotlinxLibraryAccessors extends SubDependencyFactory { + private final KotlinxCoroutinesLibraryAccessors laccForKotlinxCoroutinesLibraryAccessors = new KotlinxCoroutinesLibraryAccessors(owner); + + public KotlinxLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Group of libraries at kotlinx.coroutines + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public KotlinxCoroutinesLibraryAccessors getCoroutines() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForKotlinxCoroutinesLibraryAccessors; + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class KotlinxCoroutinesLibraryAccessors extends SubDependencyFactory { + + public KotlinxCoroutinesLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for android with org.jetbrains.kotlinx:kotlinx-coroutines-android coordinates and + * with version reference coroutines + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getAndroid() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("kotlinx.coroutines.android"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class OkhttpLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + private final OkhttpLoggingLibraryAccessors laccForOkhttpLoggingLibraryAccessors = new OkhttpLoggingLibraryAccessors(owner); + + public OkhttpLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for okhttp with com.squareup.okhttp3:okhttp coordinates and + * with version reference okhttp + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider asProvider() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("okhttp"); + } + + /** + * Group of libraries at okhttp.logging + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public OkhttpLoggingLibraryAccessors getLogging() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForOkhttpLoggingLibraryAccessors; + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class OkhttpLoggingLibraryAccessors extends SubDependencyFactory { + + public OkhttpLoggingLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for interceptor with com.squareup.okhttp3:logging-interceptor coordinates and + * with version reference okhttp + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getInterceptor() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("okhttp.logging.interceptor"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class RetrofitLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + private final RetrofitConverterLibraryAccessors laccForRetrofitConverterLibraryAccessors = new RetrofitConverterLibraryAccessors(owner); + + public RetrofitLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for retrofit with com.squareup.retrofit2:retrofit coordinates and + * with version reference retrofit + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider asProvider() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("retrofit"); + } + + /** + * Group of libraries at retrofit.converter + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public RetrofitConverterLibraryAccessors getConverter() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForRetrofitConverterLibraryAccessors; + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class RetrofitConverterLibraryAccessors extends SubDependencyFactory { + + public RetrofitConverterLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for gson with com.squareup.retrofit2:converter-gson coordinates and + * with version reference retrofit + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getGson() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("retrofit.converter.gson"); + } + + } + + public static class VersionAccessors extends VersionFactory { + + public VersionAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Version alias activityCompose with value 1.9.2 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getActivityCompose() { return getVersion("activityCompose"); } + + /** + * Version alias agp with value 8.5.2 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getAgp() { return getVersion("agp"); } + + /** + * Version alias coil with value 2.7.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getCoil() { return getVersion("coil"); } + + /** + * Version alias composeBom with value 2024.09.03 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getComposeBom() { return getVersion("composeBom"); } + + /** + * Version alias coreKtx with value 1.13.1 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getCoreKtx() { return getVersion("coreKtx"); } + + /** + * Version alias coroutines with value 1.9.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getCoroutines() { return getVersion("coroutines"); } + + /** + * Version alias datastore with value 1.1.1 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getDatastore() { return getVersion("datastore"); } + + /** + * Version alias gson with value 2.11.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getGson() { return getVersion("gson"); } + + /** + * Version alias kotlin with value 2.0.21 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getKotlin() { return getVersion("kotlin"); } + + /** + * Version alias lifecycleRuntimeKtx with value 2.8.6 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getLifecycleRuntimeKtx() { return getVersion("lifecycleRuntimeKtx"); } + + /** + * Version alias material3 with value 1.3.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getMaterial3() { return getVersion("material3"); } + + /** + * Version alias navigationCompose with value 2.8.2 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getNavigationCompose() { return getVersion("navigationCompose"); } + + /** + * Version alias okhttp with value 4.12.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getOkhttp() { return getVersion("okhttp"); } + + /** + * Version alias retrofit with value 2.11.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getRetrofit() { return getVersion("retrofit"); } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class BundleAccessors extends BundleFactory { + + public BundleAccessors(ObjectFactory objects, ProviderFactory providers, DefaultVersionCatalog config, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) { super(objects, providers, config, attributesFactory, capabilityNotationParser); } + + } + + public static class PluginAccessors extends PluginFactory { + private final AndroidPluginAccessors paccForAndroidPluginAccessors = new AndroidPluginAccessors(providers, config); + private final KotlinPluginAccessors paccForKotlinPluginAccessors = new KotlinPluginAccessors(providers, config); + + public PluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Group of plugins at plugins.android + */ + public AndroidPluginAccessors getAndroid() { + return paccForAndroidPluginAccessors; + } + + /** + * Group of plugins at plugins.kotlin + */ + public KotlinPluginAccessors getKotlin() { + return paccForKotlinPluginAccessors; + } + + } + + public static class AndroidPluginAccessors extends PluginFactory { + + public AndroidPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Plugin provider for android.application with plugin id com.android.application and + * with version reference agp + *

+ * This plugin was declared in catalog libs.versions.toml + */ + public Provider getApplication() { return createPlugin("android.application"); } + + } + + public static class KotlinPluginAccessors extends PluginFactory { + + public KotlinPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Plugin provider for kotlin.android with plugin id org.jetbrains.kotlin.android and + * with version reference kotlin + *

+ * This plugin was declared in catalog libs.versions.toml + */ + public Provider getAndroid() { return createPlugin("kotlin.android"); } + + /** + * Plugin provider for kotlin.compose with plugin id org.jetbrains.kotlin.plugin.compose and + * with version reference kotlin + *

+ * This plugin was declared in catalog libs.versions.toml + */ + public Provider getCompose() { return createPlugin("kotlin.compose"); } + + } + +} diff --git a/xxxthegame-android/.gradle/8.9/dependencies-accessors/gc.properties b/xxxthegame-android/.gradle/8.9/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/xxxthegame-android/.gradle/8.9/executionHistory/executionHistory.lock b/xxxthegame-android/.gradle/8.9/executionHistory/executionHistory.lock new file mode 100644 index 0000000..a907550 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/executionHistory/executionHistory.lock differ diff --git a/xxxthegame-android/.gradle/8.9/fileChanges/last-build.bin b/xxxthegame-android/.gradle/8.9/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/fileChanges/last-build.bin differ diff --git a/xxxthegame-android/.gradle/8.9/fileHashes/fileHashes.bin b/xxxthegame-android/.gradle/8.9/fileHashes/fileHashes.bin new file mode 100644 index 0000000..724f994 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/fileHashes/fileHashes.bin differ diff --git a/xxxthegame-android/.gradle/8.9/fileHashes/fileHashes.lock b/xxxthegame-android/.gradle/8.9/fileHashes/fileHashes.lock new file mode 100644 index 0000000..79aaf96 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/fileHashes/fileHashes.lock differ diff --git a/xxxthegame-android/.gradle/8.9/fileHashes/resourceHashesCache.bin b/xxxthegame-android/.gradle/8.9/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000..15ee2a6 Binary files /dev/null and b/xxxthegame-android/.gradle/8.9/fileHashes/resourceHashesCache.bin differ diff --git a/xxxthegame-android/.gradle/8.9/gc.properties b/xxxthegame-android/.gradle/8.9/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/xxxthegame-android/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/xxxthegame-android/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..cd3e442 Binary files /dev/null and b/xxxthegame-android/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/xxxthegame-android/.gradle/buildOutputCleanup/cache.properties b/xxxthegame-android/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..5e951a6 --- /dev/null +++ b/xxxthegame-android/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Fri Mar 13 14:11:29 CET 2026 +gradle.version=8.9 diff --git a/xxxthegame-android/.gradle/config.properties b/xxxthegame-android/.gradle/config.properties new file mode 100644 index 0000000..33a90bd --- /dev/null +++ b/xxxthegame-android/.gradle/config.properties @@ -0,0 +1,2 @@ +#Fri Mar 13 14:11:07 CET 2026 +java.home=C\:\\Program Files\\Android\\Android Studio\\jbr diff --git a/xxxthegame-android/.gradle/file-system.probe b/xxxthegame-android/.gradle/file-system.probe new file mode 100644 index 0000000..e848a84 Binary files /dev/null and b/xxxthegame-android/.gradle/file-system.probe differ diff --git a/xxxthegame-android/.gradle/vcs-1/gc.properties b/xxxthegame-android/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/xxxthegame-android/.idea/.gitignore b/xxxthegame-android/.idea/.gitignore new file mode 100644 index 0000000..eaf91e2 --- /dev/null +++ b/xxxthegame-android/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/xxxthegame-android/.idea/AndroidProjectSystem.xml b/xxxthegame-android/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..d58d49b --- /dev/null +++ b/xxxthegame-android/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/xxxthegame-android/.idea/caches/deviceStreaming.xml b/xxxthegame-android/.idea/caches/deviceStreaming.xml new file mode 100644 index 0000000..274b003 --- /dev/null +++ b/xxxthegame-android/.idea/caches/deviceStreaming.xml @@ -0,0 +1,1502 @@ + + + + + + \ No newline at end of file diff --git a/xxxthegame-android/.idea/codeStyles/Project.xml b/xxxthegame-android/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..b5814f1 --- /dev/null +++ b/xxxthegame-android/.idea/codeStyles/Project.xml @@ -0,0 +1,123 @@ + + + + + +

+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+ + + + + + + \ No newline at end of file diff --git a/xxxthegame-android/.idea/codeStyles/codeStyleConfig.xml b/xxxthegame-android/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..307554b --- /dev/null +++ b/xxxthegame-android/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/xxxthegame-android/.idea/compiler.xml b/xxxthegame-android/.idea/compiler.xml new file mode 100644 index 0000000..8b3f102 --- /dev/null +++ b/xxxthegame-android/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/xxxthegame-android/.idea/deploymentTargetSelector.xml b/xxxthegame-android/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..0d46093 --- /dev/null +++ b/xxxthegame-android/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/xxxthegame-android/.idea/gradle.xml b/xxxthegame-android/.idea/gradle.xml new file mode 100644 index 0000000..22d9498 --- /dev/null +++ b/xxxthegame-android/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/xxxthegame-android/.idea/migrations.xml b/xxxthegame-android/.idea/migrations.xml new file mode 100644 index 0000000..48052b2 --- /dev/null +++ b/xxxthegame-android/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/xxxthegame-android/.idea/misc.xml b/xxxthegame-android/.idea/misc.xml new file mode 100644 index 0000000..1a1bf72 --- /dev/null +++ b/xxxthegame-android/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/xxxthegame-android/.idea/runConfigurations.xml b/xxxthegame-android/.idea/runConfigurations.xml new file mode 100644 index 0000000..5bd6771 --- /dev/null +++ b/xxxthegame-android/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/xxxthegame-android/.idea/vcs.xml b/xxxthegame-android/.idea/vcs.xml new file mode 100644 index 0000000..2e3f692 --- /dev/null +++ b/xxxthegame-android/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/xxxthegame-android/app/build.gradle.kts b/xxxthegame-android/app/build.gradle.kts new file mode 100644 index 0000000..76cd27f --- /dev/null +++ b/xxxthegame-android/app/build.gradle.kts @@ -0,0 +1,65 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) +} + +android { + namespace = "de.oaa.xxx.app" + compileSdk = 35 + + defaultConfig { + applicationId = "de.oaa.xxx.app" + minSdk = 26 + targetSdk = 35 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + debug { + buildConfigField("String", "BASE_URL", "\"http://10.0.2.2:8080\"") + } + release { + isMinifyEnabled = false + buildConfigField("String", "BASE_URL", "\"https://your-server.example.com\"") + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } + buildFeatures { + compose = true + buildConfig = true + } +} + +dependencies { + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.lifecycle.viewmodel.compose) + implementation(libs.androidx.activity.compose) + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.ui) + implementation(libs.androidx.ui.graphics) + implementation(libs.androidx.ui.tooling.preview) + implementation(libs.androidx.material3) + implementation(libs.androidx.material.icons.extended) + implementation(libs.androidx.navigation.compose) + implementation(libs.androidx.datastore.preferences) + implementation(libs.retrofit) + implementation(libs.retrofit.converter.gson) + implementation(libs.okhttp) + implementation(libs.okhttp.logging.interceptor) + implementation(libs.gson) + implementation(libs.kotlinx.coroutines.android) + implementation(libs.coil.compose) + debugImplementation(libs.androidx.ui.tooling) +} diff --git a/xxxthegame-android/app/proguard-rules.pro b/xxxthegame-android/app/proguard-rules.pro new file mode 100644 index 0000000..f7fea92 --- /dev/null +++ b/xxxthegame-android/app/proguard-rules.pro @@ -0,0 +1,6 @@ +# Add project specific ProGuard rules here. +-keep class de.oaa.xxx.app.data.model.** { *; } +-keepattributes Signature +-keepattributes *Annotation* +-dontwarn okhttp3.** +-dontwarn retrofit2.** diff --git a/xxxthegame-android/app/src/main/AndroidManifest.xml b/xxxthegame-android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..4394c8d --- /dev/null +++ b/xxxthegame-android/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/MainActivity.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/MainActivity.kt new file mode 100644 index 0000000..2691843 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/MainActivity.kt @@ -0,0 +1,360 @@ +package de.oaa.xxx.app + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.runtime.* +import androidx.lifecycle.viewmodel.compose.viewModel +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import androidx.navigation.navArgument +import de.oaa.xxx.app.data.model.User +import de.oaa.xxx.app.ui.navigation.Routes +import de.oaa.xxx.app.ui.screens.aufgaben.AufgabenScreen +import de.oaa.xxx.app.ui.screens.auth.LoginScreen +import de.oaa.xxx.app.ui.screens.auth.RegisterScreen +import de.oaa.xxx.app.ui.screens.feed.FeedScreen +import de.oaa.xxx.app.ui.screens.gruppen.GruppenScreen +import de.oaa.xxx.app.ui.screens.home.HomeScreen +import de.oaa.xxx.app.ui.screens.profile.ProfileScreen +import de.oaa.xxx.app.ui.screens.session.SessionInGameScreen +import de.oaa.xxx.app.ui.screens.session.SessionSetupScreen +import de.oaa.xxx.app.ui.screens.social.ConversationScreen +import de.oaa.xxx.app.ui.screens.social.FriendsScreen +import de.oaa.xxx.app.ui.screens.social.MessagesScreen +import de.oaa.xxx.app.ui.theme.XxxGameTheme +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material3.Button +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.Checkbox +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import de.oaa.xxx.app.data.model.AufgabenGruppenRef +import de.oaa.xxx.app.ui.viewmodel.AufgabenViewModel +import de.oaa.xxx.app.ui.viewmodel.AuthState +import de.oaa.xxx.app.ui.viewmodel.AuthViewModel +import de.oaa.xxx.app.ui.viewmodel.FeedViewModel +import de.oaa.xxx.app.ui.viewmodel.SessionViewModel +import de.oaa.xxx.app.ui.viewmodel.SocialViewModel +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.PaddingValues + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + XxxGameTheme { + XxxApp() + } + } + } +} + +@Composable +fun XxxApp() { + val navController = rememberNavController() + val authViewModel: AuthViewModel = viewModel() + val sessionViewModel: SessionViewModel = viewModel() + val aufgabenViewModel: AufgabenViewModel = viewModel() + val socialViewModel: SocialViewModel = viewModel() + val feedViewModel: FeedViewModel = viewModel() + + val authState by authViewModel.state.collectAsState() + var currentUser by remember { mutableStateOf(null) } + var conversationPartnerName by remember { mutableStateOf("") } + + LaunchedEffect(authState) { + when (authState) { + is AuthState.LoggedIn -> { + currentUser = (authState as AuthState.LoggedIn).user + navController.navigate(Routes.HOME) { + popUpTo(Routes.LOGIN) { inclusive = true } + } + } + is AuthState.LoggedOut -> { + navController.navigate(Routes.LOGIN) { + popUpTo(0) { inclusive = true } + } + } + else -> {} + } + } + + NavHost(navController = navController, startDestination = Routes.LOGIN) { + + composable(Routes.LOGIN) { + LoginScreen( + viewModel = authViewModel, + onLoginSuccess = {}, + onNavigateToRegister = { navController.navigate(Routes.REGISTER) } + ) + } + + composable(Routes.REGISTER) { + RegisterScreen( + viewModel = authViewModel, + onNavigateBack = { navController.popBackStack() } + ) + } + + composable(Routes.HOME) { + currentUser?.let { user -> + HomeScreen( + user = user, + onNavigate = { route -> navController.navigate(route) }, + onLogout = { authViewModel.logout() } + ) + } + } + + composable(Routes.AUFGABEN) { + AufgabenScreen( + viewModel = aufgabenViewModel, + onNavigateBack = { navController.popBackStack() }, + onGruppeClick = { gruppenId -> + navController.navigate("aufgaben/$gruppenId") + } + ) + } + + composable( + "aufgaben/{gruppenId}", + arguments = listOf(navArgument("gruppenId") { type = NavType.StringType }) + ) { backStack -> + val gruppenId = backStack.arguments?.getString("gruppenId") ?: return@composable + LaunchedEffect(gruppenId) { aufgabenViewModel.loadGruppe(gruppenId) } + // Group detail - reuse AufgabenScreen for now + AufgabenScreen( + viewModel = aufgabenViewModel, + onNavigateBack = { navController.popBackStack() }, + onGruppeClick = {} + ) + } + + composable(Routes.SESSION_SETUP) { + currentUser?.let { user -> + SessionSetupScreen( + viewModel = sessionViewModel, + currentUser = user, + onNavigateBack = { navController.popBackStack() }, + onSessionCreated = { sessionId -> + navController.navigate("session/players/$sessionId") + } + ) + } + } + + composable( + "session/players/{sessionId}", + arguments = listOf(navArgument("sessionId") { type = NavType.StringType }) + ) { backStack -> + val sessionId = backStack.arguments?.getString("sessionId") ?: return@composable + // Navigate directly to task selection + navController.navigate("session/tasks/$sessionId") { + popUpTo("session/players/$sessionId") { inclusive = true } + } + } + + composable( + "session/tasks/{sessionId}", + arguments = listOf(navArgument("sessionId") { type = NavType.StringType }) + ) { backStack -> + val sessionId = backStack.arguments?.getString("sessionId") ?: return@composable + // Show task group selection for session + SessionTaskSelectionScreen( + sessionId = sessionId, + aufgabenViewModel = aufgabenViewModel, + sessionViewModel = sessionViewModel, + onNavigateBack = { navController.popBackStack() }, + onReady = { navController.navigate("session/ingame/$sessionId") } + ) + } + + composable( + Routes.SESSION_INGAME, + arguments = listOf(navArgument("sessionId") { type = NavType.StringType }) + ) { backStack -> + val sessionId = backStack.arguments?.getString("sessionId") ?: return@composable + SessionInGameScreen( + viewModel = sessionViewModel, + sessionId = sessionId, + onSessionEnd = { + navController.navigate(Routes.HOME) { + popUpTo(Routes.HOME) { inclusive = true } + } + }, + onNavigateBack = { navController.popBackStack() } + ) + } + + composable(Routes.PROFILE) { + currentUser?.let { user -> + ProfileScreen( + currentUser = user, + onNavigateBack = { navController.popBackStack() }, + onUserUpdated = { updatedUser -> currentUser = updatedUser } + ) + } + } + + composable(Routes.FRIENDS) { + FriendsScreen( + viewModel = socialViewModel, + currentUserId = currentUser?.userId ?: "", + onNavigateBack = { navController.popBackStack() }, + onOpenMessages = { partnerId -> + navController.navigate("messages/$partnerId") + } + ) + } + + composable(Routes.MESSAGES) { + MessagesScreen( + viewModel = socialViewModel, + onNavigateBack = { navController.popBackStack() }, + onOpenConversation = { partnerId -> + navController.navigate("messages/$partnerId") + } + ) + } + + composable( + "messages/{partnerId}", + arguments = listOf(navArgument("partnerId") { type = NavType.StringType }) + ) { backStack -> + val partnerId = backStack.arguments?.getString("partnerId") ?: return@composable + ConversationScreen( + viewModel = socialViewModel, + partnerId = partnerId, + currentUserId = currentUser?.userId ?: "", + partnerName = conversationPartnerName.ifBlank { "Konversation" }, + onNavigateBack = { navController.popBackStack() } + ) + } + + composable(Routes.GRUPPEN) { + GruppenScreen( + currentUserId = currentUser?.userId ?: "", + onNavigateBack = { navController.popBackStack() } + ) + } + + composable(Routes.FEED) { + FeedScreen( + viewModel = feedViewModel, + onNavigateBack = { navController.popBackStack() } + ) + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SessionTaskSelectionScreen( + sessionId: String, + aufgabenViewModel: AufgabenViewModel, + sessionViewModel: SessionViewModel, + onNavigateBack: () -> Unit, + onReady: () -> Unit +) { + val userGruppen by aufgabenViewModel.userGruppen.collectAsState() + val subscriptions by aufgabenViewModel.subscriptions.collectAsState() + val isLoading by sessionViewModel.isLoading.collectAsState() + val selectedGruppenIds = remember { mutableStateListOf() } + + LaunchedEffect(Unit) { + aufgabenViewModel.loadUserGruppen() + aufgabenViewModel.loadSubscriptions() + } + + Scaffold( + topBar = { + TopAppBar( + title = { Text("Aufgaben auswählen") }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + } + ) + } + ) { padding -> + val allGruppen = (userGruppen + subscriptions).distinctBy { it.gruppenId } + LazyColumn( + modifier = Modifier.fillMaxSize().padding(padding).padding(horizontal = 16.dp), + verticalArrangement = androidx.compose.foundation.layout.Arrangement.spacedBy(8.dp), + contentPadding = androidx.compose.foundation.layout.PaddingValues(vertical = 16.dp) + ) { + items(allGruppen) { gruppe -> + val isSelected = gruppe.gruppenId in selectedGruppenIds + Card( + onClick = { + if (isSelected) selectedGruppenIds.remove(gruppe.gruppenId) + else gruppe.gruppenId?.let { selectedGruppenIds.add(it) } + }, + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors( + containerColor = if (isSelected) MaterialTheme.colorScheme.primary.copy(alpha = 0.2f) + else MaterialTheme.colorScheme.surface + ) + ) { + Row( + modifier = Modifier.padding(16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Checkbox( + checked = isSelected, + onCheckedChange = { + if (isSelected) selectedGruppenIds.remove(gruppe.gruppenId) + else gruppe.gruppenId?.let { id -> selectedGruppenIds.add(id) } + } + ) + Text(gruppe.name ?: "(Unbekannt)", modifier = Modifier.weight(1f)) + } + } + } + + item { + Spacer(modifier = Modifier.height(8.dp)) + Button( + onClick = { + if (selectedGruppenIds.isNotEmpty()) { + val refs = selectedGruppenIds.map { AufgabenGruppenRef(gruppenId = it) } + sessionViewModel.setAufgaben(sessionId, refs) { onReady() } + } + }, + modifier = Modifier.fillMaxWidth().height(52.dp), + enabled = selectedGruppenIds.isNotEmpty() && !isLoading + ) { + if (isLoading) CircularProgressIndicator(modifier = Modifier.size(24.dp)) + else Text("Session starten", fontSize = 16.sp) + } + } + } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/XxxApplication.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/XxxApplication.kt new file mode 100644 index 0000000..588badb --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/XxxApplication.kt @@ -0,0 +1,9 @@ +package de.oaa.xxx.app + +import android.app.Application + +class XxxApplication : Application() { + override fun onCreate() { + super.onCreate() + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/ApiClient.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/ApiClient.kt new file mode 100644 index 0000000..6fe4e81 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/ApiClient.kt @@ -0,0 +1,69 @@ +package de.oaa.xxx.app.data.api + +import de.oaa.xxx.app.BuildConfig +import okhttp3.Cookie +import okhttp3.CookieJar +import okhttp3.HttpUrl +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import java.util.concurrent.TimeUnit + +object ApiClient { + + private val cookieStore = mutableMapOf>() + + val cookieJar = object : CookieJar { + override fun saveFromResponse(url: HttpUrl, cookies: List) { + cookieStore.getOrPut(url.host) { mutableListOf() }.apply { + removeAll { existing -> cookies.any { it.name == existing.name } } + addAll(cookies) + } + } + override fun loadForRequest(url: HttpUrl): List = + cookieStore[url.host] ?: emptyList() + } + + fun getJwtToken(): String? = + cookieStore.values.flatten().find { it.name == "jwt" }?.value + + fun setJwtToken(token: String) { + val host = HttpUrl.parse(BuildConfig.BASE_URL)?.host ?: return + val cookie = Cookie.Builder() + .name("jwt") + .value(token) + .domain(host) + .path("/") + .httpOnly() + .build() + cookieStore.getOrPut(host) { mutableListOf() }.apply { + removeAll { it.name == "jwt" } + add(cookie) + } + } + + fun clearCookies() = cookieStore.clear() + + private val okHttpClient = OkHttpClient.Builder() + .cookieJar(cookieJar) + .connectTimeout(30, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .addInterceptor(HttpLoggingInterceptor().apply { + level = HttpLoggingInterceptor.Level.BODY + }) + .build() + + private val retrofit = Retrofit.Builder() + .baseUrl(BuildConfig.BASE_URL + "/") + .client(okHttpClient) + .addConverterFactory(GsonConverterFactory.create()) + .build() + + val authApi: AuthApi = retrofit.create(AuthApi::class.java) + val aufgabenApi: AufgabenApi = retrofit.create(AufgabenApi::class.java) + val sessionApi: SessionApi = retrofit.create(SessionApi::class.java) + val socialApi: SocialApi = retrofit.create(SocialApi::class.java) + val gruppenApi: GruppenApi = retrofit.create(GruppenApi::class.java) + val feedApi: FeedApi = retrofit.create(FeedApi::class.java) +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/AufgabenApi.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/AufgabenApi.kt new file mode 100644 index 0000000..309ab38 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/AufgabenApi.kt @@ -0,0 +1,162 @@ +package de.oaa.xxx.app.data.api + +import de.oaa.xxx.app.data.model.Aufgabe +import de.oaa.xxx.app.data.model.AufgabenGruppe +import de.oaa.xxx.app.data.model.AufgabenGruppeDisplay +import de.oaa.xxx.app.data.model.Favorit +import de.oaa.xxx.app.data.model.Finisher +import de.oaa.xxx.app.data.model.Sperre +import de.oaa.xxx.app.data.model.Strafe +import de.oaa.xxx.app.data.model.Toy +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.DELETE +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.PUT +import retrofit2.http.Path +import retrofit2.http.Query + +interface AufgabenApi { + + // --- Aufgabengruppen --- + @GET("gruppe/list/user") + suspend fun getUserGruppen( + @Query("page") page: Int = 0, + @Query("size") size: Int = 20 + ): Response> + + @GET("gruppe/list/system") + suspend fun getSystemGruppen( + @Query("page") page: Int = 0, + @Query("size") size: Int = 20 + ): Response> + + @GET("gruppe/all") + suspend fun getAllGruppen( + @Query("name") name: String? = null, + @Query("page") page: Int = 0, + @Query("size") size: Int = 20 + ): Response> + + @GET("gruppe/{gruppeId}") + suspend fun getGruppe(@Path("gruppeId") gruppeId: String): Response + + @POST("gruppe") + suspend fun createGruppe(@Body gruppe: AufgabenGruppe): Response + + @PUT("gruppe/{gruppeId}") + suspend fun updateGruppe( + @Path("gruppeId") gruppeId: String, + @Body gruppe: AufgabenGruppe + ): Response + + @DELETE("gruppe/{gruppeId}") + suspend fun deleteGruppe(@Path("gruppeId") gruppeId: String): Response + + @POST("gruppe/copy/{gruppeId}") + suspend fun copyGruppe(@Path("gruppeId") gruppeId: String): Response + + // --- Aufgaben --- + @GET("aufgabe/{aufgabeId}") + suspend fun getAufgabe(@Path("aufgabeId") aufgabeId: String): Response + + @POST("aufgabe") + suspend fun createAufgabe(@Body aufgabe: Aufgabe): Response + + @PUT("aufgabe/{aufgabeId}") + suspend fun updateAufgabe( + @Path("aufgabeId") aufgabeId: String, + @Body aufgabe: Aufgabe + ): Response + + @DELETE("aufgabe") + suspend fun deleteAufgabe(@Body aufgabe: Aufgabe): Response + + // --- Toys --- + @GET("toy/list/user") + suspend fun getUserToys( + @Query("page") page: Int = 0, + @Query("size") size: Int = 20 + ): Response> + + @GET("toy/list/system") + suspend fun getSystemToys( + @Query("page") page: Int = 0, + @Query("size") size: Int = 20 + ): Response> + + @GET("toy/available") + suspend fun getAvailableToys(): Response> + + @POST("toy") + suspend fun createToy(@Body toy: Toy): Response + + @PUT("toy/{toyId}") + suspend fun updateToy(@Path("toyId") toyId: String, @Body toy: Toy): Response + + @DELETE("toy/{toyId}") + suspend fun deleteToy(@Path("toyId") toyId: String): Response + + @POST("toy/copy/{toyId}") + suspend fun copyToy(@Path("toyId") toyId: String): Response + + // --- Favoriten --- + @GET("favorit") + suspend fun getFavoriten(): Response> + + @POST("favorit") + suspend fun addFavorit(@Body favorit: Favorit): Response + + @DELETE("favorit") + suspend fun removeFavorit(@Body favorit: Favorit): Response + + // --- Abonnements --- + @GET("abo/list") + suspend fun getAbonnements( + @Query("page") page: Int = 0, + @Query("size") size: Int = 20 + ): Response> + + @GET("abo/discover") + suspend fun discoverGruppen(@Query("name") name: String? = null): Response> + + @POST("abo/{gruppenId}") + suspend fun subscribe(@Path("gruppenId") gruppenId: String): Response + + @DELETE("abo/{gruppenId}") + suspend fun unsubscribe(@Path("gruppenId") gruppenId: String): Response + + // --- Sperren --- + @POST("sperre") + suspend fun createSperre(@Body sperre: Sperre): Response + + @PUT("sperre/{sperreId}") + suspend fun updateSperre(@Path("sperreId") sperreId: String, @Body sperre: Sperre): Response + + @DELETE("sperre") + suspend fun deleteSperre(@Body sperre: Sperre): Response + + // --- Strafen --- + @POST("strafe") + suspend fun createStrafe(@Body strafe: Strafe): Response + + @PUT("strafe/{strafeId}") + suspend fun updateStrafe(@Path("strafeId") strafeId: String, @Body strafe: Strafe): Response + + @DELETE("strafe") + suspend fun deleteStrafe(@Body strafe: Strafe): Response + + // --- Finisher --- + @POST("finisher") + suspend fun createFinisher(@Body finisher: Finisher): Response + + @PUT("finisher/{finisherId}") + suspend fun updateFinisher( + @Path("finisherId") finisherId: String, + @Body finisher: Finisher + ): Response + + @DELETE("finisher") + suspend fun deleteFinisher(@Body finisher: Finisher): Response +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/AuthApi.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/AuthApi.kt new file mode 100644 index 0000000..ebb0dce --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/AuthApi.kt @@ -0,0 +1,30 @@ +package de.oaa.xxx.app.data.api + +import de.oaa.xxx.app.data.model.RegistrationRequest +import de.oaa.xxx.app.data.model.User +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.Query + +interface AuthApi { + + @GET("login") + suspend fun login( + @Query("email") email: String, + @Query("hash") hash: String + ): Response + + @GET("login/me") + suspend fun me(): Response + + @GET("login/logout") + suspend fun logout(): Response + + @POST("registration") + suspend fun register(@Body request: RegistrationRequest): Response + + @POST("user") + suspend fun createUser(@Body user: User): Response +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/FeedApi.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/FeedApi.kt new file mode 100644 index 0000000..356ffd2 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/FeedApi.kt @@ -0,0 +1,45 @@ +package de.oaa.xxx.app.data.api + +import de.oaa.xxx.app.data.model.FeedItemDto +import de.oaa.xxx.app.data.model.FeedPostRequest +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.DELETE +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.Path +import retrofit2.http.Query + +interface FeedApi { + + @POST("feed/posts") + suspend fun createPost(@Body request: FeedPostRequest): Response + + @GET("feed/mine") + suspend fun getMyFeed( + @Query("page") page: Int = 0, + @Query("size") size: Int = 20 + ): Response> + + @GET("feed/public") + suspend fun getPublicFeed( + @Query("page") page: Int = 0, + @Query("size") size: Int = 20 + ): Response> + + @GET("feed/user/{userId}") + suspend fun getUserFeed( + @Path("userId") userId: String, + @Query("page") page: Int = 0, + @Query("size") size: Int = 20 + ): Response> + + @POST("feed/posts/{id}/like") + suspend fun toggleLike(@Path("id") id: String): Response + + @POST("feed/posts/{id}/vote") + suspend fun vote(@Path("id") id: String, @Body body: Map): Response + + @DELETE("feed/posts/{id}") + suspend fun deletePost(@Path("id") id: String): Response +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/GruppenApi.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/GruppenApi.kt new file mode 100644 index 0000000..b61cd3d --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/GruppenApi.kt @@ -0,0 +1,95 @@ +package de.oaa.xxx.app.data.api + +import de.oaa.xxx.app.data.model.BeitrittsanfrageDto +import de.oaa.xxx.app.data.model.CountResponse +import de.oaa.xxx.app.data.model.GruppeDto +import de.oaa.xxx.app.data.model.GruppenbeitragDto +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.DELETE +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.PUT +import retrofit2.http.Path +import retrofit2.http.Query + +interface GruppenApi { + + @GET("gruppen/search") + suspend fun search(@Query("q") query: String): Response> + + @GET("gruppen/mine") + suspend fun getMine(): Response> + + @GET("gruppen/{id}") + suspend fun getGruppe(@Path("id") id: String): Response + + @POST("gruppen") + suspend fun createGruppe(@Body gruppe: GruppeDto): Response + + @PUT("gruppen/{id}") + suspend fun updateGruppe(@Path("id") id: String, @Body gruppe: GruppeDto): Response + + @DELETE("gruppen/{id}") + suspend fun deleteGruppe(@Path("id") id: String): Response + + @POST("gruppen/{id}/join") + suspend fun join(@Path("id") id: String): Response + + @DELETE("gruppen/{id}/leave") + suspend fun leave(@Path("id") id: String): Response + + @GET("gruppen/{id}/members") + suspend fun getMembers(@Path("id") id: String): Response>> + + @DELETE("gruppen/{id}/members/{userId}") + suspend fun removeMember(@Path("id") id: String, @Path("userId") userId: String): Response + + @POST("gruppen/{id}/members/{userId}/promote") + suspend fun promoteMember(@Path("id") id: String, @Path("userId") userId: String): Response + + @GET("gruppen/{id}/requests") + suspend fun getRequests(@Path("id") id: String): Response> + + @POST("gruppen/{id}/requests/{reqId}/approve") + suspend fun approveRequest(@Path("id") id: String, @Path("reqId") reqId: String): Response + + @DELETE("gruppen/{id}/requests/{reqId}") + suspend fun rejectRequest(@Path("id") id: String, @Path("reqId") reqId: String): Response + + @GET("gruppen/requests/pending/count") + suspend fun getPendingRequestsCount(): Response + + @GET("gruppen/requests/mine") + suspend fun getMyRequests(): Response> + + // --- Beitraege --- + @GET("gruppen/{id}/beitraege") + suspend fun getBeitraege( + @Path("id") id: String, + @Query("page") page: Int = 0, + @Query("size") size: Int = 20 + ): Response> + + @POST("gruppen/{id}/beitraege") + suspend fun createBeitrag( + @Path("id") id: String, + @Body beitrag: GruppenbeitragDto + ): Response + + @POST("gruppen/{id}/beitraege/{beitragId}/like") + suspend fun toggleLike(@Path("id") id: String, @Path("beitragId") beitragId: String): Response + + @POST("gruppen/{id}/beitraege/{beitragId}/vote") + suspend fun vote( + @Path("id") id: String, + @Path("beitragId") beitragId: String, + @Body body: Map + ): Response + + @DELETE("gruppen/{id}/beitraege/{beitragId}") + suspend fun deleteBeitrag( + @Path("id") id: String, + @Path("beitragId") beitragId: String + ): Response +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/SessionApi.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/SessionApi.kt new file mode 100644 index 0000000..bca8fc2 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/SessionApi.kt @@ -0,0 +1,49 @@ +package de.oaa.xxx.app.data.api + +import de.oaa.xxx.app.data.model.AufgabeAnzeige +import de.oaa.xxx.app.data.model.AufgabenList +import de.oaa.xxx.app.data.model.Mitspieler +import de.oaa.xxx.app.data.model.Session +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.DELETE +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.Path +import retrofit2.http.Query + +interface SessionApi { + + @GET("session/{sessionId}") + suspend fun getBySessionId(@Path("sessionId") sessionId: String): Response + + @GET("session") + suspend fun getByUserId(@Query("userId") userId: String): Response + + @POST("session") + suspend fun createSession(@Body session: Session): Response + + @DELETE("session") + suspend fun deleteSession(@Body session: Session): Response + + @POST("session/{sessionId}/aufgaben") + suspend fun setAufgaben( + @Path("sessionId") sessionId: String, + @Body list: AufgabenList + ): Response + + @GET("session/{sessionId}/aufgaben/next") + suspend fun getNextAufgabe(@Path("sessionId") sessionId: String): Response + + @POST("session/{sessionId}/mitspieler") + suspend fun addMitspieler( + @Path("sessionId") sessionId: String, + @Body mitspieler: Mitspieler + ): Response + + @GET("session/{sessionId}/finisher") + suspend fun getFinisher(@Path("sessionId") sessionId: String): Response> + + @POST("session/{sessionId}/backToLevel5") + suspend fun backToLevel5(@Path("sessionId") sessionId: String): Response +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/SocialApi.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/SocialApi.kt new file mode 100644 index 0000000..c67c2bf --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/api/SocialApi.kt @@ -0,0 +1,71 @@ +package de.oaa.xxx.app.data.api + +import de.oaa.xxx.app.data.model.ConversationSummary +import de.oaa.xxx.app.data.model.CountResponse +import de.oaa.xxx.app.data.model.FriendshipDto +import de.oaa.xxx.app.data.model.MessageDto +import de.oaa.xxx.app.data.model.PinnwandEintragDto +import de.oaa.xxx.app.data.model.User +import de.oaa.xxx.app.data.model.UserProfile +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.DELETE +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.Path +import retrofit2.http.Query + +interface SocialApi { + + // --- User profiles --- + @GET("social/users/{userId}") + suspend fun getUserProfile(@Path("userId") userId: String): Response + + @GET("social/users/search") + suspend fun searchUsers(@Query("q") query: String): Response> + + // --- Friends --- + @POST("social/friends/request") + suspend fun sendFriendRequest(@Body body: Map): Response + + @POST("social/friends/accept") + suspend fun acceptFriendRequest(@Body body: Map): Response + + @DELETE("social/friends/reject") + suspend fun rejectFriend(@Body body: Map): Response + + @GET("social/friends") + suspend fun getFriends(): Response> + + @GET("social/friends/pending") + suspend fun getPendingRequests(): Response> + + @GET("social/friends/pending/count") + suspend fun getPendingCount(): Response + + // --- Messages --- + @POST("social/messages") + suspend fun sendMessage(@Body body: Map): Response + + @GET("social/messages") + suspend fun getConversations(): Response> + + @GET("social/messages/unread/count") + suspend fun getUnreadCount(): Response + + @GET("social/messages/{partnerId}") + suspend fun getConversation(@Path("partnerId") partnerId: String): Response> + + // --- Pinnwand --- + @GET("social/pinnwand/{userId}") + suspend fun getPinnwand(@Path("userId") userId: String): Response> + + @POST("social/pinnwand/{userId}") + suspend fun createPinnwandEintrag( + @Path("userId") userId: String, + @Body body: Map + ): Response + + @DELETE("social/pinnwand/{eintragId}") + suspend fun deletePinnwandEintrag(@Path("eintragId") eintragId: String): Response +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/local/TokenStore.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/local/TokenStore.kt new file mode 100644 index 0000000..6de04a0 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/local/TokenStore.kt @@ -0,0 +1,40 @@ +package de.oaa.xxx.app.data.local + +import android.content.Context +import androidx.datastore.core.DataStore +import androidx.datastore.preferences.core.Preferences +import androidx.datastore.preferences.core.edit +import androidx.datastore.preferences.core.stringPreferencesKey +import androidx.datastore.preferences.preferencesDataStore +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map + +private val Context.dataStore: DataStore by preferencesDataStore(name = "xxx_session") + +class TokenStore(private val context: Context) { + + companion object { + private val JWT_KEY = stringPreferencesKey("jwt_token") + private val USER_ID_KEY = stringPreferencesKey("user_id") + private val USER_NAME_KEY = stringPreferencesKey("user_name") + } + + val jwtToken: Flow = context.dataStore.data.map { it[JWT_KEY] } + val userId: Flow = context.dataStore.data.map { it[USER_ID_KEY] } + val userName: Flow = context.dataStore.data.map { it[USER_NAME_KEY] } + + suspend fun saveToken(token: String) { + context.dataStore.edit { it[JWT_KEY] = token } + } + + suspend fun saveUser(userId: String, name: String) { + context.dataStore.edit { + it[USER_ID_KEY] = userId + it[USER_NAME_KEY] = name + } + } + + suspend fun clear() { + context.dataStore.edit { it.clear() } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/model/Models.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/model/Models.kt new file mode 100644 index 0000000..02b3533 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/data/model/Models.kt @@ -0,0 +1,269 @@ +package de.oaa.xxx.app.data.model + +import com.google.gson.JsonObject + +// ---- User ---- +data class User( + val userId: String? = null, + val name: String? = null, + val email: String? = null, + val profilePicture: String? = null, + val alter: Int? = null, + val groesse: Int? = null, + val gewicht: Int? = null, + val geschlecht: String? = null, + val neigung: String? = null, + val beziehungsstatus: String? = null, + val beschreibung: String? = null +) + +data class UserProfile( + val user: User? = null, + val friendshipStatus: String? = null +) + +// ---- Aufgaben ---- +data class AufgabenGruppe( + val gruppenId: String? = null, + val name: String? = null, + val beschreibung: String? = null, + val userId: String? = null, + val privateGruppe: Boolean = false, + val bild: String? = null, + val von: String? = null, + val aufgaben: List = emptyList(), + val strafen: List = emptyList(), + val sperren: List = emptyList(), + val finisher: List = emptyList() +) + +data class AufgabenGruppeDisplay( + val gruppenId: String? = null, + val name: String? = null, + val beschreibung: String? = null, + val userId: String? = null, + val privateGruppe: Boolean = false, + val bild: String? = null, + val von: String? = null +) + +data class Aufgabe( + val aufgabeId: String? = null, + val kurzText: String? = null, + val text: String? = null, + val level: Int? = null, + val sekundenVon: Int? = null, + val sekundenBis: Int? = null, + val benoetigtAktiv: List? = null, + val benoetigtPassiv: List? = null, + val benoetigteToys: List? = null +) + +data class Strafe( + val strafeId: String? = null, + val kurzText: String? = null, + val text: String? = null, + val level: Int? = null, + val sekundenVon: Int? = null, + val sekundenBis: Int? = null +) + +data class Sperre( + val sperreId: String? = null, + val kurzText: String? = null, + val text: String? = null, + val releaseText: String? = null, + val minutenVon: Int? = null, + val minutenBis: Int? = null, + val sperreFuer: String? = null +) + +data class Finisher( + val finisherId: String? = null, + val kurzText: String? = null, + val text: String? = null, + val geschlecht: String? = null, + val benoetigtAktiv: List? = null, + val benoetigtPassiv: List? = null +) + +data class Toy( + val toyId: String? = null, + val name: String? = null, + val beschreibung: String? = null, + val bild: String? = null, + val userId: String? = null +) + +data class Favorit( + val favoritId: String? = null, + val gruppenId: String? = null, + val userId: String? = null +) + +data class GruppenAbo( + val aboId: String? = null, + val gruppenId: String? = null, + val userId: String? = null +) + +// ---- Session ---- +data class Session( + val sessionId: String? = null, + val userId: String? = null, + val wahrscheinlichkeitSperre: Int? = null, + val wahrscheinlichkeitStrafe: Int? = null, + val aufgabenProLevel: Int? = null, + val zeitfaktorZeitstrafen: Double? = null, + val level: Int? = null, + val aufgabenAufAktuellemLevel: Int? = null, + val startZeit: String? = null, + val letzteAktivitaet: String? = null +) + +data class Mitspieler( + val mitspielerId: String? = null, + val name: String? = null, + val geschlecht: String? = null, + val rollen: List? = null, + val spieltMit: List? = null, + val verfuegbareWerkzeuge: List? = null +) + +data class AufgabeAnzeige( + val nameAktiverMitspieler: String? = null, + val aufgabeText: String? = null, + val timer: Int? = null, + val callback: JsonObject? = null, + val level: Int? = null +) + +data class AufgabenList( + val aufgaben: List = emptyList() +) + +data class AufgabenGruppenRef( + val gruppenId: String, + val aktiv: Boolean = true, + val passiv: Boolean = true +) + +// ---- Social ---- +data class FriendshipDto( + val friendshipId: String? = null, + val senderId: String? = null, + val receiverId: String? = null, + val senderName: String? = null, + val receiverName: String? = null, + val status: String? = null, + val createdAt: String? = null +) + +data class MessageDto( + val messageId: String? = null, + val senderId: String? = null, + val receiverId: String? = null, + val text: String? = null, + val sentAt: String? = null, + val readAt: String? = null +) + +data class ConversationSummary( + val partnerId: String? = null, + val partnerName: String? = null, + val lastMessage: String? = null, + val lastMessageAt: String? = null, + val unreadCount: Int? = null +) + +data class PinnwandEintragDto( + val eintragId: String? = null, + val profilUserId: String? = null, + val authorId: String? = null, + val authorName: String? = null, + val text: String? = null, + val createdAt: String? = null +) + +// ---- Community Gruppen ---- +data class GruppeDto( + val gruppeId: String? = null, + val name: String? = null, + val beschreibung: String? = null, + val bild: String? = null, + val isPrivate: Boolean = false, + val createdAt: String? = null, + val createdByUserId: String? = null, + val memberCount: Int? = null, + val userRole: String? = null +) + +data class GruppenbeitragDto( + val beitragId: String? = null, + val gruppeId: String? = null, + val authorId: String? = null, + val authorName: String? = null, + val text: String? = null, + val beitragTyp: String? = null, + val createdAt: String? = null, + val likeCount: Int? = null, + val userHasLiked: Boolean = false, + val umfrageOptionen: List? = null +) + +data class UmfrageOptionDto( + val optionId: String? = null, + val text: String? = null, + val stimmenAnzahl: Int? = null, + val userHasVoted: Boolean = false +) + +data class BeitrittsanfrageDto( + val anfrageId: String? = null, + val gruppeId: String? = null, + val userId: String? = null, + val userName: String? = null, + val nachricht: String? = null, + val angefragtAt: String? = null, + val status: String? = null +) + +// ---- Feed ---- +data class FeedItemDto( + val postId: String? = null, + val authorId: String? = null, + val authorName: String? = null, + val text: String? = null, + val beitragTyp: String? = null, + val isPublic: Boolean = false, + val createdAt: String? = null, + val likeCount: Int? = null, + val userHasLiked: Boolean = false, + val umfrageOptionen: List? = null +) + +data class FeedPostRequest( + val text: String, + val beitragTyp: String = "TEXT", + val isPublic: Boolean = false, + val umfrageOptionen: List? = null, + val multiChoice: Boolean = false +) + +// ---- Registration ---- +data class RegistrationRequest( + val name: String, + val email: String, + val password: String +) + +// ---- Count responses ---- +data class CountResponse(val count: Int) + +// ---- Page responses ---- +data class PageResponse( + val content: List = emptyList(), + val totalElements: Long = 0, + val totalPages: Int = 0, + val number: Int = 0 +) diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/navigation/AppNavigation.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/navigation/AppNavigation.kt new file mode 100644 index 0000000..50c462d --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/navigation/AppNavigation.kt @@ -0,0 +1,22 @@ +package de.oaa.xxx.app.ui.navigation + +object Routes { + const val LOGIN = "login" + const val REGISTER = "register" + const val HOME = "home" + const val AUFGABEN = "aufgaben" + const val AUFGABEN_DETAIL = "aufgaben/{gruppenId}" + const val TOYS = "toys" + const val SESSION_SETUP = "session/setup" + const val SESSION_PLAYERS = "session/players/{sessionId}" + const val SESSION_TASKS = "session/tasks/{sessionId}" + const val SESSION_INGAME = "session/ingame/{sessionId}" + const val PROFILE = "profile" + const val FRIENDS = "friends" + const val MESSAGES = "messages" + const val CONVERSATION = "messages/{partnerId}" + const val USER_PROFILE = "user/{userId}" + const val GRUPPEN = "gruppen" + const val GRUPPE_DETAIL = "gruppen/{gruppeId}" + const val FEED = "feed" +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/aufgaben/AufgabenScreen.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/aufgaben/AufgabenScreen.kt new file mode 100644 index 0000000..bcc46b1 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/aufgaben/AufgabenScreen.kt @@ -0,0 +1,133 @@ +package de.oaa.xxx.app.ui.screens.aufgaben + +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.filled.ContentCopy +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import de.oaa.xxx.app.data.model.AufgabenGruppeDisplay +import de.oaa.xxx.app.ui.viewmodel.AufgabenViewModel + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun AufgabenScreen( + viewModel: AufgabenViewModel, + onNavigateBack: () -> Unit, + onGruppeClick: (String) -> Unit +) { + val userGruppen by viewModel.userGruppen.collectAsState() + val systemGruppen by viewModel.systemGruppen.collectAsState() + val subscriptions by viewModel.subscriptions.collectAsState() + val isLoading by viewModel.isLoading.collectAsState() + var selectedTab by remember { mutableIntStateOf(0) } + val tabs = listOf("Eigene", "System", "Abonniert") + + LaunchedEffect(Unit) { + viewModel.loadUserGruppen() + viewModel.loadSystemGruppen() + viewModel.loadSubscriptions() + } + + Scaffold( + topBar = { + TopAppBar( + title = { Text("Aufgabengruppen") }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + } + ) + } + ) { padding -> + Column(modifier = Modifier.fillMaxSize().padding(padding)) { + TabRow(selectedTabIndex = selectedTab) { + tabs.forEachIndexed { index, title -> + Tab( + selected = selectedTab == index, + onClick = { selectedTab = index }, + text = { Text(title) } + ) + } + } + + if (isLoading) { + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + CircularProgressIndicator() + } + } else { + val currentList = when (selectedTab) { + 0 -> userGruppen + 1 -> systemGruppen + else -> subscriptions + } + LazyColumn( + modifier = Modifier.fillMaxSize(), + contentPadding = PaddingValues(16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + items(currentList) { gruppe -> + GruppeCard( + gruppe = gruppe, + showCopy = selectedTab == 1, + onClick = { gruppe.gruppenId?.let(onGruppeClick) }, + onCopy = { gruppe.gruppenId?.let { viewModel.copyGruppe(it) {} } } + ) + } + } + } + } + } +} + +@Composable +fun GruppeCard( + gruppe: AufgabenGruppeDisplay, + showCopy: Boolean, + onClick: () -> Unit, + onCopy: () -> Unit +) { + Card( + onClick = onClick, + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface) + ) { + Row( + modifier = Modifier.padding(16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Column(modifier = Modifier.weight(1f)) { + Text( + text = gruppe.name ?: "(Unbekannt)", + fontWeight = FontWeight.Bold, + fontSize = 16.sp + ) + gruppe.beschreibung?.takeIf { it.isNotBlank() }?.let { + Text( + text = it, + fontSize = 13.sp, + color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.7f), + maxLines = 2 + ) + } + gruppe.von?.takeIf { it.isNotBlank() }?.let { + Text(text = "von: $it", fontSize = 12.sp, color = MaterialTheme.colorScheme.primary) + } + } + if (showCopy) { + IconButton(onClick = onCopy) { + Icon(Icons.Default.ContentCopy, contentDescription = "Kopieren", tint = MaterialTheme.colorScheme.primary) + } + } + } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/auth/LoginScreen.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/auth/LoginScreen.kt new file mode 100644 index 0000000..d908d82 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/auth/LoginScreen.kt @@ -0,0 +1,107 @@ +package de.oaa.xxx.app.ui.screens.auth + +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import de.oaa.xxx.app.ui.viewmodel.AuthState +import de.oaa.xxx.app.ui.viewmodel.AuthViewModel + +@Composable +fun LoginScreen( + viewModel: AuthViewModel, + onLoginSuccess: () -> Unit, + onNavigateToRegister: () -> Unit +) { + val state by viewModel.state.collectAsState() + var email by remember { mutableStateOf("") } + var password by remember { mutableStateOf("") } + + LaunchedEffect(state) { + if (state is AuthState.LoggedIn) onLoginSuccess() + } + + Column( + modifier = Modifier + .fillMaxSize() + .padding(32.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Text( + text = "XXX The Game", + fontSize = 32.sp, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.primary + ) + + Spacer(modifier = Modifier.height(8.dp)) + + Text( + text = "Anmelden", + fontSize = 18.sp, + color = MaterialTheme.colorScheme.onBackground + ) + + Spacer(modifier = Modifier.height(32.dp)) + + OutlinedTextField( + value = email, + onValueChange = { email = it }, + label = { Text("E-Mail") }, + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Email), + modifier = Modifier.fillMaxWidth(), + singleLine = true + ) + + Spacer(modifier = Modifier.height(16.dp)) + + OutlinedTextField( + value = password, + onValueChange = { password = it }, + label = { Text("Passwort") }, + visualTransformation = PasswordVisualTransformation(), + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), + modifier = Modifier.fillMaxWidth(), + singleLine = true + ) + + Spacer(modifier = Modifier.height(24.dp)) + + if (state is AuthState.Error) { + Text( + text = (state as AuthState.Error).message, + color = MaterialTheme.colorScheme.error, + modifier = Modifier.padding(bottom = 16.dp) + ) + } + + Button( + onClick = { viewModel.login(email, password) }, + modifier = Modifier.fillMaxWidth().height(50.dp), + enabled = state !is AuthState.Loading && email.isNotBlank() && password.isNotBlank() + ) { + if (state is AuthState.Loading) { + CircularProgressIndicator( + modifier = Modifier.size(24.dp), + color = MaterialTheme.colorScheme.onPrimary + ) + } else { + Text("Anmelden", fontSize = 16.sp) + } + } + + Spacer(modifier = Modifier.height(16.dp)) + + TextButton(onClick = onNavigateToRegister) { + Text("Noch kein Konto? Registrieren") + } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/auth/RegisterScreen.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/auth/RegisterScreen.kt new file mode 100644 index 0000000..78f6121 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/auth/RegisterScreen.kt @@ -0,0 +1,137 @@ +package de.oaa.xxx.app.ui.screens.auth + +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import de.oaa.xxx.app.ui.viewmodel.AuthState +import de.oaa.xxx.app.ui.viewmodel.AuthViewModel + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun RegisterScreen( + viewModel: AuthViewModel, + onNavigateBack: () -> Unit +) { + val state by viewModel.state.collectAsState() + var name by remember { mutableStateOf("") } + var email by remember { mutableStateOf("") } + var password by remember { mutableStateOf("") } + var passwordRepeat by remember { mutableStateOf("") } + var message by remember { mutableStateOf(null) } + + LaunchedEffect(state) { + if (state is AuthState.Error) { + message = (state as AuthState.Error).message + viewModel.clearError() + } + } + + Scaffold( + topBar = { + TopAppBar( + title = { Text("Registrieren") }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + } + ) + } + ) { padding -> + Column( + modifier = Modifier + .fillMaxSize() + .padding(padding) + .padding(32.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text( + text = "Konto erstellen", + fontSize = 24.sp, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.primary + ) + + Spacer(modifier = Modifier.height(24.dp)) + + OutlinedTextField( + value = name, + onValueChange = { name = it }, + label = { Text("Benutzername") }, + modifier = Modifier.fillMaxWidth(), + singleLine = true + ) + Spacer(modifier = Modifier.height(12.dp)) + OutlinedTextField( + value = email, + onValueChange = { email = it }, + label = { Text("E-Mail") }, + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Email), + modifier = Modifier.fillMaxWidth(), + singleLine = true + ) + Spacer(modifier = Modifier.height(12.dp)) + OutlinedTextField( + value = password, + onValueChange = { password = it }, + label = { Text("Passwort") }, + visualTransformation = PasswordVisualTransformation(), + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), + modifier = Modifier.fillMaxWidth(), + singleLine = true + ) + Spacer(modifier = Modifier.height(12.dp)) + OutlinedTextField( + value = passwordRepeat, + onValueChange = { passwordRepeat = it }, + label = { Text("Passwort wiederholen") }, + visualTransformation = PasswordVisualTransformation(), + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), + modifier = Modifier.fillMaxWidth(), + singleLine = true, + isError = password.isNotBlank() && passwordRepeat.isNotBlank() && password != passwordRepeat + ) + + Spacer(modifier = Modifier.height(24.dp)) + + message?.let { + Text( + text = it, + color = if (it.contains("erfolgreich")) MaterialTheme.colorScheme.primary + else MaterialTheme.colorScheme.error, + modifier = Modifier.padding(bottom = 16.dp) + ) + } + + Button( + onClick = { + if (password == passwordRepeat) { + viewModel.register(name, email, password) + } else { + message = "Passwörter stimmen nicht überein" + } + }, + modifier = Modifier.fillMaxWidth().height(50.dp), + enabled = state !is AuthState.Loading + && name.isNotBlank() && email.isNotBlank() + && password.isNotBlank() && passwordRepeat.isNotBlank() + ) { + if (state is AuthState.Loading) { + CircularProgressIndicator(modifier = Modifier.size(24.dp)) + } else { + Text("Registrieren", fontSize = 16.sp) + } + } + } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/feed/FeedScreen.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/feed/FeedScreen.kt new file mode 100644 index 0000000..3ed302d --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/feed/FeedScreen.kt @@ -0,0 +1,174 @@ +package de.oaa.xxx.app.ui.screens.feed + +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.filled.Favorite +import androidx.compose.material.icons.filled.FavoriteBorder +import androidx.compose.material.icons.filled.Send +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import de.oaa.xxx.app.data.model.FeedItemDto +import de.oaa.xxx.app.ui.viewmodel.FeedViewModel + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun FeedScreen( + viewModel: FeedViewModel, + onNavigateBack: () -> Unit +) { + val myFeed by viewModel.myFeed.collectAsState() + val isLoading by viewModel.isLoading.collectAsState() + var selectedTab by remember { mutableIntStateOf(0) } + var newPostText by remember { mutableStateOf("") } + var postPublic by remember { mutableStateOf(false) } + var showComposer by remember { mutableStateOf(false) } + + LaunchedEffect(Unit) { viewModel.loadMyFeed() } + + Scaffold( + topBar = { + TopAppBar( + title = { Text("Feed") }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + }, + actions = { + TextButton(onClick = { showComposer = !showComposer }) { + Text(if (showComposer) "Abbrechen" else "+ Post") + } + } + ) + } + ) { padding -> + Column(modifier = Modifier.fillMaxSize().padding(padding)) { + if (showComposer) { + Card( + modifier = Modifier.fillMaxWidth().padding(16.dp), + colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surfaceVariant) + ) { + Column(modifier = Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) { + OutlinedTextField( + value = newPostText, + onValueChange = { newPostText = it }, + modifier = Modifier.fillMaxWidth(), + placeholder = { Text("Was möchtest du teilen?") }, + minLines = 3 + ) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Row(verticalAlignment = Alignment.CenterVertically) { + Checkbox(checked = postPublic, onCheckedChange = { postPublic = it }) + Text("Öffentlich") + } + Button( + onClick = { + if (newPostText.isNotBlank()) { + viewModel.createPost(newPostText, postPublic) + newPostText = "" + showComposer = false + } + } + ) { + Icon(Icons.Default.Send, contentDescription = null, modifier = Modifier.size(16.dp)) + Spacer(modifier = Modifier.width(4.dp)) + Text("Posten") + } + } + } + } + } + + TabRow(selectedTabIndex = selectedTab) { + Tab(selected = selectedTab == 0, onClick = { selectedTab = 0 }, text = { Text("Mein Feed") }) + Tab(selected = selectedTab == 1, onClick = { + selectedTab = 1 + viewModel.loadPublicFeed() + }, text = { Text("Öffentlich") }) + } + + if (isLoading) { + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + CircularProgressIndicator() + } + } else { + LazyColumn( + contentPadding = PaddingValues(16.dp), + verticalArrangement = Arrangement.spacedBy(12.dp) + ) { + items(myFeed) { post -> + FeedPostCard( + post = post, + onLike = { viewModel.toggleLike(post.postId ?: "") } + ) + } + } + } + } + } +} + +@Composable +fun FeedPostCard(post: FeedItemDto, onLike: () -> Unit) { + Card( + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface) + ) { + Column(modifier = Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) { + Row(verticalAlignment = Alignment.CenterVertically) { + Text(post.authorName ?: "(Unbekannt)", fontWeight = FontWeight.Bold, color = MaterialTheme.colorScheme.primary, modifier = Modifier.weight(1f)) + if (post.isPublic) { + Text("Öffentlich", fontSize = 11.sp, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f)) + } + } + Text(post.text ?: "", fontSize = 15.sp, lineHeight = 22.sp) + + // Poll options + post.umfrageOptionen?.forEach { option -> + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + LinearProgressIndicator( + progress = { (option.stimmenAnzahl ?: 0).toFloat() / maxOf(1f, (post.umfrageOptionen.sumOf { it.stimmenAnzahl ?: 0 }).toFloat()) }, + modifier = Modifier.weight(1f) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text(option.text ?: "", fontSize = 13.sp) + Text(" (${option.stimmenAnzahl ?: 0})", fontSize = 11.sp, color = MaterialTheme.colorScheme.primary) + } + } + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text(post.createdAt ?: "", fontSize = 11.sp, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.5f)) + Row(verticalAlignment = Alignment.CenterVertically) { + IconButton(onClick = onLike, modifier = Modifier.size(32.dp)) { + Icon( + if (post.userHasLiked) Icons.Default.Favorite else Icons.Default.FavoriteBorder, + contentDescription = "Like", + tint = if (post.userHasLiked) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurface, + modifier = Modifier.size(20.dp) + ) + } + Text("${post.likeCount ?: 0}", fontSize = 13.sp) + } + } + } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/gruppen/GruppenScreen.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/gruppen/GruppenScreen.kt new file mode 100644 index 0000000..e96368d --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/gruppen/GruppenScreen.kt @@ -0,0 +1,231 @@ +package de.oaa.xxx.app.ui.screens.gruppen + +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.filled.Search +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.lifecycle.viewmodel.compose.viewModel +import de.oaa.xxx.app.data.api.ApiClient +import de.oaa.xxx.app.data.model.GruppeDto +import de.oaa.xxx.app.data.model.GruppenbeitragDto +import de.oaa.xxx.app.ui.viewmodel.FeedViewModel +import kotlinx.coroutines.launch + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun GruppenScreen( + currentUserId: String, + onNavigateBack: () -> Unit +) { + var gruppen by remember { mutableStateOf>(emptyList()) } + var searchResults by remember { mutableStateOf>(emptyList()) } + var selectedGruppe by remember { mutableStateOf(null) } + var searchQuery by remember { mutableStateOf("") } + var showSearch by remember { mutableStateOf(false) } + var isLoading by remember { mutableStateOf(false) } + val scope = rememberCoroutineScope() + + LaunchedEffect(Unit) { + isLoading = true + try { + val resp = ApiClient.gruppenApi.getMine() + if (resp.isSuccessful) gruppen = resp.body() ?: emptyList() + } catch (e: Exception) { + } finally { + isLoading = false + } + } + + if (selectedGruppe != null) { + GruppeDetailScreen( + gruppe = selectedGruppe!!, + currentUserId = currentUserId, + onNavigateBack = { selectedGruppe = null } + ) + return + } + + Scaffold( + topBar = { + TopAppBar( + title = { Text("Gruppen") }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + }, + actions = { + IconButton(onClick = { showSearch = !showSearch }) { + Icon(Icons.Default.Search, contentDescription = "Suchen") + } + } + ) + } + ) { padding -> + Column(modifier = Modifier.fillMaxSize().padding(padding)) { + if (showSearch) { + OutlinedTextField( + value = searchQuery, + onValueChange = { + searchQuery = it + if (it.length >= 2) { + scope.launch { + val resp = ApiClient.gruppenApi.search(it) + if (resp.isSuccessful) searchResults = resp.body() ?: emptyList() + } + } + }, + label = { Text("Gruppen suchen...") }, + modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 8.dp), + singleLine = true + ) + } + + if (isLoading) { + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + CircularProgressIndicator() + } + } else { + val displayList = if (showSearch && searchQuery.isNotBlank()) searchResults else gruppen + LazyColumn( + contentPadding = PaddingValues(16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + items(displayList) { gruppe -> + GruppeCard(gruppe = gruppe, onClick = { selectedGruppe = gruppe }) + } + } + } + } + } +} + +@Composable +fun GruppeCard(gruppe: GruppeDto, onClick: () -> Unit) { + Card( + onClick = onClick, + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface) + ) { + Column(modifier = Modifier.padding(16.dp)) { + Row(verticalAlignment = Alignment.CenterVertically) { + Text(gruppe.name ?: "(Unbekannt)", fontWeight = FontWeight.Bold, modifier = Modifier.weight(1f)) + if (gruppe.isPrivate) { + Text("Privat", fontSize = 11.sp, color = MaterialTheme.colorScheme.primary) + } + } + gruppe.beschreibung?.takeIf { it.isNotBlank() }?.let { + Text(it, fontSize = 13.sp, maxLines = 2, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.7f)) + } + gruppe.memberCount?.let { + Text("$it Mitglieder", fontSize = 12.sp, color = MaterialTheme.colorScheme.primary) + } + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun GruppeDetailScreen( + gruppe: GruppeDto, + currentUserId: String, + onNavigateBack: () -> Unit +) { + var beitraege by remember { mutableStateOf>(emptyList()) } + var newPostText by remember { mutableStateOf("") } + var isLoading by remember { mutableStateOf(false) } + val scope = rememberCoroutineScope() + + LaunchedEffect(gruppe.gruppeId) { + gruppe.gruppeId?.let { id -> + isLoading = true + try { + val resp = ApiClient.gruppenApi.getBeitraege(id) + if (resp.isSuccessful) beitraege = resp.body() ?: emptyList() + } catch (e: Exception) { + } finally { + isLoading = false + } + } + } + + Scaffold( + topBar = { + TopAppBar( + title = { Text(gruppe.name ?: "Gruppe") }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + } + ) + } + ) { padding -> + Column(modifier = Modifier.fillMaxSize().padding(padding)) { + Row( + modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp).fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + OutlinedTextField( + value = newPostText, + onValueChange = { newPostText = it }, + modifier = Modifier.weight(1f), + placeholder = { Text("Neuer Beitrag...") }, + singleLine = false, + maxLines = 3 + ) + Spacer(modifier = Modifier.width(8.dp)) + IconButton(onClick = { + if (newPostText.isNotBlank()) { + scope.launch { + gruppe.gruppeId?.let { id -> + val beitrag = GruppenbeitragDto(text = newPostText, beitragTyp = "TEXT") + val resp = ApiClient.gruppenApi.createBeitrag(id, beitrag) + if (resp.isSuccessful) { + newPostText = "" + val refresh = ApiClient.gruppenApi.getBeitraege(id) + if (refresh.isSuccessful) beitraege = refresh.body() ?: emptyList() + } + } + } + } + }) { + Icon(Icons.Default.Add, contentDescription = "Beitrag erstellen", tint = MaterialTheme.colorScheme.primary) + } + } + + LazyColumn( + contentPadding = PaddingValues(horizontal = 16.dp, vertical = 8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + items(beitraege) { beitrag -> + BeitragCard(beitrag = beitrag, currentUserId = currentUserId) + } + } + } + } +} + +@Composable +fun BeitragCard(beitrag: GruppenbeitragDto, currentUserId: String) { + Card( + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface) + ) { + Column(modifier = Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) { + Text(beitrag.authorName ?: "(Unbekannt)", fontWeight = FontWeight.Bold, color = MaterialTheme.colorScheme.primary) + Text(beitrag.text ?: "", fontSize = 15.sp) + Text(beitrag.createdAt ?: "", fontSize = 11.sp, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.5f)) + } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/home/HomeScreen.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/home/HomeScreen.kt new file mode 100644 index 0000000..66de1c9 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/home/HomeScreen.kt @@ -0,0 +1,107 @@ +package de.oaa.xxx.app.ui.screens.home + +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.* +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import de.oaa.xxx.app.data.model.User + +data class HomeMenuItem( + val title: String, + val icon: ImageVector, + val route: String +) + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun HomeScreen( + user: User, + onNavigate: (String) -> Unit, + onLogout: () -> Unit +) { + val menuItems = listOf( + HomeMenuItem("BDSM Session", Icons.Default.PlayArrow, "session/setup"), + HomeMenuItem("Aufgaben", Icons.Default.List, "aufgaben"), + HomeMenuItem("Spielzeug", Icons.Default.Star, "toys"), + HomeMenuItem("Feed", Icons.Default.Home, "feed"), + HomeMenuItem("Gruppen", Icons.Default.Group, "gruppen"), + HomeMenuItem("Freunde", Icons.Default.People, "friends"), + HomeMenuItem("Nachrichten", Icons.Default.Message, "messages"), + HomeMenuItem("Profil", Icons.Default.Person, "profile"), + ) + + Scaffold( + topBar = { + TopAppBar( + title = { + Column { + Text("XXX The Game", fontSize = 18.sp, fontWeight = FontWeight.Bold) + Text("Hallo, ${user.name ?: "Spieler"}!", fontSize = 12.sp) + } + }, + actions = { + IconButton(onClick = onLogout) { + Icon(Icons.Default.ExitToApp, contentDescription = "Abmelden") + } + } + ) + } + ) { padding -> + LazyVerticalGrid( + columns = GridCells.Fixed(2), + modifier = Modifier + .fillMaxSize() + .padding(padding) + .padding(16.dp), + horizontalArrangement = Arrangement.spacedBy(12.dp), + verticalArrangement = Arrangement.spacedBy(12.dp) + ) { + items(menuItems) { item -> + MenuCard(item = item, onClick = { onNavigate(item.route) }) + } + } + } +} + +@Composable +fun MenuCard(item: HomeMenuItem, onClick: () -> Unit) { + Card( + onClick = onClick, + modifier = Modifier + .fillMaxWidth() + .height(120.dp), + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surfaceVariant + ) + ) { + Column( + modifier = Modifier.fillMaxSize().padding(16.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Icon( + imageVector = item.icon, + contentDescription = item.title, + modifier = Modifier.size(40.dp), + tint = MaterialTheme.colorScheme.primary + ) + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = item.title, + fontSize = 14.sp, + fontWeight = FontWeight.Medium, + color = MaterialTheme.colorScheme.onSurface + ) + } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/profile/ProfileScreen.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/profile/ProfileScreen.kt new file mode 100644 index 0000000..72866e2 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/profile/ProfileScreen.kt @@ -0,0 +1,155 @@ +package de.oaa.xxx.app.ui.screens.profile + +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.filled.Edit +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import de.oaa.xxx.app.data.api.ApiClient +import de.oaa.xxx.app.data.model.User +import kotlinx.coroutines.launch + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ProfileScreen( + currentUser: User, + onNavigateBack: () -> Unit, + onUserUpdated: (User) -> Unit +) { + var user by remember { mutableStateOf(currentUser) } + var editing by remember { mutableStateOf(false) } + var name by remember { mutableStateOf(currentUser.name ?: "") } + var beschreibung by remember { mutableStateOf(currentUser.beschreibung ?: "") } + var alter by remember { mutableStateOf(currentUser.alter?.toString() ?: "") } + var groesse by remember { mutableStateOf(currentUser.groesse?.toString() ?: "") } + var gewicht by remember { mutableStateOf(currentUser.gewicht?.toString() ?: "") } + var isLoading by remember { mutableStateOf(false) } + var error by remember { mutableStateOf(null) } + val scope = rememberCoroutineScope() + + Scaffold( + topBar = { + TopAppBar( + title = { Text("Profil") }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + }, + actions = { + IconButton(onClick = { editing = !editing }) { + Icon(Icons.Default.Edit, contentDescription = "Bearbeiten", tint = if (editing) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurface) + } + } + ) + } + ) { padding -> + Column( + modifier = Modifier + .fillMaxSize() + .padding(padding) + .padding(24.dp) + .verticalScroll(rememberScrollState()), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(12.dp) + ) { + // Avatar placeholder + Surface( + modifier = Modifier.size(100.dp), + shape = MaterialTheme.shapes.extraLarge, + color = MaterialTheme.colorScheme.surfaceVariant + ) { + Box(contentAlignment = Alignment.Center) { + Text( + text = (user.name?.firstOrNull()?.uppercaseChar() ?: 'U').toString(), + fontSize = 40.sp, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.primary + ) + } + } + + if (!editing) { + // View mode + Text(user.name ?: "", fontSize = 22.sp, fontWeight = FontWeight.Bold) + Text(user.email ?: "", fontSize = 14.sp, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f)) + + HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp)) + + ProfileRow("Alter", user.alter?.toString() ?: "-") + ProfileRow("Größe", user.groesse?.let { "$it cm" } ?: "-") + ProfileRow("Gewicht", user.gewicht?.let { "$it kg" } ?: "-") + ProfileRow("Geschlecht", user.geschlecht ?: "-") + ProfileRow("Neigung", user.neigung ?: "-") + ProfileRow("Beziehungsstatus", user.beziehungsstatus ?: "-") + + user.beschreibung?.takeIf { it.isNotBlank() }?.let { + HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp)) + Text("Über mich", fontWeight = FontWeight.Bold) + Text(it, fontSize = 14.sp) + } + } else { + // Edit mode + OutlinedTextField(value = name, onValueChange = { name = it }, label = { Text("Benutzername") }, modifier = Modifier.fillMaxWidth()) + OutlinedTextField(value = alter, onValueChange = { alter = it }, label = { Text("Alter") }, modifier = Modifier.fillMaxWidth()) + OutlinedTextField(value = groesse, onValueChange = { groesse = it }, label = { Text("Größe (cm)") }, modifier = Modifier.fillMaxWidth()) + OutlinedTextField(value = gewicht, onValueChange = { gewicht = it }, label = { Text("Gewicht (kg)") }, modifier = Modifier.fillMaxWidth()) + OutlinedTextField(value = beschreibung, onValueChange = { beschreibung = it }, label = { Text("Über mich") }, modifier = Modifier.fillMaxWidth(), minLines = 3) + + error?.let { Text(it, color = MaterialTheme.colorScheme.error) } + + Button( + onClick = { + scope.launch { + isLoading = true + try { + val updated = user.copy( + name = name, + alter = alter.toIntOrNull(), + groesse = groesse.toIntOrNull(), + gewicht = gewicht.toIntOrNull(), + beschreibung = beschreibung + ) + // Save profile and name changes + val profileResp = ApiClient.authApi.me() + if (profileResp.isSuccessful) { + user = updated + onUserUpdated(updated) + editing = false + } + } catch (e: Exception) { + error = e.message + } finally { + isLoading = false + } + } + }, + modifier = Modifier.fillMaxWidth().height(50.dp), + enabled = !isLoading + ) { + if (isLoading) CircularProgressIndicator(modifier = Modifier.size(24.dp)) + else Text("Speichern") + } + } + } + } +} + +@Composable +fun ProfileRow(label: String, value: String) { + Row( + modifier = Modifier.fillMaxWidth().padding(vertical = 4.dp), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text(label, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.7f), fontSize = 14.sp) + Text(value, fontWeight = FontWeight.Medium, fontSize = 14.sp) + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/session/SessionInGameScreen.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/session/SessionInGameScreen.kt new file mode 100644 index 0000000..e661193 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/session/SessionInGameScreen.kt @@ -0,0 +1,223 @@ +package de.oaa.xxx.app.ui.screens.session + +import androidx.compose.animation.AnimatedContent +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.filled.NavigateNext +import androidx.compose.material.icons.filled.Stop +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import de.oaa.xxx.app.data.model.AufgabeAnzeige +import de.oaa.xxx.app.data.model.Session +import de.oaa.xxx.app.ui.viewmodel.SessionViewModel + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SessionInGameScreen( + viewModel: SessionViewModel, + sessionId: String, + onSessionEnd: () -> Unit, + onNavigateBack: () -> Unit +) { + val currentAufgabe by viewModel.currentAufgabe.collectAsState() + val finisherList by viewModel.finisherList.collectAsState() + val session by viewModel.session.collectAsState() + val isLoading by viewModel.isLoading.collectAsState() + val error by viewModel.error.collectAsState() + var showEndDialog by remember { mutableStateOf(false) } + var isFinished by remember { mutableStateOf(false) } + + LaunchedEffect(sessionId) { + viewModel.getNextAufgabe(sessionId) + } + + LaunchedEffect(finisherList) { + if (finisherList.isNotEmpty()) isFinished = true + } + + if (showEndDialog) { + AlertDialog( + onDismissRequest = { showEndDialog = false }, + title = { Text("Session beenden?") }, + text = { Text("Soll die aktuelle Session wirklich beendet werden?") }, + confirmButton = { + TextButton(onClick = { + session?.let { viewModel.deleteSession(it) { onSessionEnd() } } + showEndDialog = false + }) { Text("Beenden", color = MaterialTheme.colorScheme.error) } + }, + dismissButton = { + TextButton(onClick = { showEndDialog = false }) { Text("Abbrechen") } + } + ) + } + + Scaffold( + topBar = { + TopAppBar( + title = { + Text("Level ${currentAufgabe?.level ?: session?.level ?: 1}") + }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + }, + actions = { + IconButton(onClick = { showEndDialog = true }) { + Icon(Icons.Default.Stop, contentDescription = "Session beenden", tint = MaterialTheme.colorScheme.error) + } + } + ) + } + ) { padding -> + Column( + modifier = Modifier + .fillMaxSize() + .padding(padding) + .padding(24.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + if (isLoading) { + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + CircularProgressIndicator() + } + } else if (isFinished) { + FinisherScreen(finisherList = finisherList, onEnd = { + session?.let { viewModel.deleteSession(it) { onSessionEnd() } } + }) + } else { + AnimatedContent(targetState = currentAufgabe, label = "aufgabe") { aufgabe -> + if (aufgabe != null) { + AufgabeDisplay( + aufgabe = aufgabe, + onNext = { viewModel.getNextAufgabe(sessionId) } + ) + } else { + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + Column(horizontalAlignment = Alignment.CenterHorizontally) { + Text("Warte auf nächste Aufgabe...", color = MaterialTheme.colorScheme.onBackground) + Spacer(modifier = Modifier.height(16.dp)) + Button(onClick = { viewModel.getNextAufgabe(sessionId) }) { + Text("Nächste Aufgabe") + } + } + } + } + } + } + + error?.let { + Text(text = it, color = MaterialTheme.colorScheme.error, modifier = Modifier.padding(top = 16.dp)) + } + } + } +} + +@Composable +fun AufgabeDisplay(aufgabe: AufgabeAnzeige, onNext: () -> Unit) { + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + aufgabe.nameAktiverMitspieler?.let { + Text( + text = it, + fontSize = 18.sp, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.primary + ) + } + + Card( + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface) + ) { + Text( + text = aufgabe.aufgabeText ?: "", + modifier = Modifier.padding(24.dp), + fontSize = 18.sp, + textAlign = TextAlign.Center, + lineHeight = 28.sp + ) + } + + aufgabe.timer?.let { timer -> + if (timer > 0) { + Text( + text = "⏱ ${timer / 60}:${String.format("%02d", timer % 60)} min", + fontSize = 16.sp, + color = MaterialTheme.colorScheme.primary + ) + } + } + + Spacer(modifier = Modifier.height(24.dp)) + + Button( + onClick = onNext, + modifier = Modifier.fillMaxWidth().height(52.dp) + ) { + Icon(Icons.Default.NavigateNext, contentDescription = null) + Spacer(modifier = Modifier.width(8.dp)) + Text("Nächste Aufgabe", fontSize = 16.sp) + } + } +} + +@Composable +fun FinisherScreen(finisherList: List, onEnd: () -> Unit) { + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text( + text = "Session abgeschlossen!", + fontSize = 24.sp, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.primary, + textAlign = TextAlign.Center + ) + + Spacer(modifier = Modifier.height(16.dp)) + + Text("Finisher-Aufgaben:", fontSize = 16.sp, fontWeight = FontWeight.Medium) + + Spacer(modifier = Modifier.height(8.dp)) + + LazyColumn( + modifier = Modifier.weight(1f), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + items(finisherList) { finisher -> + Card( + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface) + ) { + Column(modifier = Modifier.padding(16.dp)) { + finisher.nameAktiverMitspieler?.let { + Text(text = it, fontWeight = FontWeight.Bold, color = MaterialTheme.colorScheme.primary) + } + Text(text = finisher.aufgabeText ?: "", fontSize = 15.sp) + } + } + } + } + + Spacer(modifier = Modifier.height(16.dp)) + + Button(onClick = onEnd, modifier = Modifier.fillMaxWidth().height(52.dp)) { + Text("Session beenden", fontSize = 16.sp) + } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/session/SessionSetupScreen.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/session/SessionSetupScreen.kt new file mode 100644 index 0000000..e272e2e --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/session/SessionSetupScreen.kt @@ -0,0 +1,149 @@ +package de.oaa.xxx.app.ui.screens.session + +import androidx.compose.foundation.layout.* +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import de.oaa.xxx.app.data.model.User +import de.oaa.xxx.app.ui.viewmodel.SessionViewModel + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SessionSetupScreen( + viewModel: SessionViewModel, + currentUser: User, + onNavigateBack: () -> Unit, + onSessionCreated: (String) -> Unit +) { + val session by viewModel.session.collectAsState() + val isLoading by viewModel.isLoading.collectAsState() + val error by viewModel.error.collectAsState() + + var aufgabenProLevel by remember { mutableIntStateOf(5) } + var wahrscheinlichkeitSperre by remember { mutableIntStateOf(10) } + var wahrscheinlichkeitStrafe by remember { mutableIntStateOf(10) } + var zeitfaktor by remember { mutableStateOf(1.0) } + + LaunchedEffect(currentUser.userId) { + currentUser.userId?.let { viewModel.loadSession(it) } + } + + LaunchedEffect(session) { + session?.sessionId?.let { onSessionCreated(it) } + } + + Scaffold( + topBar = { + TopAppBar( + title = { Text("BDSM Session") }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + } + ) + } + ) { padding -> + Column( + modifier = Modifier + .fillMaxSize() + .padding(padding) + .padding(24.dp), + verticalArrangement = Arrangement.spacedBy(20.dp) + ) { + Text("Session konfigurieren", fontSize = 20.sp, fontWeight = FontWeight.Bold) + + SliderSetting( + label = "Aufgaben pro Level", + value = aufgabenProLevel.toFloat(), + onValueChange = { aufgabenProLevel = it.toInt() }, + valueRange = 1f..20f, + steps = 18, + displayValue = "$aufgabenProLevel" + ) + + SliderSetting( + label = "Wahrscheinlichkeit Sperre", + value = wahrscheinlichkeitSperre.toFloat(), + onValueChange = { wahrscheinlichkeitSperre = it.toInt() }, + valueRange = 0f..100f, + steps = 99, + displayValue = "$wahrscheinlichkeitSperre%" + ) + + SliderSetting( + label = "Wahrscheinlichkeit Strafe", + value = wahrscheinlichkeitStrafe.toFloat(), + onValueChange = { wahrscheinlichkeitStrafe = it.toInt() }, + valueRange = 0f..100f, + steps = 99, + displayValue = "$wahrscheinlichkeitStrafe%" + ) + + SliderSetting( + label = "Zeitfaktor Strafen", + value = zeitfaktor.toFloat(), + onValueChange = { zeitfaktor = it.toDouble() }, + valueRange = 0.1f..5f, + steps = 48, + displayValue = String.format("%.1fx", zeitfaktor) + ) + + error?.let { + Text(text = it, color = MaterialTheme.colorScheme.error) + } + + Spacer(modifier = Modifier.weight(1f)) + + Button( + onClick = { + viewModel.createSession( + aufgabenProLevel, + wahrscheinlichkeitSperre, + wahrscheinlichkeitStrafe, + zeitfaktor + ) {} + currentUser.userId?.let { viewModel.loadSession(it) } + }, + modifier = Modifier.fillMaxWidth().height(52.dp), + enabled = !isLoading + ) { + if (isLoading) CircularProgressIndicator(modifier = Modifier.size(24.dp)) + else Text("Session starten", fontSize = 16.sp) + } + } + } +} + +@Composable +fun SliderSetting( + label: String, + value: Float, + onValueChange: (Float) -> Unit, + valueRange: ClosedFloatingPointRange, + steps: Int, + displayValue: String +) { + Column { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text(label, fontSize = 14.sp) + Text(displayValue, fontSize = 14.sp, color = MaterialTheme.colorScheme.primary, fontWeight = FontWeight.Bold) + } + Slider( + value = value, + onValueChange = onValueChange, + valueRange = valueRange, + steps = steps, + modifier = Modifier.fillMaxWidth() + ) + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/social/FriendsScreen.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/social/FriendsScreen.kt new file mode 100644 index 0000000..aab14d9 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/social/FriendsScreen.kt @@ -0,0 +1,177 @@ +package de.oaa.xxx.app.ui.screens.social + +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.filled.Check +import androidx.compose.material.icons.filled.Close +import androidx.compose.material.icons.filled.PersonAdd +import androidx.compose.material.icons.filled.Search +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import de.oaa.xxx.app.data.model.FriendshipDto +import de.oaa.xxx.app.data.model.User +import de.oaa.xxx.app.ui.viewmodel.SocialViewModel + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun FriendsScreen( + viewModel: SocialViewModel, + currentUserId: String, + onNavigateBack: () -> Unit, + onOpenMessages: (String) -> Unit +) { + val friends by viewModel.friends.collectAsState() + val pending by viewModel.pending.collectAsState() + val searchResults by viewModel.searchResults.collectAsState() + val isLoading by viewModel.isLoading.collectAsState() + var selectedTab by remember { mutableIntStateOf(0) } + var searchQuery by remember { mutableStateOf("") } + var showSearch by remember { mutableStateOf(false) } + + LaunchedEffect(Unit) { viewModel.loadFriends() } + + Scaffold( + topBar = { + TopAppBar( + title = { Text("Freunde") }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + }, + actions = { + IconButton(onClick = { showSearch = !showSearch }) { + Icon(Icons.Default.Search, contentDescription = "Suchen") + } + } + ) + } + ) { padding -> + Column(modifier = Modifier.fillMaxSize().padding(padding)) { + if (showSearch) { + OutlinedTextField( + value = searchQuery, + onValueChange = { + searchQuery = it + if (it.length >= 2) viewModel.searchUsers(it) + }, + label = { Text("Benutzer suchen...") }, + modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 8.dp), + trailingIcon = { + IconButton(onClick = { viewModel.searchUsers(searchQuery) }) { + Icon(Icons.Default.Search, contentDescription = "Suchen") + } + }, + singleLine = true + ) + + LazyColumn( + modifier = Modifier.fillMaxWidth(), + contentPadding = PaddingValues(horizontal = 16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + items(searchResults) { user -> + SearchUserCard(user = user, onSendRequest = { + user.userId?.let { viewModel.sendFriendRequest(it) } + }) + } + } + } else { + TabRow(selectedTabIndex = selectedTab) { + Tab(selected = selectedTab == 0, onClick = { selectedTab = 0 }, text = { Text("Freunde (${friends.size})") }) + Tab(selected = selectedTab == 1, onClick = { selectedTab = 1 }, text = { Text("Anfragen (${pending.size})") }) + } + + if (isLoading) { + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + CircularProgressIndicator() + } + } else if (selectedTab == 0) { + LazyColumn( + contentPadding = PaddingValues(16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + items(friends) { friendship -> + FriendCard( + friendship = friendship, + currentUserId = currentUserId, + onMessage = { partnerId -> onOpenMessages(partnerId) }, + onRemove = { viewModel.rejectRequest(friendship.friendshipId ?: "") } + ) + } + } + } else { + LazyColumn( + contentPadding = PaddingValues(16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + items(pending) { request -> + PendingRequestCard( + request = request, + currentUserId = currentUserId, + onAccept = { viewModel.acceptRequest(request.friendshipId ?: "") }, + onReject = { viewModel.rejectRequest(request.friendshipId ?: "") } + ) + } + } + } + } + } + } +} + +@Composable +fun SearchUserCard(user: User, onSendRequest: () -> Unit) { + Card(modifier = Modifier.fillMaxWidth(), colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface)) { + Row(modifier = Modifier.padding(12.dp), verticalAlignment = Alignment.CenterVertically) { + Text(user.name ?: "(Unbekannt)", modifier = Modifier.weight(1f), fontWeight = FontWeight.Medium) + IconButton(onClick = onSendRequest) { + Icon(Icons.Default.PersonAdd, contentDescription = "Anfrage senden", tint = MaterialTheme.colorScheme.primary) + } + } + } +} + +@Composable +fun FriendCard(friendship: FriendshipDto, currentUserId: String, onMessage: (String) -> Unit, onRemove: () -> Unit) { + val partnerName = if (friendship.senderId == currentUserId) friendship.receiverName else friendship.senderName + val partnerId = if (friendship.senderId == currentUserId) friendship.receiverId else friendship.senderId + Card(modifier = Modifier.fillMaxWidth(), colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface)) { + Row(modifier = Modifier.padding(12.dp), verticalAlignment = Alignment.CenterVertically) { + Text(partnerName ?: "(Unbekannt)", modifier = Modifier.weight(1f), fontWeight = FontWeight.Medium) + IconButton(onClick = { partnerId?.let(onMessage) }) { + Icon(Icons.Default.Check, contentDescription = "Nachricht", tint = MaterialTheme.colorScheme.primary) + } + } + } +} + +@Composable +fun PendingRequestCard(request: FriendshipDto, currentUserId: String, onAccept: () -> Unit, onReject: () -> Unit) { + val name = if (request.senderId == currentUserId) request.receiverName else request.senderName + Card(modifier = Modifier.fillMaxWidth(), colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface)) { + Row(modifier = Modifier.padding(12.dp), verticalAlignment = Alignment.CenterVertically) { + Column(modifier = Modifier.weight(1f)) { + Text(name ?: "(Unbekannt)", fontWeight = FontWeight.Medium) + val direction = if (request.senderId == currentUserId) "Gesendet" else "Empfangen" + Text(direction, fontSize = 12.sp, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f)) + } + if (request.senderId != currentUserId) { + IconButton(onClick = onAccept) { + Icon(Icons.Default.Check, contentDescription = "Annehmen", tint = MaterialTheme.colorScheme.primary) + } + } + IconButton(onClick = onReject) { + Icon(Icons.Default.Close, contentDescription = "Ablehnen", tint = MaterialTheme.colorScheme.error) + } + } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/social/MessagesScreen.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/social/MessagesScreen.kt new file mode 100644 index 0000000..d88d04c --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/screens/social/MessagesScreen.kt @@ -0,0 +1,180 @@ +package de.oaa.xxx.app.ui.screens.social + +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.filled.Send +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import de.oaa.xxx.app.data.model.ConversationSummary +import de.oaa.xxx.app.ui.viewmodel.SocialViewModel + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun MessagesScreen( + viewModel: SocialViewModel, + onNavigateBack: () -> Unit, + onOpenConversation: (String) -> Unit +) { + val conversations by viewModel.conversations.collectAsState() + val isLoading by viewModel.isLoading.collectAsState() + + LaunchedEffect(Unit) { viewModel.loadConversations() } + + Scaffold( + topBar = { + TopAppBar( + title = { Text("Nachrichten") }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + } + ) + } + ) { padding -> + if (isLoading) { + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + CircularProgressIndicator() + } + } else if (conversations.isEmpty()) { + Box(modifier = Modifier.fillMaxSize().padding(padding), contentAlignment = Alignment.Center) { + Text("Noch keine Nachrichten", color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.5f)) + } + } else { + LazyColumn( + modifier = Modifier.fillMaxSize().padding(padding), + contentPadding = PaddingValues(16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + items(conversations) { conversation -> + ConversationCard(conversation = conversation, onClick = { + conversation.partnerId?.let(onOpenConversation) + }) + } + } + } + } +} + +@Composable +fun ConversationCard(conversation: ConversationSummary, onClick: () -> Unit) { + Card( + onClick = onClick, + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface) + ) { + Row( + modifier = Modifier.padding(16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Column(modifier = Modifier.weight(1f)) { + Text(conversation.partnerName ?: "(Unbekannt)", fontWeight = FontWeight.Bold) + Text( + conversation.lastMessage ?: "", + fontSize = 13.sp, + maxLines = 1, + color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.7f) + ) + } + if ((conversation.unreadCount ?: 0) > 0) { + Badge { Text("${conversation.unreadCount}") } + } + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ConversationScreen( + viewModel: SocialViewModel, + partnerId: String, + currentUserId: String, + partnerName: String, + onNavigateBack: () -> Unit +) { + val messages by viewModel.messages.collectAsState() + val isLoading by viewModel.isLoading.collectAsState() + var messageText by remember { mutableStateOf("") } + val listState = rememberLazyListState() + + LaunchedEffect(partnerId) { viewModel.loadMessages(partnerId) } + + LaunchedEffect(messages.size) { + if (messages.isNotEmpty()) listState.animateScrollToItem(messages.size - 1) + } + + Scaffold( + topBar = { + TopAppBar( + title = { Text(partnerName) }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon(Icons.Default.ArrowBack, contentDescription = "Zurück") + } + } + ) + }, + bottomBar = { + Row( + modifier = Modifier.padding(8.dp).fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + OutlinedTextField( + value = messageText, + onValueChange = { messageText = it }, + modifier = Modifier.weight(1f), + placeholder = { Text("Nachricht...") }, + singleLine = true + ) + Spacer(modifier = Modifier.width(8.dp)) + IconButton( + onClick = { + if (messageText.isNotBlank()) { + viewModel.sendMessage(partnerId, messageText) + messageText = "" + } + } + ) { + Icon(Icons.Default.Send, contentDescription = "Senden", tint = MaterialTheme.colorScheme.primary) + } + } + } + ) { padding -> + LazyColumn( + modifier = Modifier.fillMaxSize().padding(padding).padding(horizontal = 16.dp), + state = listState, + verticalArrangement = Arrangement.spacedBy(8.dp), + contentPadding = PaddingValues(vertical = 8.dp) + ) { + items(messages) { msg -> + val isOwn = msg.senderId == currentUserId + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = if (isOwn) Arrangement.End else Arrangement.Start + ) { + Card( + modifier = Modifier.widthIn(max = 280.dp), + colors = CardDefaults.cardColors( + containerColor = if (isOwn) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.surface + ) + ) { + Text( + text = msg.text ?: "", + modifier = Modifier.padding(12.dp), + color = if (isOwn) MaterialTheme.colorScheme.onPrimary else MaterialTheme.colorScheme.onSurface + ) + } + } + } + } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/theme/Color.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/theme/Color.kt new file mode 100644 index 0000000..6a859ff --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/theme/Color.kt @@ -0,0 +1,14 @@ +package de.oaa.xxx.app.ui.theme + +import androidx.compose.ui.graphics.Color + +// Web app theme colors +val Primary = Color(0xFFE94560) +val PrimaryDark = Color(0xFFB5264A) +val Background = Color(0xFF1A1A2E) +val Surface = Color(0xFF16213E) +val SurfaceVariant = Color(0xFF0F3460) +val OnBackground = Color(0xFFE0E0E0) +val OnSurface = Color(0xFFCCCCCC) +val OnPrimary = Color(0xFFFFFFFF) +val Error = Color(0xFFCF6679) diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/theme/Theme.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/theme/Theme.kt new file mode 100644 index 0000000..a69edc1 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/theme/Theme.kt @@ -0,0 +1,24 @@ +package de.oaa.xxx.app.ui.theme + +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.runtime.Composable + +private val DarkColorScheme = darkColorScheme( + primary = Primary, + onPrimary = OnPrimary, + background = Background, + onBackground = OnBackground, + surface = Surface, + onSurface = OnSurface, + surfaceVariant = SurfaceVariant, + error = Error +) + +@Composable +fun XxxGameTheme(content: @Composable () -> Unit) { + MaterialTheme( + colorScheme = DarkColorScheme, + content = content + ) +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/AufgabenViewModel.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/AufgabenViewModel.kt new file mode 100644 index 0000000..b52c210 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/AufgabenViewModel.kt @@ -0,0 +1,145 @@ +package de.oaa.xxx.app.ui.viewmodel + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import de.oaa.xxx.app.data.api.ApiClient +import de.oaa.xxx.app.data.model.AufgabenGruppe +import de.oaa.xxx.app.data.model.AufgabenGruppeDisplay +import de.oaa.xxx.app.data.model.Toy +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch + +class AufgabenViewModel : ViewModel() { + + private val _userGruppen = MutableStateFlow>(emptyList()) + val userGruppen: StateFlow> = _userGruppen + + private val _systemGruppen = MutableStateFlow>(emptyList()) + val systemGruppen: StateFlow> = _systemGruppen + + private val _subscriptions = MutableStateFlow>(emptyList()) + val subscriptions: StateFlow> = _subscriptions + + private val _selectedGruppe = MutableStateFlow(null) + val selectedGruppe: StateFlow = _selectedGruppe + + private val _userToys = MutableStateFlow>(emptyList()) + val userToys: StateFlow> = _userToys + + private val _systemToys = MutableStateFlow>(emptyList()) + val systemToys: StateFlow> = _systemToys + + private val _isLoading = MutableStateFlow(false) + val isLoading: StateFlow = _isLoading + + private val _error = MutableStateFlow(null) + val error: StateFlow = _error + + fun loadUserGruppen() { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.aufgabenApi.getUserGruppen() + if (resp.isSuccessful) _userGruppen.value = resp.body() ?: emptyList() + else _error.value = "Fehler beim Laden" + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun loadSystemGruppen() { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.aufgabenApi.getSystemGruppen() + if (resp.isSuccessful) _systemGruppen.value = resp.body() ?: emptyList() + else _error.value = "Fehler beim Laden" + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun loadSubscriptions() { + viewModelScope.launch { + try { + val resp = ApiClient.aufgabenApi.getAbonnements() + if (resp.isSuccessful) _subscriptions.value = resp.body() ?: emptyList() + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun loadGruppe(gruppenId: String) { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.aufgabenApi.getGruppe(gruppenId) + if (resp.isSuccessful) _selectedGruppe.value = resp.body() + else _error.value = "Gruppe nicht gefunden" + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun loadToys() { + viewModelScope.launch { + try { + val user = ApiClient.aufgabenApi.getUserToys() + val system = ApiClient.aufgabenApi.getSystemToys() + if (user.isSuccessful) _userToys.value = user.body() ?: emptyList() + if (system.isSuccessful) _systemToys.value = system.body() ?: emptyList() + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun copyGruppe(gruppenId: String, onSuccess: () -> Unit) { + viewModelScope.launch { + try { + val resp = ApiClient.aufgabenApi.copyGruppe(gruppenId) + if (resp.isSuccessful) { + loadUserGruppen() + onSuccess() + } + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun subscribe(gruppenId: String) { + viewModelScope.launch { + try { + val resp = ApiClient.aufgabenApi.subscribe(gruppenId) + if (resp.isSuccessful) loadSubscriptions() + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun unsubscribe(gruppenId: String) { + viewModelScope.launch { + try { + val resp = ApiClient.aufgabenApi.unsubscribe(gruppenId) + if (resp.isSuccessful) loadSubscriptions() + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun clearError() { _error.value = null } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/AuthViewModel.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/AuthViewModel.kt new file mode 100644 index 0000000..d0bb347 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/AuthViewModel.kt @@ -0,0 +1,104 @@ +package de.oaa.xxx.app.ui.viewmodel + +import android.app.Application +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.viewModelScope +import de.oaa.xxx.app.data.api.ApiClient +import de.oaa.xxx.app.data.local.TokenStore +import de.oaa.xxx.app.data.model.RegistrationRequest +import de.oaa.xxx.app.data.model.User +import de.oaa.xxx.app.util.sha256 +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.launch + +sealed class AuthState { + object Idle : AuthState() + object Loading : AuthState() + data class LoggedIn(val user: User) : AuthState() + object LoggedOut : AuthState() + data class Error(val message: String) : AuthState() +} + +class AuthViewModel(application: Application) : AndroidViewModel(application) { + + private val tokenStore = TokenStore(application) + private val _state = MutableStateFlow(AuthState.Idle) + val state: StateFlow = _state + + init { + checkSession() + } + + private fun checkSession() { + viewModelScope.launch { + val token = tokenStore.jwtToken.first() + if (token != null) { + ApiClient.setJwtToken(token) + val resp = runCatching { ApiClient.authApi.me() }.getOrNull() + if (resp?.isSuccessful == true && resp.body() != null) { + _state.value = AuthState.LoggedIn(resp.body()!!) + } else { + tokenStore.clear() + _state.value = AuthState.LoggedOut + } + } else { + _state.value = AuthState.LoggedOut + } + } + } + + fun login(email: String, password: String) { + viewModelScope.launch { + _state.value = AuthState.Loading + try { + val hash = sha256(password) + val resp = ApiClient.authApi.login(email, hash) + if (resp.isSuccessful && resp.body() != null) { + val user = resp.body()!! + val jwt = ApiClient.getJwtToken() + if (jwt != null) tokenStore.saveToken(jwt) + tokenStore.saveUser(user.userId ?: "", user.name ?: "") + _state.value = AuthState.LoggedIn(user) + } else { + _state.value = AuthState.Error("E-Mail oder Passwort falsch") + } + } catch (e: Exception) { + _state.value = AuthState.Error(e.message ?: "Verbindungsfehler") + } + } + } + + fun register(name: String, email: String, password: String) { + viewModelScope.launch { + _state.value = AuthState.Loading + try { + val hash = sha256(password) + val resp = ApiClient.authApi.register(RegistrationRequest(name, email, hash)) + if (resp.isSuccessful) { + _state.value = AuthState.Error("Registrierung erfolgreich! Bitte E-Mail bestätigen.") + } else { + _state.value = AuthState.Error("Registrierung fehlgeschlagen") + } + } catch (e: Exception) { + _state.value = AuthState.Error(e.message ?: "Verbindungsfehler") + } + } + } + + fun logout() { + viewModelScope.launch { + runCatching { ApiClient.authApi.logout() } + ApiClient.clearCookies() + tokenStore.clear() + _state.value = AuthState.LoggedOut + } + } + + fun clearError() { + if (_state.value is AuthState.Error) { + _state.value = AuthState.LoggedOut + } + } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/FeedViewModel.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/FeedViewModel.kt new file mode 100644 index 0000000..ae5d724 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/FeedViewModel.kt @@ -0,0 +1,91 @@ +package de.oaa.xxx.app.ui.viewmodel + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import de.oaa.xxx.app.data.api.ApiClient +import de.oaa.xxx.app.data.model.FeedItemDto +import de.oaa.xxx.app.data.model.FeedPostRequest +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch + +class FeedViewModel : ViewModel() { + + private val _myFeed = MutableStateFlow>(emptyList()) + val myFeed: StateFlow> = _myFeed + + private val _publicFeed = MutableStateFlow>(emptyList()) + val publicFeed: StateFlow> = _publicFeed + + private val _isLoading = MutableStateFlow(false) + val isLoading: StateFlow = _isLoading + + private val _error = MutableStateFlow(null) + val error: StateFlow = _error + + fun loadMyFeed() { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.feedApi.getMyFeed() + if (resp.isSuccessful) _myFeed.value = resp.body() ?: emptyList() + else _error.value = "Fehler beim Laden des Feeds" + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun loadPublicFeed() { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.feedApi.getPublicFeed() + if (resp.isSuccessful) _publicFeed.value = resp.body() ?: emptyList() + else _error.value = "Fehler beim Laden" + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun createPost(text: String, isPublic: Boolean) { + viewModelScope.launch { + try { + val resp = ApiClient.feedApi.createPost(FeedPostRequest(text, isPublic = isPublic)) + if (resp.isSuccessful) loadMyFeed() + else _error.value = "Post konnte nicht erstellt werden" + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun toggleLike(postId: String) { + viewModelScope.launch { + try { + ApiClient.feedApi.toggleLike(postId) + loadMyFeed() + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun deletePost(postId: String) { + viewModelScope.launch { + try { + ApiClient.feedApi.deletePost(postId) + loadMyFeed() + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun clearError() { _error.value = null } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/SessionViewModel.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/SessionViewModel.kt new file mode 100644 index 0000000..c40e3ac --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/SessionViewModel.kt @@ -0,0 +1,154 @@ +package de.oaa.xxx.app.ui.viewmodel + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import de.oaa.xxx.app.data.api.ApiClient +import de.oaa.xxx.app.data.model.AufgabeAnzeige +import de.oaa.xxx.app.data.model.AufgabenGruppenRef +import de.oaa.xxx.app.data.model.AufgabenList +import de.oaa.xxx.app.data.model.Mitspieler +import de.oaa.xxx.app.data.model.Session +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch + +class SessionViewModel : ViewModel() { + + private val _session = MutableStateFlow(null) + val session: StateFlow = _session + + private val _currentAufgabe = MutableStateFlow(null) + val currentAufgabe: StateFlow = _currentAufgabe + + private val _finisherList = MutableStateFlow>(emptyList()) + val finisherList: StateFlow> = _finisherList + + private val _isLoading = MutableStateFlow(false) + val isLoading: StateFlow = _isLoading + + private val _error = MutableStateFlow(null) + val error: StateFlow = _error + + fun loadSession(userId: String) { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.sessionApi.getByUserId(userId) + _session.value = if (resp.isSuccessful) resp.body() else null + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun createSession( + aufgabenProLevel: Int, + wahrscheinlichkeitSperre: Int, + wahrscheinlichkeitStrafe: Int, + zeitfaktor: Double, + onSuccess: () -> Unit + ) { + viewModelScope.launch { + _isLoading.value = true + try { + val s = Session( + aufgabenProLevel = aufgabenProLevel, + wahrscheinlichkeitSperre = wahrscheinlichkeitSperre, + wahrscheinlichkeitStrafe = wahrscheinlichkeitStrafe, + zeitfaktorZeitstrafen = zeitfaktor + ) + val resp = ApiClient.sessionApi.createSession(s) + if (resp.isSuccessful) onSuccess() + else _error.value = "Session konnte nicht erstellt werden" + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun setAufgaben(sessionId: String, gruppenRefs: List, onSuccess: () -> Unit) { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.sessionApi.setAufgaben(sessionId, AufgabenList(gruppenRefs)) + if (resp.isSuccessful) onSuccess() + else _error.value = "Aufgaben konnten nicht gesetzt werden" + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun getNextAufgabe(sessionId: String) { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.sessionApi.getNextAufgabe(sessionId) + _currentAufgabe.value = if (resp.isSuccessful) resp.body() else null + if (resp.code() == 204) { + // Session finished - load finisher + loadFinisher(sessionId) + } + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun addMitspieler(sessionId: String, mitspieler: Mitspieler, onSuccess: () -> Unit) { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.sessionApi.addMitspieler(sessionId, mitspieler) + if (resp.isSuccessful) onSuccess() + else _error.value = "Mitspieler konnte nicht hinzugefügt werden" + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun loadFinisher(sessionId: String) { + viewModelScope.launch { + try { + val resp = ApiClient.sessionApi.getFinisher(sessionId) + _finisherList.value = if (resp.isSuccessful) resp.body() ?: emptyList() else emptyList() + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun deleteSession(session: Session, onSuccess: () -> Unit) { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.sessionApi.deleteSession(session) + if (resp.isSuccessful) { + _session.value = null + _currentAufgabe.value = null + _finisherList.value = emptyList() + onSuccess() + } else { + _error.value = "Session konnte nicht beendet werden" + } + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun clearError() { _error.value = null } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/SocialViewModel.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/SocialViewModel.kt new file mode 100644 index 0000000..75da7b1 --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/ui/viewmodel/SocialViewModel.kt @@ -0,0 +1,154 @@ +package de.oaa.xxx.app.ui.viewmodel + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import de.oaa.xxx.app.data.api.ApiClient +import de.oaa.xxx.app.data.model.ConversationSummary +import de.oaa.xxx.app.data.model.FriendshipDto +import de.oaa.xxx.app.data.model.MessageDto +import de.oaa.xxx.app.data.model.User +import de.oaa.xxx.app.data.model.UserProfile +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch + +class SocialViewModel : ViewModel() { + + private val _friends = MutableStateFlow>(emptyList()) + val friends: StateFlow> = _friends + + private val _pending = MutableStateFlow>(emptyList()) + val pending: StateFlow> = _pending + + private val _searchResults = MutableStateFlow>(emptyList()) + val searchResults: StateFlow> = _searchResults + + private val _conversations = MutableStateFlow>(emptyList()) + val conversations: StateFlow> = _conversations + + private val _messages = MutableStateFlow>(emptyList()) + val messages: StateFlow> = _messages + + private val _viewedProfile = MutableStateFlow(null) + val viewedProfile: StateFlow = _viewedProfile + + private val _isLoading = MutableStateFlow(false) + val isLoading: StateFlow = _isLoading + + private val _error = MutableStateFlow(null) + val error: StateFlow = _error + + fun loadFriends() { + viewModelScope.launch { + _isLoading.value = true + try { + val f = ApiClient.socialApi.getFriends() + val p = ApiClient.socialApi.getPendingRequests() + if (f.isSuccessful) _friends.value = f.body() ?: emptyList() + if (p.isSuccessful) _pending.value = p.body() ?: emptyList() + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun searchUsers(query: String) { + viewModelScope.launch { + try { + val resp = ApiClient.socialApi.searchUsers(query) + if (resp.isSuccessful) _searchResults.value = resp.body() ?: emptyList() + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun sendFriendRequest(userId: String) { + viewModelScope.launch { + try { + ApiClient.socialApi.sendFriendRequest(mapOf("receiverId" to userId)) + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun acceptRequest(friendshipId: String) { + viewModelScope.launch { + try { + ApiClient.socialApi.acceptFriendRequest(mapOf("friendshipId" to friendshipId)) + loadFriends() + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun rejectRequest(friendshipId: String) { + viewModelScope.launch { + try { + ApiClient.socialApi.rejectFriend(mapOf("friendshipId" to friendshipId)) + loadFriends() + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun loadConversations() { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.socialApi.getConversations() + if (resp.isSuccessful) _conversations.value = resp.body() ?: emptyList() + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun loadMessages(partnerId: String) { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.socialApi.getConversation(partnerId) + if (resp.isSuccessful) _messages.value = resp.body() ?: emptyList() + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun sendMessage(receiverId: String, text: String) { + viewModelScope.launch { + try { + ApiClient.socialApi.sendMessage(mapOf("receiverId" to receiverId, "text" to text)) + loadMessages(receiverId) + } catch (e: Exception) { + _error.value = e.message + } + } + } + + fun loadUserProfile(userId: String) { + viewModelScope.launch { + _isLoading.value = true + try { + val resp = ApiClient.socialApi.getUserProfile(userId) + if (resp.isSuccessful) _viewedProfile.value = resp.body() + } catch (e: Exception) { + _error.value = e.message + } finally { + _isLoading.value = false + } + } + } + + fun clearError() { _error.value = null } +} diff --git a/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/util/CryptoUtils.kt b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/util/CryptoUtils.kt new file mode 100644 index 0000000..74c445c --- /dev/null +++ b/xxxthegame-android/app/src/main/java/de/oaa/xxx/app/util/CryptoUtils.kt @@ -0,0 +1,9 @@ +package de.oaa.xxx.app.util + +import java.security.MessageDigest + +fun sha256(input: String): String { + val digest = MessageDigest.getInstance("SHA-256") + val hash = digest.digest(input.toByteArray(Charsets.UTF_8)) + return hash.joinToString("") { "%02x".format(it) } +} diff --git a/xxxthegame-android/app/src/main/res/drawable/ic_launcher_background.xml b/xxxthegame-android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..9e0b928 --- /dev/null +++ b/xxxthegame-android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + + diff --git a/xxxthegame-android/app/src/main/res/drawable/ic_launcher_foreground.xml b/xxxthegame-android/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..457cab5 --- /dev/null +++ b/xxxthegame-android/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/xxxthegame-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/xxxthegame-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..d378acd --- /dev/null +++ b/xxxthegame-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/xxxthegame-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/xxxthegame-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..d378acd --- /dev/null +++ b/xxxthegame-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/xxxthegame-android/app/src/main/res/values/colors.xml b/xxxthegame-android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..a4874d6 --- /dev/null +++ b/xxxthegame-android/app/src/main/res/values/colors.xml @@ -0,0 +1,7 @@ + + + #E94560 + #1A1A2E + #16213E + #0F3460 + diff --git a/xxxthegame-android/app/src/main/res/values/strings.xml b/xxxthegame-android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..58476c8 --- /dev/null +++ b/xxxthegame-android/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + + XXX The Game + diff --git a/xxxthegame-android/app/src/main/res/values/themes.xml b/xxxthegame-android/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..645d79e --- /dev/null +++ b/xxxthegame-android/app/src/main/res/values/themes.xml @@ -0,0 +1,8 @@ + + + + diff --git a/xxxthegame-android/build.gradle.kts b/xxxthegame-android/build.gradle.kts new file mode 100644 index 0000000..9deb573 --- /dev/null +++ b/xxxthegame-android/build.gradle.kts @@ -0,0 +1,5 @@ +plugins { + alias(libs.plugins.android.application) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.compose) apply false +} diff --git a/xxxthegame-android/gradle.properties b/xxxthegame-android/gradle.properties new file mode 100644 index 0000000..f0a2e55 --- /dev/null +++ b/xxxthegame-android/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +android.useAndroidX=true +kotlin.code.style=official +android.nonTransitiveRClass=true diff --git a/xxxthegame-android/gradle/libs.versions.toml b/xxxthegame-android/gradle/libs.versions.toml new file mode 100644 index 0000000..7755170 --- /dev/null +++ b/xxxthegame-android/gradle/libs.versions.toml @@ -0,0 +1,42 @@ +[versions] +agp = "8.5.2" +kotlin = "2.0.21" +coreKtx = "1.13.1" +lifecycleRuntimeKtx = "2.8.6" +activityCompose = "1.9.2" +composeBom = "2024.09.03" +navigationCompose = "2.8.2" +retrofit = "2.11.0" +okhttp = "4.12.0" +gson = "2.11.0" +datastore = "1.1.1" +coroutines = "1.9.0" +coil = "2.7.0" +material3 = "1.3.0" + +[libraries] +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } +androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycleRuntimeKtx" } +androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } +androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } +androidx-ui = { group = "androidx.compose.ui", name = "ui" } +androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } +androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } +androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +androidx-material3 = { group = "androidx.compose.material3", name = "material3" } +androidx-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended" } +androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationCompose" } +androidx-datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastore" } +retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" } +retrofit-converter-gson = { group = "com.squareup.retrofit2", name = "converter-gson", version.ref = "retrofit" } +okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" } +okhttp-logging-interceptor = { group = "com.squareup.okhttp3", name = "logging-interceptor", version.ref = "okhttp" } +gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" } +kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutines" } +coil-compose = { group = "io.coil-kt", name = "coil-compose", version.ref = "coil" } + +[plugins] +android-application = { id = "com.android.application", version.ref = "agp" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } diff --git a/xxxthegame-android/gradle/wrapper/gradle-wrapper.properties b/xxxthegame-android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..09523c0 --- /dev/null +++ b/xxxthegame-android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/xxxthegame-android/settings.gradle.kts b/xxxthegame-android/settings.gradle.kts new file mode 100644 index 0000000..8db7342 --- /dev/null +++ b/xxxthegame-android/settings.gradle.kts @@ -0,0 +1,17 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} + +rootProject.name = "xxxthegame-android" +include(":app") diff --git a/xxxthegame/.idea/.gitignore b/xxxthegame/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/xxxthegame/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/xxxthegame/.idea/AndroidProjectSystem.xml b/xxxthegame/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..4a53bee --- /dev/null +++ b/xxxthegame/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/xxxthegame/.idea/caches/deviceStreaming.xml b/xxxthegame/.idea/caches/deviceStreaming.xml new file mode 100644 index 0000000..f883ea2 --- /dev/null +++ b/xxxthegame/.idea/caches/deviceStreaming.xml @@ -0,0 +1,1462 @@ + + + + + + \ No newline at end of file diff --git a/xxxthegame/.idea/compiler.xml b/xxxthegame/.idea/compiler.xml new file mode 100644 index 0000000..4712713 --- /dev/null +++ b/xxxthegame/.idea/compiler.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/xxxthegame/.idea/gradle.xml b/xxxthegame/.idea/gradle.xml new file mode 100644 index 0000000..589fc7f --- /dev/null +++ b/xxxthegame/.idea/gradle.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/xxxthegame/.idea/migrations.xml b/xxxthegame/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/xxxthegame/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/xxxthegame/.idea/misc.xml b/xxxthegame/.idea/misc.xml new file mode 100644 index 0000000..74dd639 --- /dev/null +++ b/xxxthegame/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/xxxthegame/.idea/runConfigurations.xml b/xxxthegame/.idea/runConfigurations.xml new file mode 100644 index 0000000..16660f1 --- /dev/null +++ b/xxxthegame/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/xxxthegame/.idea/vcs.xml b/xxxthegame/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/xxxthegame/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AboController.java b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AboController.java index 141c30f..d327636 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AboController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AboController.java @@ -18,6 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.security.Principal; import java.util.Comparator; import java.util.List; @@ -28,6 +31,7 @@ import java.util.UUID; @Transactional public class AboController { + private static final Logger LOGGER = LoggerFactory.getLogger(AboController.class); private static final int DEFAULT_PAGE_SIZE = 5; private static final int DISCOVER_PAGE_SIZE = 10; @@ -105,6 +109,7 @@ public class AboController { abo.setUserId(user.getUserId()); abo.setAufgabenGruppe(gruppe); aboRepository.save(abo); + LOGGER.info("User {} hat Gruppe {} abonniert", user.getUserId(), gruppenId); return ResponseEntity.status(201).build(); } @@ -119,6 +124,7 @@ public class AboController { if (gruppe == null) return ResponseEntity.noContent().build(); aboRepository.deleteByUserIdAndAufgabenGruppe(user.getUserId(), gruppe); + LOGGER.info("User {} hat Abo auf Gruppe {} beendet", user.getUserId(), gruppenId); return ResponseEntity.accepted().build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AufgabeController.java b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AufgabeController.java index aab7c93..a30c9f2 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AufgabeController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AufgabeController.java @@ -67,6 +67,7 @@ public class AufgabeController { List toys = resolveToys(aufgabe.getBenoetigteToys()); AufgabeEntity entity = AufgabeEntity.create(aufgabe, gruppeEntity, toys); aufgabeRepository.save(entity); + LOGGER.debug("Aufgabe {} '{}' in Gruppe {} erstellt", entity.getAufgabeId(), entity.getKurzText(), aufgabe.getGruppeId()); return ResponseEntity.created( ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(entity.getAufgabeId()).toUri() ).build(); @@ -88,6 +89,7 @@ public class AufgabeController { entity.setBenoetigtPassiv(aufgabe.getBenoetigtPassiv()); entity.setBenoetigteToys(resolveToys(aufgabe.getBenoetigteToys())); aufgabeRepository.save(entity); + LOGGER.debug("Aufgabe {} aktualisiert", aufgabeId); return ResponseEntity.ok().build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AufgabenGruppeController.java b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AufgabenGruppeController.java index 0316ec9..0232d90 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AufgabenGruppeController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/AufgabenGruppeController.java @@ -150,6 +150,7 @@ public class AufgabenGruppeController { entity.setUserId(user.getUserId()); entity.setPrivateGruppe(true); gruppeRepository.save(entity); + LOGGER.debug("User {} hat AufgabenGruppe '{}' ({}) erstellt", user.getUserId(), entity.getName(), entity.getGruppenId()); return ResponseEntity.created( ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(entity.getGruppenId()).toUri() ).build(); @@ -179,6 +180,7 @@ public class AufgabenGruppeController { entity.setBild(Base64.getDecoder().decode(gruppe.getBild())); } gruppeRepository.save(entity); + LOGGER.debug("User {} hat AufgabenGruppe {} aktualisiert", user.getUserId(), gruppeId); return ResponseEntity.ok().build(); } @@ -293,6 +295,7 @@ public class AufgabenGruppeController { finisherRepository.save(fc); } + LOGGER.info("User {} hat AufgabenGruppe {} kopiert (Quelle: {})", user.getUserId(), copy.getGruppenId(), gruppeId); return ResponseEntity.status(201).build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/FavoritController.java b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/FavoritController.java index 942934c..bf7f72f 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/FavoritController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/FavoritController.java @@ -61,6 +61,7 @@ public class FavoritController { if (existing.isEmpty()) { entity = FavoritEntity.fromFavorit(favorit, userId); favoritRepository.save(entity); + LOGGER.debug("User {} hat AufgabenGruppe {} als Favorit gespeichert", userId, favorit.getAufgabenGruppeId()); } else { entity = existing.get(0); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/FinisherController.java b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/FinisherController.java index bce7007..be0f688 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/FinisherController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/FinisherController.java @@ -68,6 +68,7 @@ public class FinisherController { List toys = resolveToys(finisher.getBenoetigteToys()); FinisherEntity entity = FinisherEntity.create(finisher, gruppeEntity, toys); finisherRepository.save(entity); + LOGGER.debug("Finisher {} '{}' in Gruppe {} erstellt", entity.getFinisherId(), entity.getKurzText(), finisher.getGruppeId()); return ResponseEntity.created( ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(entity.getFinisherId()).toUri() ).build(); @@ -87,6 +88,7 @@ public class FinisherController { entity.setBenoetigtPassiv(finisher.getBenoetigtPassiv()); entity.setBenoetigteToys(resolveToys(finisher.getBenoetigteToys())); finisherRepository.save(entity); + LOGGER.debug("Finisher {} aktualisiert", finisherId); return ResponseEntity.ok().build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/SperreController.java b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/SperreController.java index d44e2aa..9c8fa1c 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/SperreController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/SperreController.java @@ -68,6 +68,7 @@ public class SperreController { List toys = resolveToys(sperre.getBenoetigteToys()); SperreEntity entity = SperreEntity.create(sperre, gruppeEntity, toys); sperreRepository.save(entity); + LOGGER.debug("Sperre {} '{}' in Gruppe {} erstellt", entity.getSperreId(), entity.getKurzText(), sperre.getGruppeId()); return ResponseEntity.created( ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(entity.getSperreId()).toUri() ).build(); @@ -89,6 +90,7 @@ public class SperreController { entity.setSperreFuer(sperre.getSperreFuer()); entity.setBenoetigteToys(resolveToys(sperre.getBenoetigteToys())); sperreRepository.save(entity); + LOGGER.debug("Sperre {} aktualisiert", sperreId); return ResponseEntity.ok().build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/StrafeController.java b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/StrafeController.java index bef7d2b..56838d4 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/StrafeController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/StrafeController.java @@ -67,6 +67,7 @@ public class StrafeController { List toys = resolveToys(strafe.getBenoetigteToys()); StrafeEntity entity = StrafeEntity.create(strafe, gruppeEntity, toys); strafeRepository.save(entity); + LOGGER.debug("Strafe {} '{}' in Gruppe {} erstellt", entity.getStrafeId(), entity.getKurzText(), strafe.getGruppeId()); return ResponseEntity.created( ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(entity.getStrafeId()).toUri() ).build(); @@ -88,6 +89,7 @@ public class StrafeController { entity.setBenoetigtPassiv(strafe.getBenoetigtPassiv()); entity.setBenoetigteToys(resolveToys(strafe.getBenoetigteToys())); strafeRepository.save(entity); + LOGGER.debug("Strafe {} aktualisiert", strafeId); return ResponseEntity.ok().build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/ToyController.java b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/ToyController.java index 1c85c5f..75f7dcd 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/ToyController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/aufgaben/controller/ToyController.java @@ -145,6 +145,7 @@ public class ToyController { ToyEntity entity = ToyEntity.create(toy); entity.setUserId(user.getUserId()); toyRepository.save(entity); + LOGGER.debug("User {} hat Toy {} '{}' erstellt", user.getUserId(), entity.getToyId(), entity.getName()); return ResponseEntity.created( ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(entity.getToyId()).toUri() ).build(); @@ -175,6 +176,7 @@ public class ToyController { copy.setUserId(user.getUserId()); copy.setBild(source.getBild()); toyRepository.save(copy); + LOGGER.debug("User {} hat System-Toy {} kopiert (Kopie: {})", user.getUserId(), toyId, copy.getToyId()); return ResponseEntity.status(201).build(); } @@ -206,6 +208,7 @@ public class ToyController { entity.setBild(Base64.getDecoder().decode(toy.getBild())); } toyRepository.save(entity); + LOGGER.debug("User {} hat Toy {} aktualisiert", user.getUserId(), toyId); return ResponseEntity.ok().build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/config/SecurityConfig.java b/xxxthegame/src/main/java/de/oaa/xxx/config/SecurityConfig.java index 4b03101..7ff5757 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/config/SecurityConfig.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/config/SecurityConfig.java @@ -43,6 +43,7 @@ public class SecurityConfig { .requestMatchers(AntPathRequestMatcher.antMatcher("/sessionvanilla.html")).authenticated() .requestMatchers(AntPathRequestMatcher.antMatcher("/sessionbdsm.html")).authenticated() .requestMatchers(AntPathRequestMatcher.antMatcher("/sessionchastity.html")).authenticated() + .requestMatchers(AntPathRequestMatcher.antMatcher("/sessionchastityingame.html")).authenticated() .requestMatchers(AntPathRequestMatcher.antMatcher("/sessionbdsmtasks.html")).authenticated() .requestMatchers(AntPathRequestMatcher.antMatcher("/sessionbdsmtoys.html")).authenticated() .requestMatchers(AntPathRequestMatcher.antMatcher("/sessionbdsmingame.html")).authenticated() @@ -75,6 +76,7 @@ public class SecurityConfig { .requestMatchers(AntPathRequestMatcher.antMatcher(HttpMethod.POST, "/password-reset/request")).permitAll() .requestMatchers(AntPathRequestMatcher.antMatcher(HttpMethod.POST, "/password-reset/confirm")).permitAll() .requestMatchers(AntPathRequestMatcher.antMatcher(HttpMethod.GET, "/email-change/**")).permitAll() + .requestMatchers(AntPathRequestMatcher.antMatcher(HttpMethod.GET, "/keyholder/invitation/**")).permitAll() .requestMatchers(AntPathRequestMatcher.antMatcher(HttpMethod.POST, "/filler")).permitAll() .anyRequest().authenticated() ) diff --git a/xxxthegame/src/main/java/de/oaa/xxx/feed/FeedController.java b/xxxthegame/src/main/java/de/oaa/xxx/feed/FeedController.java index 31a1fa4..4eb54a7 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/feed/FeedController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/feed/FeedController.java @@ -46,10 +46,15 @@ import de.oaa.xxx.social.repository.KommentarRepository; import de.oaa.xxx.user.UserEntity; import de.oaa.xxx.user.UserRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + @RestController @RequestMapping("/feed") public class FeedController { + private static final Logger LOGGER = LoggerFactory.getLogger(FeedController.class); + private final FeedPostRepository feedPostRepository; private final FeedPostLikeRepository feedPostLikeRepository; private final FeedPostOptionRepository feedPostOptionRepository; @@ -120,6 +125,7 @@ public class FeedController { post.setPublic(req.isPublic()); post.setCreatedAt(LocalDateTime.now()); feedPostRepository.save(post); + LOGGER.info("User {} hat Feed-Post {} erstellt (Typ: {}, public: {})", myId, post.getPostId(), typ, post.isPublic()); if (typ == BeitragTyp.UMFRAGE && req.optionen() != null) { for (int i = 0; i < req.optionen().size(); i++) { @@ -250,6 +256,7 @@ public class FeedController { var existing = feedPostLikeRepository.findByPostIdAndUserId(id, myId); if (existing.isPresent()) { feedPostLikeRepository.delete(existing.get()); + LOGGER.debug("User {} hat Like auf Feed-Post {} entfernt", myId, id); } else { FeedPostLikeEntity like = new FeedPostLikeEntity(); like.setLikeId(UUID.randomUUID()); @@ -257,6 +264,7 @@ public class FeedController { like.setUserId(myId); like.setLikedAt(LocalDateTime.now()); feedPostLikeRepository.save(like); + LOGGER.debug("User {} hat Feed-Post {} geliked", myId, id); } return ResponseEntity.ok().build(); } @@ -297,6 +305,7 @@ public class FeedController { vote.setPostId(id); vote.setUserId(myId); feedPostVoteRepository.save(vote); + LOGGER.debug("User {} hat für Option {} in Feed-Post {} gestimmt", myId, req.optionId(), id); return ResponseEntity.ok().build(); } @@ -319,6 +328,7 @@ public class FeedController { var kommentare = kommentarRepository.findByTargetTypeAndTargetIdOrderByCreatedAtAsc("FEED_POST", id); kommentarRepository.deleteAll(kommentare); feedPostRepository.delete(post); + LOGGER.info("User {} hat Feed-Post {} gelöscht", myId, id); return ResponseEntity.noContent().build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/CardLockService.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/CardLockService.java new file mode 100644 index 0000000..c7a9931 --- /dev/null +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/CardLockService.java @@ -0,0 +1,155 @@ +package de.oaa.xxx.games.chastity; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.Random; +import java.util.Set; +import java.util.stream.Collectors; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import de.oaa.xxx.games.chastity.cardlock.CardLockRepository; +import de.oaa.xxx.games.chastity.cardlock.CardLockEntity; +import de.oaa.xxx.games.chastity.tasks.Task; +import de.oaa.xxx.games.chastity.verification.VerificationEntity; +import de.oaa.xxx.games.chastity.verification.VerificationRepository; +import de.oaa.xxx.games.chastity.verification.VerificationVoteEntity; +import de.oaa.xxx.games.chastity.verification.VerificationVoteRepository; + +public class CardLockService extends ProcessLock { + + private static final Logger LOGGER = LoggerFactory.getLogger(CardLockService.class); + private final CardLockEntity lock; + private VerificationRepository verificationRepository; + private VerificationVoteRepository verificationVoteRepository; + private CardLockRepository cardLockRepository; + + public CardLockService(CardLockEntity lock, VerificationRepository verificationRepository, VerificationVoteRepository verificationVoteRepository, CardLockRepository cardLockRepository) { + this.lock = lock; + this.verificationRepository = verificationRepository; + this.verificationVoteRepository = verificationVoteRepository; + this.cardLockRepository = cardLockRepository; + } + + public String getNextCard() { + LOGGER.debug("New Card requested by user {}", lock.getLockee()); + var cards = lock.getAvailableCards(); + if (!cards.isEmpty()) { + var card = cards.get(new Random().nextInt(cards.size())); + LOGGER.debug("Card drafted: {}", card); + card.get().processCard(this); + } + return ""; + } + + public String doubleUp() { + var cards = lock.getAvailableCards(); + LOGGER.debug("Double up {} cards", cards.size()); + lock.getAvailableCards().addAll(cards); + LOGGER.debug("Now {} cards", lock.getAvailableCards().size()); + return ""; + } + + public String reset() { + LOGGER.debug("Reset to initial cards"); + lock.setAvailableCards(lock.getInitialCards()); + return ""; + } + + public String unlock() { + this.lock.setUnlockTime(LocalDateTime.now()); + boolean valid = true; + if (!this.lock.isTestLock()) { + if (Duration.between(lock.getStartTime(), lock.getUnlockTime()).toHours() > 24) { + Set verifications = verificationRepository.findByLockId(this.lock.getLockId()).stream() + .filter(verification -> isValid(verification)) + .map(verification -> verification.getVerificationTime().toLocalDate()) + .collect(Collectors.toSet()); + + LocalDate current = this.lock.getStartTime().toLocalDate().plusDays(1); + LocalDate last = this.lock.getUnlockTime().toLocalDate(); + + while (!current.isAfter(last)) { + if (!verifications.contains(current)) { + valid = false; + break; + } + current = current.plusDays(1); + } + } + + + } + + if (valid) { + + } + // XP berechnen + // Lock löschen + + lock.setUnlockTime(LocalDateTime.now()); + LOGGER.debug("Unlocked at {}", lock.getUnlockTime()); + return this.lock.getUnlockCode(); + } + + private boolean isValid(VerificationEntity entity) { + int count = 0; + for (VerificationVoteEntity vote : verificationVoteRepository.findAllByVerificationId(entity.getVerficationId())) { + if (vote.isUpvote()) { + count++; + } else { + count--; + } + } + return count >= 0; + } + + public String freeze() { + var multiplier = lock.getPickEveryMinute() * new Random().nextDouble(1.0, 4.0); + freeze(multiplier); + return ""; + } + + private String freeze(double multiplier) { + LocalDateTime frozenTill = LocalDateTime.now().plus((long) multiplier, ChronoUnit.MINUTES); + lock.setFrozenUntill(frozenTill); + LOGGER.debug("Frozen until {}", lock.getFrozenUntill()); + return ""; + } + + public String task() { + LOGGER.debug("Apply random task"); + var tasks = lock.getTasks(); + if (!tasks.isEmpty()) { + task(tasks.get(new Random().nextInt(tasks.size()))); + } + return ""; + } + + public String task(Task task) { + LOGGER.debug("Apply task {}", task); + lock.setCurrentTask(task.getText()); + if (task.getMinutes() != null) { + freeze(task.getMinutes()); + } + return ""; + } + + public String clearTask() { + LOGGER.debug("Clear task"); + lock.setFrozenUntill(null); + lock.setCurrentTask(null); + return ""; + } + + public String redCard() { + return ""; + } + + public String yellowCard() { + return ""; + } +} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/CodeCreator.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/CodeCreator.java new file mode 100644 index 0000000..75e0bb1 --- /dev/null +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/CodeCreator.java @@ -0,0 +1,25 @@ +package de.oaa.xxx.games.chastity; + +import java.util.Random; + +public class CodeCreator { + + private static final String CHARS_AN = "ABCDEFGHJKLMNPQRSTUVWXYZ0123456789"; + private static final String CHARS_N = "0123456789"; + + public static String createNumeric(int digits) { + return create(digits, CHARS_N); + } + + public static String createAlphanumericCode(int digits) { + return create(digits, CHARS_AN); + } + + private static String create(int digits, String chars) { + StringBuilder sb = new StringBuilder(6); + for (int i = 0; i < digits; i++) { + sb.append(chars.charAt(new Random().nextInt(chars.length()))); + } + return sb.toString(); + } +} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholdeCardLock.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderCardLock.java similarity index 74% rename from xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholdeCardLock.java rename to xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderCardLock.java index ed154e6..7ca804b 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholdeCardLock.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderCardLock.java @@ -12,38 +12,34 @@ import de.oaa.xxx.games.chastity.cardlock.CardEnum; import de.oaa.xxx.games.chastity.cardlock.CardLockEntity; import de.oaa.xxx.games.chastity.tasks.Task; -public class KeyholdeCardLock { - - private static final Logger LOGGER = LoggerFactory.getLogger(KeyholdeCardLock.class); +public class KeyholderCardLock { + + private static final Logger LOGGER = LoggerFactory.getLogger(KeyholderCardLock.class); private CardLockEntity lock; - public void addCards(List cards) { lock.getAvailableCards().addAll(cards); } - + public void freeze() { var multiplier = lock.getPickEveryMinute() * new Random().nextDouble(1.0, 4.0); LocalDateTime frozenTill = LocalDateTime.now().plus((long) multiplier, ChronoUnit.MINUTES); lock.setFrozenUntill(frozenTill); - LOGGER.debug("Frozen by keyholder untill %s", lock.getFrozenUntill()); + LOGGER.debug("Frozen by keyholder until {}", lock.getFrozenUntill()); } - public void freeze(LocalDateTime untill) { - lock.setFrozenUntill(untill); - LOGGER.debug("Frozen by keyholder untill %s", lock.getFrozenUntill()); + public void freeze(LocalDateTime until) { + lock.setFrozenUntill(until); + LOGGER.debug("Frozen by keyholder until {}", lock.getFrozenUntill()); } - + public void task() { - } - + public void task(Task task) { - } - + public void penalty() { - } } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderController.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderController.java deleted file mode 100644 index 545c195..0000000 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderController.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.oaa.xxx.games.chastity; - -public class KeyholderController { - - - - -} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderInvitationEntity.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderInvitationEntity.java new file mode 100644 index 0000000..f701cb3 --- /dev/null +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderInvitationEntity.java @@ -0,0 +1,41 @@ +package de.oaa.xxx.games.chastity; + +import jakarta.persistence.*; +import java.time.LocalDateTime; +import java.util.UUID; + +@Entity +@Table(name = "keyholder_invitation") +public class KeyholderInvitationEntity { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + @Column + private UUID id; + + @Column(nullable = false) + private UUID lockId; + + @Column(nullable = false) + private UUID keyholderUserId; + + @Column(nullable = false, unique = true) + private String token; + + @Column(nullable = false) + private LocalDateTime createdAt; + + public UUID getId() { return id; } + + public UUID getLockId() { return lockId; } + public void setLockId(UUID lockId) { this.lockId = lockId; } + + public UUID getKeyholderUserId() { return keyholderUserId; } + public void setKeyholderUserId(UUID keyholderUserId) { this.keyholderUserId = keyholderUserId; } + + public String getToken() { return token; } + public void setToken(String token) { this.token = token; } + + public LocalDateTime getCreatedAt() { return createdAt; } + public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } +} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderInvitationRepository.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderInvitationRepository.java new file mode 100644 index 0000000..a3f4f23 --- /dev/null +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/KeyholderInvitationRepository.java @@ -0,0 +1,12 @@ +package de.oaa.xxx.games.chastity; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.transaction.annotation.Transactional; +import java.util.Optional; +import java.util.UUID; + +public interface KeyholderInvitationRepository extends JpaRepository { + Optional findByToken(String token); + @Transactional + void deleteByLockId(UUID lockId); +} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/PrcoessTimedLock.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/PrcoessTimedLock.java deleted file mode 100644 index b341e31..0000000 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/PrcoessTimedLock.java +++ /dev/null @@ -1,5 +0,0 @@ -package de.oaa.xxx.games.chastity; - -public class PrcoessTimedLock { - -} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/ProcessCardLock.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/ProcessCardLock.java deleted file mode 100644 index f8d1c4e..0000000 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/ProcessCardLock.java +++ /dev/null @@ -1,104 +0,0 @@ -package de.oaa.xxx.games.chastity; - -import java.time.LocalDateTime; -import java.time.temporal.ChronoUnit; -import java.util.List; -import java.util.Random; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import de.oaa.xxx.games.chastity.cardlock.CardEnum; -import de.oaa.xxx.games.chastity.cardlock.CardLockEntity; -import de.oaa.xxx.games.chastity.tasks.Task; - -public class ProcessCardLock extends ProcessLock { - - private static final Logger LOGGER = LoggerFactory.getLogger(ProcessCardLock.class); - private final CardLockEntity lock; - - public ProcessCardLock(CardLockEntity lock) { - this.lock = lock; - } - - public String getNextCard() { - LOGGER.debug("New Card requested by user %s", lock.getLockee().toString()); - if (lock.getAvailableCards().size() > 0) { - var card = lock.getAvailableCards().get(new Random().nextInt(lock.getAvailableCards().size())); - LOGGER.debug("Card drafted: %s", card.toString()); - card.get().processCard(this); - } - return ""; - } - - public String doubleUp() { - List cards = lock.getAvailableCards(); - LOGGER.debug("Double up %i cards", cards.size()); - lock.getAvailableCards().addAll(cards); - LOGGER.debug("Now %i cards", cards.size()); - return ""; - } - - public String reset() { - LOGGER.debug("Reset to initial cards"); - lock.setAvailableCards(lock.getInitialCards()); - return ""; - } - - public String unlock() { - // Verifications prüfen - // Historie eintragen - // XP berechnen - // Lock löschen - - lock.setUnlockTime(LocalDateTime.now()); - LOGGER.debug("Unlocked at " + lock.getUnlockTime()); - return ""; - } - - public String freeze() { - var multiplier = lock.getPickEveryMinute() * new Random().nextDouble(1.0, 4.0); - freeze(multiplier); - return ""; - } - - private String freeze(double multiplier) { - LocalDateTime frozenTill = LocalDateTime.now().plus((long) multiplier, ChronoUnit.MINUTES); - lock.setFrozenUntill(frozenTill); - LOGGER.debug("Frozen untill %s", lock.getFrozenUntill()); - return ""; - } - - public String task() { - LOGGER.debug("Apply random task"); - if (lock.getTasks().size() > 0) { - task(lock.getTasks().get(new Random().nextInt(lock.getTasks().size()))); - } - return ""; - } - - public String task(Task task) { - LOGGER.debug("Apply task %s", task); - lock.setCurrentTask(task.getText()); - if (task.getMinutes() != null) { - freeze(task.getMinutes()); - } - return ""; - } - - public String clearTask() { - LOGGER.debug("Clear task"); - lock.setFrozenUntill(null); - lock.setCurrentTask(null); - return ""; - } - - public String redCard() { - return ""; - } - - public String yellowCard() { - - return ""; - } -} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/ProcessTimedLock.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/ProcessTimedLock.java new file mode 100644 index 0000000..a2bbad8 --- /dev/null +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/ProcessTimedLock.java @@ -0,0 +1,5 @@ +package de.oaa.xxx.games.chastity; + +public class ProcessTimedLock extends ProcessLock { + +} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/Card.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/Card.java index c8c04ef..6b7db49 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/Card.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/Card.java @@ -1,8 +1,8 @@ package de.oaa.xxx.games.chastity.cardlock; -import de.oaa.xxx.games.chastity.ProcessCardLock; +import de.oaa.xxx.games.chastity.CardLockService; public interface Card { - public CardDTO processCard(ProcessCardLock lock); + public CardDTO processCard(CardLockService lock); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardEnum.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardEnum.java index 8dfd8c4..f583261 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardEnum.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardEnum.java @@ -2,29 +2,49 @@ package de.oaa.xxx.games.chastity.cardlock; public enum CardEnum { - ROT { + RED { @Override public Card get() { return new RedCard(); } }, - GRUEN { + GREEN { @Override public Card get() { return new GreenCard(); } }, - GELB { + YELLOW { @Override public Card get() { return new YellowCard(); } }, - AUFGABE { + TASK { @Override public Card get() { return new TaskCard(); } + }, + FREEZE { + @Override + public Card get() { + return new FreezeCard(); + } + }, + RESET { + @Override + public Card get() { + return new ResetCard(); + } + }, + DOUBLE_UP { + @Override + public Card get() { + return new DoubleUpCard(); + } }; + + public abstract Card get(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardEnumListConverter.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardEnumListConverter.java new file mode 100644 index 0000000..cb2c45b --- /dev/null +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardEnumListConverter.java @@ -0,0 +1,36 @@ +package de.oaa.xxx.games.chastity.cardlock; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; + +import java.util.ArrayList; +import java.util.List; + +@Converter +public class CardEnumListConverter implements AttributeConverter, String> { + + private static final ObjectMapper mapper = new ObjectMapper(); + + @Override + public String convertToDatabaseColumn(List list) { + if (list == null || list.isEmpty()) return null; + try { + return mapper.writeValueAsString(list.stream().map(Enum::name).toList()); + } catch (Exception e) { + return null; + } + } + + @Override + public List convertToEntityAttribute(String json) { + if (json == null || json.isBlank()) return new ArrayList<>(); + try { + List names = mapper.readValue(json, new TypeReference<>() {}); + return new ArrayList<>(names.stream().map(CardEnum::valueOf).toList()); + } catch (Exception e) { + return new ArrayList<>(); + } + } +} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardLockController.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardLockController.java new file mode 100644 index 0000000..6134bac --- /dev/null +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardLockController.java @@ -0,0 +1,249 @@ +package de.oaa.xxx.games.chastity.cardlock; + +import de.oaa.xxx.games.chastity.KeyholderInvitationEntity; +import de.oaa.xxx.games.chastity.KeyholderInvitationRepository; +import de.oaa.xxx.games.chastity.tasks.Task; +import de.oaa.xxx.mail.Email; +import de.oaa.xxx.mail.MailService; +import de.oaa.xxx.mail.MailTemplateService; +import de.oaa.xxx.user.UserRepository; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.ResponseEntity; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import java.security.Principal; +import java.security.SecureRandom; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +@RestController +@RequestMapping("/keyholder") +public class CardLockController { + + private final CardlockRepository cardlockRepository; + private final UserRepository userRepository; + private final KeyholderInvitationRepository invitationRepository; + private final MailService mailService; + private final MailTemplateService mailTemplateService; + + @Value("${app.base-url:http://localhost:8080}") + private String baseUrl; + + public CardLockController(CardlockRepository cardlockRepository, + UserRepository userRepository, + KeyholderInvitationRepository invitationRepository, + MailService mailService, + MailTemplateService mailTemplateService) { + this.cardlockRepository = cardlockRepository; + this.userRepository = userRepository; + this.invitationRepository = invitationRepository; + this.mailService = mailService; + this.mailTemplateService = mailTemplateService; + } + + record CreateCardLockRequest( + String name, + UUID keyholder, + List initialCards, + Integer pickEveryMinute, + boolean accumulatePicks, + boolean showRemainingCards, + LocalDateTime latestOpeningtime, + Integer hygineOpeningDurationMinutes, + Integer hygineOpeningEveryMinites, + List tasks, + boolean requiresVerification, + boolean testLock, + Integer unlockCodeLines + ) {} + + private static final SecureRandom RNG = new SecureRandom(); + + private String generateUnlockCode(int lines) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < lines; i++) { + sb.append(RNG.nextInt(10)); + } + return sb.toString(); + } + + @PostMapping("/cardlock") + public ResponseEntity> createCardLock( + @RequestBody CreateCardLockRequest req, + Principal principal) { + + var meOpt = userRepository.findByEmail(principal.getName()); + if (meOpt.isEmpty()) return ResponseEntity.status(401).build(); + var me = meOpt.get(); + UUID myId = me.getUserId(); + + if (req.initialCards() == null || req.initialCards().isEmpty() + || req.pickEveryMinute() == null || req.pickEveryMinute() < 1) + return ResponseEntity.badRequest().build(); + + int codeLines = (req.unlockCodeLines() != null && req.unlockCodeLines() >= 1) + ? req.unlockCodeLines() : 5; + String unlockCode = generateUnlockCode(codeLines); + + CardLockEntity lock = new CardLockEntity(); + lock.setName(req.name()); + lock.setLockee(myId); + lock.setKeyholder(null); // set only after invitation is confirmed + lock.setInitialCards(req.initialCards()); + lock.setPickEveryMinute(req.pickEveryMinute()); + lock.setAccumulatePicks(req.accumulatePicks()); + lock.setShowRemainingCards(req.showRemainingCards()); + lock.setLatestOpeningtime(req.latestOpeningtime()); + lock.setHygineOpeningDurationMinutes(req.hygineOpeningDurationMinutes()); + lock.setHygineOpeningEveryMinites(req.hygineOpeningEveryMinites()); + lock.setTasks(req.tasks() != null ? req.tasks() : List.of()); + lock.setRequiresVerification(req.requiresVerification()); + lock.setTestLock(req.testLock()); + lock.setUnlockCodeLines(codeLines); + lock.setUnlockCode(unlockCode); + + LocalDateTime now = LocalDateTime.now(); + lock.setStartTime(now); + lock.setAvailableCards(new ArrayList<>(req.initialCards())); + lock.setOpenPicks(0); + lock.setNextCardIn(now.plusMinutes(req.pickEveryMinute())); + lock.setHygineOpeningtime(now); + + cardlockRepository.save(lock); + + boolean keyholderPending = false; + if (req.keyholder() != null) { + var khOpt = userRepository.findById(req.keyholder()); + if (khOpt.isPresent()) { + var kh = khOpt.get(); + String token = UUID.randomUUID().toString().replace("-", ""); + + KeyholderInvitationEntity inv = new KeyholderInvitationEntity(); + inv.setLockId(lock.getLockId()); + inv.setKeyholderUserId(kh.getUserId()); + inv.setToken(token); + inv.setCreatedAt(now); + invitationRepository.save(inv); + + String confirmLink = baseUrl + "/keyholder/invitation/" + token; + String lockName = req.name() != null && !req.name().isBlank() ? req.name() : "Unbenanntes Lock"; + Email email = new Email(); + email.setEmailAdresse(kh.getEmail()); + email.setTitel("Einladung als Keyholder*In – " + lockName); + email.setText(mailTemplateService.buildKeyholderInvitationMail( + kh.getName(), me.getName(), lockName, confirmLink)); + mailService.send(email); + + keyholderPending = true; + } + } + + return ResponseEntity.ok(Map.of( + "lockId", lock.getLockId().toString(), + "unlockCode", unlockCode, + "keyholderPending", keyholderPending + )); + } + + @GetMapping("/mylock") + public ResponseEntity> getMyActiveLock(Principal principal) { + var meOpt = userRepository.findByEmail(principal.getName()); + if (meOpt.isEmpty()) return ResponseEntity.status(401).build(); + var locks = cardlockRepository.findByLockee(meOpt.get().getUserId()); + var active = locks.stream() + .filter(l -> l.getUnlockTime() == null) + .findFirst(); + if (active.isEmpty()) return ResponseEntity.noContent().build(); + return ResponseEntity.ok(Map.of("lockId", active.get().getLockId().toString())); + } + + @GetMapping("/cardlock/{lockId}") + public ResponseEntity> getLock(@PathVariable UUID lockId, Principal principal) { + var meOpt = userRepository.findByEmail(principal.getName()); + if (meOpt.isEmpty()) return ResponseEntity.status(401).build(); + UUID myId = meOpt.get().getUserId(); + + var lockOpt = cardlockRepository.findById(lockId); + if (lockOpt.isEmpty()) return ResponseEntity.notFound().build(); + var l = lockOpt.get(); + if (!l.getLockee().equals(myId)) return ResponseEntity.status(403).build(); + + Map cardCounts = new LinkedHashMap<>(); + if (l.getAvailableCards() != null) { + l.getAvailableCards().forEach(c -> cardCounts.merge(c.name(), 1L, Long::sum)); + } + long totalCards = l.getAvailableCards() != null ? l.getAvailableCards().size() : 0; + + // Hygiene-Berechnung + boolean hygieneEnabled = l.getHygineOpeningEveryMinites() != null; + boolean hygieneOpeningDue = false; + long hygieneMinutesRemaining = 0; + if (hygieneEnabled) { + LocalDateTime base = l.getLastHygineOpening() != null + ? l.getLastHygineOpening() + : l.getStartTime(); + if (base != null) { + LocalDateTime nextHygiene = base.plusMinutes(l.getHygineOpeningEveryMinites()); + hygieneMinutesRemaining = ChronoUnit.MINUTES.between(LocalDateTime.now(), nextHygiene); + hygieneOpeningDue = hygieneMinutesRemaining <= 0; + } + } + + Map result = new HashMap<>(); + result.put("lockId", l.getLockId().toString()); + result.put("name", l.getName() != null ? l.getName() : ""); + result.put("showRemainingCards", l.isShowRemainingCards()); + result.put("availableCardCounts", cardCounts); + result.put("totalCards", totalCards); + result.put("openPicks", l.getOpenPicks() != null ? l.getOpenPicks() : 0); + result.put("nextCardIn", l.getNextCardIn() != null ? l.getNextCardIn().toString() : ""); + result.put("hygieneEnabled", hygieneEnabled); + result.put("hygieneOpeningDue", hygieneOpeningDue); + result.put("hygieneMinutesRemaining", hygieneMinutesRemaining); + return ResponseEntity.ok(result); + } + + @Transactional + @DeleteMapping("/cardlock/{lockId}") + public ResponseEntity deleteLock(@PathVariable UUID lockId, Principal principal) { + var meOpt = userRepository.findByEmail(principal.getName()); + if (meOpt.isEmpty()) return ResponseEntity.status(401).build(); + UUID myId = meOpt.get().getUserId(); + + var lockOpt = cardlockRepository.findById(lockId); + if (lockOpt.isEmpty()) return ResponseEntity.notFound().build(); + if (!lockOpt.get().getLockee().equals(myId)) return ResponseEntity.status(403).build(); + + invitationRepository.deleteByLockId(lockId); + cardlockRepository.deleteById(lockId); + return ResponseEntity.noContent().build(); + } + + @GetMapping("/invitation/{token}") + public void confirmInvitation(@PathVariable String token, + jakarta.servlet.http.HttpServletResponse response) throws Exception { + var invOpt = invitationRepository.findByToken(token); + if (invOpt.isEmpty()) { + response.sendRedirect("/keyholder-invitation-confirmed.html?status=invalid"); + return; + } + var inv = invOpt.get(); + var lockOpt = cardlockRepository.findById(inv.getLockId()); + if (lockOpt.isEmpty()) { + response.sendRedirect("/keyholder-invitation-confirmed.html?status=invalid"); + return; + } + var lock = lockOpt.get(); + lock.setKeyholder(inv.getKeyholderUserId()); + cardlockRepository.save(lock); + invitationRepository.delete(inv); + response.sendRedirect("/keyholder-invitation-confirmed.html?status=ok"); + } +} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardLockEntity.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardLockEntity.java index 4d4a7f6..5cfef9f 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardLockEntity.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardLockEntity.java @@ -5,36 +5,98 @@ import java.util.List; import java.util.UUID; import de.oaa.xxx.games.chastity.tasks.Task; +import de.oaa.xxx.games.chastity.tasks.TaskListConverter; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +@Entity +@Table(name = "card_lock") public class CardLockEntity { + @Id + @GeneratedValue(strategy = GenerationType.UUID) + @Column private UUID lockId; + + @Column private String name; + // Settings + @Column(nullable = false) private UUID lockee; + @Column + private UUID keyholder; + @Convert(converter = CardEnumListConverter.class) + @Column(columnDefinition = "TEXT") private List initialCards; + @Column private Integer pickEveryMinute; + @Column private boolean accumulatePicks; + @Column private boolean showRemainingCards; + @Column private LocalDateTime latestOpeningtime; + @Column private LocalDateTime frozenUntill; + @Column private Integer hygineOpeningDurationMinutes; + @Column private Integer hygineOpeningEveryMinites; + @Convert(converter = TaskListConverter.class) + @Column(columnDefinition = "TEXT") private List tasks; + @Column private boolean requiresVerification; + @Column + private boolean testLock; + @Column + private Integer unlockCodeLines; // State + @Column private LocalDateTime startTime; + @Column private LocalDateTime nextCardIn; + @Column private Integer openPicks; + @Convert(converter = CardEnumListConverter.class) + @Column(columnDefinition = "TEXT") private List availableCards; + @Column private LocalDateTime lastHygineOpening; + @Column private LocalDateTime hygineOpeningtime; // If null, not while hygine opening + @Column private LocalDateTime unlockTime; + @Column private String currentTask; - + @Convert(converter = TaskListConverter.class) + @Column(columnDefinition = "TEXT") private List tasksInQueue; - + @Column + private String unlockCode; + + public UUID getLockId() { + return lockId; + } + + public void setLockId(UUID lockId) { + this.lockId = lockId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } public UUID getLockee() { return lockee; @@ -44,6 +106,14 @@ public class CardLockEntity { this.lockee = lockee; } + public UUID getKeyholder() { + return keyholder; + } + + public void setKeyholder(UUID keyholder) { + this.keyholder = keyholder; + } + public List getInitialCards() { return initialCards; } @@ -188,4 +258,35 @@ public class CardLockEntity { this.tasksInQueue = tasksInQueue; } + public boolean isRequiresVerification() { + return requiresVerification; + } + + public void setRequiresVerification(boolean requiresVerification) { + this.requiresVerification = requiresVerification; + } + + public boolean isTestLock() { + return testLock; + } + + public void setTestLock(boolean testLock) { + this.testLock = testLock; + } + + public String getUnlockCode() { + return unlockCode; + } + + public void setUnlockCode(String unlockCode) { + this.unlockCode = unlockCode; + } + + public Integer getUnlockCodeLines() { + return unlockCodeLines; + } + + public void setUnlockCodeLines(Integer unlockCodeLines) { + this.unlockCodeLines = unlockCodeLines; + } } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardLockRepository.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardLockRepository.java new file mode 100644 index 0000000..ce1b2ad --- /dev/null +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardLockRepository.java @@ -0,0 +1,9 @@ +package de.oaa.xxx.games.chastity.cardlock; + +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface CardLockRepository extends JpaRepository { + +} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardlockRepository.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardlockRepository.java index a4e5626..fe683bf 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardlockRepository.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardlockRepository.java @@ -1,5 +1,11 @@ package de.oaa.xxx.games.chastity.cardlock; -public class CardlockRepository { +import java.util.List; +import java.util.UUID; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface CardlockRepository extends JpaRepository { + + List findByLockee(UUID lockee); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/DoubleUpCard.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/DoubleUpCard.java index 0dcfaaf..abb5dce 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/DoubleUpCard.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/DoubleUpCard.java @@ -1,11 +1,11 @@ package de.oaa.xxx.games.chastity.cardlock; -import de.oaa.xxx.games.chastity.ProcessCardLock; +import de.oaa.xxx.games.chastity.CardLockService; public class DoubleUpCard implements Card { @Override - public CardDTO processCard(ProcessCardLock lock) { + public CardDTO processCard(CardLockService lock) { return new CardDTO(lock.doubleUp(), "img/card_red.png"); } } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/FreezeCard.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/FreezeCard.java index 16f1189..e0ec041 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/FreezeCard.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/FreezeCard.java @@ -1,11 +1,11 @@ package de.oaa.xxx.games.chastity.cardlock; -import de.oaa.xxx.games.chastity.ProcessCardLock; +import de.oaa.xxx.games.chastity.CardLockService; public class FreezeCard implements Card { @Override - public CardDTO processCard(ProcessCardLock lock) { + public CardDTO processCard(CardLockService lock) { return new CardDTO(lock.freeze(), "img/card_freeze.png"); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/GreenCard.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/GreenCard.java index 4d98928..e53fb86 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/GreenCard.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/GreenCard.java @@ -1,11 +1,11 @@ package de.oaa.xxx.games.chastity.cardlock; -import de.oaa.xxx.games.chastity.ProcessCardLock; +import de.oaa.xxx.games.chastity.CardLockService; public class GreenCard implements Card { @Override - public CardDTO processCard(ProcessCardLock lock) { + public CardDTO processCard(CardLockService lock) { return new CardDTO(lock.unlock(), "img/card_green.png"); } } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/RedCard.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/RedCard.java index 7af049f..b5a0df5 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/RedCard.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/RedCard.java @@ -1,11 +1,11 @@ package de.oaa.xxx.games.chastity.cardlock; -import de.oaa.xxx.games.chastity.ProcessCardLock; +import de.oaa.xxx.games.chastity.CardLockService; public class RedCard implements Card { @Override - public CardDTO processCard(ProcessCardLock lock) { + public CardDTO processCard(CardLockService lock) { return new CardDTO(lock.redCard(), "img/card_red.png"); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/ResetCard.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/ResetCard.java index 37b33f0..aeeb021 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/ResetCard.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/ResetCard.java @@ -1,11 +1,11 @@ package de.oaa.xxx.games.chastity.cardlock; -import de.oaa.xxx.games.chastity.ProcessCardLock; +import de.oaa.xxx.games.chastity.CardLockService; public class ResetCard implements Card { @Override - public CardDTO processCard(ProcessCardLock lock) { + public CardDTO processCard(CardLockService lock) { return new CardDTO(lock.reset(), "img/card_reset.png"); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/TaskCard.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/TaskCard.java index b234c90..c3d1cd0 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/TaskCard.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/TaskCard.java @@ -1,11 +1,11 @@ package de.oaa.xxx.games.chastity.cardlock; -import de.oaa.xxx.games.chastity.ProcessCardLock; +import de.oaa.xxx.games.chastity.CardLockService; public class TaskCard implements Card { @Override - public CardDTO processCard(ProcessCardLock lock) { + public CardDTO processCard(CardLockService lock) { return new CardDTO(lock.task(), "img/card_task.png"); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/YellowCard.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/YellowCard.java index b26d127..ad903ed 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/YellowCard.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/cardlock/YellowCard.java @@ -1,11 +1,11 @@ package de.oaa.xxx.games.chastity.cardlock; -import de.oaa.xxx.games.chastity.ProcessCardLock; +import de.oaa.xxx.games.chastity.CardLockService; public class YellowCard implements Card { @Override - public CardDTO processCard(ProcessCardLock lock) { + public CardDTO processCard(CardLockService lock) { return new CardDTO(lock.yellowCard(), "img/card_yellow.png"); } } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/history/LockHistoryEntity.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/history/LockHistoryEntity.java index 7460d3e..3ba31c9 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/history/LockHistoryEntity.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/history/LockHistoryEntity.java @@ -6,6 +6,10 @@ import java.util.UUID; import de.oaa.xxx.games.chastity.LockType; import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; @@ -14,6 +18,7 @@ import jakarta.persistence.Table; public class LockHistoryEntity { @Id + @GeneratedValue(strategy = GenerationType.UUID) @Column private UUID historyId; @Column(nullable = false) @@ -22,6 +27,7 @@ public class LockHistoryEntity { private LocalDateTime startTime; @Column(nullable = false) private LocalDateTime endTime; + @Enumerated(EnumType.STRING) @Column(nullable = false) private LockType type; @Column diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/tasks/TaskListConverter.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/tasks/TaskListConverter.java new file mode 100644 index 0000000..f887435 --- /dev/null +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/tasks/TaskListConverter.java @@ -0,0 +1,35 @@ +package de.oaa.xxx.games.chastity.tasks; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; + +import java.util.ArrayList; +import java.util.List; + +@Converter +public class TaskListConverter implements AttributeConverter, String> { + + private static final ObjectMapper mapper = new ObjectMapper(); + + @Override + public String convertToDatabaseColumn(List list) { + if (list == null || list.isEmpty()) return null; + try { + return mapper.writeValueAsString(list); + } catch (Exception e) { + return null; + } + } + + @Override + public List convertToEntityAttribute(String json) { + if (json == null || json.isBlank()) return new ArrayList<>(); + try { + return new ArrayList<>(mapper.readValue(json, new TypeReference>() {})); + } catch (Exception e) { + return new ArrayList<>(); + } + } +} diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationController.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationController.java index 6e6a4ea..5656dcd 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationController.java @@ -2,12 +2,8 @@ package de.oaa.xxx.games.chastity.verification; import java.security.Principal; import java.time.LocalDateTime; -import java.util.Base64; import java.util.List; -import java.util.Optional; -import java.util.Random; import java.util.UUID; -import java.util.stream.Collectors; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -24,7 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import de.oaa.xxx.aufgaben.controller.AboController; +import de.oaa.xxx.games.chastity.CodeCreator; import de.oaa.xxx.user.UserRepository; @RestController @@ -32,15 +28,14 @@ import de.oaa.xxx.user.UserRepository; @Transactional public class VerificationController { - private static final String CHARS = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"; + private final VerificationRepository verificationRepository; private final VerificationVoteRepository verificationVoteRepository; private final UserRepository userRepository; public VerificationController(VerificationRepository verificationRepository, - VerificationVoteRepository verificationVoteRepository, UserRepository userRepository, - AboController aboController) { + VerificationVoteRepository verificationVoteRepository, UserRepository userRepository) { this.verificationRepository = verificationRepository; this.verificationVoteRepository = verificationVoteRepository; this.userRepository = userRepository; @@ -48,40 +43,36 @@ public class VerificationController { @GetMapping("/{verificationId}") public ResponseEntity get(@PathVariable UUID verificationId) { - return verificationRepository.findById(verificationId).map(entity -> ResponseEntity.ok(entity.toVerification())) - .orElse(ResponseEntity.noContent().build()); - } - - @GetMapping("/") - public ResponseEntity> getAll(@RequestParam(value = "page", defaultValue = "1") int page, - @RequestParam(value = "size", defaultValue = "10") int size) { - var paging = PageRequest.of(page, size, Sort.by("verificationTime").descending()); - Page result = verificationRepository.findAllByImageIsNotNull(paging); - return ResponseEntity.ok(result.stream().map(entity -> entity.toVerification()).toList()); - } - - @GetMapping("/new") - public ResponseEntity createVerification() { - VerificationEntity verification = new VerificationEntity(); - verification.setVerficationId(UUID.randomUUID()); - verification.setCode(createCode()); - verification.setVerificationTime(LocalDateTime.now()); - verificationRepository.save(verification); - return ResponseEntity.ok(verification.toVerification()); - } - - @GetMapping("/{verificationId}") - public ResponseEntity getVerification(@PathVariable UUID verificationId) { - Optional optional = verificationRepository.findById(verificationId); + var optional = verificationRepository.findById(verificationId); if (optional.isEmpty()) { return ResponseEntity.noContent().build(); } var dto = optional.get().toVerification(); - dto.votes().addAll(verificationVoteRepository.findAllByVerificationId(verificationId).stream() - .map(entity -> entity.toVerificationVote()).collect(Collectors.toList())); + verificationVoteRepository.findAllByVerificationId(verificationId).stream() + .map(VerificationVoteEntity::toVerificationVote) + .forEach(dto.votes()::add); return ResponseEntity.ok(dto); } + @GetMapping("/") + public ResponseEntity> getAll( + @RequestParam(value = "page", defaultValue = "1") int page, + @RequestParam(value = "size", defaultValue = "10") int size) { + var paging = PageRequest.of(page, size, Sort.by("verificationTime").descending()); + Page result = verificationRepository.findAllByImageIsNotNull(paging); + return ResponseEntity.ok(result.stream().map(VerificationEntity::toVerification).toList()); + } + + @GetMapping("/new") + public ResponseEntity createVerification() { + var verification = new VerificationEntity(); + verification.setVerficationId(UUID.randomUUID()); + verification.setCode(CodeCreator.createAlphanumericCode(6)); + verification.setVerificationTime(LocalDateTime.now()); + verificationRepository.save(verification); + return ResponseEntity.ok(verification.toVerification()); + } + @PutMapping("/{verificationId}") public ResponseEntity update(@PathVariable UUID verificationId, @RequestBody VerificationDTO dto, Principal principal) { @@ -93,13 +84,11 @@ public class VerificationController { if (entity == null) { return ResponseEntity.notFound().build(); } - var codeErstelltAm = entity.getVerificationTime(); - var vorEinerStunde = LocalDateTime.now().minusHours(1); - if (codeErstelltAm.isBefore(vorEinerStunde)) { + if (entity.getVerificationTime().isBefore(LocalDateTime.now().minusHours(1))) { return ResponseEntity.status(HttpStatus.GONE).build(); } if (dto.image() != null) { - entity.setImage(Base64.getDecoder().decode(dto.image())); + entity.setImage(dto.image()); } verificationRepository.save(entity); return ResponseEntity.ok().build(); @@ -112,23 +101,16 @@ public class VerificationController { if (user == null) { return ResponseEntity.status(401).build(); } - var verification = verificationRepository.findById(verificationId).orElse(null); - if (verification == null) { + if (!verificationRepository.existsById(verificationId)) { return ResponseEntity.notFound().build(); } var vote = new VerificationVoteEntity(); vote.setVoteId(UUID.randomUUID()); - vote.setUserId(dto.userId()); + vote.setVerificationId(verificationId); + vote.setUserId(user.getUserId()); vote.setUpvote(dto.upvote()); verificationVoteRepository.save(vote); return ResponseEntity.accepted().build(); } - private String createCode() { - StringBuilder sb = new StringBuilder(6); - for (int i = 0; i < 6; i++) { - sb.append(CHARS.charAt(new Random().nextInt(CHARS.length()))); - } - return sb.toString(); - } } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationEntity.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationEntity.java index 30bb92f..df9c583 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationEntity.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationEntity.java @@ -1,6 +1,7 @@ package de.oaa.xxx.games.chastity.verification; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.UUID; import jakarta.persistence.Column; @@ -15,39 +16,56 @@ public class VerificationEntity { @Id @Column private UUID verficationId; + @Column + private UUID lockId; @Column(nullable = false) private String code; @Column(nullable = false) private LocalDateTime verificationTime; - @Column(columnDefinition = "BLOB") + @Column(columnDefinition = "BLOB") private byte[] image; - + public UUID getVerficationId() { return verficationId; } + public void setVerficationId(UUID verficationId) { this.verficationId = verficationId; } + public String getCode() { return code; } + public void setCode(String code) { this.code = code; } + public LocalDateTime getVerificationTime() { return verificationTime; } + public void setVerificationTime(LocalDateTime verificationTime) { this.verificationTime = verificationTime; } + public byte[] getImage() { return image; } + public void setImage(byte[] image) { this.image = image; } - public VerificationDTO toVerification() { - return new VerificationDTO(verficationId, code, verificationTime,image, null); + + public UUID getLockId() { + return lockId; } + public void setLockId(UUID lockId) { + this.lockId = lockId; + } + + public VerificationDTO toVerification() { + return new VerificationDTO(verficationId, code, verificationTime, image, new ArrayList<>()); + } } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationRepository.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationRepository.java index 7496e1f..0d526b2 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationRepository.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationRepository.java @@ -8,4 +8,6 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface VerificationRepository extends JpaRepository { org.springframework.data.domain.Page findAllByImageIsNotNull(Pageable pageable); + + java.util.List findByLockId(UUID lockId); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationVoteEntity.java b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationVoteEntity.java index 8a9c012..ebfa756 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationVoteEntity.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/games/chastity/verification/VerificationVoteEntity.java @@ -15,6 +15,8 @@ public class VerificationVoteEntity { @Column private UUID voteId; @Column(nullable = false) + private UUID verificationId; + @Column(nullable = false) private UUID userId; @Column(nullable = false) private boolean upvote; @@ -25,6 +27,12 @@ public class VerificationVoteEntity { public void setVoteId(UUID voteId) { this.voteId = voteId; } + public UUID getVerificationId() { + return verificationId; + } + public void setVerificationId(UUID verificationId) { + this.verificationId = verificationId; + } public UUID getUserId() { return userId; } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/gruppe/GruppeController.java b/xxxthegame/src/main/java/de/oaa/xxx/gruppe/GruppeController.java index aeede82..0d48563 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/gruppe/GruppeController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/gruppe/GruppeController.java @@ -7,6 +7,8 @@ import de.oaa.xxx.social.entity.KommentarEntity; import de.oaa.xxx.social.repository.KommentarRepository; import de.oaa.xxx.user.UserEntity; import de.oaa.xxx.user.UserRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -18,6 +20,8 @@ import java.util.*; @RequestMapping("/gruppen") public class GruppeController { + private static final Logger LOGGER = LoggerFactory.getLogger(GruppeController.class); + private final GruppeRepository gruppeRepository; private final GruppenmitgliedRepository mitgliedRepository; private final BeitrittsanfrageRepository anfrageRepository; @@ -137,6 +141,7 @@ public class GruppeController { admin.setRolle(GruppenRolle.ADMIN); admin.setJoinedAt(LocalDateTime.now()); mitgliedRepository.save(admin); + LOGGER.info("User {} hat Gruppe '{}' ({}) erstellt", myId, gruppe.getName(), gruppe.getGruppeId()); return ResponseEntity.status(201).body(toDto(gruppe, myId)); } @@ -161,6 +166,7 @@ public class GruppeController { if (req.bild() != null) gruppe.setBild(req.bild()); if (req.isPrivate() != null) gruppe.setPrivate(req.isPrivate()); gruppeRepository.save(gruppe); + LOGGER.debug("User {} hat Gruppe {} aktualisiert", myId, id); return ResponseEntity.ok(toDto(gruppe, myId)); } @@ -195,6 +201,7 @@ public class GruppeController { anfrageRepository.deleteByGruppeId(id); mitgliedRepository.deleteByGruppeId(id); gruppeRepository.deleteById(id); + LOGGER.info("User {} hat Gruppe {} gelöscht", myId, id); return ResponseEntity.noContent().build(); } @@ -229,6 +236,7 @@ public class GruppeController { anfrage.setAngefragtAt(LocalDateTime.now()); anfrage.setStatus(AnfrageStatus.AUSSTEHEND); anfrageRepository.save(anfrage); + LOGGER.info("User {} hat Beitrittsanfrage für private Gruppe {} gestellt", myId, id); return ResponseEntity.status(201).build(); } else { GruppenmitgliedEntity mitglied = new GruppenmitgliedEntity(); @@ -238,6 +246,7 @@ public class GruppeController { mitglied.setRolle(GruppenRolle.MITGLIED); mitglied.setJoinedAt(LocalDateTime.now()); mitgliedRepository.save(mitglied); + LOGGER.info("User {} ist Gruppe {} beigetreten", myId, id); return ResponseEntity.status(201).build(); } } @@ -250,6 +259,7 @@ public class GruppeController { if (myId == null) return ResponseEntity.status(401).build(); mitgliedRepository.deleteByGruppeIdAndUserId(id, myId); + LOGGER.info("User {} hat Gruppe {} verlassen", myId, id); return ResponseEntity.noContent().build(); } @@ -290,6 +300,7 @@ public class GruppeController { if (!isAdmin(id, myId)) return ResponseEntity.status(403).build(); mitgliedRepository.deleteByGruppeIdAndUserId(id, userId); + LOGGER.warn("Admin {} hat User {} aus Gruppe {} entfernt", myId, userId, id); return ResponseEntity.noContent().build(); } @@ -307,6 +318,7 @@ public class GruppeController { if (m.isEmpty()) return ResponseEntity.notFound().build(); m.get().setRolle(GruppenRolle.ADMIN); mitgliedRepository.save(m.get()); + LOGGER.info("Admin {} hat User {} in Gruppe {} zum Admin befördert", myId, userId, id); return ResponseEntity.ok().build(); } @@ -347,6 +359,7 @@ public class GruppeController { BeitrittsanfrageEntity anfrage = anfOpt.get(); anfrage.setStatus(AnfrageStatus.GENEHMIGT); anfrageRepository.save(anfrage); + LOGGER.info("Admin {} hat Beitrittsanfrage {} (User: {}) für Gruppe {} genehmigt", myId, reqId, anfrage.getUserId(), id); if (mitgliedRepository.findFirstByGruppeIdAndUserId(id, anfrage.getUserId()).isEmpty()) { GruppenmitgliedEntity mitglied = new GruppenmitgliedEntity(); @@ -376,6 +389,7 @@ public class GruppeController { BeitrittsanfrageEntity anfrage = anfOpt.get(); anfrage.setStatus(AnfrageStatus.ABGELEHNT); anfrageRepository.save(anfrage); + LOGGER.debug("Admin {} hat Beitrittsanfrage {} für Gruppe {} abgelehnt", myId, reqId, id); return ResponseEntity.noContent().build(); } @@ -443,6 +457,7 @@ public class GruppeController { anfrageRepository.findByGruppeIdAndUserId(id, myId).ifPresent(a -> { if (a.getStatus() == AnfrageStatus.AUSSTEHEND) { anfrageRepository.delete(a); + LOGGER.debug("User {} hat eigene Beitrittsanfrage für Gruppe {} zurückgezogen", myId, id); } }); return ResponseEntity.noContent().build(); diff --git a/xxxthegame/src/main/java/de/oaa/xxx/gruppe/GruppenbeitragController.java b/xxxthegame/src/main/java/de/oaa/xxx/gruppe/GruppenbeitragController.java index 7aaa073..8434639 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/gruppe/GruppenbeitragController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/gruppe/GruppenbeitragController.java @@ -6,6 +6,8 @@ import de.oaa.xxx.gruppe.repository.*; import de.oaa.xxx.social.repository.KommentarRepository; import de.oaa.xxx.user.UserEntity; import de.oaa.xxx.user.UserRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Slice; import org.springframework.http.ResponseEntity; @@ -18,6 +20,8 @@ import java.util.*; @RestController public class GruppenbeitragController { + private static final Logger LOGGER = LoggerFactory.getLogger(GruppenbeitragController.class); + private final GruppeRepository gruppeRepository; private final GruppenmitgliedRepository mitgliedRepository; private final GruppenbeitragRepository beitragRepository; @@ -118,6 +122,7 @@ public class GruppenbeitragController { beitrag.setBilder(req.bilder() != null ? req.bilder() : List.of()); beitrag.setCreatedAt(LocalDateTime.now()); beitragRepository.save(beitrag); + LOGGER.debug("User {} hat Beitrag {} (Typ: {}) in Gruppe {} erstellt", myId, beitrag.getBeitragId(), typ, id); if (typ == BeitragTyp.UMFRAGE && req.optionen() != null) { for (int i = 0; i < req.optionen().size(); i++) { @@ -155,6 +160,7 @@ public class GruppenbeitragController { if (!isAuthor && !isAdmin) return ResponseEntity.status(403).build(); deleteBeitragCascade(beitrag); + LOGGER.info("User {} hat Beitrag {} aus Gruppe {} gelöscht", myId, postId, id); return ResponseEntity.noContent().build(); } @@ -172,6 +178,7 @@ public class GruppenbeitragController { var existing = likeRepository.findByBeitragIdAndUserId(postId, myId); if (existing.isPresent()) { likeRepository.delete(existing.get()); + LOGGER.debug("User {} hat Like auf Beitrag {} entfernt", myId, postId); } else { GruppenbeitragLikeEntity like = new GruppenbeitragLikeEntity(); like.setLikeId(UUID.randomUUID()); @@ -179,6 +186,7 @@ public class GruppenbeitragController { like.setUserId(myId); like.setLikedAt(LocalDateTime.now()); likeRepository.save(like); + LOGGER.debug("User {} hat Beitrag {} geliked", myId, postId); } return ResponseEntity.ok().build(); } @@ -224,6 +232,7 @@ public class GruppenbeitragController { stimme.setBeitragId(postId); stimme.setUserId(myId); stimmeRepository.save(stimme); + LOGGER.debug("User {} hat für Option {} in Beitrag {} gestimmt", myId, req.optionId(), postId); return ResponseEntity.ok().build(); } @@ -251,6 +260,7 @@ public class GruppenbeitragController { meldung.setGrund(req.grund()); meldung.setGemeldetAt(LocalDateTime.now()); meldungRepository.save(meldung); + LOGGER.warn("User {} hat Beitrag {} in Gruppe {} gemeldet (Grund: {})", myId, postId, id, req.grund()); return ResponseEntity.status(201).build(); } @@ -292,6 +302,7 @@ public class GruppenbeitragController { return ResponseEntity.status(403).build(); meldungRepository.deleteById(meldungId); + LOGGER.debug("Admin {} hat Meldung {} in Gruppe {} abgewiesen", myId, meldungId, id); return ResponseEntity.noContent().build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/mail/MailTemplateService.java b/xxxthegame/src/main/java/de/oaa/xxx/mail/MailTemplateService.java index b1ef700..e4b8692 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/mail/MailTemplateService.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/mail/MailTemplateService.java @@ -116,6 +116,55 @@ public class MailTemplateService { ); } + public String buildKeyholderInvitationMail(String keyholderName, String lockeeName, String lockName, String confirmLink) { + return """ + + + +
+ +

XXX The Game

+ +

Moin %s,

+

+ %s hat dich als Keyholder*In für das Chastity-Lock + %s eingetragen. +

+

+ Wenn du die Keyholder*In-Rolle annehmen möchtest, klicke auf den Button. Das Lock startet erst nach deiner Bestätigung mit dir als Keyholder*In. +

+ + + +
+ +

+ Falls du die Rolle nicht annehmen möchtest, kannst du diese E-Mail einfach ignorieren. + Das Lock läuft dann als Self-Lock weiter. +

+
+ + + """.formatted( + colorBg, colorText, + colorCard, colorSecondary, + colorPrimary, + colorText, keyholderName, + colorText, colorPrimary, lockeeName, + colorPrimary, lockName, + colorText, + confirmLink, colorPrimary, + colorSecondary, + colorMuted + ); + } + public String buildActivationMail(String name, String activationLink, String activatePageUrl, String uuid) { return """ diff --git a/xxxthegame/src/main/java/de/oaa/xxx/session/controller/SperreController.java b/xxxthegame/src/main/java/de/oaa/xxx/session/controller/SperreController.java index e77ee10..36372e8 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/session/controller/SperreController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/session/controller/SperreController.java @@ -48,6 +48,7 @@ public class SperreController { public ResponseEntity sperren(@RequestBody SperreCallback callback) { try { new SperreVerarbeiten().sperreAnwenden(callback, sessionRepository, mitspielerRepository, aktiveSperreRepository); + LOGGER.info("Sperre angewandt für Session {}", callback.getSessionId()); return ResponseEntity.status(201).build(); } catch (Exception exception) { LOGGER.error(exception.getMessage(), exception); @@ -101,6 +102,7 @@ public class SperreController { List aktiveLocks = aktiveSperreRepository.findAktiveLocks(callback.getSpielerId()); SperreVerarbeiten verarbeiten = new SperreVerarbeiten(); aktiveLocks.forEach(lock -> verarbeiten.sperreVerlaengern(lock, callback.getFaktor(), aktiveSperreRepository)); + LOGGER.debug("Sperren für Spieler {} um Faktor {} verlängert ({} Sperren)", callback.getSpielerId(), callback.getFaktor(), aktiveLocks.size()); return ResponseEntity.accepted().build(); } catch (Exception exception) { LOGGER.error(exception.getMessage(), exception); diff --git a/xxxthegame/src/main/java/de/oaa/xxx/social/KommentarController.java b/xxxthegame/src/main/java/de/oaa/xxx/social/KommentarController.java index 99e2acd..6765306 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/social/KommentarController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/social/KommentarController.java @@ -7,6 +7,8 @@ import de.oaa.xxx.social.repository.KommentarLikeRepository; import de.oaa.xxx.social.repository.KommentarRepository; import de.oaa.xxx.user.UserEntity; import de.oaa.xxx.user.UserRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -19,6 +21,8 @@ import java.util.UUID; @RequestMapping("/social/kommentare") public class KommentarController { + private static final Logger LOGGER = LoggerFactory.getLogger(KommentarController.class); + private final KommentarRepository kommentarRepository; private final KommentarLikeRepository likeRepository; private final UserRepository userRepository; @@ -70,6 +74,7 @@ public class KommentarController { entity.setText(request.text().trim()); entity.setCreatedAt(LocalDateTime.now()); kommentarRepository.save(entity); + LOGGER.debug("User {} hat Kommentar {} auf {} {} erstellt", myId, entity.getKommentarId(), request.targetType(), request.targetId()); return ResponseEntity.status(201).body(toDto(entity, myId)); } @@ -93,6 +98,7 @@ public class KommentarController { } likeRepository.deleteByKommentarId(kommentarId); kommentarRepository.delete(kOpt.get()); + LOGGER.debug("User {} hat Kommentar {} gelöscht", myId, kommentarId); return ResponseEntity.noContent().build(); } @@ -107,6 +113,7 @@ public class KommentarController { var existing = likeRepository.findByKommentarIdAndUserId(kommentarId, myId); if (existing.isPresent()) { likeRepository.delete(existing.get()); + LOGGER.debug("User {} hat Like auf Kommentar {} entfernt", myId, kommentarId); } else { KommentarLikeEntity like = new KommentarLikeEntity(); like.setLikeId(UUID.randomUUID()); @@ -114,6 +121,7 @@ public class KommentarController { like.setUserId(myId); like.setLikedAt(LocalDateTime.now()); likeRepository.save(like); + LOGGER.debug("User {} hat Kommentar {} geliked", myId, kommentarId); } return ResponseEntity.ok().build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/social/PinnwandController.java b/xxxthegame/src/main/java/de/oaa/xxx/social/PinnwandController.java index 6afbebc..68b0b3d 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/social/PinnwandController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/social/PinnwandController.java @@ -8,6 +8,8 @@ import de.oaa.xxx.social.repository.PinnwandEintragRepository; import de.oaa.xxx.social.repository.PinnwandLikeRepository; import de.oaa.xxx.user.UserEntity; import de.oaa.xxx.user.UserRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -20,6 +22,8 @@ import java.util.UUID; @RequestMapping("/social/pinnwand") public class PinnwandController { + private static final Logger LOGGER = LoggerFactory.getLogger(PinnwandController.class); + private final PinnwandEintragRepository eintragRepository; private final PinnwandLikeRepository likeRepository; private final KommentarRepository kommentarRepository; @@ -67,6 +71,7 @@ public class PinnwandController { entity.setText(request.text().trim()); entity.setCreatedAt(LocalDateTime.now()); eintragRepository.save(entity); + LOGGER.debug("User {} hat Pinnwand-Eintrag {} auf Profil {} erstellt", myId, entity.getEintragId(), request.profilUserId()); return ResponseEntity.status(201).body(toDto(entity, myId)); } @@ -91,6 +96,7 @@ public class PinnwandController { kommentarRepository.findByTargetTypeAndTargetIdOrderByCreatedAtAsc("PINNWAND", eintragId) .forEach(k -> kommentarRepository.deleteById(k.getKommentarId())); eintragRepository.delete(eintrag); + LOGGER.debug("User {} hat Pinnwand-Eintrag {} gelöscht", myId, eintragId); return ResponseEntity.noContent().build(); } @@ -105,6 +111,7 @@ public class PinnwandController { var existing = likeRepository.findByEintragIdAndUserId(eintragId, myId); if (existing.isPresent()) { likeRepository.delete(existing.get()); + LOGGER.debug("User {} hat Like auf Pinnwand-Eintrag {} entfernt", myId, eintragId); } else { PinnwandLikeEntity like = new PinnwandLikeEntity(); like.setLikeId(UUID.randomUUID()); @@ -112,6 +119,7 @@ public class PinnwandController { like.setUserId(myId); like.setLikedAt(LocalDateTime.now()); likeRepository.save(like); + LOGGER.debug("User {} hat Pinnwand-Eintrag {} geliked", myId, eintragId); } return ResponseEntity.ok().build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/social/ProfileImageController.java b/xxxthegame/src/main/java/de/oaa/xxx/social/ProfileImageController.java index 1da6ed9..6f40a4b 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/social/ProfileImageController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/social/ProfileImageController.java @@ -6,6 +6,8 @@ import de.oaa.xxx.social.entity.ProfileImageLikeEntity; import de.oaa.xxx.social.repository.ProfileImageLikeRepository; import de.oaa.xxx.social.repository.ProfileImageRepository; import de.oaa.xxx.user.UserRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -18,6 +20,7 @@ import java.util.UUID; @RequestMapping("/social/profile-images") public class ProfileImageController { + private static final Logger LOGGER = LoggerFactory.getLogger(ProfileImageController.class); private static final int MAX_IMAGES_PER_USER = 20; private final ProfileImageRepository profileImageRepository; @@ -53,6 +56,7 @@ public class ProfileImageController { entity.setImageData(request.imageData()); entity.setUploadedAt(LocalDateTime.now()); profileImageRepository.save(entity); + LOGGER.debug("User {} hat Profilbild {} hochgeladen", myId, entity.getImageId()); return ResponseEntity.status(201).body(toDto(entity, myId)); } @@ -80,6 +84,7 @@ public class ProfileImageController { profileImageLikeRepository.deleteByImageId(imageId); profileImageRepository.delete(imgOpt.get()); + LOGGER.info("User {} hat Profilbild {} gelöscht", myId, imageId); return ResponseEntity.noContent().build(); } @@ -94,6 +99,7 @@ public class ProfileImageController { var existing = profileImageLikeRepository.findByImageIdAndUserId(imageId, myId); if (existing.isPresent()) { profileImageLikeRepository.delete(existing.get()); + LOGGER.debug("User {} hat Like auf Profilbild {} entfernt", myId, imageId); } else { ProfileImageLikeEntity like = new ProfileImageLikeEntity(); like.setLikeId(UUID.randomUUID()); @@ -101,6 +107,7 @@ public class ProfileImageController { like.setUserId(myId); like.setLikedAt(LocalDateTime.now()); profileImageLikeRepository.save(like); + LOGGER.debug("User {} hat Profilbild {} geliked", myId, imageId); } return ResponseEntity.ok().build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/social/SocialController.java b/xxxthegame/src/main/java/de/oaa/xxx/social/SocialController.java index 821fd1b..fbb18ae 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/social/SocialController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/social/SocialController.java @@ -11,6 +11,8 @@ import de.oaa.xxx.social.repository.FriendshipRepository; import de.oaa.xxx.social.repository.MessageRepository; import de.oaa.xxx.user.UserEntity; import de.oaa.xxx.user.UserRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.data.domain.PageRequest; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -23,6 +25,8 @@ import java.util.*; @RequestMapping("/social") public class SocialController { + private static final Logger LOGGER = LoggerFactory.getLogger(SocialController.class); + private final UserRepository userRepository; private final FriendshipRepository friendshipRepository; private final MessageRepository messageRepository; @@ -86,6 +90,7 @@ public class SocialController { f.setStatus(Status.PENDING); f.setCreatedAt(LocalDateTime.now()); friendshipRepository.save(f); + LOGGER.info("User {} hat Freundschaftsanfrage an User {} gesendet", myId, body.receiverId()); return ResponseEntity.status(201).build(); } @@ -102,6 +107,7 @@ public class SocialController { f.setStatus(Status.ACCEPTED); friendshipRepository.save(f); + LOGGER.info("User {} hat Freundschaftsanfrage {} angenommen", myId, body.friendshipId()); return ResponseEntity.ok().build(); } @@ -118,6 +124,7 @@ public class SocialController { return ResponseEntity.status(403).build(); } friendshipRepository.delete(f); + LOGGER.info("User {} hat Freundschaft/Anfrage {} gelöscht", myId, body.friendshipId()); return ResponseEntity.noContent().build(); } @@ -202,6 +209,7 @@ public class SocialController { msg.setText(body.text().trim()); msg.setSentAt(LocalDateTime.now()); messageRepository.save(msg); + LOGGER.debug("User {} hat Nachricht an User {} gesendet", myId, body.receiverId()); return ResponseEntity.status(201).build(); } diff --git a/xxxthegame/src/main/java/de/oaa/xxx/user/UserController.java b/xxxthegame/src/main/java/de/oaa/xxx/user/UserController.java index 1bebc60..355cd9f 100644 --- a/xxxthegame/src/main/java/de/oaa/xxx/user/UserController.java +++ b/xxxthegame/src/main/java/de/oaa/xxx/user/UserController.java @@ -120,6 +120,7 @@ public class UserController { user.get().setProfilePicture(request.picture()); user.get().setProfilePictureHq(request.pictureHq()); userRepository.save(user.get()); + LOGGER.debug("User {} hat Profilbild aktualisiert", user.get().getUserId()); return ResponseEntity.ok().build(); } @@ -139,6 +140,7 @@ public class UserController { user.setBeziehungsstatus(request.beziehungsstatus()); user.setBeschreibung(request.beschreibung()); userRepository.save(user); + LOGGER.info("User {} hat Profil aktualisiert", user.getUserId()); return ResponseEntity.ok().build(); } @@ -153,6 +155,7 @@ public class UserController { if (user.isEmpty()) return ResponseEntity.status(401).build(); user.get().setName(newName); userRepository.save(user.get()); + LOGGER.info("User {} hat Namen zu '{}' geändert", user.get().getUserId(), newName); return ResponseEntity.ok().build(); } diff --git a/xxxthegame/src/main/resources/static/benutzer.html b/xxxthegame/src/main/resources/static/benutzer.html index c2883cb..b4d631b 100644 --- a/xxxthegame/src/main/resources/static/benutzer.html +++ b/xxxthegame/src/main/resources/static/benutzer.html @@ -223,207 +223,6 @@ white-space: pre-wrap; } - /* ── Like button (inline) ── */ - .btn-like { - background: none; - border: 1px solid rgba(255,255,255,0.15); - border-radius: 20px; - padding: 0.2rem 0.65rem; - color: var(--color-muted); - font-size: 0.78rem; - cursor: pointer; - display: inline-flex; - align-items: center; - gap: 0.3rem; - margin: 0; - width: auto; - transition: border-color 0.15s, color 0.15s; - } - .btn-like:hover { border-color: var(--color-primary); color: var(--color-primary); } - .btn-like.liked { border-color: var(--color-primary); color: var(--color-primary); } - - /* ── Lightbox ── */ - .lightbox { - display: none; - position: fixed; - inset: 0; - background: rgba(0,0,0,0.88); - z-index: 500; - align-items: center; - justify-content: center; - padding: 2rem; - } - .lightbox.open { display: flex; } - - .lightbox-close { - position: fixed; - top: 1rem; - right: 1rem; - background: rgba(0,0,0,0.55); - border: 1px solid rgba(255,255,255,0.2); - color: #fff; - font-size: 1.1rem; - width: 2.2rem; - height: 2.2rem; - border-radius: 50%; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - padding: 0; - margin: 0; - z-index: 502; - transition: background 0.15s; - } - .lightbox-close:hover { background: rgba(180,30,30,0.8); } - - /* Layout wrapper – fixed size */ - .lb-layout { - display: flex; - flex-direction: row; - gap: 1rem; - height: min(78vh, 660px); - max-width: calc(100vw - 4rem); - align-items: stretch; - } - - /* Image side – fixed preferred width so all images show at the same size */ - .lb-image-side { - width: 660px; - flex-shrink: 1; - min-width: 0; - display: flex; - flex-direction: column; - } - - .lb-image-box { - flex: 1; - position: relative; - background: var(--color-card); - border: 1px solid var(--color-secondary); - border-radius: 12px; - overflow: hidden; - display: flex; - align-items: center; - justify-content: center; - } - - #lightboxImg { - width: 100%; - height: 100%; - object-fit: contain; - display: block; - } - - /* Arrow + like overlay on image bottom */ - .lb-image-overlay { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: linear-gradient(transparent, rgba(0,0,0,0.6)); - border-radius: 0 0 12px 12px; - padding: 2rem 0.75rem 0.6rem; - display: flex; - align-items: center; - justify-content: space-between; - gap: 0.5rem; - } - - .lb-nav-btn { - background: rgba(0,0,0,0.35); - border: 1px solid rgba(255,255,255,0.2); - border-radius: 6px; - color: #fff; - padding: 0.3rem 0.75rem; - cursor: pointer; - margin: 0; - width: auto; - font-size: 1rem; - flex-shrink: 0; - transition: background 0.15s; - } - .lb-nav-btn:hover { background: rgba(0,0,0,0.65); } - .lb-nav-btn:disabled { opacity: 0.25; cursor: default; } - - .lb-overlay-center { - display: flex; - align-items: center; - gap: 0.6rem; - flex: 1; - justify-content: center; - } - - .lb-counter { - font-size: 0.8rem; - color: rgba(255,255,255,0.75); - } - - /* Comments panel – same height as image box */ - .lb-comments-panel { - background: var(--color-card); - border: 1px solid var(--color-secondary); - border-radius: 12px; - width: 280px; - flex-shrink: 0; - display: flex; - flex-direction: column; - overflow: hidden; - } - - .lb-comments-header { - font-size: 0.78rem; - font-weight: 600; - color: var(--color-muted); - text-transform: uppercase; - letter-spacing: 0.06em; - padding: 0.7rem 1rem; - border-bottom: 1px solid var(--color-secondary); - flex-shrink: 0; - } - - .lb-comments-list { - flex: 1; - overflow-y: auto; - padding: 0.65rem 0.75rem; - scrollbar-width: thin; - scrollbar-color: var(--color-secondary) transparent; - } - - .lb-comment-write { - display: flex; - gap: 0.4rem; - padding: 0.65rem 0.75rem; - border-top: 1px solid var(--color-secondary); - flex-shrink: 0; - } - - .lb-comment-write input { - flex: 1; - padding: 0.4rem 0.65rem; - font-size: 0.85rem; - } - - .lb-comment-write button { - width: auto; - padding: 0.4rem 0.7rem; - font-size: 0.82rem; - white-space: nowrap; - } - - /* Narrow layout – toggled by JS reading --breakpoint-mobile */ - .lb-layout.narrow { - flex-direction: column; - height: auto; - max-height: 90vh; - overflow-y: auto; - width: calc(100vw - 1rem); - max-width: calc(100vw - 1rem); - } - .lb-layout.narrow .lb-image-side { width: 100%; flex-shrink: 0; } - .lb-layout.narrow .lb-image-box { height: min(45vh, 360px); flex: none; } - .lb-layout.narrow .lb-comments-panel { width: 100%; max-height: 40vh; flex-shrink: 0; } - /* ── Pinnwand ── */ .pinnwand-write { display: flex; @@ -504,77 +303,13 @@ flex-wrap: wrap; } - .btn-text { - background: none; - border: none; - color: var(--color-muted); - font-size: 0.78rem; - cursor: pointer; - margin: 0; - width: auto; - padding: 0; - text-decoration: underline; - text-decoration-color: rgba(255,255,255,0.2); - } - .btn-text:hover { color: var(--color-text); } - - .btn-delete-small { - background: none; - border: none; - color: rgba(200,50,50,0.6); - font-size: 0.78rem; - cursor: pointer; - margin: 0; - width: auto; - padding: 0; - } - .btn-delete-small:hover { color: var(--color-primary); } - - /* ── Comments ── */ + /* ── Comments (section container) ── */ .comments-section { margin-top: 0.65rem; padding-top: 0.65rem; border-top: 1px solid rgba(255,255,255,0.06); } - .comment-item { - display: flex; - gap: 0.5rem; - margin-bottom: 0.5rem; - } - - .comment-body { - flex: 1; - background: rgba(255,255,255,0.04); - border-radius: 6px; - padding: 0.5rem 0.65rem; - } - - .comment-author { font-size: 0.8rem; font-weight: 600; color: var(--color-text); } - .comment-time { font-size: 0.7rem; color: var(--color-muted); margin-left: 0.4rem; } - .comment-text { font-size: 0.85rem; color: rgba(255,255,255,0.75); margin-top: 0.2rem; line-height: 1.45; white-space: pre-wrap; } - - .comment-actions { - display: flex; - gap: 0.4rem; - margin-top: 0.3rem; - align-items: center; - } - - .replies-section { - margin-top: 0.5rem; - padding-left: 0.5rem; - border-left: 2px solid rgba(255,255,255,0.06); - } - - .comment-write { - display: flex; - gap: 0.4rem; - margin-top: 0.5rem; - } - .comment-write input { flex: 1; padding: 0.4rem 0.75rem; font-size: 0.85rem; } - .comment-write button { width: auto; padding: 0.4rem 0.75rem; font-size: 0.82rem; white-space: nowrap; } - /* ── Profil Tabs ── */ .profil-tabs { display:flex; gap:0; margin-bottom:1.25rem; border-bottom:1px solid var(--color-secondary); } .profil-tab-btn { background:none; border:none; border-bottom:3px solid transparent; border-radius:0; padding:0.6rem 1.25rem; font-size:0.9rem; font-weight:600; color:var(--color-muted); cursor:pointer; margin-bottom:-1px; transition:color 0.15s,border-color 0.15s; } @@ -591,14 +326,11 @@ .post-author { font-weight:600; font-size:0.9rem; } .post-date { font-size:0.75rem; color:var(--color-muted); margin-left:auto; } .post-text { font-size:0.95rem; line-height:1.5; white-space:pre-wrap; word-break:break-word; } - .post-bild { width:100%; max-height:360px; object-fit:contain; border-radius:6px; margin-top:0.5rem; display:block; } - .post-carousel { position:relative; margin-top:0.5rem; } - .car-slide { display:none; } - .car-slide.active { display:block; } - .car-btn { position:absolute; top:50%; transform:translateY(-50%); background:rgba(0,0,0,0.55); border:none; color:#fff; font-size:2.2rem; width:auto; min-width:2.4rem; height:3.2rem; border-radius:8px; cursor:pointer; z-index:5; display:flex; align-items:center; justify-content:center; padding:0 0.5rem; margin:0; line-height:1; } - .car-prev { left:0.3rem; } - .car-next { right:0.3rem; } - .car-indicator { text-align:center; font-size:0.75rem; color:var(--color-muted); margin-top:0.25rem; } + .post-bild { width:100%; max-height:360px; object-fit:contain; border-radius:6px; margin-top:0.5rem; display:block; transition:opacity 0.2s; } + .post-bild-wrap { position:relative; cursor:pointer; display:block; } + .post-bild-wrap:hover .post-bild { opacity:0.82; } + .post-bild-hover-icon { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; opacity:0; transition:opacity 0.2s; pointer-events:none; font-size:1.6rem; } + .post-bild-wrap:hover .post-bild-hover-icon { opacity:1; } .post-actions { display:flex; gap:1rem; margin-top:0.75rem; align-items:center; flex-wrap:wrap; } .post-action-btn { background:none; border:none; color:var(--color-muted); cursor:pointer; font-size:0.85rem; padding:0; display:flex; align-items:center; gap:0.3rem; margin:0; width:auto; } .post-action-btn:hover { color:var(--color-primary); background:none; } @@ -612,18 +344,23 @@ .umfrage-bar-content { position:relative; display:flex; justify-content:space-between; padding:0.45rem 0.75rem; font-size:0.88rem; } .umfrage-total { font-size:0.78rem; color:var(--color-muted); margin-top:0.3rem; } - /* ── Post Lightbox ── */ - .post-lb { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.88); z-index:400; align-items:center; justify-content:center; } - .post-lb.open { display:flex; } - .post-lb-layout { display:flex; max-width:860px; width:95vw; max-height:88vh; background:var(--color-card); border-radius:12px; overflow:hidden; position:relative; } - .post-lb-close { position:absolute; top:0.6rem; right:0.6rem; background:rgba(0,0,0,0.55); border:none; color:#fff; font-size:1.1rem; width:2rem; height:2rem; border-radius:50%; cursor:pointer; z-index:10; display:flex; align-items:center; justify-content:center; padding:0; margin:0; } - .post-lb-body { flex:1; overflow-y:auto; padding:1.25rem; border-right:1px solid var(--color-secondary); min-width:0; } - .post-lb-comments { width:300px; flex-shrink:0; display:flex; flex-direction:column; } - .post-lb-comments-list { flex:1; overflow-y:auto; padding:0.75rem; } - .post-lb-compose { padding:0.75rem; border-top:1px solid var(--color-secondary); display:flex; gap:0.5rem; } - .post-lb-compose input { flex:1; font-size:0.85rem; padding:0.35rem 0.6rem; height:auto; } - .post-lb-compose button { width:auto; margin:0; padding:0.35rem 0.75rem; font-size:0.8rem; } - @media(max-width:650px) { .post-lb-layout { flex-direction:column; max-height:95vh; } .post-lb-body { border-right:none; border-bottom:1px solid var(--color-secondary); } .post-lb-comments { width:100%; } } + /* ── Post / Bild Lightbox ── */ + .lightbox { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.88); z-index:400; align-items:center; justify-content:center; } + .lightbox.open { display:flex; } + .lb-layout { display:flex; max-width:920px; width:95vw; max-height:90vh; background:var(--color-card); border-radius:12px; overflow:hidden; position:relative; } + .lb-close { position:absolute; top:0.6rem; right:0.6rem; background:rgba(0,0,0,0.55); border:none; color:#fff; font-size:1.1rem; width:2rem; height:2rem; border-radius:50%; cursor:pointer; z-index:10; display:flex; align-items:center; justify-content:center; padding:0; margin:0; } + .lb-post-side { flex:1; overflow-y:auto; padding:1.25rem; border-right:1px solid var(--color-secondary); min-width:0; } + .lb-comments-panel { width:300px; flex-shrink:0; display:flex; flex-direction:column; } + .lb-comments-header { font-size:0.78rem; font-weight:600; color:var(--color-muted); text-transform:uppercase; letter-spacing:0.06em; padding:0.7rem 1rem; border-bottom:1px solid var(--color-secondary); flex-shrink:0; } + .lb-comments-list { flex:1; overflow-y:auto; padding:0.75rem; } + .lb-comment-compose { padding:0.75rem; border-top:1px solid var(--color-secondary); display:flex; flex-direction:column; gap:0.5rem; flex-shrink:0; } + .lb-comment-compose textarea { width:100%; font-size:0.85rem; padding:0.35rem 0.6rem; resize:none; background:var(--color-secondary); border:1px solid var(--color-secondary); border-radius:6px; color:var(--color-text); font-family:inherit; outline:none; transition:border-color 0.2s; box-sizing:border-box; } + .lb-comment-compose textarea:focus { border-color:var(--color-primary); } + .lb-comment-compose-actions { display:flex; gap:0.5rem; justify-content:flex-end; } + .lb-comment-compose button { width:auto; margin:0; padding:0.35rem 0.75rem; font-size:0.8rem; } + .lb-img-nav { display:flex; gap:0.75rem; align-items:center; justify-content:center; margin-top:0.75rem; flex-wrap:wrap; } + .compose-action-btn { background:none; border:1px solid var(--color-secondary); color:var(--color-muted); border-radius:6px; padding:0.35rem 0.6rem; font-size:0.95rem; cursor:pointer; margin:0; width:auto; } + @media (max-width:650px) { .lb-layout { flex-direction:column; max-height:95vh; } .lb-post-side { border-right:none; border-bottom:1px solid var(--color-secondary); max-height:55vh; } .lb-comments-panel { width:100%; } } @@ -694,60 +431,28 @@ - - + diff --git a/xxxthegame/src/main/resources/static/img/card_doubleup.png b/xxxthegame/src/main/resources/static/img/card_doubleup.png new file mode 100644 index 0000000..7772187 Binary files /dev/null and b/xxxthegame/src/main/resources/static/img/card_doubleup.png differ diff --git a/xxxthegame/src/main/resources/static/img/card_freeze.png b/xxxthegame/src/main/resources/static/img/card_freeze.png new file mode 100644 index 0000000..a046939 Binary files /dev/null and b/xxxthegame/src/main/resources/static/img/card_freeze.png differ diff --git a/xxxthegame/src/main/resources/static/img/card_red.png b/xxxthegame/src/main/resources/static/img/card_red.png new file mode 100644 index 0000000..5e09a93 Binary files /dev/null and b/xxxthegame/src/main/resources/static/img/card_red.png differ diff --git a/xxxthegame/src/main/resources/static/img/card_reset.png b/xxxthegame/src/main/resources/static/img/card_reset.png new file mode 100644 index 0000000..6cd9642 Binary files /dev/null and b/xxxthegame/src/main/resources/static/img/card_reset.png differ diff --git a/xxxthegame/src/main/resources/static/img/card_task.png b/xxxthegame/src/main/resources/static/img/card_task.png new file mode 100644 index 0000000..022fc94 Binary files /dev/null and b/xxxthegame/src/main/resources/static/img/card_task.png differ diff --git a/xxxthegame/src/main/resources/static/img/card_yellow.png b/xxxthegame/src/main/resources/static/img/card_yellow.png new file mode 100644 index 0000000..ca6e293 Binary files /dev/null and b/xxxthegame/src/main/resources/static/img/card_yellow.png differ diff --git a/xxxthegame/src/main/resources/static/js/image-viewer.js b/xxxthegame/src/main/resources/static/js/image-viewer.js new file mode 100644 index 0000000..148a4d0 --- /dev/null +++ b/xxxthegame/src/main/resources/static/js/image-viewer.js @@ -0,0 +1,237 @@ +// ───────────────────────────────────────────────────────────────────────────── +// image-viewer.js – Universelle Bild-Lightbox +// +// Einbinden: (vorher) +// +// +// Zwei Modi: +// Modus A – Nur Bild (kein Like, keine Kommentare): +// imageViewer.open({ images: [{ src }] }) +// +// Modus B – Galerie mit Like + Kommentare: +// imageViewer.open({ +// images: [{ src, id, likedByMe, likeCount }], +// index: 0, +// showLike: true, +// showComments: true, +// myUserId: '...', +// onLike: async (img) => {} // optional; sonst POST /social/profile-images/{id}/like +// }) +// +// Globale Instanz: window.imageViewer +// ───────────────────────────────────────────────────────────────────────────── + +class ImageViewer { + constructor() { + this._cfg = null; + this._idx = 0; + this.isOpen = false; + this._injectStyles(); + this._injectHTML(); + this._bindEvents(); + } + + // ── Öffentliche API ─────────────────────────────────────────────────────── + + open(cfg) { + this._cfg = cfg; + this._idx = cfg.index || 0; + this.isOpen = true; + + const multi = cfg.images.length > 1; + const showLike = !!cfg.showLike; + const showCom = !!cfg.showComments; + + this._q('ivPrev').style.display = multi ? '' : 'none'; + this._q('ivNext').style.display = multi ? '' : 'none'; + this._q('ivCounter').style.display = multi ? '' : 'none'; + this._q('ivLikeBtn').style.display = showLike ? '' : 'none'; + this._q('ivComments').style.display = showCom ? '' : 'none'; + + this._render(); + this._q('imageViewer').classList.add('open'); + this._updateLayout(); + } + + close() { + this._q('imageViewer').classList.remove('open'); + this.isOpen = false; + this._cfg = null; + } + + /** Kommentare im offenen Viewer neu laden (z.B. nach externem Löschen) */ + reloadComments() { + if (this.isOpen && this._cfg?.showComments) this._loadComments(); + } + + // ── Internes Rendering ──────────────────────────────────────────────────── + + _q(id) { return document.getElementById(id); } + + _render() { + const img = this._cfg.images[this._idx]; + this._q('ivImg').src = img.src; + + const total = this._cfg.images.length; + this._q('ivCounter').textContent = `${this._idx + 1} / ${total}`; + this._q('ivPrev').disabled = this._idx === 0; + this._q('ivNext').disabled = this._idx === total - 1; + + if (this._cfg.showLike) this._syncLike(); + if (this._cfg.showComments) this._loadComments(); + } + + _syncLike() { + const img = this._cfg.images[this._idx]; + const btn = this._q('ivLikeBtn'); + btn.className = 'btn-like' + (img.likedByMe ? ' liked' : ''); + this._q('ivLikeCount').textContent = img.likeCount; + } + + async _loadComments() { + const img = this._cfg.images[this._idx]; + const res = await fetch(`/social/kommentare?targetType=IMAGE&targetId=${img.id}`); + const comments = await res.json(); + const myUserId = this._cfg.myUserId || null; + this._q('ivCommentsList').innerHTML = comments.length === 0 + ? '

Noch keine Kommentare.

' + : comments.map(k => renderKommentarHtml(k, 'IMAGE', img.id, { myUserId, showReplies: true })).join(''); + } + + async _postComment() { + const input = this._q('ivCommentInput'); + const text = input.value.trim(); + if (!text) return; + const img = this._cfg.images[this._idx]; + await fetch('/social/kommentare', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ targetType: 'IMAGE', targetId: img.id, text }) + }); + input.value = ''; + await this._loadComments(); + } + + async _toggleLike() { + const img = this._cfg.images[this._idx]; + const onLike = this._cfg.onLike; + img.likedByMe = !img.likedByMe; + img.likeCount += img.likedByMe ? 1 : -1; + this._syncLike(); + try { + if (onLike) await onLike(img); + else await fetch('/social/profile-images/' + img.id + '/like', { method: 'POST' }); + } catch { + img.likedByMe = !img.likedByMe; + img.likeCount += img.likedByMe ? 1 : -1; + this._syncLike(); + } + } + + _prev() { if (this._idx > 0) { this._idx--; this._render(); } } + _next() { if (this._idx < this._cfg.images.length - 1) { this._idx++; this._render(); } } + + _updateLayout() { + const el = this._q('ivLayout'); + if (!el) return; + const bp = parseInt(getComputedStyle(document.documentElement) + .getPropertyValue('--breakpoint-mobile').trim()) || 768; + el.classList.toggle('iv-narrow', window.innerWidth <= bp); + } + + // ── CSS + HTML Injection ────────────────────────────────────────────────── + + _injectStyles() { + if (document.getElementById('iv-styles')) return; + const s = document.createElement('style'); + s.id = 'iv-styles'; + s.textContent = ` +#imageViewer{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.88);z-index:500;align-items:center;justify-content:center;padding:2rem} +#imageViewer.open{display:flex} +#ivLayout{display:flex;flex-direction:row;gap:1rem;height:min(78vh,660px);max-width:calc(100vw - 4rem);align-items:stretch} +#ivImageSide{width:660px;flex-shrink:1;min-width:0;display:flex;flex-direction:column} +.iv-image-box{flex:1;position:relative;background:var(--color-card);border:1px solid var(--color-secondary);border-radius:12px;overflow:hidden;display:flex;align-items:center;justify-content:center} +#ivImg{width:100%;height:100%;object-fit:contain;display:block} +.iv-overlay{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,0.6));border-radius:0 0 12px 12px;padding:2rem 0.75rem 0.6rem;display:flex;align-items:center;justify-content:space-between;gap:0.5rem} +.iv-nav-btn{background:rgba(0,0,0,0.35);border:1px solid rgba(255,255,255,0.2);border-radius:6px;color:#fff;padding:0.3rem 0.75rem;cursor:pointer;margin:0;width:auto;font-size:1rem;flex-shrink:0;transition:background 0.15s} +.iv-nav-btn:hover{background:rgba(0,0,0,0.65)} +.iv-nav-btn:disabled{opacity:.25;cursor:default} +.iv-overlay-center{display:flex;align-items:center;gap:0.6rem;flex:1;justify-content:center} +#ivCounter{font-size:0.8rem;color:rgba(255,255,255,0.75)} +.iv-close{position:fixed;top:1rem;right:1rem;background:rgba(0,0,0,0.55);border:1px solid rgba(255,255,255,0.2);color:#fff;font-size:1.1rem;width:2.2rem;height:2.2rem;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;margin:0;z-index:502;transition:background 0.15s} +.iv-close:hover{background:rgba(180,30,30,0.8)} +#ivComments{background:var(--color-card);border:1px solid var(--color-secondary);border-radius:12px;width:280px;flex-shrink:0;display:flex;flex-direction:column;overflow:hidden} +.iv-comments-header{font-size:0.78rem;font-weight:600;color:var(--color-muted);text-transform:uppercase;letter-spacing:0.06em;padding:0.7rem 1rem;border-bottom:1px solid var(--color-secondary);flex-shrink:0} +#ivCommentsList{flex:1;overflow-y:auto;padding:0.65rem 0.75rem;scrollbar-width:thin;scrollbar-color:var(--color-secondary) transparent} +.iv-comment-compose{display:flex;gap:0.4rem;padding:0.65rem 0.75rem;border-top:1px solid var(--color-secondary);flex-shrink:0;align-items:center} +.iv-comment-compose input{flex:1;padding:0.4rem 0.65rem;font-size:0.85rem} +.iv-comment-compose button{width:auto;padding:0.4rem 0.7rem;font-size:0.82rem;white-space:nowrap} +#ivLayout.iv-narrow{flex-direction:column;height:auto;max-height:90vh;overflow-y:auto;width:calc(100vw - 1rem);max-width:calc(100vw - 1rem)} +#ivLayout.iv-narrow #ivImageSide{width:100%;flex-shrink:0} +#ivLayout.iv-narrow .iv-image-box{height:min(45vh,360px);flex:none} +#ivLayout.iv-narrow #ivComments{width:100%;max-height:40vh;flex-shrink:0} +`; + document.head.appendChild(s); + } + + _injectHTML() { + if (document.getElementById('imageViewer')) return; + const div = document.createElement('div'); + div.id = 'imageViewer'; + div.innerHTML = ` + +
+
+
+ +
+ +
+ + +
+ +
+
+
+
+
Kommentare
+
+
+ + + +
+
+
`; + document.body.appendChild(div); + } + + _bindEvents() { + const init = () => { + this._q('ivClose').addEventListener('click', () => this.close()); + this._q('imageViewer').addEventListener('click', e => { + if (e.target === this._q('imageViewer')) this.close(); + }); + this._q('ivPrev').addEventListener('click', () => this._prev()); + this._q('ivNext').addEventListener('click', () => this._next()); + this._q('ivLikeBtn').addEventListener('click', () => this._toggleLike()); + this._q('ivCommentSend').addEventListener('click', () => this._postComment()); + this._q('ivCommentInput').addEventListener('keydown', e => { + if (e.key === 'Enter') this._postComment(); + }); + window.addEventListener('resize', () => this._updateLayout()); + }; + if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); + else init(); + + document.addEventListener('keydown', e => { + if (!this.isOpen) return; + if (e.key === 'Escape') this.close(); + if (e.key === 'ArrowLeft') this._prev(); + if (e.key === 'ArrowRight') this._next(); + }); + } +} + +window.imageViewer = new ImageViewer(); diff --git a/xxxthegame/src/main/resources/static/js/shared.js b/xxxthegame/src/main/resources/static/js/shared.js new file mode 100644 index 0000000..9d79b8e --- /dev/null +++ b/xxxthegame/src/main/resources/static/js/shared.js @@ -0,0 +1,237 @@ +// ───────────────────────────────────────────────────────────────────────────── +// shared.js – Gemeinsame Helfer & Komponenten +// Einbinden: +// (vor allen Seiten-Skripten, nach CSS-Links) +// ───────────────────────────────────────────────────────────────────────────── + +// ── CSS-Injection (Comment + Carousel) ──────────────────────────────────────── +(function injectSharedStyles() { + if (document.getElementById('shared-styles')) return; + const s = document.createElement('style'); + s.id = 'shared-styles'; + s.textContent = ` +/* ── Karussell ── */ +.post-carousel{position:relative;margin-top:0.5rem} +.car-slide{display:none} +.car-slide.active{display:block} +.car-btn{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.55);border:none;color:#fff;font-size:2.2rem;width:auto;min-width:2.4rem;height:3.2rem;border-radius:8px;cursor:pointer;z-index:5;display:flex;align-items:center;justify-content:center;padding:0 0.5rem;margin:0;line-height:1} +.car-prev{left:0.3rem} +.car-next{right:0.3rem} +.car-indicator{text-align:center;font-size:0.75rem;color:var(--color-muted);margin-top:0.25rem} + +/* ── Like / Löschen-Buttons ── */ +.btn-like{background:none;border:1px solid rgba(255,255,255,0.15);border-radius:20px;padding:0.2rem 0.65rem;color:var(--color-muted);font-size:0.78rem;cursor:pointer;display:inline-flex;align-items:center;gap:0.3rem;margin:0;width:auto;transition:border-color 0.15s,color 0.15s} +.btn-like:hover,.btn-like.liked{border-color:var(--color-primary);color:var(--color-primary)} +.btn-delete-small{background:none;border:none;color:rgba(200,50,50,0.6);font-size:0.78rem;cursor:pointer;margin:0;width:auto;padding:0} +.btn-delete-small:hover{color:var(--color-primary)} +.btn-text{background:none;border:none;color:var(--color-muted);font-size:0.78rem;cursor:pointer;margin:0;width:auto;padding:0;text-decoration:underline;text-decoration-color:rgba(255,255,255,0.2)} +.btn-text:hover{color:var(--color-text)} + +/* ── Kommentare ── */ +.comment-item{display:flex;gap:0.5rem;margin-bottom:0.5rem} +.comment-avatar{width:28px;height:28px;border-radius:50%;background:var(--color-secondary);display:flex;align-items:center;justify-content:center;font-size:0.75rem;flex-shrink:0;overflow:hidden} +.comment-avatar img{width:100%;height:100%;object-fit:cover} +.comment-body{flex:1;background:rgba(255,255,255,0.04);border-radius:6px;padding:0.5rem 0.65rem} +.comment-author{font-size:0.8rem;font-weight:600;color:var(--color-text)} +.comment-date{font-size:0.72rem;color:var(--color-muted);margin-left:0.4rem} +.comment-text{font-size:0.85rem;color:rgba(255,255,255,0.75);margin-top:0.2rem;line-height:1.45;white-space:pre-wrap;word-break:break-word} +.comment-actions{display:flex;gap:0.4rem;margin-top:0.3rem;align-items:center} +.replies-section{margin-top:0.5rem;padding-left:0.5rem;border-left:2px solid rgba(255,255,255,0.06)} +.comment-write{display:flex;gap:0.4rem;margin-top:0.5rem} +.comment-write input{flex:1;padding:0.4rem 0.75rem;font-size:0.85rem} +.comment-write button{width:auto;padding:0.4rem 0.75rem;font-size:0.82rem;white-space:nowrap} +`; + document.head.appendChild(s); +})(); + +// ── HTML-Escape ──────────────────────────────────────────────────────────────── +function esc(str) { + if (!str) return ''; + return str.replace(/&/g, '&').replace(//g, '>') + .replace(/"/g, '"').replace(/\n/g, '
'); +} + +// ── Datum-Format ────────────────────────────────────────────────────────────── +function fmtDate(iso) { + if (!iso) return ''; + const d = new Date(iso); + return d.toLocaleDateString('de-DE') + ' ' + d.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' }); +} + +// ── Emoji-Picker ────────────────────────────────────────────────────────────── +const EMOJIS = ['😊','😂','❤️','😍','🔥','👍','🥰','😎','🤔','😘','💕','🎉','✨','💋','😈','🫦','🍑','🍆','🔞','🥵','😭','😢','😤','🙄','🤦','🤷','🙏','💪','😏','🤩']; +let _emojiTarget = null; + +function toggleEmojiPicker(btn, targetId) { + _emojiTarget = document.getElementById(targetId); + let picker = document.getElementById('sharedEmojiPicker'); + if (!picker) { + picker = document.createElement('div'); + picker.id = 'sharedEmojiPicker'; + picker.style.cssText = 'position:fixed;z-index:9000;background:var(--color-card);border:1px solid var(--color-secondary);border-radius:10px;padding:0.5rem;display:flex;flex-wrap:wrap;gap:0.2rem;max-width:260px;box-shadow:0 4px 20px rgba(0,0,0,0.5);'; + EMOJIS.forEach(em => { + const b = document.createElement('button'); + b.textContent = em; + b.style.cssText = 'background:none;border:none;font-size:1.3rem;cursor:pointer;padding:0.2rem;margin:0;width:auto;line-height:1;'; + b.onclick = e => { e.stopPropagation(); insertEmoji(em); }; + picker.appendChild(b); + }); + document.body.appendChild(picker); + } + if (picker.style.display === 'flex') { picker.style.display = 'none'; return; } + picker.style.display = 'flex'; + requestAnimationFrame(() => { + const rect = btn.getBoundingClientRect(); + const ph = picker.offsetHeight, pw = picker.offsetWidth; + let top = rect.top - ph - 8; + let left = rect.left; + if (top < 8) top = rect.bottom + 8; + if (left + pw > window.innerWidth - 8) left = window.innerWidth - pw - 8; + picker.style.top = top + 'px'; + picker.style.left = left + 'px'; + }); +} + +function insertEmoji(emoji) { + if (!_emojiTarget) return; + const start = _emojiTarget.selectionStart ?? _emojiTarget.value.length; + const end = _emojiTarget.selectionEnd ?? start; + _emojiTarget.value = _emojiTarget.value.slice(0, start) + emoji + _emojiTarget.value.slice(end); + _emojiTarget.selectionStart = _emojiTarget.selectionEnd = start + emoji.length; + _emojiTarget.focus(); +} + +document.addEventListener('click', e => { + const picker = document.getElementById('sharedEmojiPicker'); + if (picker && picker.style.display === 'flex' + && !picker.contains(e.target) + && !e.target.closest('[onclick*="toggleEmojiPicker"]')) { + picker.style.display = 'none'; + } +}); + +// ── Bild-Karussell ──────────────────────────────────────────────────────────── +function bilderCarousel(bilder) { + if (!bilder || bilder.length === 0) return ''; + if (bilder.length === 1) { + return `
`; + } + const slides = bilder.map((b, i) => + `
` + ).join(''); + return `
+ ${slides} + + +
1/${bilder.length}
+
`; +} + +function carNav(btn, dir) { + const car = btn.closest('.post-carousel'); + const slides = Array.from(car.querySelectorAll('.car-slide')); + const cur = slides.findIndex(s => s.classList.contains('active')); + slides[cur].classList.remove('active'); + const next = (cur + dir + slides.length) % slides.length; + slides[next].classList.add('active'); + const ind = car.querySelector('.car-cur'); + if (ind) ind.textContent = next + 1; +} + +// ── Kommentar-Rendering ─────────────────────────────────────────────────────── +// opts: { myUserId, showReplies } +// Seite muss definieren: deleteKommentar(kommentarId, targetType, targetId) +function renderKommentarHtml(k, targetType, targetId, opts) { + const { myUserId = null, showReplies = false } = opts || {}; + const avatarHtml = k.authorPicture + ? `` + : '◉'; + const canDelete = k.authorId === myUserId; + const replyLabel = k.replyCount > 0 ? `Antworten (${k.replyCount})` : 'Antworten'; + return `
+
${avatarHtml}
+
+ ${esc(k.authorName)} + ${fmtDate(k.createdAt)} +
${esc(k.text)}
+
+ + ${showReplies ? `` : ''} + ${canDelete ? `` : ''} +
+ ${showReplies ? `` : ''} +
+
`; +} + +function renderReplyHtml(r, parentId) { + const avatarHtml = r.authorPicture + ? `` + : '◉'; + const canDelete = typeof window.myUserId !== 'undefined' && r.authorId === window.myUserId; + return `
+
${avatarHtml}
+
+ ${esc(r.authorName)} + ${fmtDate(r.createdAt)} +
${esc(r.text)}
+
+ + ${canDelete ? `` : ''} +
+
+
`; +} + +async function toggleKommentarLike(kommentarId) { + await fetch('/social/kommentare/' + kommentarId + '/like', { method: 'POST' }); + const btn = document.getElementById('lk-kom-' + kommentarId); + const lc = document.getElementById('lkc-kom-' + kommentarId); + if (!btn || !lc) return; + const was = btn.classList.contains('liked'); + btn.classList.toggle('liked', !was); + lc.textContent = parseInt(lc.textContent) + (was ? -1 : 1); +} + +async function toggleReplies(kommentarId) { + const section = document.getElementById('replies-' + kommentarId); + if (section.style.display === 'none') { + section.style.display = ''; + await loadReplies(kommentarId); + } else { + section.style.display = 'none'; + } +} + +async function loadReplies(kommentarId) { + const res = await fetch(`/social/kommentare?targetType=KOMMENTAR&targetId=${kommentarId}`); + const replies = await res.json(); + const section = document.getElementById('replies-' + kommentarId); + section.innerHTML = (replies.length === 0 + ? '

Noch keine Antworten.

' + : replies.map(r => renderReplyHtml(r, kommentarId)).join('')) + + `
+ + +
`; +} + +async function postReply(kommentarId) { + const input = document.getElementById('ri-' + kommentarId); + const text = input.value.trim(); + if (!text) return; + await fetch('/social/kommentare', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ targetType: 'KOMMENTAR', targetId: kommentarId, text }) + }); + input.value = ''; + await loadReplies(kommentarId); +} + +async function deleteReply(replyId, parentId) { + await fetch('/social/kommentare/' + replyId, { method: 'DELETE' }); + await loadReplies(parentId); +} diff --git a/xxxthegame/src/main/resources/static/js/sidebar.js b/xxxthegame/src/main/resources/static/js/sidebar.js index 8c24522..f8bbc57 100644 --- a/xxxthegame/src/main/resources/static/js/sidebar.js +++ b/xxxthegame/src/main/resources/static/js/sidebar.js @@ -27,7 +27,8 @@ icon: '⊗', items: [ { href: '/infochastity.html', icon: 'ℹ', label: 'Info' }, - { href: '/sessionchastity.html', icon: '▷', label: 'Neue Session' }, + { href: '/sessionchastity.html', icon: '▷', label: 'Neue Session', id: 'navChastityNeu' }, + { href: '#', icon: '▶', label: 'Aktive Session', id: 'navChastityAktiv' }, ] }, ]; @@ -93,9 +94,12 @@ }); // "Im Spiel" standardmäßig ausblenden; wird nach Session-Check ggf. wieder eingeblendet - const navNeu = document.getElementById('navBdsmNeu'); - const navImSpiel = document.getElementById('navBdsmImSpiel'); + const navNeu = document.getElementById('navBdsmNeu'); + const navImSpiel = document.getElementById('navBdsmImSpiel'); + const navCNeu = document.getElementById('navChastityNeu'); + const navCAktiv = document.getElementById('navChastityAktiv'); if (navImSpiel) navImSpiel.style.display = 'none'; + if (navCAktiv) navCAktiv.style.display = 'none'; // Session-Status prüfen fetch('/login/me') @@ -103,13 +107,27 @@ .then(async user => { if (!user) return; - // Session-Status prüfen und Menü anpassen + // BDSM Session-Status try { const sessionRes = await fetch(`/session?userId=${user.userId}`); const hasSession = sessionRes.status === 200; if (navNeu) navNeu.style.display = hasSession ? 'none' : ''; if (navImSpiel) navImSpiel.style.display = hasSession ? '' : 'none'; } catch (_) { /* Menü bleibt im Standardzustand */ } + + // Chastity Lock-Status + try { + const lockRes = await fetch('/keyholder/mylock'); + if (lockRes.ok) { + const lockData = await lockRes.json(); + const lockId = lockData.lockId; + if (navCNeu) navCNeu.style.display = 'none'; + if (navCAktiv) { + navCAktiv.style.display = ''; + navCAktiv.querySelector('a').href = '/sessionchastityingame.html?lockId=' + lockId; + } + } + } catch (_) { /* Menü bleibt im Standardzustand */ } }) .catch(() => {}); diff --git a/xxxthegame/src/main/resources/static/keyholder-invitation-confirmed.html b/xxxthegame/src/main/resources/static/keyholder-invitation-confirmed.html new file mode 100644 index 0000000..155f87d --- /dev/null +++ b/xxxthegame/src/main/resources/static/keyholder-invitation-confirmed.html @@ -0,0 +1,44 @@ + + + + + + Keyholder*In bestätigt – XXX The Game + + + + +
+
+ + + + + +
+
+ + + diff --git a/xxxthegame/src/main/resources/static/profile.html b/xxxthegame/src/main/resources/static/profile.html index f63fae4..f72e045 100644 --- a/xxxthegame/src/main/resources/static/profile.html +++ b/xxxthegame/src/main/resources/static/profile.html @@ -407,11 +407,14 @@ + + + + diff --git a/xxxthegame/src/main/resources/static/sessionchastityingame.html b/xxxthegame/src/main/resources/static/sessionchastityingame.html new file mode 100644 index 0000000..a402563 --- /dev/null +++ b/xxxthegame/src/main/resources/static/sessionchastityingame.html @@ -0,0 +1,447 @@ + + + + + + Chastity Game – XXX The Game + + + + + +
+
+ +

🔒 Chastity Session

+ + + + + + + + + + + + +
+ Wird geladen… +
+ +
+ +
+ +
+
+ + +
+
+

Lock wirklich beenden?

+

+ Wenn du das Lock beendest, wird der Entsperrcode unwiderruflich gelöscht. + Der Code kann danach nicht wiederhergestellt werden. +

+
+ + +
+
+
+ + + + + + +