Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Execute the CsScript class in Docker
#1
https://www.libreautomate.com/forum/show...p?tid=7491

 I am trying to execute the CsScript class from the link above in Docker. To make it compatible with general C# code, I modified the _GetRefs function as follows, but it resulted in error messages! With the help of ChatGPT, the code was improved and finally executed successfully! However, the improved code is not complete. Is there a better solution?
 
Code:
Copy      Help
   static List<MetadataReference> _GetRefs()
    {

        var r = new List<MetadataReference>();
        var s = AppContext.GetData("TRUSTED_PLATFORM_ASSEMBLIES") as string ?? "";
        foreach (var v in s.Split(';', StringSplitOptions.RemoveEmptyEntries))
        {

              r.Add(MetadataReference.CreateFromFile(v));
        }

        return r;
    }

error info:
docker run --rm -it -v $(pwd)/test.cs:/input/test.cs --entrypoint bash docker.cnb.cool/wwww001/spire.doc/dynamic_runner [832b4a4] root@a9714d13103b:/app# ls -l /input/test.cs -rwxr-xr-x 1 root root 256 Aug 31 09:09 /input/test.cs root@a9714d13103b:/app# dotnet DynamicRunner.dll /input/test.cs spire.Doc run error: System.TypeInitializationException: The type initializer for 'CsScript' threw an exception. ---> System.IO.PathTooLongException: The path '/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Xml.XPath.XDocument.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Threading.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Text.RegularExpressions.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Text.Json.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Text.Encoding.CodePages.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.Principal.Windows.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.Cryptography.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.AccessControl.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.Serialization.Primitives.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.Numerics.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.Serialization.Formatters.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.InteropServices.JavaScript.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.InteropServices.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.CompilerServices.VisualC.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Reflection.Metadata.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Reflection.DispatchProxy.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Private.Xml.Linq.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Private.Xml.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.WebSockets.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.WebSockets.Client.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.WebHeaderCollection.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.WebClient.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.Sockets.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.Security.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.Requests.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.Primitives.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.NetworkInformation.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.NameResolution.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.Ping.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.Mail.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.HttpListener.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.Http.Json.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Memory.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Linq.Queryable.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Resources.Writer.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Linq.Expressions.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Linq.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.Pipes.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Reflection.Emit.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.Intrinsics.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.Compression.Brotli.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Resources.ResourceManager.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Web.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Resources.Reader.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.Http.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Reflection.Emit.Lightweight.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Threading.Channels.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Reflection.Emit.ILGeneration.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Xml.ReaderWriter.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Text.Encodings.Web.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.WebProxy.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Reflection.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Numerics.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Threading.Tasks.Parallel.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Linq.Parallel.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Threading.Timer.dll:/app/HarfBuzzSharp.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.FileSystem.Primitives.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.Compression.FileSystem.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.Extensions.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.ValueTuple.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Xml.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Dynamic.Runtime.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.FileSystem.AccessControl.dll:/app/System.Security.Permissions.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Drawing.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Collections.Immutable.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Transactions.dll:/app/System.Security.Cryptography.Pkcs.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Threading.Tasks.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/Microsoft.Win32.Registry.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Reflection.TypeExtensions.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.CompilerServices.Unsafe.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Web.HttpUtility.dll:/app/System.Private.Windows.Core.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/netstandard.dll:/app/System.Drawing.Common.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.FileSystem.Watcher.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Private.DataContractSerialization.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Globalization.Extensions.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Diagnostics.Process.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Globalization.Calendars.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.UnmanagedMemoryStream.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.ServiceModel.Web.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.FileSystem.DriveInfo.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Numerics.Vectors.dll:/app/Microsoft.CodeAnalysis.CSharp.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.Serialization.Json.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Data.DataSetExtensions.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Diagnostics.FileVersionInfo.dll:/app/System.Security.Cryptography.Xml.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Private.Uri.dll:/app/Microsoft.Win32.SystemEvents.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Private.CoreLib.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.AppContext.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.InteropServices.RuntimeInformation.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/Microsoft.Win32.Primitives.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Buffers.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.Serialization.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/mscorlib.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Configuration.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.Cryptography.Cng.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/Microsoft.VisualBasic.dll:/app/System.Windows.Extensions.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Diagnostics.Contracts.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Data.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Diagnostics.Tools.dll:/app/Microsoft.CodeAnalysis.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Diagnostics.Debug.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Xml.XmlDocument.dll:/app/DynamicRunner.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.Quic.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.ComponentModel.DataAnnotations.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Drawing.Primitives.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Net.ServicePoint.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Diagnostics.Tracing.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.IsolatedStorage.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.Cryptography.Encoding.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Threading.Thread.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.Pipes.AccessControl.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.Serialization.Xml.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.Cryptography.Algorithms.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.Cryptography.Csp.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.Cryptography.Primitives.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.Principal.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Formats.Tar.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.Cryptography.X509Certificates.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.ObjectModel.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Reflection.Primitives.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.SecureString.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Reflection.Extensions.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.ServiceProcess.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Text.Encoding.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Formats.Asn1.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.Pipelines.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Text.Encoding.Extensions.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.FileSystem.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Windows.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Threading.Tasks.Extensions.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Threading.Tasks.Dataflow.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Threading.ThreadPool.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Collections.Specialized.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Xml.Linq.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.Claims.dll:/app/Spire.Doc.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Xml.Serialization.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.Loader.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Security.Cryptography.OpenSsl.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Xml.XPath.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Xml.XDocument.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Transactions.Local.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Xml.XmlSerializer.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/WindowsBase.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/Microsoft.CSharp.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Core.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/Microsoft.VisualBasic.Core.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Collections.Concurrent.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Collections.NonGeneric.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Globalization.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.ComponentModel.Annotations.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.ComponentModel.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.ComponentModel.EventBasedAsync.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.ComponentModel.Primitives.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.ComponentModel.TypeConverter.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.Handles.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Console.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Data.Common.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Diagnostics.DiagnosticSource.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Collections.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Threading.Overlapped.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Diagnostics.StackTrace.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.Compression.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Diagnostics.TextWriterTraceListener.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.MemoryMappedFiles.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Diagnostics.TraceSource.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.IO.Compression.ZipFile.dll:/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Private.CoreLib.dll' is too long, or a component of the specified path is too long. at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirError) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode, Boolean failForSymlink, Boolean& wasSymlink, Func`4 createOpenException) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, UnixFileMode openPermissions, Int64& fileLength, UnixFileMode& filePermissions, Boolean failForSymlink, Boolean& wasSymlink, Func`4 createOpenException) at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at Roslyn.Utilities.StandardFileSystem.OpenFile(String filePath, FileMode mode, FileAccess access, FileShare share) at Roslyn.Utilities.CommonCompilerFileSystemExtensions.OpenFileWithNormalizedException(ICommonCompilerFileSystem fileSystem, String filePath, FileMode fileMode, FileAccess fileAccess, FileShare fileShare) at Microsoft.CodeAnalysis.MetadataReference.CreateFromFile(String path, MetadataReferenceProperties properties, DocumentationProvider documentation) at CsScript._GetRefs() in /src/Program.cs:line 108 at CsScript..cctor() in /src/Program.cs:line 38 --- End of inner exception stack trace --- at CsScript.Compile(String code, Boolean library, String[] c, String[] r, List`1 errors) in /src/Program.cs:line 67 at CsScript.spireDocCodeRun(String spireCode) in /src/Program.cs:line 48

OK Code:
Code:
Copy      Help
   static List<MetadataReference> _GetRefs()
    {

        var refs = new List<MetadataReference>();
        var essentialAssemblies = new[]
        {

            "/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Private.CoreLib.dll",
            "/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Runtime.dll",
            "/app/System.Drawing.Common.dll", 
            "/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.dll",
            "/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Collections.dll",
            "/usr/share/dotnet/shared/Microsoft.NETCore.App/9.0.8/System.Text.Encoding.dll"
        };

        foreach (var path in essentialAssemblies)
        {

            if (File.Exists(path))
            {

                refs.Add(MetadataReference.CreateFromFile(path));
            }

            else
            {
                Console.WriteLine($"not find: {path}");
            }
        }


        return refs;
    }
#2
Try original code but replace the ';' with Path.PathSeparator or with ':'.
#3
Thanks for your help. Using Path.PathSeparator to execute successfully.


Forum Jump:


Users browsing this thread: 1 Guest(s)