Teilen Sie Ihre Erfahrunge und Wünsche mit uns und anderen Usern!

0
Answered

OPCUA values not in PLC Output

PeterFischer 5 years ago in realvirtual.io Starter and Professional updated 5 years ago 5

Hello,

I am running the OPCUA demo with the UaCPPServer and it works fine, except that the values are not shown next to the GameObjects in Unity. I can see the current values from the server on each OPCUA_Node component, however it seems that the corresponding PLCSignals were not created like they should (from the OPCUA documentation page: "If the Game4Automation framework is installed, additionally all
corresponding PLCSignals are created. These signals can be dragged and
dropped with sensors or drives of the Game4Automation framework.")

I then added a PLC Output Float script manually to the respective node (see picture). Now the current value is shown next to the GameObject, but it doesn't update.

I also tested this with the test scene (OPCUADriveReadingWriting.unity) provided here: https://forum.game4automation.com/communities/1/topics/101-write-to-opc-ua-varible-using-the-plcinputfloat-datatype

But the PLC Output value is also not updated there.

Image 153

Answer
Support 5 years ago


Hi, 

first of all I strongly recommend to use Unity 2018.4 instead of 2019. Specially when compiling to the Build with an IL2CPP compiler there might be issues with Unity 2019.

There is something interfering with the demo use cases (need still to check what exactly). 

Please follow these steps:

- Make sure that the compiler defines are set to GAME4AUTOMATION; GAME4AUTOMATION_PROFESSIONAL 

Import while running the OPCUA server the nodes again. If you have enabled with the Compiler defines the full framework it will also create all PLCInputs and Outputs:


If you try now to run it you will get errors:

These errors are because the demo server is limited in subscriptions.


You need to turn off all subscriptions in the OPCUA nodes or you turn it off in the OPCUA interface and import again:


Please also delete the Use Cases completely (we will get rid of the problem with the use cases in the next release).

Now it should work as expected:

You find also the full working model (based on Unity2018.4) in the Uploadfoalder I have send you via mail.

0
Answered

Write to OPC UA varible using the PLCInputFloat datatype

DAT 5 years ago in OPCUA4Unity updated by Support 5 years ago 10

Can you write to OPC UA variable using the PLCInputFloat varible type. I easily read values from the PLCOutputFloat inside scripts using the "variableName".Value method but I cannot seem to write using the datatypes.

I am able to change to variables on OPC UA server using other applications.

Answer
Support 5 years ago

I am sending you via email a link to the current beta asset!

0
Fixed

Interface to SIMIT via SHM not working in build

DAT 5 years ago in realvirtual.io Starter and Professional updated by Support 5 years ago 6

I have recently bought the game4automation Pro, as I need simit and unity to communicate with eachother.

I have no issues getting SIMIT and unity to communicate via the SHM interface when using the "play" button from the editor, but when I run a compiled application Unity and SIMIT do not communicate.


I have tried to use both "2019.1.14f1" and "2018.4.9f1 LTS" versions of unity. As the function "Apply Standard Settings" fail in my "2019.1.14f1" project but switching to "2018.4.9f1 LTS" where the function runs without error did not help.

"GAME4AUTOMATION_PROFESSIONAL;GAME4AUTOMATION" is present in the "Scripting Define Symbols" field.

what am I missing?


Answer
Support 5 years ago

Hi Dat,

I uploaded Version 1.020 to Unity's Asset Store. This should fix the problems. You can now use pure .Net4.0 projects. Also CADLink is now able to compile wit .Net4.0 settings.

It will be availabe latest on Monday on the store.

Thomas

0
Completed

How can I deploy demo app to my iPad ?

YoncaY 5 years ago in General Questions updated by Support 5 years ago 2

Can I deploy demo app into my iPad by using starter kit? 

Answer
Support 5 years ago

Hi, yes you can do that with Unity and Game4automation Starter. It is a little bit more complicated than for Android. You will need a Mac for final compilation (alternatively Unity’s cloud build) and an Apple developer account. In Unity’s build settings you will need to set IOS as Build target.

Thomas 


0
Answered

PARTS4CAD don't open

efrensilveyra 5 years ago in Parts4Cad updated by Support 3 years ago 18

Hi I buy the  game4automation starter and I download the parts4cad from the asset store.

And I import the parts4cad in the project where is the game4automation,and I click in the game4automation tab > Cadenas parts4cad and it doesn't star the parts4cad software. Do I need another thing? Here is a screenshot.


Regards!

Image 137





Answer
Support 5 years ago

Hi,

thanks a lot for the hint. We will check how we can prevent that and allow spaces in folder names. Didn't know that this causes problems.

Best regards

0
Not a bug

UnityLinker.exe error in 2019.2.2 LWRP

J G 5 years ago in OPCUA4Unity updated by anonymous 3 years ago 4

Hi all,

I get an error from UnityLinker (see below) in Unity 2019.2.2f1, Android and PC Standalone build. The project also uses LWRP which, I assume, is not so important here. I did not test with standard rendering. I can reproduce this error in an empty project just importing the OPCUA4Unity asset. Other settings are IL2CPP, Net Standard 2.0.


Edit: Maybe it is helpfull to know, that Mono Scripting Backend does not run into this.

Full error message:

UnityLinker.exe -out="C:/Users/Unity/New Unity Project/Temp/StagingArea/Data/Managed/tempStrip" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Core.xml" -x="C:/Users/jg/Unity/New Unity Project/Temp/StagingArea/Data/Managed/TypesInScenes.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Accessibility.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/AI.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/AndroidJNI.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Animation.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/AR.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/AssetBundle.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Audio.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Cloth.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/ClusterInput.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/ClusterRenderer.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Core.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/CrashReporting.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Director.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/DSPGraph.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/FileSystemHttp.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/GameCenter.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Grid.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/HotReload.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/ImageConversion.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/IMGUI.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Input.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/InputLegacy.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/JSONSerialize.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Localization.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/ParticleSystem.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/PerformanceReporting.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Physics.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Physics2D.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Profiler.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/ScreenCapture.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/SharedInternals.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/SpriteMask.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/SpriteShape.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Streaming.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Substance.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Terrain.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/TerrainPhysics.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/TextCore.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/TextRendering.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Tilemap.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/TLS.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/UI.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/UIElements.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Umbra.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/UNET.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/UnityAnalytics.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/UnityConnect.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/UnityTestProtocol.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/UnityWebRequest.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/UnityWebRequestAssetBundle.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/UnityWebRequestAudio.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/UnityWebRequestTexture.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/UnityWebRequestWWW.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Vehicles.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/VFX.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Video.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/VR.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/Wind.xml" -x="C:/Program Files/Unity/Hub/Editor/2019.2.2f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/Whitelists/XR.xml" -d="C:/Users/jg/Unity/New Unity Project/Temp/StagingArea/Data/Managed" --include-unity-root-assembly="C:/Users/jg/Unity/New Unity Project/Temp/StagingArea/Data/Managed/Assembly-CSharp.dll" --include-unity-root-assembly="C:/Users/jg/Unity/New Unity Project/Temp/StagingArea/Data/Managed/Unity.RenderPipelines.Lightweight.Runtime.dll" --include-unity-root-assembly="C:/Users/jg/Unity/New Unity Project/Temp/StagingArea/Data/Managed/Unity.Postprocessing.Runtime.dll" --dotnetruntime=il2cpp --dotnetprofile=unityaot --use-editor-options --include-directory="C:/Users/jg/Unity/New Unity Project/Temp/StagingArea/Data/Managed" --rule-set=Conservative --editor-data-file="C:/Users/jg/Unity/New Unity Project/Temp/StagingArea/Data/Managed/EditorToUnityLinkerData.json" --disable-engine-module-support

stdout:
Fatal error in Unity CIL Linker
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
at Mono.Linker.Steps.MarkStep.ProcessMarkedTypesWithInterfaces()
at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
at Mono.Linker.Steps.MarkStep.Process()
at Unity.Linker.Steps.UnityMarkStep.Process(LinkContext context)
at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
at Unity.Linker.UnityPipeline.ProcessStep(LinkContext context, IStep step)
at Mono.Linker.Pipeline.Process(LinkContext context)
at Unity.Linker.UnityDriver.Run()
at Unity.Linker.UnityDriver.RunDriverWithoutErrorHandling()
at Unity.Linker.UnityDriver.RunDriver()
stderr:

UnityEngine.Debug:LogError(Object)
UnityEditorInternal.Runner:RunProgram(Program, String, String, String, CompilerOutputParserBase) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:126)
UnityEditorInternal.Runner:RunManagedProgram(String, String, String, CompilerOutputParserBase, Action`1) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:71)
UnityEditorInternal.AssemblyStripper:RunAssemblyLinker(IEnumerable`1, String&, String&, String, String) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:222)
UnityEditorInternal.AssemblyStripper:StripAssembliesTo(String[], String[], String, String, String&, String&, String, IIl2CppPlatformProvider, IEnumerable`1, BuildTargetGroup, ManagedStrippingLevel, Boolean, String) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:158)
UnityEditorInternal.AssemblyStripper:RunAssemblyStripper(IEnumerable, String, String[], String[], String, IIl2CppPlatformProvider, RuntimeClassRegistry, ManagedStrippingLevel) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:358)
UnityEditorInternal.AssemblyStripper:StripAssemblies(String, IIl2CppPlatformProvider, RuntimeClassRegistry, ManagedStrippingLevel) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:246)
UnityEditorInternal.IL2CPPBuilder:Run() (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:326)
UnityEditorInternal.IL2CPPUtils:RunIl2Cpp(String, IIl2CppPlatformProvider, Action`1, RuntimeClassRegistry) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:70)
DesktopStandalonePostProcessor:SetupStagingArea(BuildPostProcessArgs, HashSet`1) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:242)
DesktopStandalonePostProcessor:PostProcess(BuildPostProcessArgs) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:41)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

Answer
Support 3 years ago

Hi, LWRP is not officially supported. You might get it running with some minor changes with LWRP but all our examples and demos are based on the Standared Rendering Pipeline.

OPCUA for Android is only supported with Mono and not with IL2CPP. I am sorry but the 3rd party OPCUA dlls don't work with other settings.  See also the remarks on the Unity Asset Store and on our documentation pages about the compatibility.

0
Fixed

Exception in OPCUAConnection.Connect on Hololens

industry40lab 5 years ago in OPCUA4Unity updated by Support 3 years ago 20

Hi,

I am using OPCUA4Unity in my Hololens Unity project. An exception is thrown when I try to connect to an OPCUA server from the Hololens. Here is the output:

"The type initializer for 'Opc.UaFx.Client.OpcClient' threw an exception. at game4automation.OPCUAConnection.Connect () [0x00000] in <00000000000000000000000000000000>:0
at game4automation.OPCUA_Interface.Connect () [0x00000] in <00000000000000000000000000000000>:0"


I am able to connect just fine in Unity Editor, but not when connecting in Hololens.

I have ensured that the build settings are correct (IL2CPP, .NET 2.0 compatibility), and have set the permissions to allow internet access in Hololens. I am on Unity 2018.4.8f1, and have tried upgrading my project to 2019.1.14f1 but that did not fix the issue.


Let me know if you need more information!

Answer
Support 3 years ago

Hi, we are not able to support Hololens and we stopped support for it. We can refund you the money if you would like. I am sorry but we were not able to get the 3rd party DLLs running on UWP as needed.

0
Answered

Problems with SignalChanged behaviour of PLCOutput class

Tim Peperkamp 5 years ago in realvirtual.io Starter and Professional updated 5 years ago 19

Dear game4utomation team,

Recently we bought the Game4Automation Pro Asset in Unity, and so far we really like it.

We set up a simple project in Simit and managed to get the interface working with the shared memory solution.

For this we used the Update() method off Unity, now we would like to use a event based system to reduce the load on the system. In the PLCOutput class the event SignalChanged is available and we tried to implement this.

So in this example we would like to toggle a bool to change the color on a traffic light.

public class Verkeerslicht3 : NetworkBehaviour

{

public Material yellowMaterial;

public PLCOutputBool yellowEnable;

public MeshRenderer yellowMeshRenderer;

void Start()

{

yellowEnable.SignalChanged += OnYellowEnableStateChange;

}


private void OnYellowEnableStateChange(Signal obj)

{

RpcSetGeel(obj);

}


[ClientRpc]

private void RpcSetGeel(bool state)

{

yellowMeshRenderer.material = state ? yellowMaterial : disabledMaterial;

}

But if we toggle the Bool in Simit the OnYellowEnableStateChange is not called.

Can you help with this?

Answer
Support 5 years ago

Hi Tim,

there was a problem with the automatic settings of the defines.

Please check if the PLCOutput Script was added to your variable automatically:


If not please set in the defines manually "GAME4AUTOMATION" and reimport all OPCSignals.


Now it should work

0
Completed

Can I connect a Controllogix to game4automation through FactoryTalk Linx or Kepware?

efrensilveyra 5 years ago in OPCUA4Unity updated 5 years ago 3
Answer
Support 5 years ago

No currently I think not. I would propose to use OPC UA. Is there a public API for FactoryTalk Communication. If yes it could be easily integrated with some programming.

Best regards 

Thomas

0
Fixed

CADLink and Solid Edge

Andrew Sherlock 5 years ago in CADLink updated by Support 5 years ago 13

We are having issues with models generated from Solid Edge. Assembly positions and part colours don't always seem to be respected.


I note that the documentation mentions similar issues with NX and that a fix is due soon. Will something similar for Solid Edge available?


Andy

Answer
Support 5 years ago

Hi Andy, oh sorry. Yes you can remove this line.

Give us a good feedback in the Unity Store if you are happy with our solution. Thanks.


Thomas